공통 SNI 기반 HTTPS 사이트 차단

황제낙엽 2020.03.04 15:32 조회 수 : 170

sitelink1 https://blog.naver.com/aepkoreanet/221465526990 
sitelink2  
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

정부 기관의 요청에 따라국내 ISP(인터넷 사업자)는 “SNI 필드차단” 방식을 이용하여 유해한 웹사이트를, 2019 2 11일부터 차단하기 시작하였다고 합니다. 12일 보도된 자료에 의하면차단된 사이트는 음란물이나 도박 등 불법 유해 사이트로 895개 이며이 중 776개는 도박사이트라고 하였습니다.

 

불법 유해 사이트 차단 관련 기사가 나오면서차단하기 위하여 사용된 기술이인터넷 검열(Censorship)을 하기 위해 사용되고 있는 기술과 동일하기 때문에인터넷 검열이라는 이슈로 불이 옮겨 붙어 논란이 되고 있습니다즉 잠자고 있는 민감한 이슈인 인터넷 검열” 이슈를 깨운 것이라고 여겨집니다.

 

논란의 시발점이 된 “SNI 차단 기술이 무엇인지를 기술적으로 정리해 보았습니다..

 

 

SNI(Server Name Indication)

SNI(Server Name Indication) HTTPS 통신 즉 암호통신을 제공하는 보안서버에서 사용하는 표준 프로토콜인, TLS 프로토콜의 확장(extension) 기능에 속합니다즉 시대의 요청에 따라 TLS 프로토콜에 추가된 필드(Field) 이름입니다..

 

Web Browser HTTPS를 지원하는 Web Server에 접속 시접속하고자 하는 Web Site 이름(도메인네임 또는 호스트이름)을 “SNI 필드(field)”에 넣은 상태로 Server에 접속합니다참고로, ClientHello 메시지에 들어 있습니다.

 

 

SNI(Server Name Indication)가 필요한 이유

클라우드 서비스 사업자 나 CDN(Content Delivery Network) 사업자 나 Web Hosting 서비스 사업자인 경우는동일한 자원으로 많은 고객에게 서비스를 제공해야 하기 때문에하나의 Server가 다수의 Site 이름을 가지는 것이 필요하며또한 IPv4 주소 체계에선, IP 주소가 고갈이 되었기 때문에새로운 Site가 생길 때마다새로운 IP 주소를 할당해 줄 수도 없기 때문에시장의 필요에 따라 한 개의 서버가 다수개의 Site 를 지원하는 기능이 요구되어져 왔습니다.

 

하나의 Server가 복수개의 “Site 이름(도메인이름)”을 가지고 있다면즉 물리적으로 Server는 하나이고 IP 주소도 하나이지만다수개의 Web Site 들이 존재하는 것이 됩니다.

 

Web Browser Server에 접속할 때는사이트 이름이 아닌 IP 주소로 접속하므로동일한 Server를 공유하는 모든 Site는 동일한 IP 주소를 갖게 되므로, Server 입장에서는, IP 주소만으론 어느 Site에 접속하는 지 알 수 없기 때문에구별하는 방법이 필요하였습니다.

 

HTTP 프로토콜을 지원하는 사이트인 경우는, HTTP Header 정보에 접속하고자 하는 Site 이름을 넣어 두고 접속하면 구현이 되었습니다.

 

HTTPS 프로토콜인 경우는 HTTP Header 정보가 전달되기 이전 즉 암호통신이 시작되기 전초기 단계에서접속 Site를 확정해야 하므로새로운 방식이 요구되어 졌고, SNI 필드가 추가된 것입니다초기 단계에서, SNI 필드에 저장된 Site 이름을 가지고 구별하는 것입니다.

 

이를 이해하기 위해서는, HTTPS 프로토콜이 동작하는 방식을 알아야 하므로설명하고자 합니다.

 

HTTPS 통신 즉 TLS 프로토콜에서는, Web Browser Server에 접속 시, ClientHello 메시지를 보내고, Server는 응답으로 ServerHello 메시지를 보냅니다. Browser ServerHello 메시지 안에 들어 있는 서버인증서인 “SSL Certificate”를 꺼내어 검증을 합니다. Server가 자신이 접속하고자 하는 바로 그 사이트 인지를 검증하는 절차를 거칩니다 Certificate안에 있는 이름과 동일한 지를 비교하는 것입니다일치되면, Certificate안에 들어 있는 Public-Key를 이용하여, Session-Key라 불리는 암호키를 생성한 후암호통신을 시작합니다.

 

복수개의 “Site 이름(도메인이름)”을 가진 Server를 지원하기 위해, ClientHello 메시지에 SNI 필드를 추가한 것입니다. Web Browser ClientHello 메시지를 보낼 때 SNI 정보도 함께 보내는 것입니다. Server SNI 필드에 들어 있는 정보를 보고접속하고자 하는 Site 명을 구분하고이에 대응되는 SSL Certificate를 ServerHello 메시지 안에 넣고, Browser에게 응답하는 것입니다. Server는 제공하는 Site 당 각각의 SSL Certificate를 가지고 있어야 합니다아래 그림은 이해를 돕기 위한 자료입니다.

 sni2.jpg

 

 

요약하면, IP 주소는 동일하지만 다수개의 HTTPS 사이트를 지원하는 Web Server를 위해서 SNI가 필요한 것입니다.

 

 

SNI를 지원하는 Web Browser  Web Server S/W

