
PC의 보급을 시작으로 최근엔 1인 1스마트폰시대에 인터넷은 생활의 일부를 넘어서
이제는 없이는 생활이 불편할 정도로 필수인 시대가 되었다.
뉴스, 쇼핑, 정보, 교육, 오락 등 일상에서의 단말기(PC,스마트폰)를 이용한
전반적인 서비스가 인터넷/웹(Web)을통해 서비스 되고 있다.
요즘 학생들은 코딩교육도 기본으로 받는다는 IT시대에
기본적이고 식상하다 할 수 도 있겠지만
우리가 인지하지 못하는 뒷편에서 벌어지는 일들과
현재 정부에서 시행하고 있는 인터넷 검열에 대해
간략하게 알아보자.
- Http
HyperText Transfer Protocol.
우리가 인터넷을 하기위한 약속(Protocol)이야.
요청하면 응답해주기(request/response)위한 약속인데
서로 무언가를 주고 받기 위해서 공통적으로 쓸 양식을 정해 놓은거라 보면 됨.
예를 들어 웹툰을 보고 싶다면 서버에게 "A웹툰 1화를 보고 싶어" 라는 명령을 Http 형식으로
서버에게 요청하면 서버는 마찬가지로 Http 로 만화를 전달해주는 식.
이 이상 설명하면 너무 고루하고 길어지니 기본 베이스가 Http라는 정도로 넘어가고
우리가 원하는 사이트에 접속하는 과정을 살펴보자.

