read

이 글에서 등장하는 JYB, 갑돌이는 실제의 어떤 단체나 인물과도 관계가 없으며 설명을 위한 가공의 이름입니다.

문체부가 2018년 5월 2일 웹툰 등 불법 유통 해외사이트 집중 단속 및 정품 이용 캠페인 연계 실시에 대하여 보도자료를 발표하였습니다. 그 내용에 따르면 (1) 법률개정을 통해 유해사이트 차단 절차를 간소화하겠다. (2) HTTPS 접속에 대해서도 SNI 필드를 이용해 차단하겠다. (3) SNI차단 전 까지는 DNS를 차단하겠다. 라고 하고 있습니다.

불법 사이트의 차단 당위성은 이론의 여지가 없습니다. 그러나 차단 방식에 대해서는 반대하는 의견들이 있는데요, 우선 첫번째로 “시민의 통신을 검열하겠다는 것이냐? 반대다.”라는 기본권 측면에서의 반대 의견이 있고요, 다음으로는 “어차피 차단 안돼.”라는 기술적 측면에서의 반대의견이 있습니다. 이번 글에서는 기술적 측면에서 불법 사이트 차단 문제를 살펴보도록 하겠습니다.

인터넷 사이트 접속

인터넷에서 정보를 제공하는 사이트는 주소가 있습니다. IP(Intenet Protocol) 주소라고 합니다. 인터넷 사이트 네이버의 IP 주소는 210.89.164.90 입니다. 브라우저 주소창에 210.89.164.90을 입력하면 네이버가 뜰 것입니다.

숫자로 된 IP주소는 사람들이 기억하기에 어렵습니다. 그래서 인터넷 사이트를 “도메인 주소 체계”로 표기할 수 있도록 하였습니다. 네이버의 도메인 주소는 www.naver.com입니다. 브라우저 주소창에 www.naver.com을 입력하면 마찬가지로 네이버 창이 뜨게 됩니다.

컴퓨터가 인터넷 통신을 할 때 필요한 것은 IP주소입니다. 도메인 주소로 인터넷 사이트 접속을 하고 싶을 때에는 도메인 주소에 대응되는 IP주소를 알아야 합니다. 컴퓨터는 그를 위해 DNS(Domain Name Service) 서버에 물어보고, IP주소가 응답되면 그 IP주소로 통신을 진행합니다.

IP주소를 알아내어서 사이트에 접속할 경우 예전에 사용했던 방식은 HTTP(HyperText Transport Protocol)입니다. 최근에는 HTTPS (HTTP Secure / HTTP over SSL)이 많이 사용되는데, HTTPS는 HTTP에 비하여 처음 접속하는 도메인 주소를 제외하고는 대부분이 암호화 되어있다는 차이점이 있습니다.

HTTPS 사이트 차단

과거 인터넷 접속의 많은 부분이 HTTP였던 경우에는 통신 경로 상에서 목적지 주소를 알 수 있었습니다. 차단을 위해서는 통신선로상 노출되어 있는 도메인 주소나 URL (웹브라우저에서 사용하는 주소창의 세부주소입니다)을 이용할 수 있었습니다. 그러나 HTTPS의 등장 및 보급에 따라 차단을 피하고자 하는 사이트는 모두 HTTPS로 옮겨갔죠. HTTPS 서비스의 경우 URL을 알 수 없고, 목적지도 HTTPS에서 사용되는 특수 통신 단계를 분석해야 목적지 도메인 네임만을 알 수 있을 뿐입니다.

나쁜 사이트의 도메인 주소를 www.badsite.com, IP주소를 123.123.123.123이라고 하고, 차단 공지 서버의 IP주소를 111.111.111.111이라고 하겠습니다.

문체부가 이야기하는것은

  • 우선 도메인 서버로의 질의요청을 보고 차단 대상인 경우 응답을 거부하거나 해당 도메인 주소에 대한 IP주소로써 실제 주소가 아닌 가짜 서버의 IP주소를 반환하도록 하여 사이트 접속을 막겠다 입니다. www.badsite.com의 IP주소가 무엇인가요? 에 대한 대답으로 111.111.111.111을 반환하도록 하여, 사용자가 111.111.111.111에 접속을 해 보면 “유해사이트이므로 차단합니다”라는 공지화면을 받을 수 있도록 하겠다는 것입니다.
  • 이후 HTTPS 목적지 분석이 가능해지면 해당 목적지의 도메인 네임을 가지고 차단하겠다는 것입니다. HTTPS 통신상의 목적지 값이 www.badsite.com이면 해당 통신을 끊어버리는 것입니다.

