SSL(Secure Sockets Layer)
TLS(Transport Layer Security)


SSL(안전 소켓 계층)/TLS(전송계층 보안)

1. SSL/TLS 란?

  • SSL은 암호화 기반 인터넷 보안 프로토콜입니다.
  • 쉬운 설명
    웹 상의 데이터는 메시지를 가로채면 누구나 읽을 수 있는 일반 텍스트 형태로 전송됐습니다. 가령 고객이 쇼핑 웹사이트를 방문하여 id, password, 신용 카드 번호를 입력했다고 하면, 해당 데이터는 일반 텍스트 형태로 인터넷을 이동하게 됩니다.
    SSL은 사용자와 웹 서버 사이를 이동하는 모든 데이터를 암호화하여, 누군가 데이터를 가로채더라도 암호화된 문자만 볼 수 있습니다. 고객이 입력한 데이터는 해당 쇼핑 웹사이트만 암호화된 데이터를 풀어서 볼 수 있습니다.
  • 기술적 설명
    전송계층(Tranport L4) 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화 수행
    - 클라이언트와 서버 양단 간 응용계층(Application L7) 및 TCP 전송계층 사이에서
    - 안전한 보안 채널을 형성해 주는 역할을 하는 보안용 프로토콜
  • 주요 응용
    - HTTP (HTTPS), FTP (FTPS), TELNET, SMTP, SIP, POP, IMAP 등 에서 사용 가능
    - 주로, 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 많이 사용됨

Network 계층 모델

OSI ModelTCP/IP ModelTCP/IP Protocol Suite
Application(L7) Application HTTP, DNS, DHCP, FTP
Presentation (L6)
Session (L5)
Tranport (L4) Transport - Port TCP, UDP
Network (L3) Internet - IP IPv4, IPv6
ICMPv4, ICMPv6
Data Link (L2) Network Access - MAC PPP, Frame Relay, Ethernet(NIC)
Physical (L1)

2. SSL/TLS의 역사

  • 최초 제안 : 넷스케이프(Netscape)사
    • 버젼 : SSL v1.0 (1994.7), SSL v2.0 (1994.12), SSL v3.0 (1996.11)
    • SSL v3.0은 그 당시 사실상의 웹 보안 표준이었음
  • SSL의 표준화 기여 => TLS 표준
    • SSL v3.0 을 참고로 하여 IETF(Internet Engineering Task Forse)에 의해 1999년에 RFC 2246으로 표준화된 것이 TLS 임
    • 버젼 : TLS 1.0 (RFC 2246,1999) : SSL v3.1에 해당, TLS 1.1 (RFC 4346, 2006), TLS 1.2 (RFC 5246, 2008)
    • SSL에서 TLS로 이름이 바뀐 것은 소유권 변경을 나타내기 위한 것입니다.
    • 이들은 긴밀히 연계되어 있어 두 용어가 혼합되어 사용되는 경우가 많습니다.
      TLS를 아직 SSL이라 부르기도 하고, SSL의 인지도가 높으므로, 'SSL/TLS 암호화'라 부르는 경우도 있습니다.
    • SSL은 1996년 SSL 3.0 이후 업데이트되지 않고 있습니다.
      실제로, 최신 웹 브라우저는 대부분 이제 SSL을 지원하지 않고 TLS을 지원합니다.

