새로운 차단 기법 예상 및 우회 방법 제시
SNI는 TCP connection 성립 이후 클라이언트에서 서버로 가는 TCP 패킷에 존재합니다. 자신의 컴퓨터에서 상대방(서버)에게 전달되는 패킷을 자신 스스로가 fragmentation하여 차단을 우회할 수 있습니다.
반면에 또 다른 차단 탐지 방법이 있습니다. 바로 인증서 정보입니다. Client Hello에 SNI 정보가 있다고 가정을 하면 Server Hello에는 인증서(Certificate) 정보가 포함이 되어 있습니다. 이 인증서에는 Common Name이라는 것이 있는데, 이 Common Name 정보를 이용하면 서버가 어떠한 호스트 이름으로 서비스를 하는지 판단이 가능합니다(Subject Alternative Name라는 별도의 이름이 있기도 하지만 여기에서는 논외로 함).
sex.com 인증서 정보
Server Hello(서버 > 클라이언트) 패킷 안의 인증서 정보에 호스트 정보가 보임.
차단 장비가 현재처럼 SNI(클라이언트 > 서버)만 보지 않고 인증서 정보(서버 > 클라이언트)까지 확인하는 로직이 추가된다고 가정하면 차단의 범위가 더 넓어질 것입니다. 예전 L7 스위치(방화벽)에서 통신 과정에 SNI가 존재하지 않는 경우(Internet Explorer 5이하의 버전에서는 SNI 정보가 없음) 특정 웹서버와의 SSL 통신을 차단하는데 이 기법을 자주 사용하곤 했습니다.
자, 이제 우회의 입장에서 얘기해 보겠습니다. 이걸 어떻게 하면 우회할 수 있을까요? 서버가 클라이언트에게 인증서 정보를 넘겨 줄 때 TCP Data를 fragmentation시켜 주면 우회할 수 있기는 합니다만, sex.com 사이트 운영자가 대한민국 사용자들을 위해 패킷을 분할해서 보내 줄 아량을 기대하는 건 무리이겠죠?
자, 그럼 이경우에는 어떻게 우회할 수 있을까요? 이건 차단 장비에서 지금 얘기하는 방식(인증서 확인)이 도입되는 시점이 왔을 때 구체적인 방법을 제시해 보도록 하겠습니다. ^^