SNI 기능을 사용하기 위해서는, Web Browser에서 SNI 기능을 지원해야 하며, Web Server Application(예를 들면, Apache HTTP Server, MS IIS, Nginx )에서도 SNI 기능을 지원해야 합니다.

 

SNI 기능을 지원하지 않는 Web Browser다수개의 Web Site를 지원하는 Web Server에 접속하면, ServerHello 메시지에 default SSL Certificate만 들어 있으므로, default SSL Certificate에 대응되는 Web Site 외에는 모두 접속이 되지 않습니다.

 

요즈음 사용하고 있는 최신 버전들은 모두 SNI 기능을 지원하고 있습니다.

 

참고로, MS WinXP에서 사용하는 IE Browser SNI를 지원하지 않으며, MS IIS 2012년도에 나온 Version 8 부터 지원하고 있으며, Apache HTTP Server  version 2.2.12부터 지원합니다.

 

 

SNI Security(보안문제점

SNI 정보는 암호화되지 않은 plain-text 형태로 전달되기 때문에3자가 볼 수 있다는 것입니다 ISP(인터넷 서비스 사업자)같이, Network상에서 traffic을 볼 수 있는 자라면개인에 대한 도메인 도청(접속하는 도메인이름 즉 사이트 이름을 엿봄)”을 할 수 있다는 것입니다좀 더 나아가면 도메인 이름을 기반으로 하는 인터넷 검열(Censorship)도 할 수 있습니다실제로 여러 국가에서 인터넷 검열을 하는 방법 중 하나로 “SNI 필드 필터링(filtering)” 방식을 사용하고 있습니다즉 검열하고자 하는 사이트에 대한 블랙리스트를 만들어 놓고통신 packet속에 들어 있는 SNI 필드 값을 비교하여블랙리스트에 속한 이름이면 검열하는 것입니다.

 

이러한 Security 문제를 해결하기 위해, ESNI(Encrypted SNI) 라는 기술표준이 제안되어졌고(2018 7 3 IETF 제안이 등록되었음)개발되어지고 있다고 합니다.  참고로, TLS v1.3 에 표준 기능으로 들어가지는 못했지만, TLS v1.3을 기반으로 구현된다고 합니다.

 

참고로, CDN 서비스 사업자인 Cloudflare는 상기 규격 즉 ESNI를 지원하는 시범서비스를 2018 924일부터 하고 있습니다물론 이 서비스를 사용하기 위해서는 ESNI를 지원하는 Web Browser를 사용해야 합니다파이어폭스(Firefox) 64버전부터 지원한다고 합니다실제로 사용하기 위해선 추가 설정을 해야 한다고 합니다(인터넷에 이에 대한 자료가 많이 올라와 있으므로 참조하시기 바랍니다)

 

 

번호 제목 sitelink1 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의   황제낙엽 2025.04.10 52
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의   황제낙엽 2024.02.02 631
45 무료 SSL/TLS 인증서 Let's Encrypt(Linux+Apache) secret https://letsencrypt.org/docs/rate-limits/  황제낙엽 2020.04.05 17
» SNI 기반 HTTPS 사이트 차단 file https://blog.naver.com/aepkoreanet/221465526990  황제낙엽 2020.03.04 170
43 사설인증서 공인인증서 구분 방법 file   황제낙엽 2019.07.16 186
42 Convert Certificate Format SSL 인증서 변환 가이드 https://www.securesign.kr/guides/SSL-Cer...ert-Format  황제낙엽 2019.03.29 199
41 *.key와 *.crt를 PKCS#12(*.pfx, *.p12)로 형식으로 변환하기 https://www.eznbiz.co.kr/help/qna/content/3  황제낙엽 2019.03.29 213
40 HOWTO: DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them http://info.ssl.com/article.aspx?id=12149  황제낙엽 2019.03.29 869
39 How to convert a certificate file from .crt to .cer? file https://www.sonicwall.com/support/knowle...597576961/  황제낙엽 2019.03.29 678
38 국내(KOREA) IP 사용 대역 file http://www.domain.kr  황제낙엽 2019.02.21 360
37 서버 보안 관리를 위한 백업과 점검 절차   황제낙엽 2017.05.30 201
36 정보 보안 개론 : 네이버 지식백과 http://terms.naver.com/list.nhn?cid=5843...ryId=58437  황제낙엽 2017.05.19 191
35 개발용 tomcat 운용시 tomcat-users.xml 의 관리 주의   황제낙엽 2017.04.07 391
34 윈도우 원격데스크톱(RDP) 접근 이력 조회 file http://skylit.tistory.com/196  황제낙엽 2017.04.06 243
33 SSL, TLS, OpenSSL 관련 http://kin.naver.com/qna/detail.nhn?d1id...K9fw%3D%3D  황제낙엽 2015.12.31 217
32 운영 모드 ( Mode of Operation )   황제낙엽 2013.03.07 347
31 암호화 알고리즘 스크랩   황제낙엽 2012.08.28 3076
30 미연방 표준 암호 알고리즘 http://rustican.com/board/zboard.php?id=paper&no=140  황제낙엽 2010.05.21 285
29 blowfish java source file http://www.angelfire.com/moon/dmp/  황제낙엽 2010.05.16 507
28 파일 해쉬 알고리즘 CRC   황제낙엽 2009.12.01 409
27 해쉬 알고리즘의 종류   황제낙엽 2009.12.01 406
26 Ajax 보안 관련 문서 (Attacking AJAX Web Applications) file   황제낙엽 2009.02.12 176