이 글
오늘 벨로그 메인에 떳는데 궁금해서 들어와버렸다. 평소에 이런 패킷감청 SNI 같은 방법에 궁금증이 있는데 의외로 유익한 글이여서 한번 분석하면서 정리해보려고 한다.
http가 거의 사라진 요즘 대세는 https다. 이 https는 TLS를 기반으로 통신하는데 TLS는 TLS HandShake라는 통신과정을 거친다. 우리가 악수를 할 때 손을 여러번 흔드는것처럼 이 HandShake 기법은 여러번 통신을 주고받으면서 상호검증의 시간을 가진다.
정부의 통신차단 원리는 다음과 같다.
client가 hello message를 보낼 때, 거기에 server_name이라는 옵션이 있는데 이 옵션을 보고 server_name을 판단, 차단해버리는 것이다. 따라서 우리가 hello_message를 보낼 때 이 server_name을 지운다면 차단이 먹히지 않는것이다.
일단 해당 사이트의 IP주소를 직접 구해와야한다. 여러가지 방법으로 해결할 수 있을거라 생각한다.
이제 이 IP주소로 통신을 시도하면 된다.
이 글에 따르면, http message는 텍스트로 구성된 메세지이다. 하지만 이를 웹마스터가 직접 하지는 않고, 다른 소프트웨어, 브라우저, 엔진 등등이 해주는것이다. 즉, 우리가 직접 손으로 tcp 소켓이 알아들을 수 있는 메세지를 작성하면 메세지가 보내지는 것이다.
이제 필요한 정보를다 알았으니, 아까 따온 IP주소로 통신요청을 보내면 된다.
이러니깐 아무런 우회장치 (vpn, goodbye dpi) 같은거 없이도 통신이 되는것을 확인 할 수 있었다고 한다...
처음에 이 글을 봤을때는 vpn같은건가 했는데 좀 더 원론적인 이야기였다.
물론 일일이 이런식으로 통신하는건 불편하니깐 다들 proxy나 vpn으로 정부의 검열을 피하는것이겠지만, 아무튼 재미?있는 예제로 http 통신의 원리를 살짝 맛볼 수 있었다.