SSL / TLS

Updated:

SSL (Secure Socket Layer)

SSL은 Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다.

image

첫번째 그림은 SSL 아키텍처 구조를 나타낸 그림입니다. HTTP 프로토콜 상위에 통신시 보안을 위한 SSL 관련 프로토콜이 있는 방식입니다. 아래 그림은 서버-클라이언트간 통신을 나타낸 그림입니다. 실제 통신 내용을 상세히 살펴보면 클라이언트와 서버간 공유하는 암호화키를 가지고 암호회된 데이터가 송수신 되는 방식임을 확인할 수 있습니다.

공개키 암호 방식은 알고리즘 계산방식이 느린 경향이 있습니다. 따라서 SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키 암호화 방식을 혼합하여 사용한다.

안전한 의사소통 채널을 수립할 때는 공개키 암호를 사용하고, 이렇게 만들어진 안전한 채널을 통해서 임시의 무작위 대칭키를 생성 및 교환한다. 해당 대칭키는 나머지 데이터 암호화에 활용한다.

  • 실제 데이터 암호화 방식 : 대칭키
  • 상기 대칭키를 서로 공유하기 위한 암호화 방식 : 공개키

암호화 방식에 대한 개념을 정리하면 너무 길어지니 여기를 누르시면 확인하실 수 있습니다.

SSL 작동방식

image

정리

  1. A 사이트의 정보와 공개키를 인증기관으로 전송한다.
  2. 인증기관은 전달받은 A 사이트의 정보와 공개키를 검증 후 , 인증기관의 개인키로 암호화하여 인증서를 제작합니다.
  3. 인증기관은 제작한 인증서를 A 사이트에게 전달합니다.
  4. 인증기관이 클라이언트(웹 브라우저)에게 공개키를 제공합니다. 이 정보는 브라우저에 내장됩니다.
  5. B 유저가 A 사이트에 접속을 합니다.
  6. A 사이트가 B 유저에게 인증서를 전달합니다.
  7. B 유저는 인증기관의 공개키로 인증서를 검증하여 A 사이트의 정보와 공개키를 획득합니다.
  8. A 사이트의 공개키로 대칭키를 암호화합니다.
  9. 암호화한 대칭키를 A 사이트에게 전달합니다.
  10. A 사이트는 개인키로 이 암호문을 해독하여 대칭키를 획득합니다.
  11. 전달된 대칭키를 이용하여 암호문을 주고 받습니다.

브라우저에 내장된 인증서 정보

image

전자서명

image

전자서명은 데이터의 작성자를 증빙하기 위해 데이터에 전자적인 서명을 첨부하는 것을 뜻합니다.

전자 서명을 통해서 누가 메시지를 썼는지 알려주고, 메시지가 위조되지 않았음을 증명할 수 있다. 전자서명은 SSL 인증서 에서 서비스를 보증하는 방법으로 활용된다.

SSL 디지털 인증

데이터를 안전하게 암호화하고 또 전자서명하여 교환하는데 성공했습니다. 하지만 한가지 더 문제가 남아있습니다. 단순히 전자서명만으로는 데이터 생성자, 즉 공개키 소유자의 실제(오프라인) 신원을 증빙할 수 없다는 문제입니다.

여기서 공개키/개인키 키 쌍의 소유자의 신원을 보증하기 위해서 인증서(Certificate)라는 개념이 등장합니다. 사용자들은 암호화나 전자서명에 이용할 키 쌍을 정부기관이나 은행 등 공인된 기관에서 개인정보를 인증하며 발급 받을 수 있습니다. 이 때 발급자는 기관으로부터 생성된 개인키와 그에 대한 인증서를 받게 됩니다. 이 때 그 인증서에는 일반적으로 아래와 같은 정보가 포함됩니다.

아래 예시는 하이퍼레져에서 사용하는 인증서 입니다.

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            7f:7a:5a:d3:19:5e:93:85:16:be:46:39:d1:08:97:67
    Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=US, ST=California, L=San Francisco, O=org1.example.com, CN=ca.org1.example.com
        Validity
            Not Before: Oct 27 10:23:00 2019 GMT
            Not After : Oct 24 10:23:00 2029 GMT
        Subject: C=US, ST=California, L=San Francisco, O=org1.example.com, CN=ca.org1.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:e9:62:9a:cd:1c:e2:e7:b1:0c:ca:d9:c5:db:4a:
                    8d:a6:e7:b7:89:b0:e0:fc:3b:8b:5c:8d:22:62:92:
                    6e:98:d2:e5:35:d4:1f:ba:17:29:82:a5:73:ef:f9:
                    8f:e3:93:42:b2:9f:4b:55:93:47:b2:ef:17:09:1f:
                    0e:42:6a:04:47
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment, Certificate Sign, CRL Sign
            X509v3 Extended Key Usage:
                TLS Web Client Authentication, TLS Web Server Authentication
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Subject Key Identifier:
                44:F4:E5:6B:8B:54:63:65:9A:CA:F6:9D:8B:4E:AF:83:3C:42:D9:A0:DC:8B:E8:F8:28:70:FA:AC:BE:8A:AB:25
    Signature Algorithm: ecdsa-with-SHA256
         30:44:02:20:2c:ac:c1:6e:7a:a8:58:9b:a3:13:61:b0:63:6f:
         84:96:f4:3c:4a:5d:30:12:e0:27:e9:94:33:76:ff:f5:14:50:
         02:20:07:5f:d9:5d:71:5e:57:26:b1:4a:4b:6c:c7:43:52:9d:
         6e:72:e2:ee:83:74:25:86:19:3c:09:db:f3:71:ec:60

CA (인증기관, Certificate authority)

디지털 인증서를 제공하는 공인된 기업 (Certificate Authority 혹은 Root Certificate)

인증기관은 보안적격 여부와 그리고 메시지의 암호화와 복원을 위한 공개키들을 발급하고 관리하는 네트웍 상의 기관이다. 공개키 기반구조의 일부로서, 인증기관은 디지털 인증서 요구자에 의해 제공되는 정보를 검증하기 위한 등록기관(RA)과 함께 안전성 등을 검사한다. 만약 등록기관이 요구자의 정보를 입증하면, 인증기관은 인증서를 발급할 수 있다.

SSL 통신과정

image

TLS(Transport Layer Security Protocol)

SSL(Secure Socket Layer)과 TLS(Transport Layer Security Protocol)는 같은 의미입니다. 네스케이프에 의해서 SSL이 발명되었고, 이것이 점차 폭넓게 사용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었습니다. TLS 1.0은 SSL 3.0을 계승합니다. 하지만 TLS라는 이름보다 SSL이라는 이름이 훨씬 많이 사용되고 있습니다.

Leave a comment