KCSC, Warning.or.kr에 적용된 필터링 방법과 사설

 

본래 방송통신심의위원회는 한국에서 ‘불법’으로 규정하는 사이트에 대한 접근을 차단하기 위하여 DPI 기반의 필터링을 도입합니다.
이 장비는 HTTP Request의 헤더를 분석하여 Host 필드의 값이 특정 도메인이라면 302 Redirect를 전송, warning.or.kr로 보내버립니다.

이 시스템은 2006년부터 동작하기 시작했는데, 이 시점에서 이미 기본권 침해 논란이 불거지기 시작하였습니다.
비록 Host 필드만을 확인하는 것이지만, 마음만 먹으면 특정 IP에서 어떠한 사이트에 들어갔는지 리스트를 작성할 수 있기 때문입니다.

사용자들은 이에 대응하여 DPI 장비가 필터링하지 못하도록 Host 필드의 뒤에 \n을 추가하거나, Host 대신 HoSt를 사용하는 등, HTTP 표준에는 부합하지만 DPI 장비의 필터에는 걸리지 않는 Request를 생성하여 우회하였습니다.

물론 KCSC가 DPI 장비를 개량하면서 다시 막혔습니다.

 

그러다 많은 사이트들이 HTTPS를 기본 지원하게 되면서, 기존의 HTTP 헤더 검사로는 차단이 불가능하게 되었습니다.
HTTPS 헤더를 까 봐야 암호화된 문자열들만이 나타나기 때문입니다.

그러자 KCSC는 DNS Spoofing을 시도합니다. 국내 ISP들의 DNS 서버에 특정 도메인 주소에 대한 응답을 warning.or.kr 서버로 돌리도록 한 것이죠.
물론 사용자들은 8.8.8.8과 1.1.1.1 등의 DNS 서버로 비교적 쉽게 우회할 수 있었고, 이에 한 때 1.1.1.1에 대한 접속을 차단하는 등의 강수를 두다가 철회하였습니다.

이 시점에서 KCSC가 취할 수 있는 대응 수단은 몇 가지가 있습니다.

 

1. DNS Request를 감시, 특정 도메인에 대한 요청을 찾으면 Request의 Source IP와 Response의 IP를 통해 TCP 커넥션을 식별, 차단
2. 특정 도메인에 대한 DNS 쿼리를 통해 IP Pool 확보, 해당 IP에 대한 접속을 차단
3. TLS의 Client Hello 메시지에서 암호화되지 않는 부분을 이용, Host 식별 후 차단
4. TLS의 Server Hello 메시지에서 Certificate를 확인, Server Name 필드를 식별 후 차단

 

1번은 기술적으로 구현이 힘들고 (컴퓨팅 파워 부족), DNS를 암호화하면 무력화됩니다
2번은 CloudFlare같은 접속 서비스를 사용하는 사이트에 대해서는 효과를 보기 힘든 데다(CloudFlare CDN 진입점을 차단할 수는 없으니), Virtual Host등을 이용하여 같은 서버를 사용할 경우 무고한 피해자가 발생할 수 있는 등의 문제가 있으며
3번은 현재 적용된 SNI 필터링입니다. 단, 이 문제점을 이미 인식하고 있기에 TLS 1.3에서 도입된 ESNI가 적용될 경우 무력화됩니다
4번은 ESNI가 보급된 이후에 적용될 것으로 예상되는 방법으로, 아직 대응방안이 마련되지 않았습니다

 

이 모든 것들을 한번에 해결할 수 있는 방법으로 VPN을 사용하는 것이 있으나, VPN 트래픽을 식별해낼 수 있으며, Packet을 Drop하는 방법으로 차단 또한 가능합니다.
이미 중국에서는 황금방패에 적용된 기법이고, VPN 트래픽 식별을 위해 머신러닝을 적용하고 있다는 이야기도 들려오고 있습니다.

결과적으로 창과 방패의 싸움이지만, 사법권력을 쥐고 있는 방패가 결국은 승리할 것으로 보입니다.

Leave a Comment

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.