Secure Sockets Layer(보안 소켓 계층)은 웹 브라우저와 서버 간에 암호화된 통신을 제공하기 위해 널리 사용되던 프로토콜이며, 현재는 대부분 TLS(Transport Layer Security)로 대체되었다.
개요
SSL은 네트워크 상에서 전송되는 데이터의 기밀성, 무결성, 인증을 보장하기 위해 설계되었다. 주로 HTTP와 결합하여 HTTPS(보안 하이퍼텍스트 전송 프로토콜)를 구현하는 데 사용되었다.
역사
| 연도 | 주요 사건 |
|---|---|
| 1994 | 넷스케이프(Netscape)에서 최초의 SSL 1.0 사양이 내부적으로 개발되었으나 공개되지 않음. |
| 1995 | SSL 2.0 공개, 초기 상업적 채택 시작. 보안 취약점이 발견되어 곧 수정됨. |
| 1996 | SSL 3.0 발표. 프로토콜 구조가 재설계되어 이전 버전의 주요 취약점을 보완. |
| 1999 | TLS 1.0이 IETF에 의해 표준화되면서 SSL 3.0을 기반으로 하는 TLS 1.0이 정의됨. |
| 2006‑2020 | SSL 2.0·3.0은 점차 사용 중단(deprecated)되었으며, 최신 브라우저와 서버는 TLS 1.2·1.3을 기본 지원. |
주요 구성 요소
-
핸드쉐이크(handshake) 과정
- 클라이언트와 서버가 서로 인증서를 교환하고, 사용할 암호화 알고리즘(이전에는 RSA, 이후에는 ECDHE 등)을 협상한다.
- 성공적인 협상 후, 세션 키가 생성되어 이후 데이터 전송에 사용된다.
-
레코드 프로토콜
- 실제 애플리케이션 데이터(예: HTTP 메시지)를 암호화·무결성 검증 후 전송한다.
-
인증서와 PKI
- X.509 인증서를 이용해 서버(및 옵션으로 클라이언트)의 신원을 검증한다. 인증서는 인증 기관(CA)이 서명한다.
보안 특징
- 기밀성: 대칭키 암호화(예: AES, 3DES)를 사용해 전송 데이터가 제3자에 의해 읽히지 않도록 함.
- 무결성: HMAC(해시 기반 메시지 인증 코드) 등을 통해 데이터 변조 여부를 검증한다.
- 인증: 서버 인증서는 CA 서명을 통해 신뢰성을 확보한다. 클라이언트 인증은 선택 사항이다.
주요 취약점 및 폐기
- POODLE (2004, SSL 3.0): CBC 모드의 취약점을 이용한 공격으로 인해 SSL 3.0 사용이 권고되지 않는다.
- BEAST (2011, TLS 1.0): 초기 TLS/SSL 버전의 CBC 모드 구현에 대한 공격.
- Heartbleed (2014, OpenSSL): 구현(라이브러리) 수준의 결함으로, SSL 자체 프로토콜이 아니라 특정 구현에 국한된 문제.
이러한 취약점과 현대 암호 기술의 발전으로 인해 2015년 이후 주요 브라우저와 운영체제는 SSL 2.0·3.0을 기본적으로 차단한다.
현재 상황
- TLS 1.2와 TLS 1.3이 현재 표준으로 널리 채택되어 있다.
- SSL은 공식 문서와 보안 가이드라인에서 “구식 프로토콜”로 분류되며, 신규 서비스에서는 절대 사용되지 않는다.
- 일부 레거시 시스템에서 아직 SSL 3.0을 지원하나, 보안 위험 때문에 단계적 폐기가 진행 중이다.
관련 표준
- RFC 6101 – SSL 3.0 (1999)
- RFC 2246 – TLS 1.0 (1999)
- RFC 4346 – TLS 1.1 (2006)
- RFC 5246 – TLS 1.2 (2008)
- RFC 8446 – TLS 1.3 (2018)
참고
SSL은 인터넷 보안 역사에서 중요한 전환점으로 평가되지만, 현재는 실제 운용 환경에서 사용되지 않는다. 최신 보안 요구사항을 충족하려면 TLS 1.2 이상을 적용하는 것이 권고된다.