해당 글의 이미지는 루나뱅 kQ 블로그의 ‘그림으로 쉽게 이해하는 인터넷 검열 원리와 우회 원리 해설’ 포스팅의 첨부된 PPT 에서 이미지를 추출한 것으로 저작권자 명시 필수, 영리적 사용 금지 라이선스에 따라 인용되었음을 명시합니다. ( https://blog.naver.com/luexr/222250390461 )


Image

한국은 꽤나 인터넷 검열을 많이 하는 국가로 초록색은 FREE, 노란색은 PARTLY FREE, 보라색은 NOT FREE 이다. 제 1세계 국가들은 보통 FREE 인 것에 비해 한국은 여전히 노란색임을 알 수 있다 (미국, 캐나다, 일본, 영국, 호주 등) 전세계적으로는 20위 정도로 수치가 높은 편은 아니다.

Image

글로벌 자유, 표현이나 정치적 자유 측면과 비교하면 대체로 같이 따라가는 것에 비해 한국은 인터넷 상의 자유가 더 낮은 것을 확인할 수 있다.

관련 내용을 취재한 기사에 따르면 다음과 같다. ( https://www.yna.co.kr/view/AKR20221018124300009 )

프리덤하우스는 일단 한국의 긍정적 측면과 관련, “인터넷이 널리 접속 가능하고, 온라인 생태계는 다양한 콘텐츠로 넘치는 데다 자기검열도 제한적”이라 언급했다.

하지만 “한국 입법자들은 인터넷 서비즈 제공업체들의 웹사이트 이용 정지 요건을 확대하고, 허위정보 유포를 이유로 인터넷 서비스에 불균형적인 징벌적 손해배상를 가하고, 망중립성을 훼손하는 법안을 발의하거나 통과시키고 있다”고 꼬집었다.

또 “사정기관이 언론인과 정치인은 물론 그 가족까지 불법 사찰을 했다는 의혹도 불거졌다”며 “당국은 북한 관련 내용을 비롯한 웹사이트 차단을 지속하고 있고, 수천명이 온라인상 발언으로 명예훼손과 모욕 사건에 휘말리는가 하면, 성별에 따른 괴롭힘이나 여성에 대한 성적 학대도 확산 추세”라고 언급했다.

프리덤하우스는 그러면서 작년 8월 더불어민주당 주도로 국회에서 통과된 ‘언론개혁법’인 개정 언론중재법, 고위공직자범죄수사처(공수처)의 내외신 언론인 통신자료 조회 논란을 예시로 들었다.

지난 대선 기간 중앙선거관리위원회의 온라인 게시물 8만6천건 삭제 요청, 유튜브와 트위치에서 활동하던 ‘BJ잼미’(본명 조장미)가 악성 댓글로 우울증을 앓던 끝에 극단적 선택한 사건, 피임법 정보 등을 제공하는 비영리 국제 시민단체 ‘위민온웹’ 사이트 차단 등도 거론했다.


그렇다면 인터넷 차단을 어떻게 하는 걸까? 그걸 알기 위해서는 우선 브라우저에서 웹사이트에 접속하는 원리에 대해 알아야한다.

Image

인터넷 망을 통해서 DNS 서버에 해당 도메인과 연결된 웹서버 주소를 물어본다. DNS 서버는 그 내용이 자기에게 없으면 다른 DNS 서버에 물어봐서 있으면 반환 값을 받아서 캐싱하고 다시 사용자에게 반환한다. 도메인 소유자는 도메인 정보에 DNS 서버를 설정할 수 있는데 이 DNS 서버에 적용된 IP 주소와 같은 레코드들을 다른 DNS 서버가 캐싱 하는 형식으로 설정값들이 전파된다.

Image

전파해서 해당 웹서버의 IP 를 받은 후 연결이 되고 나면 3way handshake 를 통해 연결을 수립한다. 이건 통상적으로 쓰이는 HTTP 프로토콜이 TCP/IP 기반이라 그런 것인데 이렇게 서로 SYN 와 ACK 를 주고 받으면서 정상적으로 통신이 되는지 확인하고 연결을 수립한다.

Image

연결이 수립 되었으면 해당 웹서버로 부터 HTML, CSS, JS 같은 파일들과 미디어 파일들을 가져온다. 해당 파일들은 브라우저 엔진에 의해 파싱 되고, 랜더링 된다. 흔히 이야기하는 프론트엔드는 이렇게 HTML CSS JS 등을 이용해 홈페이지의 레이아웃과 기능들을 프로그래밍 하고, 백엔드는 로그인과 데이터베이스에 게시물 저장, 프론트엔드의 요청을 처리하여 반환하는 서버의 프로그래밍을 한다.


URL 기반 차단

Image

첫 번째로 적용했던 건 URL 베이스 차단이다. 인터넷망은 통신사의 인프라를 사용하게 되어 있는데 이는 암호화된 연결이 아니기에 중간에 패킷 감청 및 분석이 가능하다. 그래서 이것을 분석하여 차단하려는 서버 URL 로 접속하면 워닝 사이트와 같은 사이트로 리다이렉트 하는 것이다. ( http://warning.or.kr/ )

Image

이것은 공권력이 아니라 해커들도 사용하는 방식으로 http 통신을 하는 경우 중간에 세션이나 쿠키들을 가로채고, 변조하기 더 원활해진다. 왜냐하면 http 는 보통 상태를 기억하고 있지 않는 통신으로 세션이나 쿠키등을 통해 계속 사용자가 로그인했음을 기억하고 처리하기 때문이다. 이런 문제 때문에 대부분 사이트들은 HTTPS 라는 공개키 암호화를 통해 통신을 수립하고 세션 대칭 키를 교환하는 방식으로 통신을 하게 되었다. ( 국내 웹호스팅 사, 혹은 기업 홈페이지의 경우 한국정보인증 등의 유료 인증서를 많이 사용한다. )

Image

전세계적인 추세가 https 를 사용하는 것이 되었고 Let’s Encrypt 등의 비영리 무료 인증서들의 등장으로 이렇게 URL 기반 차단이 의미가 없어지자 다른 방법으로 차단을 하기 시작했다.

DNS 기반 차단 i

Image

처음에 웹페이지를 불러오는 과정에 대해 설명했을 때 DNS에 해당 도메인에 대한 IP 를 질의한다고 했다. 그 때 DNS 에서 잘못된 IP 를 반환하면, 사용자는 엉뚱한 사이트로 가게 되는 것이다. 이 원리를 이용해서 통신사 DNS 에서 차단하려는 사이트에 접속하려고 하면, 차단 되었는 홈페이지 IP 를 반환하여 차단하는 것이다. 보통 사람들은 사용하는 인터넷망 ISP 통신사 DNS 를 사용하기 때문이다. 하지만 이는 구글 DNS 나 ( 8.8.8.8, 8.8.4.4 ) 클라우드플레어 DNS ( 1.1.1.1 ) 등의 국내법을 적용 받지 않는 해외 DNS 를 사용함으로써 우회할 수 있었다.

DNS 기반 차단 ii

Image

해외 DNS 를 써도 문제가 있었는데 하나는 DNS 질의는 평문으로 하는 것이고, 다른 하나는 통신사 인프라를 사용하는 것이다. 즉 통신사와 협력해서 DNS 질의 패킷을 아예 폐기 시킨다면 DNS 의 정보를 불러올 수 없으니 소용이 없는 일이었다. 공권력의 경우 DNS 질의 패킷을 폐기 시키지만, 해커의 경우 DNS 값을 변조해서 자신이 운영하는 피싱사이트 등으로 리다이렉트 할 수도 있다. 이런 문제 때문에 DoH 와 DoT 를 사용하게 된다.

DoT 는 Dns Over TLS 로 DNS 질의를 TLS 통신으로 하는 것이다. DNS 쿼리에 사용되는 UDP 통신에 TLS 를 사용하여 변조를 막는 것이다.

DoH 는 Dns Over Https 로 DoT 의 대안으로 나왔다. DoT 는 전용 포트인 853 을 사용하는데 이는 네트워크를 스캔하는 사람이 알아채고 모니터링 할 수 있다. 그렇기에 HTTPS 프로토콜에 DNS 질의를 하여 외부에서 구별하기 어렵게 하는 것이다.

이런 DNS 암호화는 국내 DNS 서버들은 지원하지 않지만 구글 DNS 서버나 ( 8.8.8.8, 8.8.4.4) 클라우드플레어 DNS 서버 ( 1.1.1.1 ), IBM DNS 서버 ( 9.9.9.9 ) 등의 기술지원이 되는 DNS 서버들은 모두 운용하고 있다.

SNI 필드 기반 차단

Image

상황이 이렇게 되자 공권력은 SNI 필드를 기반으로 차단을 적용하기 시작했다. SNI 란 3way handshake 과정에서 최초로 클라이언트가 서버에 요청을 할 때 서버 목적지 주소를 평문으로 실어서 보내는데 이걸 보고 차단을 하는 것이다. shaking 중에 SNI 필드에 차단할 서버 목적지가 보이면 연결을 끊어버리는 것이다.본디 SNI 는 하나의 웹서버에서 가상 호스트 등을 이용해서 여러 개의 사이트와 https 통신을 할 때 해당 사이트들과 보안 인증서를 잘 주고 받기 위해 나온 것이었다.

한국은 이런 방식의 차단을 2019년 도입하였는데 이게 패킷 해더의 일부분을 해킹하는 논란이 일었다. 결국 헌법 재판소 심판까지 갔다가 청구 각하로 현재 해당 방식의 차단을 지속적으로 쓰게 되었다. ( https://casenote.kr/%ED%97%8C%EB%B2%95%EC%9E%AC%ED%8C%90%EC%86%8C/2020%ED%97%8C%EB%A7%88164 )

이런 문제는 SNI 필드를 쪼개서 보내는 전용 프로그램을 쓰거나 ( 유니콘 HTTPS, GoodbyeDPI ), 아예 모든 필드를 암호화 하는 규격을 사용하거나 ( TLS 1.3, 중국에서는 프로토콜 자체를 차단 ) VPN 을 사용하는 방법을 통해 해결할 수 있다.

Image

TLS 1.3 의 경우 SNI 에 대한 암호화가 표준으로 들어갈 예정이었으나 표준의 확장으로 ESNI가 적용되었다. 하지만 SNI 만 적용된다는 점과 소수의 정교한 공격에서 보호할 수 없다는 점 때문에 ECH 로 표준화 되어 가고 있다. ESNI 는 DNS를 이용해 공개키를 받아 데이터를 암호화하고 보내면 서버는 개인키로 복호화 하고 TLS 연결을 진행한다. 하지만 ESNI가 폐지되고 ECH로 바뀌는 이유는 ESNI 가 DNS 를 이용해 공개키를 받아오는데 키가 손상될 시 DNS 캐시 때문에 오래된 키를 받아오거나 변조된 키를 받아올 수 있는 약점이 있기 때문이다.

ECH는 ESNI 처럼 DNS 를 사용하되 DoH 를 통해 공개키를 받아온다. 하지만 ECH는 캐시로 인한 오래된 키를 받아오는 것을 개선하였는데 먼저 ECH의 경우 ESNI와 다르게 암호해독에 실패하면 연결을 중단하지 않고 핸드셰이크를 완료하고 클라이언트에 재시도를 할 수 있는 공개키를 제공하려고 시도한다. 암호를 해독하지 않고 핸드셰이크를 완료하는 방법은 최초에 클라이언트가 요청을 보낼 때 두 개를 보낸다. ClientHelloInner 를 암호화하여 ClientHelloOuter 의 확장으로 전송한다. 해독에 성공하면 Inner 로 그렇지 않으면 Outer 로 진행한다. 이 Outer의 SNI는 ECH 서비스 제공자의 대면서버 SNI를 가진다. (클라우드플레어의 경우 DNS 서버에 crypto.cloudflare.com을 RR Type ID 65(HTTPS)로 요청하면 대면서버의 도메인 이름으로 ‘cloudflare-esni.com’을 보내온다. ) Inner로 암호 복호화가 실패하는 경우 ECH 서비스 제공자의 클라이언트 대면 서버에서 원본 서버와 핸드셰이크를 한 뒤에 암호 복호화 실패로 의도한 대상에 도달할 수 없음을 클라이언트에 전달한다. 이 경우 서비스 제공자는 클라이언트가 핸드셰이크를 다시 시도하여 클라이언트 구성을 수정할 수 있도록 올바른 ECH 키도 같이 보낸다. ( 참고 주소 https://blog.cloudflare.com/encrypted-client-hello/ )

유니콘 HTTPS 같은 전용프로그램은 VPN 설정을 추가해야해서 VPN 으로 오해하는 경우가 있는데 VPN 은 아니다. 모바일 디바이스들은 PC 디바이스와 달리 탈옥이나 루팅처럼 사용자가 루트 권한을 가지는 것이 엄격히 금지되어 있는데 이를 위해 운영체제 VPN API 를 이용해서 VPN 클라이언트처럼 패킷을 받은 뒤 변조, 파편화, 암호화 등을 해서 전달하는 것이기 때문에 사용자의 IP 가 ISP 인프라와 서버에 그대로 남는다.

VPN 은 가상 사설망으로 외부에서 내부 인트라넷을 연결하기 위해 나온 기술이었다. 실제로 대기업 같은 경우 외부에서 내부망에 접속하여 업무를 처리하거나 할 때 VPN을 설정하기도 한다. 우리가 흔히 사용하는 VPN 의 경우 VPN 서버와 클라이언트까지 암호화된 터널을 형성해서 서버에서 클라이언트 요청을 받아 전달하는 형태로 이루어진다. VPN 과 비슷한 걸로는 프록시가 있는데 프록시는 일종의 중계 서버로 프록시 서버에 캐싱하는 형식으로 간접 우회를 제공한다. VPN 은 강력한 암호화를 제공하는 만큼 하드웨어 성능이 받쳐주어야 하기 때문에 프록시를 사용하는 경우도 있으며, 헤더에 원본 IP 를 박고 나가겠끔 설정할 수도 있개 때문에 완벽하게 IP 를 우회해주지는 못한다.


대한민국의 인터넷 검열은 정보통신망법에 따라 대통령 직속 방송통신심의위원회가 규제를 걸고 게시글을 삭제할 권한을 가지며, 서비스 제공자들이 이를 이행하며, 경찰청 사이버 안전국, 한국 인터넷 진흥원, 국가정보원 등이 수사, 사찰, 사법처리업무 등을 하고 법원이 유/무죄를 판결한다. 호스팅이나 클라우드 제공 업체의 경우 방송통신심의위원회의 공문을 통해 고객의 게시글이나 서비스에 제재를 가하거나, 경찰청에 의해 압수수색 영장이 나오기 전에 미리 사전 협조 요청 및 데이터 보관 협조 요청 을 받는 경우라던지 티스토리나 네이버 블로그 등에서 블로그 글이 삭제 조치 당한다던지 등의 일들이 있다.

어쩌면 이는 대한민국의 국가 권력에 의한 폭력의 역사와 결을 같이 하는 걸지도 모르겠다. 한국의 현대사는 유구한 국가 권력에 의한 폭력의 저항이기 때문이다. 이런 부분에 대해서 좀 더 생산적인 담론들과 개선책들이 나오길 바라며 글을 마무리 해본다.