본인은 현재 정보보안 실무자가 되기 위한 공부를 하고 있는 사람입니다. 최근 이틀동안 이 SNI 필드차단에 대해 빡세게 공부했고 그 결과를 여러분께 공개합니다.
(PC에서 작성하다보니, 모바일에서 불친절할수 있음. 죄송)

1. 우리는 Naver에 들어갈 때 인터넷 주소창에 www.naver.com 이라고 치면, 네이버 화면이 뜬다.

2. 이것은 우리가 DNS 서버에 www.naver.com 적힌 쪽지를 보내 네이버 http 화면을 받아오기 때문에 가능한 것이다.

나 : www.naver.com 여기 사이트 좀 요청 할께요.(www.naver.com을 가지고 DNS 서버로 가지고 감)
DNS 서버 : 어 너 네이버 영문주소 가지고 왔네? 네이버 IP 주소 알려줄테니 걸루 가봐. (네이버 IP주소를 가르쳐줌)
나 : (네이버 IP 주소를 받아와서 다시 해당 IP 주소로 가서 네이버 화면을 받아옴) Naver 화면이 뜸

대략 이런 식임. 더 쉽게 말하자면, DNS 서버(혹은 서비스, 혹은 풀)는 인터넷에서 영문주소와 IP주소를 매칭시켜주는 정보가 저장된 전화번호부라고 생각하면 됨.

그래서 DNS 서비스 필요없이 IP주소로 바로 네이버에 접속하고 싶으면, 직접 주소창에 IP 주소를 치면 됨. 이렇게


3. 이번 SNI 필드 차단 방식 이전의 방식들은 이 DNS 서버에서 특정 주소를 지운 것이다(가렸다고도, 주소를 변경했다고도 표현 가능)


                                            
                                            

우리가 인터넷을 쓸때 DNS 서비스 공급자는 보통 ISP인 SK,KT,LG U+ 등이다. 이 공급자들에게 특정 주소는 기존 IP주소를 지우고 전부 warning으로 연결시키라고 지시하는거다.


자 이 방식은, 전화번호부에서 특정 주소 목록만 지운 것이기 때문에, 정부에서는 우리가 어떤 사이트를 들어가는지 알수 없다.(인터넷 공급자는 로그를 기본적으로 다 보유하고 있지만, 정부소유는 아니다). 
그리고 국내 전화번호부가 아닌 해외 전화번호부(구글이나 클라우드 플레어 같은 것들)를 거치면 이 방법으로 차단시키지도 못한다.
사실 이 정도 수준의 방식은 정말 너그럽게 이해해주면, 검열이 아닌 차단이라고 이해해줄 수 있다. 왜냐면, 우리가 어디에 접속하는지 기록을 다 보지 않고 있었으니까.

이게 바로 "차단"이다. 뒤에 말하겠지만, 이 3번 항목이 '차단'이라는 것을 유념하라


4. 이러한 전화번호부 전화번호 지우는 차단은 https 방식으로 우회가 가능했다.
http://xzxcz.com에
https://xzxcz.com으로 s를 붙이는 것은
SSL이라는 보안인증서가 적용된 사이트에서만 가능한 것으로, 쉽게 말해서 기존의 보안이 없는 http 서비스에 두 통신 주체 간에 보안 인증 방식을 도입했다~~라고만 이해해도 충분하다.


SSL이 없으면 이렇게 웹사이트 주소와 IP주소의 매칭을 중간에 차단할 수 있는데,


SSL을 통하면 이렇게 주소와 IP를 매칭시켜주는 작업이 암호화를 통하기 때문에
매칭을 감시하던 전화번호부가 자기 일을 못하게 되는 거임.



5. 이 상황을 뚫기 위해 나온 방식이 그저께 도입된 <SNI 필드 차단> 방식이다.

자 우리는 SSL이 일종의 보안인증서고 보안방식의 일종이라는 것을 4번에서 배웠다.
그런데 이 SSL은 '기본적으로' 한 IP에 한 개의 SSL 밖에 적용할 수 있다.
근데, 하나의 서버에는 하나의 IP가 제공되는데, 서버 안에는 여러개의 웹사이트가 있을 수도 있지 않은가?

