부정확한 정보가 있을 수 있습니다. 전공자 여러분들의 지적을 기다립니다.

보충 글이 업로드 되었습니다: 작금의 검열이 왜 문제인지 모르는 멍청이들을 위하여

한 번도 보지 못 한 나라

2018년 5월 2일, 문화체육관광부에서 작은 공을 쏘아올렸다. 그 공의 이름은 웹툰 등 불법유통 해외사이트 집중 단속 및 정품 이용 캠페인 연계 실시였다.

해당 보도자료에서 제시된 DNS 오염을 통한 차단

이 보도자료에서 문화체육관광부는 ‘저작권을 침해하고 있음에도 HTTPS 적용으로 인해 차단이 되지 않고 있다’며 이에 대한 해결 방안으로 DNS와 SNI 방식 접속차단을 내세웠다. 얼마 후 각 통신사의 기본 DNS 서버에서 방심위에서 불법으로 규정한 사이트들의 접속이 차단되기 시작했다. 그러나 이것은 타 DNS 서버를 사용하면 끝날 문제였기에 많은 사람들이 그다지 심각하게 여기지 않았고, 실제로 큰 영향 없이 지나가는 듯 했다.

그런데 2019년 1월 11일, 타 DNS 서버를 이용했음에도 접속이 안 된다는 글들이 각 커뮤니티에 무수히 올라오기 시작했다. 해당 글을 작성한 유저들의 공통점은 KT 서비스를 사용하고 있다는 것이었고, 에펨코리아라는 커뮤니티의 유저가 KT에 직접 문의를 넣기도 했다. 그리고 그 결과는 다음과 같았다.

정부 요청으로 시작된 SNI 차단

2019년 2월 11일, 문화체육관광부에서 제시한 또 다른 차단 방식인 SNI 차단이 시작된 것이다. 현재 이 떡밥은 여러 커뮤니티에서 연일 뜨거운 감자가 되고 있으며, 우회법부터 현 상황에 대한 문제를 지적하는 글들이 우후죽순 올라오고 있다. 나 또한 이 사태를 지적하지 않고 넘어갈 수 없는 입장이기 때문에, 이 정책의 작동 방식과 문제점을 가능한 이해하기 쉽게, 자세하게 설명해보고자 한다.

DNS, SNI 차단이 무엇인가?

알기 쉽게 만화로 표현한 클리앙 글

먼저 이 차단에 대해 이해하려면 DNS와 SNI가 무엇인지 알아야 할 필요가 있다.

DNS는 Domain Name System의 약자로, 호스트의 도메인 이름을 네트워크 주소로 변경하거나 그 반대의 행위를 수행할 수 있도록 개발되었다. 즉 홍길동의 전화번호는 010-XXXX-XXXX, 010-XXXX-XXXX 전화번호의 주인은 홍길동이라는 것을 알려주는 역할을 한다.

DNS의 간단한 구조

우리가 웹 사이트에 들어갈 때, 예시로 이 블로그에 들어온다고 가정해보면 사이트 도메인인 sptr.blog 로 들어오지, 54.180.57.24 라는 긴 IP 주소를 입력해 들어오지 않는다. 그러나 컴퓨터 네트워크에서 통신할 때는 저 IP 주소로 통신하고, sptr.blog 라는 도메인은 단순 별칭에 불과하다. 이럼에도 우리가 sptr.blog 만 입력해도 이 블로그로 들어올 수 있는 이유는 우리가 체감하기 힘든 아주 짧은 시간 내에 DNS 서버가 sptr.blog = 54.180.57.24 라는 것을 웹 브라우저에게 알려주기 때문이다.

이 DNS 서버는 매우 중요해서, 우리가 흔히 얘기하는 이통 3사 SKT, KT, U+도 자사 인터넷 이용자들을 위한 DNS 서버를 가지고 있다. 아마 당신이 DNS가 뭔지 모르고 있었다면 당신은 이 통신사 기본 DNS를 통해 지금까지 인터넷을 하는 중일 가능성이 높다.

