애플리케이션 보안 - SSL(Secure Sockets Layer) / TLS(Transport Layer Security)
본문 바로가기

애플리케이션 보안 - SSL(Secure Sockets Layer) / TLS(Transport Layer Security)

액트 2019. 8. 22.

애플리케이션 보안 - SSL / TLS


다음 지문은 무엇을 설명한 것인가?    3
[보기]
- TCP/IP 프로토콜에서 전송 계층 바로 위에 위치하며 보안 기능을 수행한다. 
-사용자 상호인증, 데이터 기밀성, 메시지 무결성 등의 보안 서비스를 제공한다. 
- Handshake 프로토콜, Change Cipher Spec, Aler 프로토콜Record 프로토콜로 구성된다.

 

① IPSec 
② PGP 
③ SSL/TLS
④ SHTTP


1. SSL (Secure Socket Layer) 및 TLS (Transport Layer Security)

  ㅇ 전송계층 상에서 클라이언트,서버에 대한 인증 및 데이터 암호화 수행
     - 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을 형성해 주는 역할을 수행하는 보안용 프로토콜

  ㅇ 주요 응용
     - HTTP (HTTPS), FTP, TELNET, SMTP, SIP, POP, IMAP 등 에서 사용 가능
     - 주로, 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 많이 사용됨

  ㅇ 오픈 소스 구현 例) OpenSSL 

 

2. SSL/TLS 주요 기능

  ㅇ 상호 인증 
     - 공개키 인증서를 이용하여 서버,클라이언트의 상호 인증
     - 즉, 클라이언트/서버 두 응용 간에 상대방에 대한 인증

  ㅇ 메세지 압축 
     - 디폴트는 Null (즉, 무 압축)
        . (압축 알고리즘은 미리 정해지지 않고 협상으로 지정 가능)

  ㅇ 메세지 인증 (메세지 무결성)
     - 메세지 인증 코드 HMAC에 의한 메세지 무결성 제공 (HMAC MD5, HMAC SHA-1 등)

  ㅇ 암호화용 세션 키 생성(대칭 키 합의)을 위한 키 교환
     - RSA : 두 키(공개 키 및 개인 키)가 하나의 수 체계를 형성 (서버 공개 키 사용)
     - Diffie-Hellman  : Diffie-Hellman 프로토콜을 기반으로 한 키 교환 방식

  ㅇ 생성된 공유 비밀키에 의해 암호화된 종단간 안전한 연결 통로 제공
     - 스트림 암호화 : 40, 128 비트의 RC4
     - 블록 암호화   : IDEA, 40,56 비트의 DES, 168 비트의 3DES 등


3. SSL/TLS 특징

  ㅇ 클라리언트/서버 기반의 프로토콜

  ㅇ 응용 프로그램(어플리케이션) 자체 구현 가능
     - 대부분의 다른 보안 프로토콜(EAP,IPsec 등)은 운영체제 등에 밀접하게 관련됨

  ㅇ 인증 구조          :  X.509
     - X.509에서 규정된 공개키 인증서 교환에 의해 상대방에 대한 인증 수행
 
  ㅇ 키 교환 방식       :  (협상 선택 가능)
     - Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환,  Ephermeral Diffie-Hellman 키 교환, Fixed Diffie-Hellman 키 교환, Fortezza

  ㅇ 대칭키 암호화 방식 :  (협상 선택 가능)  
     - RC2 (40), RC4 (40), RC4 (128), DES, Triple DES, IDEA 등

  ㅇ 해쉬 알고리즘      :  (협상 선택 가능)
     - Null, MD5, SHA-1


4. SSL/TLS 프로토콜 스택

  ㅇ 전송계층 TCP 위에서, `보안 소켓/보안 채널/터널링`을 구성
     
     - 응용계층에서 생성된 데이터에 대한 보안(인증,무결성,기밀성),압축 등의 서비스 제공

     - SSL/TLS 보안 터널을 위한 TCP/UDP 포트번호
        . 例) 보안 HTTP를 위한 포트번호 443 (HTTPS)

     - 한편, UDP 상에서도 가능한 버젼으로, 
        . DTLS (Datagram Transport Layer Security) RFC 6347(2012년)가 있음

  ㅇ 프로토콜 스택                                          ☞ SSL/TLS 구성 프로토콜 참조
       
     - 크게, 하위 레코드 계층 프로토콜(단편화,압축,무결성,암호화,인증 기능 제공)과 상위 핸드세이크 관련 프로토콜들로 구성됨


5. SSL/TLS 핸드세이크 단계

  ㅇ 초기 협상 단계
     - 클라이언트, 서버 간에 Client Hello,Server Hello 메세지 교환
     - 클라이언트가 서버에게 Cipher Suite(사용 가능 암호화,해싱 방식 등)을 보내고 서버 인증서를 요구

  ㅇ 인증 단계
     - 서버에서 공개키,서버명,인증기관 주소 등을 포함한 인증서를 클라이언트에게 전송
     - 이때, 서버는 클라이언트가 제시한 것 중 자신이 선택한 암호화 방식 및 인증서를 보냄
     - 필요시 클라이언트는, 인증서를 발급한 인증기관 서버에 접속하여 서버 인증서의 유효성 확인

  ㅇ 보안 채널 형성
     - 클라이언트는 보안 채널 형성에 필요한 세션키를 만들기 위해,
     - 서버의 공개키를 이용하여 임의의 수(Pre Master Key)를 암호화시켜 서버에게 전송하고,
     - 서버는 자신의 비밀키(개인키)로 이를 해독(역암호화)하게 됨
     - 이때 임의의 수(Pre Master Key)로부터 Master Key를 유도하고, 
     - 이 Master Key로부터 양측은 암호화,복 호화에 필요한 세션키를 생성함

  ㅇ 상호 암호화 통신 시작
     - 즉, 보안성이 확립된 TLS 터널 내에서 상호 통신

댓글