반응형
HTTPS란?
HTTP는 Hyper Text Protocol의 약자로써 www(world wide web)사에서 정보를 주고 받는 프로토콜니다. 이름에서도 알 수 있듯이 http는 텍스트 교환방식이기 때문에 누군가 네트워크에서 신호를 가로챈다면 내용이 노출된다는 보안상의 문제가 있습니다. 이러한 문제를 해결하기 위해 나온 것이 바로 https입니다. https는 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용해서 클라이언트와 서버가 데이터를 주고받는 통신 규약입니다. 따라서 http보다 보안상에 우위에 있습니다.
SSL / TLS
인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신 프로토콜을 의미합니다. 데이터를 송신할 때 http는 애플리케이션 계층에서 전송계층으로 보낸다음 송신을 하게 됩니다. 반면 https는 애플리케이션 계층에서 SSL로 데이터를 전송하고 SSL은 받은 데이터를 암호화하여 전송계층으로 전달하는 방식을 사용합니다. 송수신시에 http는 TCP(전송계층)을 SSL로 인식하기 때문에 기존 방식을 그대로 사용할 수 있습니다.
HTTPS의 통신 방법
HTTPS는 대칭키와 공개키 암호화 두가지를 모두 사용합니다. 대칭키를 주고 받을 때는 비대칭키 암호화를 통해 교환하고, 키를 교환한 이후부터는 서로 대칭키를 이용해서 암호화하여 데이터를 주고 받습니다. 그 과정은 아래와 같습니다.
- 클라이언트에서 랜덤한 데이터를 만들고, 세션 ID, 클라이언트가 지원하는 암호화 방식들을 서버에 보냅니다.
- 서버도 랜덤한 데이터를 만들고 서버가 사용할 암호화 방식과 인정서를 같이 클라이언트에 보냅니다.
- 서버의 인증서가 CA에서 발급된 것인지 확인하기 위해 클라이언트에 내장된 CA리스트를 확인합니다.
CA리스트에 없다면 사용자에게 일단 경고 메세지를 보여주고,
인증서가 CA에 의해서 발급된 것인지 확인하기 위해 클라이언트에 내장된 CA 공개키를 이용해서 인증서를 복호화 합니다.
복호화가 성공한다는 것은 CA의 개인키로 암호화된 문서임을 보증하는 것이기 때문에, 인증서를 전송한 서버를 믿을 수 있게 됩니다. - 서로 교환한 랜덤 데이터를 조합해서 비밀키를 생성합니다. 비밀키를 서버에 전달할 때 공개키 방식을 이용해서 서버로 전송합니다.
공개키는 인증서 안에 있고, 공개키로 암호화된 데이터는 대칭이 되는 비공개키로만 복호화가 가능합니다. 서버는 자신이 가진 비공개키로 복호화 합니다. 이렇게 되면 서로 비밀키가 공유되게 됩니다. - 서로 비밀키를 교환했으므로 비밀키를 이용해서 암호화하여 실제 데이터를 주고받습니다.
- 데이터 전송이 끝나면 통신에서 사용한 대칭키인 세션키를 폐기하고 연결을 종료합니다.
반응형
'Computer Science > Network' 카테고리의 다른 글
[Network] Port와 포트 포워딩(Port-Forwarding)이란? (6) | 2020.04.10 |
---|---|
[Network] CORS(Cross-Origin Resource Sharing)란? (0) | 2020.04.10 |
[Network] TCP 신뢰성의 특징: 흐름제어 / 혼잡제어 (1) | 2020.03.22 |
[Network] TCP / UDP (0) | 2020.03.22 |
[Network] Get방식의 Query string방식과 Path value방식 (0) | 2019.10.31 |