우리가 www.google.com 에 접속하기 까지의 과정을 설명한 그림.
1. 인터넷 브라우저 주소창에 주소(www.google.com)를 입력.
2. ISP(Internet Service Provider)의 DNS 서버에 www.google.com의 IP를 요청.
3. ISP DNS에 www.google.com의 IP 정보가 없다면 다른 DNS 서버에 문의함.
(ISP는 인터넷 서비스 제공자 즉, SKT, KT, LG U+ 같은 통신 서비스 제공 업체.)
4. 요청받은 www.google.com의 IP(173.194.115.96)를 사용자에게 넘겨줌.
5. 넘겨받은 IP주소로 Http로 통신을 하기 위해 요청(request) 메시지를 보냄.
이 것들이 주소창에 www.google.com을 입력하고 이동을 눌렀을때 벌어지는 과정이야.
저 이후에는 google.com에서 응답(response)을 보내주고
서로가 Http를 사용함을 확인하였으니
대망의 메인(root) 페이지가 우리 브라우저 화면를 통해 보여지게 되는거지.
DNS가 중요한 녀석인데 도메인 네임 시스템의 축약으로
Domain Name System, Domain Name Server 라고도 불러.
www.google.com같이 우리가 알고 있는 주소를 IP 주소로 변환해주는 역활을 해.
우리가 어떤 사이트(서버)에 접속하기 위해서는 사실 IP주소가 필요하거든
그런데 우리는 숫자(IP)를 외우기 힘드니 중간에 DNS라는 녀석을 하나두고
알아보기 쉬운 영문 or 한글 주소를 DNS에 입력을 해둔거지.
일종에 주소록인 샘.
지금까지의 내용이 인터넷 연결 과정의 전부임.
교양수준에서 필요한 지식은 저정도 까지만 알아도 충분하다고 생각해.
다음 내용 부터는 다소 고루할수도 있는 내용들이야
그럼 이제 현재 대한민국 정부가 시행하고있는 인터넷 검열 방식에 대해 알아 보자.
- response 필터링
http는 요청(request)과 응답(response)이 이루어지는데
응답이 올 때 캐치하는 방식.
우리가 IP로 최초 요청을 하면 해당 사이트(서버)가 응답을 할때 사이트의 주소도 포함된다.
아래 Host : ~~ 처럼 말이지.
통신 서비스 업체들 ISP 네트워크 장비에 감시 시스템을 심어두고
오고가는 패킷들을 쭉 보다가
블랙리스트에 등록된 주소가 요청으로 오게되면 낚아 채버리고
위험한 그곳으로 인도하는 방식이야.
정리하면 이렇게 된다.
단순한 방식이다.
블랙리스트를 등록해두고 해당사이트에 요청이 오면 차단하고
사용자에게는 다른 사이트를 보내준다.
사용자는 이게 감시 시스템을 거친건지 알방법이 없지. ISP에 심어둔 시스템이니까.
이런 방식을 어디에 악용할 수 있냐하면 금융 사이트 피싱에 활용할 수 있음.
우리은행 주소를 입력했더니 중간에 농간을 부려
우리은행과 아주 닮은 피싱 사이트를 안내해 주면 사용자는
이게 정말 은행 사이트인지 모르지 않겠어?
- Https
http는 서로 통신을 할때 평문을 사용하기에
누구나 내용을 들여다 볼수 있다는 보안상의 약점이 있어.
그래서 등장한것이 Https(HTTP over TLS, HTTP over SSL, HTTP Secure).
간단하게 Http에서 Secure가 붙은 합성어.
이걸 설명하려면 TLS(Transport Layer Security)가 빠질수가 없는데
최대한 심플하게 개념만 정리해보면
사용자(클라이언트)와 사이트(서버)간에 평문 통신이 문제가 되니
우리 서로 주고받는 내용을 암호화 해서 우리 둘만 알수있게 합시다. 가 되겠다.
이 개념 사이엔 SSL, 인증서, SHA 등등이 있지만 그건 다음에 이야기 해보도록 하자.
그림으로 표현하면 다음과 같다.
*해당 그림은 인증서를 확인하고 SHA 암호화 방식에 사용하는 키를 주고받는 예
1. 사용자(클라이언트)는 사이트에 메시지(평문)를 전송. "안녕"
2. 사이트(서버)는 자신이 정상적인 사이트임을 증명하는 인증서를 전송.
3. 사용자는 인증서를 확인하고 암호화 사용할 패스워드를 전송.
4. 서버가 사용자한테 보낼때 사용할 패스워드를 전송.
5. 암호화 데이터 송수신.
Http에서는 사용자가 요청하면 바로 데이터를 서버에서 제공했지만
https에서는 서로 암호화 통신이 체결되기 전까진 데이터를 주지 않는다.
따라서 기존에 사용하던 response에서 걸러내던 방식으로는 차단 할수가 없음.
요약하면 http에서 TLS 라는 보안 요소를 결합한것이 https.
- DNS 차단
이게 오늘 이 글을 쓰게된 장본인.
http://biz.heraldcorp.com/view.php?ud=20181018000352
http://www.seoul.co.kr/news/newsView.php?id=20181018500102
http://www.yonhapnews.co.kr/bulletin/2018/10/18/0200000000AKR20181018048100004.HTML
2018.10.19부터 정부에서 DNS 차단을 시행하고 있어.
앞서 설명한 http 항목의 그림을 다시 한번 참고해 보자.

