일경네트워크_2022/11_TLS 전격 해설

책 커버 표지
목차

요약

Nikkei Network_22.11 특집 요약 (p20-31)

TLS 전격 해설
구조에서 최신 동향까지

안전한 통신을 실현하는데 있어서 중요한 프로토콜 ‘TLS(Transport Layer Security)’. 네트워크 기술자라면 TLS에 관한 지식은 필수다. TLS를 둘러싼 상황도 변화하고 있다. 23년 이후에 TLS 1.1 이전을 사용할 수 없게 되는 주요 클라우드도 있다. 최신판인 TLS 1.3도 보급되고 있다. TLS의 기본적인 구조에서 최신 동향까지 알기 쉽게 해설한다.

Part 1. 최신 동향
TLS 1.0/1.1은 사용 금지, 개발자는 대책 급선무

TLS(Transport Layer Security)는 웹 등의 통신을 암호화하는 보안 프로토콜이다. 웹 이외에도 널리 사용되며, 네트워크 기술자에게 필수적인 프로토콜 중 하나이다.

그리고 최근에는 TLS를 둘러싼 상황이 변하고 있다. 웹 브라우저의 벤더나 클라우드 사업자는 이전 버전의 이용을 금지하거나 추천하지 않고 있다. 이전 버전에는 보안상의 문제가 있기 때문이다. 이전 버전을 사용하는 기업은 영향을 받을 가능성이 있다. 기술자는 TLS의 최신 동향도 파악할 필요가 있다.

본 특집에서는 TLS의 기본적인 구조와 최신 동향을 철저히 해설한다.

-- SSL의 후계 프로토콜 --
TLS는 SSL(Secure Sockets Layer)의 후계 프로토콜이다. SSL은 미국 Netscape Communications가 개발했다. 최초 버전인 SSL 1.0은 1994년에 사양이 완성되었다. 하지만 취약성이 발견되어 제품에는 구현하지 않았다. 제품에 구현하면서 실제로 사용되게 된 것은 SSL 2.0부터이다. 이후 SSL 2.0에서도 취약성이 발견되면서 SSL 3.0을 개발했다.

SSL은 업계 표준(디팩트 스탠더드)으로서 널리 사용되고 있었지만 IETF(Internet Engineering Task Force)가 정한 이른바 인터넷 표준(Internet Standard)은 아니다. SSL의 사양은 인터넷 드래프트(Internet Draft)로서 공개되었고, 그것을 기본으로 각 사는 SSL을 구현하고 있었다.

한때는 SSL 3.0의 RFC(Request for Comments)화를 목표했지만, 이와 병행해 후계 프로토콜로서 TLS가 제안되면서 표준화 작업을 진행했다. 그리고 99년에 TLS 1.0을 규정한 RFC 2246을 공개했다.

TLS 1.0 이후에도 보안 문제가 속속 발견되면서 버전업을 반복하고 있다. 현재의 최신 버전은 TLS 1.3이다(2022년 10월 시점). 그리고 2021년에는 TLS 1.0 및 1.1의 사용을 비추천하는 RFC 8996이 공개되었다.

TLS1.0 및 1.1을 비추천하는 이유 중 하나는 다운그레이드 공격을 받을 우려가 있기 때문이다. TLS에서는 통신에 사용하는 암호 알고리즘을 여럿 준비하고, 그 중에 어느 것을 사용할지는 이용자끼리 결정한다. 보통은 양측이 사용할 수 있는 암호 알고리즘 중 가능한 한 강도가 높은 암호 알고리즘을 이용한다.

다운그레이드 공격에서는 공격자가 이용자 간 통신에 끼어들어 가짜 정보를 상대방에게 보낸다. 강도가 낮은 암호 알고리즘을 강제로 사용하게 하기 때문에 통신을 침해당할 우려가 있다.

-- 브라우저나 클라우드가 비추천으로 --
TLS 1.0 및 1.1의 비추천을 받아 주요 웹 브라우저는 지원을 중단했다.

주요 웹 브라우저 벤더들은 18년 10월, 20년 상반기에 TLS 1.0/1.1을 초기 설정으로 비활성화한다고 발표했다. 하지만 코로나19의 영향으로 일부를 제외하고 무효화를 연기. 20년 6월부터 순차적으로 무효화를 시작했다.

또한 Microsoft Edge에 대해서는 20년 중에 비활성화된 것은 Chromium 기반의 Edge뿐이다. EdgeHTML 기반의 레거시 Edge 및 Internet Explorer는 22년 9월에야 비활성화되었다.

