HTTPS?


이번 페이지에서는 HTTPS에 대해서 좀 정리해 보겠습니다.

※ 아래에 기술되는 내용의 출처 : http://www.terms.co.kr/HTTPS.htm
HTTPS (Secure Hypertext Transfer Protocol)
HTTPS는 넷스케이프에 의해 개발되고 그들의 브라우저에 구현된 웹 프로토콜로서, 사용자의 페이지 요청들과 웹서버에 의해 반환되는 페이지들을 암호화하고 해석한다. HTTPS는 실제로 넷스케이프의 SSL을 정규 HTTP 응용계층 하에서 서브 계층으로서 사용한다 (HTTP가 하부계층인 TCP/IP와의 상호작용을 위해 80번 포트를 사용하는데 비해, HTTPS는 443번 포트를 사용한다). SSL은 RC4 스트림 암호화 알고리즘을 위해 40 비트 크기의 를 사용하는데, 이는 상업적 데이터의 교환을 위한 암호화 정도에 적합하다고 간주된다.
NetPlaza (http://www.netplaza.com)와 같은 웹사이트에 방문해서 그들의 카탈로그를 보기 위해 넷스케이프 브라우저를 사용한다고 가정하라. 주문할 준비가 되었을 때, 사용자는 URL이 https://로 시작되는 웹페이지 주문서를 받게 될 것이다. 사용자가 그 페이지를 판매자에게 보내기 위하여 "보내기" 단추를 클릭하면, 브라우저의 HTTPS 계층이 그 페이지를 암호화한다. 서버가 받았음을 알리는 회신내용 역시 암호화된 형식으로 도착되지만, 그 내용은 브라우저의 HTTPS 서브 계층에 의해 해석된다. HTTPS와 SSL은 서버로부터의 X.509 디지털 인증서 사용을 지원하므로, 필요한 경우 사용자는 발신자를 믿을 수 있음을 증명할 수 있다. SSL은 넷스케이프가 W3C에 표준으로 제안한 개방형이며, 비독점적 프로토콜이다. HTTPS를 EIT가 개발하고 표준으로 제안한 HTTP의 보안 강화판인 SHTTP와 혼동하면 안된다.

※ 아래에 기술되는 내용의 출처 : http://wiki.gimslab.com/moniwiki/wiki.php/https
클라이언트는 암호화(대칭키방식)용 세션키를 생성하고 전송자료를 생성된 세션키로 암호화하며 또한 세션키를 서버에서 받은 서버공개키로 암호화(공개키방식)하여 서버로 전달하면 서버는 암호화된 세션키를 자신의 개인키로 복호화하여 세션키를 얻고 그 세션키로 전송자료를 복호화하고 또한 응답데이터를 그 세션키로 암호화하여 전송하며 클라이언트는 자신이 기존에 생성했던 세션키를 이용 응답데이터를 복호화한다.

https_protocol.png

  • C:client, S:server

1. [C]보안 파일(Secure File) 요청 >>>

2. [S]<<< 인증서(Certificates:버정보와서버의 Public Key 포함) 발송

3. [C]세션키생성

4. [C]인증서검증

5. [C]세션키암호화(서버의 Public Key이용)

6. [C]암호화된 세션키 전송 >>>

7. [S]세션키 복호화(자신의 Private Key 이용)

8. [S]보안문서 암호화(복호화한 세션키 이용)

9. [S]<<< 암호화된 보안문서 전송

10. [C]보안파일 복호화(세션키 이용)