그러나 이 DNS는 DNS 서버의 관리자가 별칭을 마음대로 지정할 수 있기 때문에 마음만 먹으면 특정 웹 사이트에 접속 시도조차 못 하도록 별칭을 바꿔버릴 수 있다. 이것이 바로 DNS 차단의 원리인데, 우리가 HTTPS 차단이 시행되기 전에도 므흣한 사이트에 들어가면 뜨는 warning.or.kr을 차단할 사이트 도메인명의 별칭으로 강제 지정해버리는 것이다. 그러면 그 DNS 서버를 이용하는 한 sptr.blog 에 접속하고 싶어도 별칭으로 지정된 warning.or.kr 에 접속하게 된다. HTTPS는 도메인을 IP 주소로 변환해 연결한 다음부터 수립되는 문제이기 때문에 DNS 서버의 차단에서 벗어날 수 없다.

다음으로, SNI는 Server Name Indication의 약자이다. 암호화 체계인 TLS의 표준 중 하나로, 보안 인증서에서 사용하는 방식이다. 이것이 왜 나오게 되었냐 하면, 기존까지는 도메인명과 IP 주소가 1:1 대응이었으나 1개의 IP 주소에서 여러 도메인을 서비스하는 것이 대중화되며 생긴 문제점을 해결하기 위해서이다.

Chain of trust

즉 기존까지는 sptr.blog = 54.180.57.24 단 하나였지만 지금은 spt.tf = spt.re = sptr.blog = 54.180.57.24 가 되면서 사이트에 보안 연결을 통해 접속하는 경우 ‘어디에 대한 보안 연결을 수립해야 하는 것인지’ 혼란에 빠지는 일을 방지하기 위해 ‘나는 지금 sptr.blog 에 보안 연결을 수립하려고 합니다. 여기에 맞는 보안 연결을 수립해 주세요’ 라는 내용을 담아 보낸다.

그런데 이 SNI는 암호화된 통신인 HTTPS를 사용하는 경우에도 암호화되지 않고 평문으로 송신된다. 즉 내가 sptr.blog 에 가서 글을 쓰는지 그냥 보기만 하는지는 알 수 없지만 방문했다는 것은 알 수 있다는 뜻이다. 즉 이를 감시해 차단해버리면 HTTPS 연결을 수립하려고 어디에 방문한다는 사실을 전하는 순간 강제로 연결이 끊겨 접속이 불가능해진다.

나랑 무슨 상관이고, 왜 문제인가?

모든 국민은 통신의 비밀을 침해받지 아니한다.

-대한민국 헌법 제 18조

결과적으로만 보면 꽤 많은 상관이 있고, 꽤 많은 문제가 있다. 우선 이 글의 제목에서도 봤듯이 이것은 그럴 의도가 있었건 없었건 명백한 감청이자 검열 행위이다. 우리가 어떤 사이트에 접속하는지는 접속할 때의 내용을 뜯어 봐야 가능하다. 그 의도가 ‘불법 사이트 차단’ 등으로 정당하다고 할지라도 결국 그 내용을 뜯어봐도 좋다는 허가를 받아야만 의도, 결과 모두 정당한 정책이 될 수 있는 것이다. 그러나 적어도 나는, 나아가서 이 정책에 반대하는 사람들은 그런 허가를 한 적이 없다. 국민의 통신 내용이 국민의 허가 없이 감청되고 검열되는 초유의 사태가 ‘불법 사이트 차단’이라는 명분을 등에 업고 아무렇지도 않게 일어나고 있는 것이다.

