MSM8994의 화룡점정 블로그

SNI 차단이 뭐야? TLS 1.3은 해결책이 될 수 있을까. 본문

읽을거리

SNI 차단이 뭐야? TLS 1.3은 해결책이 될 수 있을까.

msm8994 2018. 7. 11. 07:00

지난 5월 정부는 통신사와 함께 저작권 침해 사이트를 차단하기 위해 DNS 단계에서 해당 웹사이트의 서버 주소를 변조하는 차단을 시행했습니다. 사람들은 검열이라는 양날의 칼에 대해 중국처럼 되는거 아닌가 불안을 감추지 못하 DNS over HTTPS (DNS 암호화 통신) 를 찾아다니기 시작했습니다. 제 블로그에서도 이 내용을 다뤘었죠?



지난 세월 HTTPS가 대중화되는 동안 DNS와의 통신은 변함없이 일반 통신으로 진행되어왔는데요. 이러면 누군가 DNS 통신 내용을 가로채 엉뚱한 사이트 또는 정교하게 만들어진 피싱 사이트로 여러분을 낚게 되겠죠?


> 일본과 한국에서 최근 DNS over HTTPS가 언급되기 시작하다

http://msm8994.tistory.com/2

 


여기에서 파이어폭스에서 DNS over HTTPS를 설정하는 법 마찬가지로 안드로이드 P에서 비공개 DNS를 설정하는 법도 살펴봤습니다. 그런데, 내년이 시작되면 이 방법으로도 안심하실 수 없습니다. 바로 SNI 차단을 도입하기로 한 건데요.


현행 차단 방식은 보안 프로토콜이나 유동IP를 사용하는 침해사이트에 효과가 떨어진다.


정부는 서버네임인디케이션(SNI) 필드 차단 방식 등 개선된 기술을 개발해 도입한다. SNI 방식을 도입하면 보안 프로토콜 사용 직전에 이뤄지는 통신을 분석, 사이트를 차단할 수 있다. 도박, 음란, 저작권 침해 등 접속 차단 대상 사이트에 활용가능하다.


>"제2밤토끼 없다" 정부 내년 초 불법사이트 원천차단 기술 도입 (전자신문 2018-07-10)

http://v.media.daum.net/v/20180710113505633



그럼 SNI가 뭐야?

그럼 SNI가 무엇인지 살펴봐야겠죠?


현재 HTTPS 페이지에서 주로 사용되는 접속은 이렇게 이루어집니다.

클라우드플레어의 2016년 글에서 발췌.


TLS 1.2까지의 접속 과정을 순서대로 설명하면 이렇습니다.


1. 브라우저가 서버에 "나는 TLS를 써서 연결하고 싶다. 나는 이러이러한 암호화 알고리즘(cipher suites)을 쓸 줄 안다" 라고 요청을 보냅니다.

2. 서버가 "그래. TLS 써서 연결하면 된다. 너가 보낸 것들중에 암호화 알고리즘을 골랐으니 이걸 써 줘"라고 합니다.

3. 서로 공개키 기반 암호화에 사용할 키 교환이 이루어집니다. (Key Share)

4. 이제 브라우저가 HTTP GET 요청을 서버가 보낸 키로 암호화해서 보내주면 서버에서는 브라우저가 보낸 키로 암호화한 HTTP 응답을 보냅니다. 

5. 페이지 수신 완료.


SNI(Server Name Indication, 서버 이름 특정) 필드는 서버에 말을 거는 1번 과정에 필요합니다. 이 SNI 필드는 어떤 서버에 말을 걸어야 할지 가리켜주는 겁니다.


인터넷 주소에서 도메인은 주소 뒤쪽 두세 덩이 뿐입니다.

가령 msm8994.tistory.com/2 에서 도메인은 tistory.com이 됩니다. msm8994는 도메인 내에서 사용할 서버 이름인데 이건 별다른 감사나 비용지불(SSL인증서 구입) 또는 검증과정 없이 운영측이 마음대로 만들 수 있습니다.


이런 점을 악용해 피싱 사이트를 만들어 보안카드나 아이클라우드 정보를 수집하는 범죄집단도 있습니다.

https://blogs.cisco.com/security/are-you-the-lucky-one-sometimes-luck-can-bring-you-malware

모바일 브라우저에 작은 주소 칸과 모든 HTTPS 사이트에 브라우저가 주소창에 붙여주는 초록색 "안전함" 표식은 사람들이 이 사이트가 진짜 페이스북인 줄로 믿게 합니다.


한 웹사이트에서 여러 서비스(msm8994.tistory.com이나 www.tistory.com이 서로 다른 사이트로 연결되는 것처럼 나뉘어있지요)를 하게 되면서 자연스레 이를 담당하는 서버 역시 나누게 되었습니다. 여기엔 물리적인 컴퓨터 뿐만 아니라 웹서버 프로그램이 나뉘는 것도 포함하는데, 그 서버들을 하나하나 도메인을 등록하는 것은 비용이 많이 들고 사이트 이용자를 혼란에 빠트릴 겁니다.


보통 도메인은 서버 하나의 IP에 연결해 두는데, 그 경우 브라우저가 어느 서비스로 들어오려는건지 서버에선 판단할 수 없습니다. 그래서 SNI필드라는 TLS 확장을 사용해 접속할 서비스가 여기라고 초장부터 선언하는 것입니다. 


그런데 SNI필드가 제시되는 시점이 3번(키 교환) 이전이기 때문에 암호화되지 못합니다. SNI 차단은 이걸 가로채 바꿔버려 접속을 방해한다는 계획이지요.


