인터넷의 연결 과정에 대해서 알아보자. (feat. 정부의 인터넷 검열)

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 : blog.kimkitty.cf 처럼 말이다.

 

통신 서비스 업체들 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서비스를 이용하고 있는 웹사이트에서만 가능한 부분이고

그렇지 않은 웹사이트가 훨씬 많기 때문에 관제 감시에 대한 우려는 앞으로 더 커질 것 같습니다.

 

 

 

 

Post Author: 김 키티

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다