개발업무/인프라

https SSL 인증서 작동 원리

NickTop 2022. 11. 13. 01:41

http 전송방식은 암호화되지 않기 때문에 변조될 가능성이 있다.

이를 보완한 것이 https 방식이다

 

http 전송에 SSL(Secure Sockets Layer)으로 암호화한 것이 https이다

 

https는 공개키 기반 알고리즘 방식(PKI : Public Key Infrastructure)을 쓴다.

 

암호화 분류 방식

[A에서 B로 데이터(txt)를 전달할때..]

비대칭키 암호화(PKI)

 - 공개키(public) / 비밀키(private) 두 가지의 키를 한 쌍으로 암호화 / 복호화한다

 - 공개키로 암호화한 데이터는 비밀키로만 복호화할 수 있다 

   비밀키로 암호화한 데이터를 공개키로 복호화하는 것도 가능

 - 공개키는 모두에게 공개되어도 상관없고 비밀키는 B만 가지고 있다

 - A는 txt를 공개키로 암호화하고(txt -> txt`) B에게 전달한다

 - B는 비밀키로 txt`를 복호화한다

 - B가 가진 비밀키만 외부로 노출이 되지 않으면 txt는 보안상 안전하다

   

 

대칭키 암호화

 - A, B 모두 동일한 대칭키를 가진다

 - A는 txt를 대칭키로 암호화하고(txt->txt`), B에게 전달한다

 - B는 txt`를 A와 동일한 대칭키로 복호화한다

 - A와 B '만' 대칭키를 알아야 보안상 안전하다

 

SSL 인증서 동작 원리 선요약

인증서 및 인증기관을 통해 사이트가 신뢰할 수 있는 지 체크하고, 대칭키 암호화 방식을 통해 통신한다.

 

인증서

 - 인증기관(CA : Certificate Authority)이 생성한 인증서를 가지고 있는 웹사이트는 이상한 웹사이트가 아님을 증명 

 - 인증 기관이 인증서를 생성하여 서버에게 전달

 - 인증서 구성요소 : 소유자, 인증서 용도, Distinguished Name (DN), Public Key, Hash 등

 - CA 확인 : 제어판 > 인터넷 옵션(속성) > 내용 > 인증서

 - 인증기관 리스트는 Window10 기준 일주일에 한 번씩 업데이트 된다 (브라우저 자체적으로도 가지고 있음)

인증서 조회

 

 

공개키/비밀키 쌍 종류

아래 인증서 발급 및 대칭키 생성 과정에서 두 가지의 공개키/비밀키 쌍이 등장하며 역할이 다르다

서버의 공개키/비밀키 : 대칭키 발급

CA의 공개키/비밀키 : 신뢰할만한 사이트인 지 확인

 

인증서 발급 절차

서버 : 파란색

인증기관 : 주황색

투명색 : 비밀키

선명색 : 공개키

인증서 발급 절차

1. 서버가 공개키 및 서버 정보를 인증 기관으로 전달

2. 공개키를 포함하여 인증서 생성

3. 인증서를 인증기관의 비밀키로 암호화하여 서버로 전달

4. 인증기관의 공개키는 Public하게 클라이언트의 브라우저 또는 로컬에 저장

 

대칭키 생성 절차

 - 위에서 발급한 키로 대칭키를 만들어 전송할 데이터를 암호화하여 클라이언트와 서버간 통신한다

대칭키 생성 절차

0. 클라이언트의 Request 및 3-way handshake

1. 인증기관의 비밀키로 생성된 인증서를 클라이언트에 전달

2. 인증서를 공개키로 복호화할 수 있다 == 인증기관이 신뢰하는 사이트이다

3. 대칭키 생성

4. 대칭키를 인증서 복호화로 얻은 서버의 공개키로 암호화하여 서버에게 전달

5. 서버의 비밀키로 대칭키 복호화

 

이후, 클라이언트와 서버간 대칭키가 공유되며,

전달할 패킷이 있을 시 대칭키로 암호화하여 전달하게 된다

'개발업무 > 인프라' 카테고리의 다른 글

nslookup -debug  (0) 2023.10.31
SCP/SSH : host key verification failed  (0) 2022.11.28
MYSQL : Master Slave replication  (1) 2022.11.11
NAT : Network Address Translation  (1) 2022.11.08
DNS name server IP 확인하는 법  (1) 2022.11.07