https 사이트 차단 문제와 관련하여 사안을 바라보는 시선이 크게 둘로 나뉘는 것 같습니다.
관점 1 : "국가가 음란물 규제를 이리 강하게 하는 것이 옳으냐? 우리가 유교 탈레반 국가냐?"
관점 2 : "이건 사용자가 보낸 SNI 패킷을 까서 그 안에 있는 내용을 확인하겠다는 거잖아.. 패킷 감청이다. 사생활 침해다. 테러방지법이랑 뭐가 다르냐?"
일단 관점 1에 대해서는 사회적으로 논의할 가치가 충분히 있다고 봅니다. 불법 음란물 규제를 위해 합법 음란물까지 함께 규제해야 하느냐, 한국처럼 성인물에 대해 엄격한 나라가 어딨냐 등등...
관점 2에 대해서는 너무 심한 비약과 악의적인 왜곡이 잔뜩 들어가 있다고 봅니다.
패킷감청? 굳이 따지자면 SNI 헤더도 패킷이고 사용자가 전송한 패킷을 까보는 거니까 이것도 패킷감청이다 라고 주장한다면.. 뭐 그렇게 얘기할 수도 있죠. (근데 DNS서버에 도착한 패킷인데 안까보면 무슨 수로 통신을 하죠??)
근데 이걸로 정부가 빅브라더가 되려 한다거나 사생활 침해가 우려된다는 건 쫌... 그러네요..
실제 DNS 통신을 끝내고 https 통신이 이뤄진 후의 패킷을 스니핑하겠다는 것도 아니고 SNI 패킷이라는게 따지고 보면 별게 아닌지라..
기존에 http 사이트들 중 차단된 사이트의 경우 warning.co.kr로 리다이렉션 되는 건 다들 잘 아실거고..
말하자면 유저가 "DNS 서버야... 내가 hostname.xxx 사이트에 좀 가보고 싶은데 IP 주소 좀 알려줄래?" 라고 요청했을 경우 미리 세팅되어있던 warning.co.kr의 IP 주소를 알려주는 방식입니다.
이 경우 미리 DNS 서버를 오염시켜놓고 응답을 반환하는 방식이죠. 굳이 패킷감청 얘기가 나올 건덕지는 없습니다.
문제는 https 차단은 암호화된 패킷을 사용하는지라 위와 같은 방식으로 차단이 안됩니다.
그래서 DNS 서버로 들어오는 SNI 패킷을 열어서 그 안에 포함된 호스트 네임을 보고 불법 사이트일 경우 아예 패킷을 날려버리고 아무 응답도 주지 않겠다는 겁니다.
여기까지는 오늘 하루 종일 논란이 되는 통에 많이들 찾아보셨을 내용이겠죠..
사용자의 패킷을 까보고 차단한다는 차이가 있을 뿐 실제 서버와 통신이 이뤄지기 전에 DNS 단에서 막는다는 점에서는 기존 방식이랑 대동소이 합니다.
(기존 방식과 비교해서 거기서 거기다 라고 썼다가 무식하다는 소리까지 들었네요...)
여튼 각설하고..
"어쨌건 사용자의 패킷을 까보는 건 문제 아니냐" 라는 주장에 대해 확인차 직접 제 패킷을 까봤습니다.
첨언하자면 전 이쪽 분야 전공자는 아닙니다. 무선통신을 전공하긴 했는데 유선망과 인터넷 프로토콜 쪽은 학생시절 잠깐 배운 정도이고, 결정적으로 제가 공부하던 시절엔 https가 없었죠... 그래서 아래 내용에 부정확한 내용이 다수 포함되어있을 수 있습니다.
맨 위쪽 창은 캡쳐된 패킷들의 목록이구요, TLSv1.2 라고 표시된 것들 중에 문제의 SNI 패킷이 있습니다. 가려진 부분은 제 IP 입니다.
맨 아래쪽 창이 선택된 패킷의 실제 내용입니다. 뭔가 잔뜩 암호화된 문자열들이 보이는데 그 와중에 암호화 되지 않은 호스트 네임이 포함되어있군요.
https 사이트의 차단은 저 부분을 확인해서 차단하겠다는 의미입니다.
그렇다면 위의 SNI 패킷을 까보면 사생활 침해의 우려가 있을까?
위에 나타난 패킷의 전체 내용은 아래와 같습니다.
위에서 언급한 호스트네임 외에는 죄다 암호화된 내용들 뿐입니다. 이건 백날 패킷 까봐야 무슨 내용인지 복호화 못합니다.
어떠한 개인정보도 알 수 없습니다.
그럼 암호화 되지 않은 패킷은 어떻게 생겼을까요?
http보다도 더 옛날옛날 먼 옛날에 나온 보안과는 전~혀 상관 없는 텔넷을 사용했을 경우 패킷을 까보면 요래 생겼습니다.
암호화는 커녕 내용 중에 Password 까지 떡하니 찍혀있죠.. 정부에서 요런거 감청한다고 하면 그땐 큰 문제입니다.
다시 촛불 들어야죠.
여하간 위에 언급한 TLSv1.2는 기술적인 한계로 인해서 SNI패킷 내부에 호스트네임을 암호화 할 수 없는 한계가 있었습니다.
이번에 문제가 되는 https 차단은 이런 보안 취약점을 활용한 해법이구요.
오로지 목적지인 호스트 네임만 알 수 있는 패킷인데 이걸로 인해 사생활 침해 논란이 벌어진다는 건 저로선 이해가 잘 안됩니다.
뭐.. 이유야 어찌 됐건 https 사이트가 차단되는 것 자체가 맘에 안든다고 하시는 분들께는 한가지 희소식을 전할까 합니다.
현재 사용중인 TLSv1.2의 보안 취약점을 개선한 TLSv1.3은 진작에 개발이 끝났습니다. 각 사이트들에 요게 적용되면 SNI 대신 ESNI(Encrypted SNI)를 쓰게 되고 호스트네임까지 모조리 암호화가 되기 때문에 위와 같은 방식은 무용지물이 되죠. 도입이 머지 않았습니다. 듣자하니 파이어폭스에선 이미 지원 된다고 들은 듯...
언급했다시피 전 이쪽분야 전공자도 아니고 세세한 내용 잘 모릅니다.
혹시나 내용에 오류가 있거나 제가 놓친 부분 중에 SNI 패킷에 문제되는 내용이 포함되어있다면 지적 부탁드립니다.
감사히 참고할게요..