물론 따지고 보면 예전부터 HTTP 차단도 존재해왔기 때문에 이 사안에 그토록 민감하게 반응하는 것이 이해가 되지 않을 수도 있다. 하지만 이번에는 암호화되지 않은 통신이 아닌, 암호화된 통신의 취약점을 대상으로 했다. 정부와 일부 몰지각한 언론에서는 ‘불법 사이트를 차단할 뿐이며 우려되는 국민 감청은 전혀 사실이 아니다’ 라며 물타기를 시도하고 있지만, 암호화된 통신의 취약점을 악용해 연결을 차단하고 있는 것이 감청, 넓게는 검열의 범주 안에 어째서 들어가지 않는다는 것인지에 대해서는 설명하지 못 하고 있다. 또한 앞서 설명했듯이 현재 차단 방식은 어디에 접속하는지 확인한 후 차단된 사이트라면 그에 맞는 응답을 하는 방식이기 때문에 의도가 그렇건 아니건 모든 국민이 어느 사이트에 들어가는지 사실상 실시간으로 감청당하고 있다고 생각해도 과언이 아니다.

SNI 차단이 아닌 DNS 차단으로 돌아가도 논점은 감청으로 동일하다. 사용자가 의도치 않은 페이지 넘겨주기가 강제로 발생한다는 점에서부터 ‘보안 통신’의 본질을 완벽하게 훼손하고 있으며 정부에서 그렇게 기를 쓰고 근절하려고 했던 파밍 악성코드가 바로 이 DNS를 오염, 변조해 퍼진 것이다.

또한, 문제의 원인을 제거하지 못한 채 임시방편으로 행하는 차단은 문제의 원인 제거에 도움이 되기는커녕 여러 방면으로의 문제 발생에 도움이 될 뿐이다. 당장 DNS 차단이 시행되었을 때 수많은 대상 사이트가 주소만 잽싸게 바꾸는 방법으로 회피했고, 현재 SNI 차단이 실시되자마자 수많은 우회 방법들이 공유되고 있다. 정말 불법이라고 생각되는 사이트에 대해서는 밤토끼, 소라넷처럼 수사를 통한 운영자 검거 및 폐쇄 등의 방법으로 대처해야지 차단만 다짜고짜 시행하는 것은 우회의 명분을 만들 뿐이다.

‘나치가 그들을 덮쳤을 때’의 패러디

많은 사람들이 이에 분노하고, ‘진정한 중국몽을 꾸겠다는 건가’ 정도의 반응이 나오고 있다. 테러방지법 반대를 위한 필리버스터에서 더불어민주당 의원은 도대체 무엇을 위해 1984를 읽은 것인가? 이 방법이 현재 ‘불법 사이트 차단’이라는 명분을 내걸고 있고, 실제로 한국에서 불법으로 취급되는 주제를 내건 사이트들만 차단하고 있어 얼핏 보면 ‘잘 한 거 아닌가?’ 할 수도 있다. 그러나 사람의 생각은 일편단심일 수 없다. 어느 날 정권의 생각, 또는 정권이 바뀌어 자신들의 정책, 의사에 반대되는 웹 사이트들을 불법이라는 명분 하에 차단하기 시작한다면, 그로 인해 당신이 민주주의 국가에서 누릴 수 있는 기본적인 자유와 권리가 그들에게 침해당한다면, 그래도 그들이 한 차단을 잘 한 것이라고 평가할 수 있을까?

이 차단을 어떻게 우회할 수 있나?

이용하고 싶은 사이트를 이용할 수 없게 되었다면 아래의 방법을 사용할 수 있다.

세 방법 모두 현재 적용되고 있는 DNS와 SNI 차단에 대한 효과적인 우회 방법이다. 그러나 나는 고의적으로 이 단락을 포스팅의 맨 아래에 배치하였다. 당신이 현재 이용하고 싶어도 이용할 수 없는 사이트들이 있다면 그 자체로 초점을 둬야지, 이용하겠다는 일차원적인 회피로에만 초점을 둬서는 안 되기 때문이다. 계속 강조했지만 이번 차단은 헌법에 규정된 기본권을 침해하는 차단이다. 우회로가 있다는 것에만 초점을 둬 본질적인 문제를 망각한다면, 그들이 당신에게 덮쳤을 때 당신 주위에는 아무도 남아있지 않을 것임을 명심하여야 한다.

참조 링크