본문 바로가기
Web Server

[WEB] SSL / TLS

by Haengsin 2021. 11. 27.

1. SSL ( Secure Socket Layer)

전송 계층 보안(Transport Layer Security, TLS, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)은 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약이다. 그리고 '트랜스포트 레이어 보안'이라는 이름은 '보안 소켓 레이어'가 표준화 되면서 바뀐 이름이다. 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송 계층 종단간 보안과 데이터 무결성을 확보해준다. 이 규약은 웹브라우저, 전자메일, voice-over-IP(VoIP) 같은 응용 부분에 적용되고 있다. 국제 인터넷 표준화 기구(IETF)에 의해 현재 구식(deprecate)으로 간주되어 있다.[2] 최종 갱신은 RFC 5246이고, 최종 갱신 버전은 Netscape에서 만든 SSL 표준을 바탕으로 했다.

 

- Netscape 사에서 개발.

- SSL 3.0 까지 업데이트 되었다.

- 4계층 (전송계층, TCP)과 7계층 (애플리케이션계층) 사이에서 동작하는 전송 계층 보안 프로토콜

 

2. TLS (Transport Layer Security)

TLS는 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청, 간섭, 위조를 방지하기 위해서 설계되었다. 그리고 암호화를 해서 최종단의 인증, 통신 기밀성을 유지시켜준다.

 

- IETF(국제 인터넷 표준화 기구)에서 SSL 3.0을 업데이트하였다.

- TLS 1.0은 SSL 3.1이라고 불리기도 했다.

- 현재는 TLS 1.3 까지 업데이트 되었다. 

- HTTPS / FTPS 등 많은 종류의 TLS를 이용하는 서비스가 있다.

 

제공하는 보안 서비스

(1) 무결성 : MAC(Message Authentication Code)를 통해 메시지의 위변조 여부 확인

(2) 기밀성 : 대칭키 암호를 이용하여 송수신 메시지를 암호화

(3) 인증 : 인증서를 이용한 상호 인증 (Server - Client)

 

3. SSL/TLS의 구조 및 기능

- SSL/TLS Protocol 자체에서 2개의 계층으로 나뉜다.

- 상위 : Handshake / Change Cipher Spec / Alert / Application Data

- 하위 : Record

 

(1) Handshake : 서로 사용할 보안 파라미터 협상이 진행.

(2) Chang Cipher Spec : 협상이 완료된 보안 파라미터 적용을 알림.

(3) Alert : 통신 과정에서 발생하는 오류를 통보.

(4) Application Data : 7계층에서 전달된 데이터.

(5) Record : 무결성, 암복호화 등 실제로 SSL/TLS가 동작하는 구간.

SSL/TLS 구조

4. SSL/TLS의 3단계 기본 절차

  • 1. 지원 가능한 알고리즘 서로 교환
  • 2. 키 교환 및 인증
  • 3. 대칭키 암호로 암호화하고 메시지 인증

 

 

※ HTTPS (HyperText Transfer Protocol Secure socket Layer)

TLS를 사용해 암호화된 연결을 하는 HTTP를 HTTPS(HTTP Secure)라고 하며, 당연히 웹사이트 주소 역시 http://가 아닌 https://로 시작된다. 기본 포트는 80번이 아닌 443번을 쓴다.

흔히 TLS와 HTTPS를 혼동하는 경우가 많은데, 둘은 유사하긴 하지만 엄연히 다른 개념임을 알아두자. TLS는 다양한 종류의 보안 통신을 하기 위한 프로토콜이며, HTTPS는 TLS 위에 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜이다. 다시 말해 TLS는 HTTP뿐만이 아니라 FTP, SMTP와 같은 여타 프로토콜에도 적용할 수 있으며, HTTPS는 TLS와 HTTP가 조합된 프로토콜만을 가리킨다.

 

 

[ TLS 1.0, TLS 1.1 지원 종료 ]

Apple Safari, Google Chrome, Mircrosoft Edge, Mozilla Firefox 를 포함한 주요 웹 브라우저들이 2020년 상반기에 TLS 1.0과 1.1 통신에 대한 지원을 중지하였다.

 

초기 SSL Protocol 을 기반으로 개발된 TLS 는 Client-Server 간의 통신 채널을 보호하고 암호화하기 위해 사용되는 암호화 프로토콜이다.

 

TLS는 현재 1.0, 1.1, 1.2, 1.3(최신)으로 총 4개의 버전이 존재한다. 이 중에서 구 버전인 TLS 1.0, 1.1은 POODLE, BEAST 와 같은 여러 공격에 취약한 것으로 알려졌고 중단되었다.

 

  • POODLE (Padding Oracle On Downgraded Legacy Encryption) 취약점:
    • 구식 암호화 기법을 악용할 수 있게 하는 프로토콜 다운그레이드 취약점
  • BEAST (Browser Exploit Against SSL/TLS) 취약점:
    • End-Point Browser 에서 HTTPS의 쿠키들을 해독하고 효과적인 타깃의 세션을 하이제킹할 수 있는 취약점.
    • 주요 Web Browser 및 Application에 구현된 TLS는 다운그레이드 협상 프로세스(Downgrade Negotiation Process)를 지원하기 때문에 서버가 최신 버전을 지원하더라도 공격자가 취약한 프로토콜을 이용할 수 있다.

대부분의 웹 브라우저에서 2020년에 TLS 1.0 및 1.1 을 비활성화하였고, Microsoft OS의 경우, 아래와 같이 Windows Server 2012 이후 버전부터는 TLS 1.2를 Default로 지원한다.

Windows Server 2019 (Cloud Server Image) 에서는 레지스트리 수준에서 TLS 1.0 및 TLS 1.1을 사용하지 않도록 설정하여 구성된다. 즉, 애플리케이션이 이 버전의 Windows에 배포되며 TLS 협상을 위해 Windows 스택을 사용하면 TLS 1.0 및 TLS 1.1 통신이 허용되지 않는다.

  • TLS 1.0 , TLS 1.1 허용을 위한 Powershell script : Link

※ Windows Server 2008 R2 서버 IIS7.5 이상에서도 Windows Update 후 registry를 수정하면 TLS 1.2 Protocol이 지원된다고 함,,

 

 

 

Reference

 

'Web Server' 카테고리의 다른 글

[WEB] NginX - Tomcat 연동  (1) 2022.08.12
공부 정리  (0) 2021.12.06
[WEB] HTTP 1.0 과 HTTP 1.1 그리고 HTTP 2.0  (0) 2021.12.03
[WEB] Proxy - Forward Proxy & Reverse Proxy  (0) 2021.12.02
[WEB] DNS  (0) 2021.12.01