그래서 하나의 IP에 여러개의 SSL을 할당하기 위한 확장 표준을 마련한 것이 SNI라고 보면 된다.
이 SNI는 현재 https를 지원하는 사이트의 대부분(98%)이 SNI를 적용하고 있다.
문제는 여러분이 통신서비스를 이용할 때 SNI를 통하게 되면 사용자는 사이트에 접속하면서 도메인 정보를 암호화되지 못한 상태로 내보내게 된다는 것이다.



이렇게 빨간글씨의 서버 이름은 암호화 되지 못하고 노출된다.

정부는 이제 뭘하면 될까??

바로 저 차단할 사이트가 위치한 서버의 이름을 블랙리스트에 등록 할 수 이게 됐다.

자, 문제는 바로 여기서 생긴다.




                                   
          <유저>       ---->         <DNS>        ---->      <웹사이트>
1. http://xxx.com 요청            123.45.67.123 요청           
2.                                   123.45.67.123 은 warning으로...
3.                                                                 warning 화면 받음.

기존의 DNS 차단 방식은 연결을 위한 모든 과정을 진행한 다음, 최종과정에서 서버 IP를 반환할 때 차단을 진행하기 때문에 ISP 공급자의 로그를 뒤지지 않는 이상 유저를 특정하기 어렵다.


그런데!

이 SNI 필드 차단은 사용자가 특정 url, 주소를 입력하면

해당사용자가 입력한 url이 서버의 전화번호부에 접속한 IP와 매칭이 되기 전부터 실시간 패킷 분석을 통해 
막아버리는 것이기 때문에 실시간으로 어떤 사람이 어떤 사이트에 접속하려 했는지 다 알 수 있다. 무조건 알 수 있다.
이 쪽 분야를 잘 모르는 사람들이 이해하기 어려운 디테일들을 생략하면서도 가장 강조할 수 있는 것은
사용자를 쉽게 특정할 수 있냐, 없냐는 것이다.
정부는 이제 여러분이 차단하려는 불법 사이트를 제외하고서도, 여러분이 평소에 어떤 사이트를 언제 들어가는지 알 수 있게 됬다.
이 SNI 필드 차단 방식은 ISP나 정부가 접속을 중간에 가로채는 원리이기 때문에, 빼도박도 못하게 패킷을 감청하는 행위가 된다.
다시 말하지만, 엄연한 감청 행위란 것이다.

기존의 DNS 차단방식도 논란이 있긴 했지만(DNS 오염), 미국에서도 필요에 따라 사용하는 방식이기도 했다.






하지만, 이 SNI 필드 차단은 이 방식보다 중국의 황금방패(중국의 인터넷 검열 시스템,인터넷의 모든 패킷을 감시, "인터넷은 국가의 주권, 정부가 관리")에 더 가까운 시스템이라고 볼 수 있다.


6. 결론

이 실시간 패킷 감청을 통한 '악의적인 이용''할수있다''한다'는 엄연히 다른 것은 맞다.
하지만, '불가능한 것''할 수도 있다'는 것은 또 엄연히 다른 것 아닌가?


이전까지 정부는 악의적인 이용도 '불가능했지만'
지금부터는 '할 수도 있다'는 것이 결론이다.


실시간 패킷 분석을 통한 감청 행위는 이미 시작되었고, 이것은 엄격히 검열이다.

패킷을 실시간으로 감청하여 url과 ip주소의 매칭을 사전에 차단하는 것이 위 검열의 의미와 완전히 들어맞는데,
이게 검열이 아니면 뭔데?

내용이 없으면 검열이 아니라고? 보내는 사람이랑 받는 사람을 모조리 수집하는데 왜 검열이 아닌데?



이것은 검열이 아니라, 차단이다!!!!!!!!라고 주장하고 싶은 독재정부를 추구하는 소수의 사람들의 마음은 알겠는데,
그 분들은 위에 3번 항목 다시 읽고 와라. 3번이 차단이고 지금의 SNI 필드 차단은 빼박 검열이다.




자, 우리는 테러방지법에서 '할 수 도 있는' 국민에 대한 감청에 대해서도 기본권 침해라며 들고 일어서서 필리버스터를 하고 난리가 났었지.

근데 어쩌나? 갑자기 '불가능한'것이 벌써 '할수도 있게' 됬는데?

이것이 검열이 아니라 차단이라고 끝까지 쉴드치고 싶은 사람들에게는 참 안타까울 뿐이다.