대형 클라우드 서비스에서도 TLS 1.1 이전을 비추천하는 움직임이 가속화되고 있다. 아마존 웹 서비스(AWS)는 23년 6월 28일부터, AWS의 서비스에 대한 API(Application Programming Interface)는 TLS 1.2 이후가 아니면 호출할 수 없게 된다. 다만 로드 밸런서인 'Elastic Load Balancing'의 일부나 CDN(Content Delivery Network)의 'Amazon CloudFront' 등은 TLS 1.1 이전에서도 이용 가능하다.

아마존 웹 서비스 재팬의 퍼블릭 섹터 기술 총괄본부 총괄본부장인 다키자와(瀧澤) 씨는 "22년 9월 현재 TLS 1.1 이전 버전에만 대응하는 고객은 5% 미만이다"라고 밝혔으며, 23년 6월의 이전 버전 지원 중단 시까지 더 줄어들 것으로 예상된다.

Google Cloud Platform(GCP)은 이미 API 액세스에 대해 TLS 1.2 이후밖에 지원하지 않는다. 한편, 일반용 서비스는 영향을 고려해, TLS1.0/1.1의 지원을 계속. 서포트 정지도 현재로서는 미정이다. 다만 서포트는 하고 있지만 이용자가 최신 웹 브라우저를 사용하고 있으면 TLS 1.1 이전에 접속하는 일은 없다고 한다.

Microsoft Azure는 TLS 1.1 이전에서 접속하는 것을 정지할 예정은 없다. 다만 이용자에게는 TLS 1.3을 권장하고 있다.

-- 개발자는 조사와 수정이 필수 --
TLS 1.1 이전이 비추천인 현재, 이용자나 시스템 개발자는 무엇을 해야 할까? Cybozu Labs의 주간 연구원 미쓰나리(光成) 씨는 이용자가 해야 할 일에 대해 “TLS 1.2 이상에 대응한 최신 웹 브라우저를 사용한다”라고 지적한다. 주요 웹 브라우저는 자동 업데이트 기능을 갖추고 있기 때문에 통상적인 사용법을 사용하고 있다면 특별히 대응할 필요가 없다.

한편, 시스템의 개발자는 조사나 수정이 필요하다. 우선 자신이 개발한 시스템에 TLS 1.2 이후에 대응하지 않는 부분이 없는지 살펴본다.

조사에는 대형 클라우드 서비스가 제공하는 서비스를 이용할 수 있다. 예를 들어 AWS는 'AWS Cloud Trail'이라는 서비스를 준비하고 있다. 이는 이용자의 행동이나 API의 이용 상황의 로그를 기록하는 서비스이다. 기록한 로그를 분석하면 오래된 버전의 TLS를 사용하는 소프트웨어를 특정할 수 있다.

조사 결과 TLS 1.2 이후에 대응하지 않는 부분을 발견하면 대응하도록 수정한다. 구체적으로는 라이브러리를 최신 버전으로 업데이트하거나 소스 코드를 수정한다.

-- 10년 만에 버전업 --
TLS 1.2 이후, 10년 만에 버전업 된 TLS 1.3에서는 성능과 보안이 모두 강화되었다. 

주요 변경 사항은 3가지이다. 핸드셰이크의 효율화를 통해 통신 효율이 향상되었다. 암호 스위트의 정리, 재협상(Renegotiation)의 금지는 보안 향상에 기여한다.

Part 2. 핸드셰이크
암호화에 필요한 정보를 교환, TLS 1.3은 0-RTT를 실현

TLS에서는 암호화 통신을 시작하기 전에 통신 상대의 인증이나 암호화 통신에 사용하는 키 정보의 공유, 사용하는 암호 알고리즘의 결정 등을 실시한다. 이러한 교환은 핸드셰이크(Handshake)라고 부른다.

Part 3. 암호 스위트
안전성이 높은 방식에 제한, 핵심은 AEAD와 전방 보안성(Forward Secrecy)

TLS를 이해하는 데 핸드셰이크와 함께 중요한 것이 암호 스위트에 관한 지식이다. 암호 스위트(Cipher Suite)란 TLS에서 사용하는 암호 알고리즘 세트이다. TLS에서는 역할이 다른 복수의 암호 알고리즘을 사용한다.

 -- 끝 --

Copyright © 2020 [Nikkei Network] / Nikkei Business Publications, Inc. All rights reserved.

TOP

목차

TOP