기존까지는 4번 항목
즉, 응답(response)에 대한 필터링을 통해 차단을 했지만
3번-4번 구간을 TLS(https)로 암호화 되어 통신을 하니 차단 효과를 기대할 수 가 없자
1번 항목, DNS에 요청할때 URL을 검열하기로 했어.
ISP 네트워크 장비에 감시 시스템을 마련해두고
google IP좀 알려줘라고 DNS에 요청하면 요청한 IP 대신
warning.or.kr 사이트의 IP를 응답하는 식이지.
기존에 http 를 차단하던 방식과 유사하지?
이건 불법사이트로 부터 국민보호 한다는 대의명분만 그럴싸하지
관제 도청, 감청, 해킹... 중국/북한 수준의 공산국가에서 하고있는 탄압이라고 생각해
5천만 국민이 매일 어디에 접속하고 어떤 서비스를 이용하고 어떤 정치성향을 가지고 있고..
이러한 방대한 개인정보를 얼마든지 수집하고 활용할 수 있다는 의미거든.
생활의 전반적인 서비스가 인터넷을 통해 이루어지고 계속 확장 되어가는데
발전하는 기술에 제도 보완과 개선의 노력은 고사하고 감시체계 구축에 열을 올리는 것이
옳은 방향인가에 대해서 깊은 회의감이 들어
그렇다면 DNS 차단은 극복할 방법이 없는가?
아니죠.
http,dns 차단닽은 행태의 공격들을 Man-in-the-middle attack 이라고 하는데
개인정보와 보안에 민감한 서구의 IT 전문가 선생님들은 이미 대안을 마련줌.
- DNS over HTTPS / DNS over TLS
2018년 초 부터 Google과 Mozilla Foundation, Cloudflare에서는
DNS over HTTPS(이하 DoH)에 대해서 테스트를 하고있는 중 인데
개념은 심플해.
기존에 DNS서버와 통신을 할 때 목적지가 평문으로 노출 된다는 것이 문제가 되니
인터넷 브라우저(FireFox, Crome등)에서 DNS 요청을 HTTPS를 통해
기존에 요청하던 방식과는 다른 방식(JSON,웹쿼리)으로 위장하여 보안성을 높인 방법이야.
DNS over TLS는 또 다른 방법론 인데
애초에 현재 DNS서버와 통신하는 방식 자체가 구식이고 한계가 명확한 방식이니
방식자체를 바꾼 방법.
기존방식은 53번 포트를 통해 평문으로 내용을 주고 받는데
앞서 설명한 TLS 프로토콜로 변경하면 안전하다는 이야기.
다만 이방법은 아직 표준도 아니고 무엇보다 DNS 서버가 지원이 되어야 가능하니
좀 더 지켜봐야 할 부분 이라고봐.
마지막 방법으로는 본인의 로컬 컴퓨터/내부네트워크 에 아예 DNS 서버를 내장하는 방법이 있어.
즉, ISP DNS 서버를 사용하지않으면 거기저 검열을 하든지 말던지...
다만 단말기(PC,스마트폰 등)마다 구축을 해줘야하니 많은 노력이 들어가는 방법이라 어렵지.
- SNI
SNI(Server Name Indication)
앞서 설명했던 TLS를 보면 서로의 보안을 위해서 인증서를 주고 받는다고 했지?
1개의 웹사이트가 1개의 IP(서버)를 가지고 있다면 문제가 없지만.
1개 IP(서버)에 여러개의 웹사이트가 서비스 되고 있다면 인증에 문제가 생기게 되.
그때 필요한 것이 SNI다.
쉽게 설명하자면 이 IP에 AAA.net도 있고 BBB.co.kr 도 등록되어 있으니
걱정하지말고 인증서 주고 받으렴 하고 보증을 해준다고 보면 될거 같다.
SNI를 왜 설명하느냐하면 이것도 검열에 활용될 여지가 다분히 있기 때문이야.
이미 문화 보도자료를 통해 해당 검열 방식을 개발 중이라고 보도한바 있으니 아마 확정이라 봐야겠지.
해당 검열 방식도 이전 방식들가 유사하다 죄다 취약점 공격.
Https에서 인증 후에 통신은 암호화 되어 안전하지만
SNI는 인증 절차 단계이기에 평문이기 때문이지.
요즘같은 경우 1개 IP(서버)에 1개의 사이트를 운영하는 일은 드믈어
따라서 https를 사용한다면 SNI에서 벗어나긴 어렵다.
다만 Cloudflare에서 ESNI(Encrypted SNI)를 서비스 하고 있는데
이는 Cloudflare서비스를 이용하고 있는 웹사이트에서만 가능한 부분이고
그렇지 않은 웹사이트가 훨씬 많기 때문에 관제 감시에 대한 우려는 앞으로 더 커질 것 같다.
최대한 쉽게 설명하려하다보니 생략한 부분도 많아서 걱정이 되지만
대충 이런 내용이구나 정도로만 봐줬으면 좋겠어