3. SSL/TLS의 특징

  • 클라이언트/서버 기반의 프로토콜
    - 클라이언트/서버 두 응용 상대방 간에, 연결 전 동적 협상에 의한 보안 연결 수립
  • 응용 프로그램(어플리케이션) 자체 구현 가능
    - 대부분의 다른 보안 프로토콜(EAP,IPsec 등)은 운영체제 등에 밀접하게 관련됨
  • 계층 위치
    - 응용계층(application) 및 전송계층(transport) 사이에 위치하나, 전송계층과 보다 밀접하게 동작 함
    - 소켓 지향적인 프로토콜
  • 전송용 프로토콜 및 포트번호
    - 전송용 프로토콜 : TCP 또는 UDP, UDP 상에서도 가능한 버젼은 DTLS (Datagram Transport Layer Security) RFC 6347(2012년)가 있음
    - 사용 포트 : 응용 마다 다름
      . HTTPS의 경우에, HTTP를 위한 SSL/TLS 보안 터널 형성을 위해, 포트번호 443 를 사용
  • 인증 구조 : X.509
    - X.509에서 규정된 공개키 인증서 교환에 의해 상대방에 대한 인증 수행
  • 키 교환 방식 : (협상 선택 가능)
    - Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환, Ephermeral Diffie-Hellman 키 교환, Fixed Diffie-Hellman 키 교환, Fortezza
    - Diffie-Hellman(디피 헬먼)
  • 대칭키 암호화 방식 : (협상 선택 가능)
    - RC2 (40), RC4 (40), RC4 (128), DES, Triple DES, IDEA 등
  • 해쉬 알고리즘 : (협상 선택 가능)
    - Null, MD5, SHA-1

4. SSL/TLS의 주요 기능

  • 상호 인증
    - 공개키 인증서를 이용하여 서버,클라이언트의 상호 인증
    - 즉, 클라이언트/서버 두 응용 간에 상대방에 대한 인증
  • 메세지 인증 (메세지 무결성)
    - 메세지 인증 코드 HMAC에 의한 메세지 무결성 제공 (HMAC MD5, HMAC SHA-1 등)
    - HMAC(Hash-based Message Authentication Code)
  • 메세지 압축
    - 디폴트는 Null (즉, 무 압축), 압축 알고리즘은 미리 정해지지 않고 협상으로 지정 가능
  • 암호화용 세션 키 생성(대칭 키 합의)을 위한 키 교환
    - RSA : 두 키(공개 키 및 개인 키)가 하나의 수 체계를 형성 (서버 공개 키 사용)
    - Diffie-Hellman : Diffie-Hellman(디피 헬먼) 프로토콜을 기반으로 한 키 교환 방식
  • 생성된 공유 비밀키에 의해 암호화된 종단간 안전한 연결 통로 제공
    - 스트림 암호화 : 40, 128 비트의 RC4
    - 블록 암호화 : IDEA, 40,56 비트의 DES, 168 비트의 3DES 등

5. SSL/TLS의 프로토콜 스택

  • 전송계층 Tranport(L4) TCP 위에서 '보안 소켓/보안 채널/터널링'을 구성
    - 응용계층에서 생성된 데이터에 대한 보안(인증(Authentication),기밀성(Confidentiality-암호화),무결성(Intergrity-무변경)),압축 등의 서비스 제공
  • 계층모델에서 SSL/TLS 위치
    [출처: 정보통신기술용어해설]
  • SSL/TLS Protocol Stack
    [출처: 정보통신기술용어해설]

6. SSL/TLS의 핸드세이크 단계

  • 흐름: 초기 협상 단계 -> 인증 단계 -> 보안 채널 형성 -> 상호 암호화 통신 시작
  • SSL/TLS protocol 동작 절차
    [출처: 박승철 정보보호론 강좌]
  • Application 데이터의 교환 이전의 세션 초기화 중에 이루어짐 - 서버와 클라이언트가 상호 인증 - '암호 키 교환' 및 '암호화 알고리즘' 협상 및 확립을 도모하기 위한 정보 교환 - DES 알고리즘 등에 기반하여 세션키를 생성
  • 주요 협상 내용: 키 교환 방식, 암호화 방식, HMAC 방식, 압축 방식(거의 사용되지 않음)
  • 클라이언트/서버 간에 공유 암호 키를 만들기 위해 공개 키(Public Key) 방식을 활용 - '데이터 암호화'를 위한 공유 암호 키를 정의 함 - '메세지 인증'을 위한 메세지 인증 코드(TLS : HMAC 코드) 생성

