Notice
Recent Posts
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

교대최소제곱법

[네트워크] HTTPS 차단과 인터넷 검열 사건의 이해 본문

CS 기초/네트워크

[네트워크] HTTPS 차단과 인터넷 검열 사건의 이해

옐라크레 2023. 11. 22. 21:11

2019년 유해사이트를 막는다는 명목으로 HTTPS를 차단하는 사건이 있었다.

당시에는 그냥 HTTPS가 막혀서 https가 들어가는 주소는 우회해야 되는구나로 이해했지만

이번에 네트워크를 공부하면서 사건의 전말을 이해 할 수 있었다.


HTTPS 차단 사건의 시작

대한민국은 국민들의 유해 사이트 접근을 막기 위해 방통위 주관으로 http 주소로 접근을 시도하면 도메인 주소를 IP로 DNS resolution 할 때 도메인 주소에 유해 사이트의 도메인이 포함되어 있으면 warning.or.kr로 리턴하는 방식으로 납치(?)했다

 

이를 DNS Sinkhole이라고 부른다

DNS Sinkhole은 DNS와 transaction하는 과정에서 생기기 때문에 그냥 DNS를 싱크홀이 없는 DNS로 바꿔주면 손쉽게 우회할 수 있다

 

warning.or.kr

HTTPS란?

HTTPS는 보안 통신을 위한 프로토콜인 TLS 위에 HTTP를 얹어 보안된 HTTP 통신을 하는 프로토콜이다

HTTP의 경우 암호화되지 않기 때문에 "중간자 공격"을 당할 수 있고

기존의 유해 사이트 차단 방식은 이 중간자 공격을 통해 이루어지고 있었다.

 

HTTP 통신을 할 때 "Host: google.com\r\n" 이 정보를 읽고 DNS가 바꾸어 주는 것인데

HTTPS를 활용하면 이 정보가 암호화된다.

 

HTTPS가 등장하면서 DNS단계에서의 중간자 공격이 통하지 않게 되고

warning.or.kr로 납치하는 방법이 통하지 않는 사이트가 많아지기 시작했다.

*TMI : 2022년 기준 크롬에서 열리는 페이지의 99%는 HTTPS를 사용한다!

 

그래서 방통위는 HTTPS 차단 방법을 개발하기 시작했고 방법을 찾아냈다.

 

SNI 차단 방식

HTTPS는 모든 부분이 암호화되는 기술이 아니라 최초 주소부분은 평문으로 노출한다.

그래서 이 노출된 주소를 읽어서 유해사이트로 판단되면 접속을 차단하기 시작했고

이를 SNI 차단 방식 (Server Name Indication, 서버특정주소차단)이라고 한다.

 

이렇게 서버 이름이 보이게 된다. 김승주 교수님 감사합니다

 

자세하게 설명하면 HTTPS 통신을 하더라도 handshaking 과정에서 <Extension: server_name 필드> 도메인 이름이 표시될 수 있다

이를 보고 차단하는 것이 SNI 차단 방식

 

그림으로 이해하자!

https://m.blog.naver.com/amhoin/221465021173

 

SNI 차단방식이란 무엇인가?

SNI 차단방식이란 무엇인가? 2019년 2월13일 방심위가 어제부터 시행하고 있는 SNI 차단방식에 대해 ...

blog.naver.com

 

오 그러면 SNI는 완벽하게 차단되는건가?

HTTPS 차단 우회 방법

일단 가장 간단한 방법은 VPN을 활용해 IP를 바꾸는 것이다.

사실 IP를 바꾸면 대한민국 망을 통해 나가는 것이 아니기 때문에 위의 사진과 같은 차단을 다 피해서간다고 생각하면 된다.

 

두 번째 방법은 Fake VPN을 활용하는 방식이다.

Fake VPN은 말 그대로 VPN이 아니기 때문에 IP를 바꾸지 않는다.

위에서 SNI 차단방식의 원리가 handshaking 과정에서 <Extension: server_name 필드>를 읽는 것이라 했다.

그럼 이 <Extension: server_name 필드>를 암호화하면 되는 것 아닌가?가 Fake VPN의 원리이다.

ESNI Encrypted Server Name Indication

Encrypted는 "암호화된"이라는 의미다. 즉 암호화된 SNI라는 것이다.

SNI가 암호화되었기 때문에 <Extension: server_name 필드>를 읽더라도 잡아낼 수 없다.

 

대표적인 Fake VPN으로 유니콘 HTTPS가 있다

 


이상 만들라는 프록시 서버는 안만들고 딴짓한 결과이다.

인터넷 연결과정과 DNS를 이해할 수 있었던 좋은 기회였다.