SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인터넷 상에서 두 시스템 간에 통신할 때 데이터의 기밀성(Confidentiality)과 무결성(Integrity)을 보장하기 위해 설계된 암호화 프로토콜입니다. 현대 웹의 보안 표준인 HTTPS의 핵심 기술로, 사용자가 웹사이트에 로그인하거나 신용카드 정보를 입력할 때 제3자의 도청이나 데이터 변조를 방지하는 역할을 수행합니다.
개요 및 역사적 배경
SSL은 넷스케이프(Netscape)社가 1990년대 초 개발한 프로토콜로, 초기 버전인 SSL 1.0은 보안 결함으로 공개되지 않았고, SSL 2.0과 SSL 3.0이 이어졌습니다. 그러나 SSL 3.0 이후 보안 취약점이 지속적으로 발견되면서, 인터넷 공학 태스크 포스(IETF)가 이를 표준화하여 TLS 1.0을 1999년에 발표했습니다.
현재는 'SSL'이라는 용어가 널리 사용되지만, 기술적으로는 TLS 프로토콜이 적용됩니다. SSL과 TLS는 호환성이 있지만, 보안상 SSL 2.0 및 3.0은 더 이상 사용되지 않으며, TLS 1.2와 TLS 1.3이 현재 권장되는 표준입니다.
주요 기능과 작동 원리
TLS 프로토콜은 주로 TLS 핸드셰이크(Handshake) 과정을 통해 연결을 설정합니다. 이 과정은 다음과 같은 단계를 포함합니다.
- 클라이언트_hello_: 클라이언트가 지원 가능한 TLS 버전, 암호화 알고리즘(Cipher Suite) 목록, 그리고 무작위 숫자(Random Number)를 서버에 전송합니다.
- 서버_hello_ 및 인증: 서버가 선택한 암호화 알고리즘과 자신의 디지털 인증서(Certificate)를 클라이언트에게 전송합니다. 인증서는 서버의 신원을 확인하는 데 사용됩니다.
- 키 교환: 클라이언트는 서버의 인증서를 검증한 후, 서버의 공개키를 사용하여 '프리마스터 시크릿'(Pre-Master Secret)을 생성하고 서버에 전송합니다.
- 세션 키 생성: 양측은 공유된 정보를 바탕으로 동일한 '세션 키'(Session Key)를 생성합니다. 이 키는 대칭 키 암호화에 사용되어 이후의 통신 데이터를 암호화합니다.
이 과정을 통해 공개된 채널에서도 안전한 통신 채널이 확립됩니다.
TLS의 핵심 보안 요소
TLS는 다음과 같은 세 가지 주요 보안 목표를 제공합니다.
- 기밀성(Confidentiality): 전송되는 데이터가 암호화되어 제3자가 내용을 읽을 수 없도록 합니다. 주로 대칭 키 암호화 알고리즘(AES, ChaCha20 등)을 사용합니다.
- 무결성(Integrity): 데이터가 전송 중에 변조되거나 손상되지 않았음을 보장합니다. 메시지 인증 코드(MAC) 또는 HMAC를 사용하여 구현됩니다.
- 인증(Authentication): 서버(및 필요시 클라이언트)의 신원을 확인하여 피싱 사이트나 중간자 공격(Man-in-the-Middle Attack)을 방지합니다. 이는 공개키 기반 구조(PKI)와 디지털 인증서를 통해 이루어집니다.
TLS 버전의 진화와 보안
| 버전 |
상태 |
특징 및 비고 |
| SSL 3.0 |
폐기 |
POODLE 공격 등 심각한 취약점 존재. 모든 현대 브라우저에서 지원 중단. |
| TLS 1.0 |
폐기 |
BEAST 공격 등 취약점. 2020년 이후 주요 브라우저에서 지원 중단. |
| TLS 1.1 |
폐기 |
TLS 1.0과 유사한 취약점 포함. 2021년 지원 중단. |
| TLS 1.2 |
권장 |
현재 가장 널리 사용되는 표준. 다양한 암호화 스위트 지원. |
| TLS 1.3 |
최신 |
연결 속도 향상(1-RTT 핸드셰이크), 불필요한 암호화 알고리즘 제거, 보안 강화. |
현대 웹에서의 적용: HTTPS
웹 브라우저와 웹 서버 간 통신은 HTTPS(HyperText Transfer Protocol Secure)를 통해 이루어지며, 이는 HTTP 위에 TLS 프로토콜이 겹쳐진 형태입니다. 사용자가 웹 사이트에 접속할 때 주소창에 자물쇠 아이콘이 표시되는 것은 TLS 연결이 성공적으로 설정되었음을 의미합니다.
TLS 인증서는 신뢰할 수 있는 인증 기관(CA, Certificate Authority)으로부터 발급받아야 합니다. 브라우저는 내장된 루트 인증서 목록을 통해 서버의 인증서가 유효하고 신뢰할 수 있는지 검증합니다.
결론 및 보안 권고사항
SSL/TLS는 인터넷 보안의 필수 요소입니다. 개인 사용자 및 조직은 다음과 같은 사항을 준수해야 합니다.
- TLS 1.2 이상 사용: 구버전 프로토콜은 더 이상 안전하지 않으므로, 서버 설정에서 TLS 1.2 또는 TLS 1.3만 허용하도록 구성해야 합니다.
- 정기적인 인증서 갱신: 인증서 만료 기간을 모니터링하고 갱신하여 서비스 중단과 보안 경고를 방지합니다.
- 강력한 암호화 스위트 사용: 약한 암호화 알고리즘(예: RC4, DES) 대신 AES-GCM, ChaCha20-Poly1305 등 안전한 알고리즘을 우선으로 설정합니다.
TLS 기술의 지속적인 발전은 디지털 트랜스포메이션 시대에 데이터 프라이버시와 신뢰를 유지하는 데 핵심적인 역할을 하고 있습니다.
관련 문서
# SSL/TLS
**SSL**(Secure Sockets Layer)과 **TLS**(Transport Layer Security)는 인터넷 상에서 두 시스템 간에 통신할 때 데이터의 기밀성(Confidentiality)과 무결성(Integrity)을 보장하기 위해 설계된 암호화 프로토콜입니다. 현대 웹의 보안 표준인 HTTPS의 핵심 기술로, 사용자가 웹사이트에 로그인하거나 신용카드 정보를 입력할 때 제3자의 도청이나 데이터 변조를 방지하는 역할을 수행합니다.
## 개요 및 역사적 배경
SSL은 넷스케이프(Netscape)社가 1990년대 초 개발한 프로토콜로, 초기 버전인 SSL 1.0은 보안 결함으로 공개되지 않았고, SSL 2.0과 SSL 3.0이 이어졌습니다. 그러나 SSL 3.0 이후 보안 취약점이 지속적으로 발견되면서, 인터넷 공학 태스크 포스(IETF)가 이를 표준화하여 **TLS 1.0**을 1999년에 발표했습니다.
현재는 'SSL'이라는 용어가 널리 사용되지만, 기술적으로는 **TLS** 프로토콜이 적용됩니다. SSL과 TLS는 호환성이 있지만, 보안상 SSL 2.0 및 3.0은 더 이상 사용되지 않으며, TLS 1.2와 TLS 1.3이 현재 권장되는 표준입니다.
## 주요 기능과 작동 원리
TLS 프로토콜은 주로 **TLS 핸드셰이크**(Handshake) 과정을 통해 연결을 설정합니다. 이 과정은 다음과 같은 단계를 포함합니다.
1. **클라이언트_hello_**: 클라이언트가 지원 가능한 TLS 버전, 암호화 알고리즘(Cipher Suite) 목록, 그리고 무작위 숫자(Random Number)를 서버에 전송합니다.
2. **서버_hello_ 및 인증**: 서버가 선택한 암호화 알고리즘과 자신의 디지털 인증서(Certificate)를 클라이언트에게 전송합니다. 인증서는 서버의 신원을 확인하는 데 사용됩니다.
3. **키 교환**: 클라이언트는 서버의 인증서를 검증한 후, 서버의 공개키를 사용하여 '프리마스터 시크릿'(Pre-Master Secret)을 생성하고 서버에 전송합니다.
4. **세션 키 생성**: 양측은 공유된 정보를 바탕으로 동일한 '세션 키'(Session Key)를 생성합니다. 이 키는 대칭 키 암호화에 사용되어 이후의 통신 데이터를 암호화합니다.
이 과정을 통해 공개된 채널에서도 안전한 통신 채널이 확립됩니다.
## TLS의 핵심 보안 요소
TLS는 다음과 같은 세 가지 주요 보안 목표를 제공합니다.
* **기밀성**(Confidentiality): 전송되는 데이터가 암호화되어 제3자가 내용을 읽을 수 없도록 합니다. 주로 대칭 키 암호화 알고리즘(AES, ChaCha20 등)을 사용합니다.
* **무결성**(Integrity): 데이터가 전송 중에 변조되거나 손상되지 않았음을 보장합니다. 메시지 인증 코드(MAC) 또는 HMAC를 사용하여 구현됩니다.
* **인증**(Authentication): 서버(및 필요시 클라이언트)의 신원을 확인하여 피싱 사이트나 중간자 공격(Man-in-the-Middle Attack)을 방지합니다. 이는 공개키 기반 구조(PKI)와 디지털 인증서를 통해 이루어집니다.
## TLS 버전의 진화와 보안
| 버전 | 상태 | 특징 및 비고 |
| :--- | :--- | :--- |
| **SSL 3.0** | 폐기 | POODLE 공격 등 심각한 취약점 존재. 모든 현대 브라우저에서 지원 중단. |
| **TLS 1.0** | 폐기 | BEAST 공격 등 취약점. 2020년 이후 주요 브라우저에서 지원 중단. |
| **TLS 1.1** | 폐기 | TLS 1.0과 유사한 취약점 포함. 2021년 지원 중단. |
| **TLS 1.2** | 권장 | 현재 가장 널리 사용되는 표준. 다양한 암호화 스위트 지원. |
| **TLS 1.3** | 최신 | 연결 속도 향상(1-RTT 핸드셰이크), 불필요한 암호화 알고리즘 제거, 보안 강화. |
## 현대 웹에서의 적용: HTTPS
웹 브라우저와 웹 서버 간 통신은 **HTTPS**(HyperText Transfer Protocol Secure)를 통해 이루어지며, 이는 HTTP 위에 TLS 프로토콜이 겹쳐진 형태입니다. 사용자가 웹 사이트에 접속할 때 주소창에 자물쇠 아이콘이 표시되는 것은 TLS 연결이 성공적으로 설정되었음을 의미합니다.
TLS 인증서는 신뢰할 수 있는 인증 기관(CA, Certificate Authority)으로부터 발급받아야 합니다. 브라우저는 내장된 루트 인증서 목록을 통해 서버의 인증서가 유효하고 신뢰할 수 있는지 검증합니다.
## 결론 및 보안 권고사항
SSL/TLS는 인터넷 보안의 필수 요소입니다. 개인 사용자 및 조직은 다음과 같은 사항을 준수해야 합니다.
1. **TLS 1.2 이상 사용**: 구버전 프로토콜은 더 이상 안전하지 않으므로, 서버 설정에서 TLS 1.2 또는 TLS 1.3만 허용하도록 구성해야 합니다.
2. **정기적인 인증서 갱신**: 인증서 만료 기간을 모니터링하고 갱신하여 서비스 중단과 보안 경고를 방지합니다.
3. **강력한 암호화 스위트 사용**: 약한 암호화 알고리즘(예: RC4, DES) 대신 AES-GCM, ChaCha20-Poly1305 등 안전한 알고리즘을 우선으로 설정합니다.
TLS 기술의 지속적인 발전은 디지털 트랜스포메이션 시대에 데이터 프라이버시와 신뢰를 유지하는 데 핵심적인 역할을 하고 있습니다.
## 관련 문서
* [HTTPS](https://ko.wikipedia.org/wiki/HTTPS)
* [공개키 기반 구조(PKI)](https://ko.wikipedia.org/wiki/공개키_기반_구조)
* [디지털 인증서](https://ko.wikipedia.org/wiki/디지털_인증서)
* [중간자 공격](https://ko.wikipedia.org/wiki/중간자_공격)