용여/참고사항

  • 공개키(Public Key), 개인키(Private Key)
    공개키 알고리즘은 문서를 공개키로 암호화하느냐, 개인키로 암호화하느냐에 따라서 활용되는 분야가 다릅니다. 공개키로 암호화한 경우에는 개인키 소유자만 복호화할 수 있기 때문에 암호로서 효용성을 가집니다. 반면에 개인키로 암호화한 경우에는 공개키로 복호화할 수 있게 대문에 암호로서의 효용성은 떨어집니다. 대신 개인키 소유자만 문서를 암호화할 수 있기 때문에 암호문 작성자를 알리기 위한 용도로 사용되며, 이를 암호화라는 말 대신 전자서명이라고 합니다.
    우리나라 공인인증체계의 근간을 이루는 전자서명법은 공개키 알고리즘의 두 용도 중에서 전자서명만 규정하고 있습니다. 전자서명법에서는 개인키를 전자서명생성정보라고 정의하고 공개키를 전자서명검증정보라고 정의하고 있습니다.
  • RSA 알고리즘
    공개키 알고리즘 중에서 가장 잘 알려져 있는 RSA 알고리즘은 서로 다른 두 소수의 곱의 형태로 표시되는 큰 수를 원래의 두 소수로 소인수분해하는 것이 어렵다는 것에 기반하여 설계되었습니다.
    - 서로 다른 두 소수 pq를 선택하여 두 소수를 곱한 것을 n,
    - 두 소수보다 1씩 작은 것을 곱한 수를 φ(n)이라 하고,
    - 이를 식으로 표현하면 n = pq,   φ(n)=(p-1)(q-1) 이 됩니다.
    - 다음으로 1보다 크고 φ(n)보다 작은 정수 중에서 φ(n)과 서로소가 되는 e를 선택합니다.
    - 마지막으로 ed를 곱하여 φ(n)으로 나눈 나머지가 1이 되는 d를 구합니다.
    - 이를 만족하는 ne공개키(Public Key)라고 하고, d개인키(Private Key)라고 합니다.

    방금 구한 공개키와 개인키로 전자서명과 전자서명검증을 어떻게 수행하는지 살펴보도록 하겠습니다. 전사서명할 문서를 m이라고 하고, 그렇다면 두 소수 p와 q를 모를 경우, 공개키 n과 e로부터 개인키 d를 얼마나 빨리 구해낼 수 있을까요? n이 두 소수 p와 q의 곱으로 구성되어 있다는 것을 알고 있으므로, n을 소인수분해하여 p와 q를 구할 수만 있다면 d를 계산할 수 있을 것입니다. 하지만 소수 p, q가 충분히 크다면 두 소수의 곱으로부터 원래의 두 소수를 찾는 것은 매우 어려운 일이라고 합니다. 300자리 이상의 정수를 소인수분해하는 것은 2027년 이후에는 가능하다는 연구결과가 있습니다. 또한 소인수분해를 하지 않고 공개키 n과 e로부터 개인키 d를 구하는 방법은 아직 알려지지 않았습니다.
  • 오픈 소스 구현 예) OpenSSL
  • SSL 인증서 종류
    - 단일 도메인: 단일 도메인에 적용됩니다. 예) www.example.com
    - 와일드카드: 하위 도메인도 포함됩니다. 예) www.example.com, blog.example.com
    - 멀티 도메인: 다수의 도메인에 적용됩니다. 예) www.aaa.com, www.bbb.com,
  • 정보보안 3대 원칙
    - 기밀성(Confidentiality): 암호화 - 오직 인가된 사람/프로세스/시스템만이 알 필요성에 근거하여 시스템에 접근해야 한다
    - 무결성(Intergrity): 변경으로부터 보호(전자서명) - 정보는 고의적인, 비인가된, 우연한 변경으로부터 보호되어야 한다.
    - 가용성(Availability): 정보는 사용자가 필요로 하는 시점에 접근 가능해야 한다.

출처/참고자료


Email 답글이 올라오면 이메일로 알려드리겠습니다.