TLS(Transport Layer Security)는 네트워크 통신을 암호화하는 보안 프로토콜입니다. SSL(Secure Sockets Layer)의 후속 표준으로, 현재는 TLS라는 이름이 공식 명칭이지만 관행적으로 SSL이라고도 부릅니다.
서버는 공개키와 개인키 쌍을 가집니다. 클라이언트는 서버의 공개키로 세션 키를 암호화하여 전송합니다. 개인키를 가진 서버만 복호화할 수 있습니다.
키 교환 후에는 대칭 키(세션 키)를 사용하여 데이터를 암호화합니다. 비대칭 암호화보다 훨씬 빠릅니다.
데이터와 함께 MAC을 전송합니다. 수신 측에서 동일하게 계산한 MAC과 비교하여 무결성을 확인합니다.
TLS 1.2는 연결 수립에 2회의 왕복이 필요했지만, TLS 1.3은 1회로 줄였습니다. 지연이 절반으로 감소합니다.
이전에 연결했던 서버에 재접속 시, 핸드셰이크 없이 즉시 데이터를 전송할 수 있습니다.
RSA 키 교환, MD5, SHA-1, RC4 등 오래된 취약 알고리즘을 제거했습니다.
루트 CA (Root Certificate Authority)
└── 중간 CA (Intermediate CA)
└── 서버 인증서 (End-Entity Certificate)
브라우저는 루트 CA 목록을 미리 보유합니다. 서버 인증서에서 루트 CA까지 서명이 이어지면 신뢰합니다. 이 구조를 인증서 체인(Chain of Trust)이라 합니다.
TLS는 여러 알고리즘의 조합으로 동작합니다.
TLS_AES_256_GCM_SHA384
AES_256_GCM: 대칭 암호화 알고리즘SHA384: 해시 알고리즘(무결성 검증)TLS 1.3에서는 취약한 조합을 제거하여 5가지 안전한 조합만 허용합니다.