현재의 상황에서는 가장 합리적인 접근이라고 생각합니다.

통신 자유를 위한 움직임: DNS

솔로가 하고 싶어요

저는 한 아이돌 그룹의 막내 갑돌이에요. 솔로가 하고싶어서 형들 모르게 JYB로 이적하고 싶어요. 이적을 위한 등록 서버 주소를 알려주세요.

도메인 주소를 주면 IP 주소를 알려주는 DNS 시스템은 그 구조상 통신 경로에 모든 요청과 응답이 노출됩니다. 갑돌이가 사무실 PC로 JYB서버에 접속했을 뿐이라도 그 내용을 누군가 다 알 수 있다는 거에요.

알 수 없는 이유로 모 아이돌 그룹의 막내 멤버가 교체된다는 찌라시가 돌고 있습니다.

HTTPS를 이용한 암호화 접속을 하더라도 제일 기본적인 DNS 서버에서는 누가(갑돌이 PC의 IP주소) 어떤 서버 (JYB 내부 웹 서버 도메인 주소)의 주소를 요청했는지 알 수가 있고요, 서버 뿐만이 아니라 모든 통신 경로상에서 해당 정보를 알아 낼 수가 있습니다.

이런 정보는 돈이 되는 정보지요. 개개인을 향한 타겟 광고 시장이 굉장히 크기 때문에 많은 회사들은 “여러분들이 어떤 사이트를 방문하는지”를 알기 위해서 많은 돈을 집행합니다.

인터넷 서비스의 근간이 되는 DNS가 너무 보안상 취약하다보니 이를 개선하기 위한 노력이 진행되어 왔는데요 최근 Mozilla가 자사의 브라우저인 Firefox에서 Cloudflare사의 DNS서비스와 연동하여 DNS 보안 문제를 해결하고자 제안하였습니다.

  • 브라우저에서 시스템 DNS 서버를 이용하지 않고, 별도로 준비된 믿을 수 있는 DNS 서버를 이용한다. (Trusted Recursive Resolver)
    클라우드플레어사는 DNS서비스 후 24시간 이후에 서비스 로그를 파기하며, 이에 대해 주기적 감사를 통해 투명하게 공개하겠다고 하였습니다. 즉 ‘이 회사는 고객 정보를 팔아먹지 않을 것 같다. 갑돌이의 인터넷 접속정보를 소속사에 넘기지 않을거 같다..’라는 것이구요.
  • 믿을 수 있는 DNS 서버와는 DNS over HTTPS를 이용한다.
    “DNS서버는 믿을수 있다 쳐, 통신 선로상에서 볼 수 있잖아. 소속사 전산실에서 다 본다던데? 갑돌이를 지켜주세요” 라는 팬 분의 요청을 위해서 도메인 주소 질의응답을 암호화된 HTTPS를 이용하여 사용한다는 것입니다.
  • DNS 질의시 개인정보 보호를 위하여 최소한의 개인 정보를 전송한다.
    “클라우드플레어를 믿는다 쳐도, 클라우드플레어에서 어차피 하부 도메인 서버로 물어봐야될 텐데, 2차 도메인 서버에서 정보유출이나 응답변조가 있을수도 있잖아?” 이런 것을 막기 위하여 2차 도메인 서버에 질의를 할 때 “누가”를 “갑X이” 혹은 “X돌이” 이런 식으로 간략화 하거나 아니면 아예 대리인명의로 질문을 던지도록 하고요, 또한 2차서버로 물어볼 때, 꼭 필요한 도메인 부분만을 전송하도록(Qname Minimisation)하여 정보 유출을 최소화 하는 기술을 사용한다는것 입니다.
    • enroll.jybe.com의 주소가 뭐냐고 온 사방팔방에 묻는 것이 아니라
    • 처음에는 .com의 주소가 뭐에요 물어서 그 관장하는 서버를 알고,
    • 그 서버에게 jybe.com 주소가 뭐에요 물어봐서 또 해당 서버를 알고,
    • 그 다음에서야 jybe.com을 담당하는 서버에게 enroll.jybe.com 주소가 뭐에요? 물어보는 것이지요.

이렇게 되면 도메인 서버와의 통신에서 개인 정보들이 지켜지게 되고, 우리의 갑돌이는 JYB에 누구도 모르게 서류를 전송할 수 있겠습니다. 그리고 문체부에서 DNS로 사이트 차단을 할 수가 없게 되겠구요.

