본문 바로가기

IT

그림으로 간단히 알아보는 인터넷 검열 방법(https 차단, DNS차단, SNI 차단)

SNI(Server Name Indication)를 사용하는 이유는 한 개의 IP ≠ 한 개의 HTTPS 서버이기 때문이다.

현실적으로 IPv4는 개수가 제한되어있기에 한 개의 IP에 여러 서버가 올라가는 경우도 있다.


예를 들어, a.com, b.com, c.com이 IPv4주소가 1.1.1.1이라는 서버에 있다면 서버에 인증서를 요청할 때, 3개 중 어떤 인증서를 보여줘야 하는지 모른다. 그래서, 클라이언트에서 도메인을 보내주는 것이다.


SNI을 검열한다는 것은, 위에서 도메인을 검열 한다는 것이다.

쉽게 비유하자면, 암호화된 통화의 기록을 조회하는 것과 비슷하다.

NSA라면 모르겠지만, TLS로 암호화된 통신은 검열하지 못한다. HTTP는 당연히 가능하다.


이 글에서 사용한 용어의 의미는 아래와 같다. (실제 국어사전 상의 뜻과는 다를 수 있다.)

검열 : 어떤 내용(그것이 공개된/암호화된 내용이든 무관)를 송/수신자가 아닌자가 송신자의 의지에 반하여 수신자에게 전달하지 않는 행위(한마디로 이건 허용, 이건 거부를 하는 행위 전체다)

감청 : 엿보기. 즉 내용을 보는 것, 이것이 공개된 내용이든, 공개되지 않는 내용이든 송/수신자의 의사에 반하여 의도적으로 보려고 하는 것은 모두 포함. (한마디로 대자보처럼 보라고 써놓은게 아니라 책상 위에 놓여있는 일기장을 보는 행위(공개되었지만 보라고 한 것은 아닌)같은 의미다.)


검열 방법을 전화에 비유하자면 아래와 같다. 이름은 도메인이고, 전화번호는 IP, HTTPS 암호화는 통화시, 암구호를 사용하는 행위.

1. 전화 번호(IP)를 차단한다. 더 이상 사용 안 함. 1IP ≠ 1사이트이기에

2. 전화 내용에 어떤 이름이 나오는지 알아내 차단한다. (http는 전송 내용에 적혀있는 목적지 주소, https는 SNI 검열 등)

3. 전화 번호를 알려고 114(DNS)에 문의할 때, 특정 사람 이름을 물어보면 차단(DNS 검열)


우회 방법을 전화에 비유하자면 아래와 같다.

1. 전화번호 물어보는 곳을 바꾼다. (외부 DNS사용)

2. 이름도 암호화해서 물어본다. (암호화된 DNS)

3. 암구호 물어보는 것도 암호화 한다.


HTTPS를 사용하는 경우에는, 내용은 감청하지 못한다. 정부가 비밀번호 1234라는 내용은 HTTPS를 사용하면 감청할 수 없다. (통화 중에 무엇을 말했는지는 모른다)

그렇지만 어디에 접속하는지는 감청한 후 검열하는 것이다. (010-1234-1234에 전화 걸었구나, 010-1111-1111에 전화 걸었구나)

통신기록 검열과 비슷하다고 생각하면 된다.


아래 그림으로 간단히 설명된다.


검은색 글자/화살표(박스는 제외)는 평문이기에 누구나 읽을 수 있다.

녹색 글자/화살표는 암호화된 내용으로 읽을 수 없다. (NSA는 읽을지도 모른다...)

빨간색으로 그려진 박스는 감청 검열 가능한 부분이다.

하늘색으로 그려진 박스는 차단하기 위해 검열 하는 부분이다.


참고로 HTTP는 로그인 등 개인정보를 사용하는 곳은 무조건 사용해서는 안된다.


오류가 있는 부분을 지적해주시면 감사하겠습니다.