SSL / TLS

강보훈·2021년 12월 10일
0

간단 정리

  • SSL(Secure Socket Layer) 및 TLS(Transport Layer Security)는 네트워크를 통해 작동하는 서버, 시스템 및 응용프로그램간 전송계층 보안 프로토콜이다.
  • TCP/IP 네트워크를 사용하는 통신에 적용되며, 전송계층 종단간 보안과 데이터 무결성을 확보해준다.
  • 4 계층(전송계층)과 7 계층(애플리케이션) 사이에서 동작한다.
  • TLS는 SSL3.0을 기반으로 만들었지만 서로 상호작용은 안된다.

TLS 3단계 절차

  1. 지원 가능한 알고리즘 상호 교환
  2. 키 교환 및 인증
  3. 대칭키 암호로 암호화하고 메세지 인증
  • 일반적인 알고리즘들
    • 키교환 - RSA
    • 인증 - RSA, DSA
    • 대칭키 암호 - 3DES, AES, DES

버전별 차이점

TLSv1.2

  • key를 유도할 때 사용되는 PRF(Pseudo Random Function)함수가 MD5와 SHA-1 모두 사용 했지만 TLSv1.2부터는 SHA-256만 사용가능하다. 옵션으로 더 강한 방식을 선택할 순 있다.
  • Finish 메세지에도 hash값 생성 시 MD5-SHA-1 방식에서 SHA-256으로 변경
  • Authenticated encryption cipher 지원. 주로 AES GCM, CCM mode가 많이 사용됨.
  • 모든 TLS 버전은 SSL과 호환성을 제거하도록 재정의함

TLSv1.3

  • 가장 큰 특징은 강화된 보안향상된 속도 이다.
  • 안전하지 않은 암호화 방식들을 과감하게 제거했다.
    • RSA key transport — Doesn’t provide forward secrecy
    • CBC mode ciphers — Responsible for BEAST, and Lucky 13
    • RC4 stream cipher — Not secure for use in HTTPS
    • SHA-1 hash function — Deprecated in favor of SHA-2
    • Arbitrary Diffie-Hellman groups — CVE-2016-0701
    • Export ciphers — Responsible for FREAK and LogJa
  • HandShake 과정이 2-RTT에서 1-RTT로 변경되어 지연이 줄어들었다. 그리고 이전 handshake한 두 대의 컴퓨터가 서로의 정보를 저장한 뒤, 향후 연결에 이전 키를 사용하는 것을 허용하는 0-RTT Resumption도 지원함으로써 속도가 향상되었다.
profile
신입 안드로이드 개발자입니다!

0개의 댓글