Published on

HTTPS SSL

Authors
  • avatar
    Name
    Luffy Yeon
    Twitter

HTTPS

HTTPS는 HTTP를 보안적으로 강화한 것으로 S는 Over Secure Socket Layer의 약자라고 합니다. HTTPS는 통신의 인증과 암호화를 위해 넷스케이프에서 개발 하였으며 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화 한다고 합니다. 기본적으로 HTTPS는 SSL에 포함되는 프로토콜이라고 생각하면 될 것 같습니다.



SSL TLS

  • SSL : Secure Socket Layer
  • TLS : Transport Layer Security

SSLTLS는 같은 말이라고 합니다. SSL에서 이름이 바뀐것이 TLS이지만 이미 사용되고 있었던 이름인 SSL이 많이 사용되고 있다고 합니다.



SSL 암호화

SSL의 암호화를 사용함으로써 클라이언트와 서버간의 통신을 보안적으로 강화해줍니다. 암호화를 함으로써 데이터의 노출 방지 및 신뢰여부를 판단 할 수 있습니다. SSL의 암호화 방식으로는 대칭키 방식과 공개키 방식이 있습니다.


대칭키

대칭키는 데이터 암호화에 비밀번호 키를 사용하여 데이터를 암호화 시키고 복호화시 암호화에 사용된 비밀번호 키로 복호화하여 데이터를 되돌립니다. 대칭키의 단점으로는 비밀번호로 사용된 키가 노출될 경우 데이터를 쉽게 복호화 가능하다는 점 입니다.


공개키

대칭키의 단점인 대칭키가 노출되는 경우 암호가 무의미해지는 것을 방지하기 위해 공개키가 나왔다고 합니다.


공개키 암호화 방식은 두개의 키로 암호화 복호화를 진행합니다. A키로 암호화를 했다면 B키로 복호화가 가능하고 B키로 암호화를 하였다면 A키로 복호화가 가능한 방식입니다. 이 방식에서 하나의 키가 비공개키(Private Key, 개인키, 비밀키)이고 하나는 공개키(Public Key)라고 합니다. 비공개 키는 자신만이 가지며 공개키를 다른 사람에게 제공합니다. 이 방식은 공개키가 유출되더라도 비공개키를 알지 못하면 암호화된 데이터를 복호화 할 수 없습니다. 또한 비공개키로 암호화된 데이터는 공개키로 복호화가 가능하다는 점을 이용하여 비공개키로 암호화된 데이터는 전송중 데이터가 변질되지 않았다는 것을 보장 받을 수 있습니다.



SSL 동작

SSL의 실제 동작은 위에서 설명한 대칭키와 공개키를 혼합해서 사용한다고 합니다. 전송되는 데이터는 대칭키를 사용하여 암호화 복호화가 이루어지며, 대칭키를 다시 공개키 방식을 사용하여 암호화 복호화를 한다고 합니다. 이중 암호화 형태로 사용한다고 생각하면 될 것 같습니다.


이렇게 두가지 대칭키 공개키 두가지 방법을 사용하는 이유는 공개키 방식은 컴퓨터 리소스를 많이 사용하여 성능에 부담을 준다고 합니다. 그리고 대칭키는 전송시 외부에 유출될 경우 데이터가 노출될 위험이 있기 때문에 위와 같은 방법으로 두가지 방법을 혼합하여 사용한다고 합니다.


동작 순서는 악수 -> 세션 -> 세션종료로 이루어 집니다.

  1. 악수 handshake
    handshake는 데이터 전송전 서로 상대방을 확인 하는 과정이 이루어 집니다. 처음 클라이언트가 서버에 접속하였을때 서버에게 클라이언트 접속을 알립니다. 이때 클라이언트와 서버가 주고받는 정보는 클라이언트측의 데이터, 클라이언트에서 지원하는 암호화 방식, 세션 아이디가 있다고 합니다.

서버에서 클라이언트 측 요청을 받았을때 서버도 응답을 보내주게되며, 이때 클라이언트와 주고받는 정보는 서버측의 데이터, 서버가 선택한 클라이언트 암호화 방식, 인증서가 있다고 합니다.


클라이언트에서는 서버에서 받은 인증서가 CA에 의해 발급된 인증서인지 확인을 하고, CA 리스트에 인증서가 없다면 경고 메세지를 출력합니다. 인증서가 CA에 발급된 것인지 확인하는 것은 CA의 공개키를 이용해 인증서를 복호화합니다. 복호화에 성공 하였다면 인증서는 CA 개인키로 암호화된 문서인것이 보증된 것이며 서버를 신뢰할 수 있습니다.


  1. 세션
    세션 단계는 실제로 데이터를 주고 받는 단계라고 합니다. 세션 키 값을 대칭키 방식으로 암호화를 하여 상대방에게 전송하며, 상대방 또한 세션키 값을 알기 때문에 키 값으로 복호화를 합니다.

  1. 세션 종료
    데이터 전송이 끝나게 되면 통신에 사용한 대칭키인 세션키를 폐기하고 SSL통신을 끝냅니다.