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