TLS 1.3은 큰 도약입니다.

브라우저가 서버에 연결하면서 응답을 암호화하라고 처음부터 알고리즘을 추측해 이걸 기반으로 키를 내어줍니다. 서버에서는 이 알고리즘을 할 줄 알면 바로 자신의 공개키를 내어주면 됩니다. 브라우저가 보내준 그 키로 암호화해서 말이죠.

클라우드플레어의 2016년 글에서 발췌.


그럼 이미 키가 교환되었으므로 바로 송수신을 시작하면 됩니다.


여기에서 TLS 1.3 이후 제정되고 있는 SNI 암호화 확장을 사용했을 때 SNI값은 도메인과 연결된 서버와 통신하면서 암호화되어 제시됩니다. 그 서버가 통신내용을 열어서 SNI필드를 보고 브라우저가 접속하려는 서버로 연결을 이어(relay)줍니다. 기존에는 통신에 몰래 끼어든 누구라도 SNI필드를 보고 만질 수 있었지만 이제는 아닌 것입니다.


잠깐, 뭐라구요?

시스코 블로그에서 발췌


IETF가 TLS 1.3의 최종안(final draft)을 승인한게 3월입니다. 서버에서 TLS 연결용으로 많이 쓰이는 OpenSSL도 현재 TLS 1.3을 지원하고 있습니다. 하지만 문제가 있습니다. 앞서 말했듯 SNI 암호화는 3월 승인 때 TLS 1.3에 포함되지 않았고 현재에도 계속해서 표준 제정이 논의되고 있습니다. TLS 1.3에서도 SNI 값은 암호화되지 않고 전송되고 있습니다.


그럼 지금은 방법이 없다는건가요?

그렇습니다. 불법 사이트 차단을 위해 SNI 오염을 통한 검열을 정부와 통신사가 하겠다고 했고, 그나마 점점 도입되고 있는 TLS 1.3에도 SNI 암호화가 없는 지금은 이 검열을 피할(우회할) 방법이 없습니다. VPN을 쓰라고 제가 여기에 적는다면 그건 지난 글에서 보여준 것과 같은 탁월한 무언가는 아니겠죠. 대한민국이 중국처럼 검열대국이 되지 않았으면 좋겠습니다.


현재 중국 정부는 공문서상 이름을 사용하지 않은 1천만 계정을 정지(영문)시키고 검열되지 않은 해외발 뉴스를 못 보게 막았으며(영문) 사람들이 암호화 통신으로 보호받는 채팅 앱들을 내린 데다(영문) 시진핑 주석과 오바마 대통령을 외모로 풍자한 곰돌이 푸우 그림조차도 검색하지 못하게 검색어 '푸우'를 막는 등 검열과 통제를 활용해 비판과 감시의 싹을 자르고 있습니다. 


> 일본과 한국에서 최근 DNS over HTTPS가 언급되기 시작하다

http://msm8994.tistory.com/2


중국에선 저런게 모두 불법이기에 차단하고 있는 것이죠. 이렇듯 이해하기 힘든 불법의 기준이 적용되는건 아닐까 걱정이 되는것도 사실입니다. 


탄자니아의 이런 규제에 주변국 우간다는 소셜미디어세를 만들기에 이릅니다. 7월 1일부터 페이스북, 왓츠앱, 스카이프, 트위터, 인스타그램, 유튜브 등의 소셜 미디어 서비스 이용자는 200 우간다 실링(약 500원)을 매일 접속료로 내야합니다.

>탄자니아의 엄격한 인터넷 규제가 블로거와 컨텐츠 생산자들을 오프라인으로 만든다 (더 버지 인용) 2018-07-06

http://msm8994.tistory.com/37



들어가려는 사이트마다 접속세를 내지 않으면 차단되는 것도 먼 미래가 아닐지도 모르겠네요. 한국의 통신사는 이미 자사 서비스의 데이터량 무제한이나 카톡의 보이스톡 등 인터넷전화(VoIP) 이용량 상한 설정, 테더링 제한 같은 정책을 통해 이미 "모든 패킷은 평등하게 다뤄져야 하는 망중립성"을 위배하고 있으니까요.


맺음말

방법이 없다는 사실에 많이 낙심하셨을겁니다. 검열 철회 청원은 2만 5천명이 조금 넘는 수준에서 기한이 끝나버렸습니다. 검열이라는 양날의 검에 경고하는 목소리는 불법 사이트 차단이라는 좋은 명분 하에 사람들의 공감을 얻지 못한 것으로 보입니다. 하지만 기억해야 합니다. 지금 반짝 성과가 보인다고 검열을 합리화 하는 것은 소수의 범법자들에겐 VPN을 이용하는 등의 작은 귀찮음만 감수하면 될 뿐인 일이지만 인터넷 기록이 감시되는 피해는 모두가 지게 됨을 말이죠. 



참고

TLS1.3의 개요와 문답 - 클라우드플레어 https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/

암호화된 SNI - IETF https://tools.ietf.org/html/draft-rescorla-tls-esni-00#section-3

SNI란? - 코모도 KB https://support.comodo.com/index.php?/Knowledgebase/Article/View/1120/38/what-is-sni-and-how-it-works

당신은 행운아입니까? 그 행운이 악성코드를 가져다 줄 수 있습니다 - 시스코 블로그 https://blogs.cisco.com/security/are-you-the-lucky-one-sometimes-luck-can-bring-you-malware

Comments