제 생각에는 Mozilla사의 위의 제안이 충분한 설득력을 가지기 때문에 Google이나 기타 브라우저 제작사에서도 유사한 기능을 탑재하게 되지 않을까 예측합니다.

그렇다면 HTTPS는?

이렇게 하여 DNS까지는 거의 완벽한 프라이버시가 지켜지게 되었다고 합시다.

그러면 HTTPS는 어떻게 될까요? 처음 접속하는 도메인 주소만을 “제외”하고 나머지가 대부분 암호화 된다고 말씀드렸죠? 그래서 문체부 자료에서 언급된 HTTPS 통신의 해당 정보 (SNI: Server Name Indication)를 이용한 차단은 현재 상황에서 합리적이라고 말씀드렸습니다.

어떻게 되나 한 번 넣어봤을 뿐인데 이렇게 될 줄은 몰랐어요. - 갑돌

네. SNI주소가 노출되기 때문에 사용자의 인터넷 사이트를 모니터링하거나 차단할 수 있는 것입니다.

해당 정보도 암호화 하면 되지 않나? 라는 의견에는, 다음 표준에는 그럴 수 있겠으나 일단 표준화가 되었으니 앞으로 한참 동안은 해당 정보의 암호화는 어렵다라고 말씀드리고 싶네요.

그렇지만 HTTP/2에서 SNI 차단을 우회할 수 있는 방안이 존재합니다. HTTP/2 Connection Coalescing

HTTP/2는 하나의 서버와는 하나의 연결을 맺어두게 되고 하나의 연결을 이용하여 여러 서비스를 제공하게 됩니다. 눈치 빠르신 분은 짐작하실 수도 있겠습니다만, 차단/감시대상과 전혀 무관한 도메인 주소가 해당 서버에 동시에 부여가 되면, 그 주소로 일단 접속한 이후에 감시대상 서버로의 접속은 SNI정보를 전송할 필요가 없다는 것입니다.

나쁜 사이트의 도메인 주소를 www.badsite.com, IP주소를 123.123.123.123이라고 할 때, 이 서버에 또 다른 도메인 주소인 www.goodsite.com 을 등록했다고 한다면 아래와 같이 되는 것입니다.

  • 브라우저에서 HTTP/2로 www.goodsite.com 접속. 이 때에는 www.goodsite.com이 SNI로 전송됩니다.
  • 브라우저에서 HTTP/2로 www.badsite.com 접속. 이 때에는 SNI로 전송되는 것이 없으며, 따라서 감시나 제어를 할 수 없습니다.

익명의 인재지원을 환영합니다.

www.free-right.com에 접속후 www.jybe.com에 접속하십시오. -JYB

프라이버시에 민감한 글로벌 CDN업체의 경우 이와 유사한 방안을 멀지 않은 시기에 도입할 것으로 예측합니다. 반대 급부로 불법 업체가 악용한다고 하여도, 이익 단체인 CDN업체입장에서는 별도로 신고가 들어오기 전 까지는 방치하지 않을까요? 이런 서비스를 공개하면 많은 고객들이 사용할 테니까요.

그러면 어떻게 해?

기술의 발전 및 프라이버시의 강화 조류를 볼 때 공개된 통신망에서 정보를 차단하는 것은 점차 어려워지는 방향으로 가고 있다고 생각합니다.

과도기에 손을 놓고 있을 수 만은 없다고 생각하기에 개인적으로 이번 문체부 정책에 대해 긍정적인 편입니다만, 추후 네트워크 상에서 대책이 없어질 수 있다는 점을 상정하여 정책 고민 및 입안이 필요하다는 말씀 드리고 싶습니다.

중국의 황금방패처럼 갈 수는 없지 않겠습니까? DNS over HTTP를 차단할 수도, HTTP/2를 차단하는 것 도 현 시대에 맞지 않는 방법입니다.

네트워크망이 아닌 사용자 단말에서의 유해/불법정보 차단 방안, 그리고 그것을 장려하는 법제화, Opt-in이 아닌 Opt-out 방안의 고민 등이 이루어져야 하겠습니다.

PC랑 스마트폰에 보안솔루션 꼭 깔아야해요?

왜요?

왜! - 갑돌

blog tls work web filtering dns

Blog Logo

양철웅

Chul-Woong Yang


Published