[도서] 읽자마자 IT 전문가가 되는 네트워크 교과서

7장. 인터넷에서 익명을 유지하는 방법은 무엇일까?

bread-gee 2024. 11. 22. 10:42

📌 검열 모니터링

검열과 일시적 서비스 중단을 구분하려면 전 세계의 인터넷 접속 상태가 모두 같은지를 확인해보면 된다.
모든 위치에서 접근이 불가능하다면 이는 서비스 자체가 중단된 것이고,
특정 지역에서만 접근이 불가능하다면 해당 지역에서 검열이 이루어지고 있을 가능성이 크다.

검열 모니터링을 시행하는 방식은 매우 다양한데, 기본적으로 사용자 보고서를 보면 콘텐츠의 접근이 막혔는지 허용됐는지를 알 수 있다.
몇몇 정부나 기업은 이런 검열 정보를 투명하게 공개하기도 한다.

하지만 기술적으로 인터넷 검열이 이루어지는지를 확실하게 알아보려면 특정 위치에서 같은 서버나 서비스에 다른 유형의 요청을 보내 직접 테스트하는 방법 밖에 없다.
특정 위치에서 동일한 서버나 서비스에 대해 다른 유형의 요청을 보내고, 테스트 요청의 응답(결과)과 검열되지 않은 정상적인 연결의 응답을 비교하여 차이를 분석한다.

테스트의 목적은 응답 오류(404 오류 등)가 발생할 경우 그 오류의 원인이 서비스를 요청한 서버의 문제인지 아니면 네트워크 차단이나 필터링 문제인지를 구분하는 것이다.


🧿 인터넷 검열을 모니터링하려는 단체나 연구 프로젝트
◾ 넷블록스(NetBlocks)
인터넷 차단, 통신 중단, 정치ㆍ경제적 목적으로 시행되는 온라인 검열을 진단하는 측정 기준과 데이터 시각화 도구를 만드는 글로벌 시민 단체
넷블록스가 개발한 도구는 검열을 시각화하는 것 외에도 지진이나 태풍 같은 자연재해, 네트워크 인프라를 대상으로 하는 사이버 공격 등으로 발생한 통신 중단 사태를 확인하고 매핑(Mapping)하는 데 유용하다.
넷블록스가 업로드하는 전 세계 인터넷 차단에 관한 보고서에는 자세한 설명과 함께 실시간 업데이트도 포함되어 있다.


https://netblocks.org/

◾ 네트워크 개입 공개연구소(OONI, Open Observatory of Network Interference)
OONI는 전 세계에 분산된 관찰 네트워크로 인터넷상의 검열, 감시, 트래픽 조작 등을 탐지하는 검열 연구 단체이다.
무료 소프트웨어이므로 누구나 OONI 검사를 실행해서 웹사이트 연결이 차단되었는지 테스트할 수 있다.
측정 기준은 OONI Explorer에 업로드되어 있다.


https://explorer.ooni.org/

ㆍOONI로 테스트할 수 있는 내용
- 웹사이트 차단 여부
- 메시지 앱(왓츠앱, 텔레그램, 페이스북 메신저 등) 차단 여부
- 검열 우회 도구(Tor 등) 차단 여부
- 네트워크에 검열 또는 감시 시스템(Middleboxes)의 존재 여부
- 네트워크 속도 및 성능

단, OONI는 검사를 실행하는 사람의 프라이버시를 보호하진 않는다.
또, 측정 기준에 신원 정보가 포함될 수 있다.

◾ 투명성 보고서
기업들은 정기적으로 정부, 저작권자 또는 다른 이해관계자가 요구하는 검열의 성격과 기업의 규정 준수 사항을 자세하게 기술한 투명성 보고서를 발표하고 있다.
이 보고서에는 사용자 데이터 요청 관련 통계도 포함되어 있다.

구글의 경우 검색 결과는 물론 유튜브, 블로거(Blogger) 등의 다른 구글 브랜드가 콘텐츠 삭제 요청을 얼마나 받았는지에 관한 정보를 익명으로 제공한다.
이 정보는 합법적인 저작권 주장이나 국가 보안, 명예 훼손, 프라이버시 및 보안, 약물 남용, 선정성과 관련한 정부와 개인의 요청이 대다수를 차지하고 있다.

ㆍ구글의 검열 요청 카테고리
1. 보호
멀웨어(Malware)와 피싱(Phishing) 웹사이트로부터 사용자를 보호하기 위해서 URL을 검색 결과에서 자동으로 필터링하고 차단한다.
구글은 주당 수만 개의 URL을 차단한다.

2. 삭제
저작권 문제로 콘텐츠 삭제를 요청하는 경우
구글은 2만여 민간 기업과 저작권자에게 무려 46억 8,368만 8,889개의 URL을 삭제해 달라는 요청을 받았다.

3. 숨김
개인정보 보호법에 따라 검색 결과에서 삭제한다.
구글은 매주 수천 건에 달하는 URL 삭제 요청을 받고 있다.
이 중 구글이 요청대로 특정 콘텡츠를 검색 결과에서 제외하는 비율은 약 46%이다.

4. 검열
정부가 콘텐츠 삭제를 요구하는 경우
구글은 2018년만 약 3만 건의 검열 요청을 받았다.

 

 

📌 데이터가 이동하는 방법

데이터는 패킷이라는 조각으로 쪼개져서 이동한다.
각 패킷에는 출처와 대상 주소(목적지)를 나타내는 주소 태그(패킷 헤더)가 있다.

인터넷에서 진정한 의미의 '직접 연결'은 존재하지 않는다고 생각해도 된다.
패킷은 목적지에 직접 전달되는 것이 아니라 패킷 헤더를 읽고 대상 주소까지 경로를 알려주는 중개 네트워크와 라우터를 통해서 이동하기 때문이다.
중개 네트워크는 패킷 태그를 읽고, 수신된 패킷이 어디에서 왔으며 어디로 보내야 할지를 인식한다.
이 과정에서 모든 중개자는 패킷을 복사, 저장, 변조할 수 있다.

 

 

 

📌 익명과 가명

종단 간 암호화를 사용하지 않고 패킷을 보내면, 패킷에는 사용자의 실제 신원 정보를 알려주는 콘텐츠가 암호화되지 않은 상태로 들어갈 수 있다.
암호화되지 않은 데이터는 웹사이트와 ISP가 쉽게 추적할 수 있다.

🧿 브라우저 지문(Browser Fingerprinting)
사용자의 정보를 추적하고 추출하는 것
지문이라고 부르는 이유는 사용자마다 추출 가능한 정보가 다르기 때문이다.

🧿 브라우저 지문을 통한 사용자 분석
사용자가 웹사이트에 접속하면 패킷에 포함된 정보를 통해 브라우저와 관련된 데이터가 전달되는데, 웹사이트 운영자는 이런 데이터를 활용해 사용자의 디바이스, 브라우저 설정, 그리고 IP 주소와 같은 메타데이터를 추출할 수 있다.
기업과 기관은 이 브라우저 지문을 활용해서 사용자의 IP 주소와 메타데이터를 찾아 정확한 사용자를 특정할 수 있다.

🧿 익명성(Anonymity)과 가명성(Pseudonymity)
익명성은 사용자의 신원이 완전히 은폐된 상태이다.
즉, 사용자가 누구인지, 어디에 있는지, 어떤 정보를 주고받고 있는지를 전혀 알 수 없는 상태이다.
이 상태에서는 사용자와 특정 활동 간의 연결성(Linkability)조차 없기 때문에 추적이 불가능하다.
사용자가 신원 정보를 보호하기 위해 암호화된 애플리케이션(메신저, 이메일 등)이나 전송 방식을 사용하더라도, 데이터 전송에 포함된 IP 주소나 메타데이터는 노출될 수 있다.

가명성은 사용자의 실제 신원을 감추되, 활동이 특정 가명과 연결되는 상태이다.
즉, 사용자가 닉네임이나 임시 아이디를 사용할 때, 직접적으로 신원이 드러나지 않지만, 그 가명으로 한 행동은 여전히 추적될 수 있다.

인터넷에서 제공되는 "익명성"은 완전한 익명성이 아니라, 가명성에 더 가깝다.
완전한 익명이 되려면 사용자의 IP 정보가 노출되지 않도록 사용자의 위치를 완벽하게 숨기는 기술을 사용해야 한다.

더보기

📍 익명성

사용자의 신원을 완전히 숨기는 것. (누군지 전혀 알 수 없도록)


📍 가명성

사용자의 신원을 다른 이름(가명)으로 대체하는 것. 실제 신원은 숨겨지지만, 가명 자체로는 어느 정도 추적이 가능할 수 있다.

 

 

 

📌 검열 우회

📍 요약
중개자는 손쉽게 패킷을 변조할 수 있다.
이는 국가, 기업, 직원, 부모, 네트워크 운영업체 등이 사용자가 특정 인터넷 콘텐츠에 접근하지 못하도록 막는과정에서 프라이버시를 침해할 위험이 있다는 뜻이기도 하다.

콘텐츠 검열은 출발지(사용자 측), 중간 네트워크(라우터나 서버), 목적지(웹사이트) 단계에서 시행된다.
- 차단 : 특정 웹사이트나 서비스로의 접속을 아예 막는다.
- 필터링 : 특정 키워드나 콘텐츠를 걸러내 표시되지 않게 한다.
- 스로틀링(속도 제한): 특정 콘텐츠에 대한 연결 속도를 일부러 느리게 만든다.

인터넷 사용자가 검열을 우회하거나 자신의 데이터, 개인 정보, 온라인에서의 익명/가명을 보호하려는 이유는 여러 가지가 있다.

🧿 DNS 프락시(DNS Proxy)
DNS 프락시를 사용하면 ISP가 자동으로 제공하는 DNS 서버를 우회하여, 원하는 웹사이트에 접근할 수 있다.
인터넷에서 도메인 이름을 IP 주소로 변환하는 과정에서, 사용자가 요청한 DNS 정보를 다른 서버를 통해 중계하는 방식이다.

일반적으로 인터넷 서비스 제공업체(ISP)가 제공하는 DNS 서버는 특정 웹사이트를 차단하거나 필터링하는데,
DNS 프락시를 사용하면 사용자가 직접 설정한 신뢰할 수 있는 DNS 서버를 통해 요청을 보내므로, ISP가 차단한 웹사이트나 서비스에 접근할 수 있게 된다.

🧿 가상 사설망(VPN, Virtual Private Network)
인터넷 사용 중에 개인정보를 보호하고 감시나 검열을 피하기 위해 사용된다.
VPN을 사용하면 인터넷 트래픽을 암호화하여, 다른 사람들이 사용자의 활동을 엿볼 수 없게 만든다.
ex) 회사나 학교에서 인터넷 사용을 감시하거나 차단하는 경우 VPN을 통해 차단을 우회할 수 있다.

❗ 중요한 점은 VPN을 제공하는 업체가 사용자의 인터넷 활동을 볼 수 있다.
즉, VPN이 완전한 익명성을 제공하지 않으며, VPN 제공업체나 고급 기술을 가진 공격자는 여전히 사용자의 신원을 추적할 수 있다.
VPN은 사용자 정보 보호를 VPN 제공업체에게 맡기는 것이기 때문에 VPN을 선택할 때 신뢰할 수 있는 업체를 선택하는 것이 중요하다.

🧿 Tor를 활용한 검열 우회
Tor 네트워크를 이용하면 검열을 피할 수 있다.
or 네트워크를 통해 인터넷을 사용하면, 사용자의 인터넷 트래픽이 여러 서버를 거쳐 암호화되어 전송된다.
이 과정에서 트래픽의 출발지와 목적지가 숨겨지며, 누군가가 인터넷을 감시하더라도 사용자가 어디서 누구에게 정보를 보내는지 알 수 없다.

📍 Tor의 주요 원리
1. 트래픽 암호화
Tor는 데이터를 여러 번 암호화하고, 이 데이터를 여러 "중계 서버"를 통해 전달한다.
이 과정을 "Onion 라우팅"이라고 부르며, 각 서버는 암호화된 데이터를 해독해 그 다음 서버로 전달한다.
Tor 네트워크의 암호화된 트래픽 경로를 통해서 사용자와 목적지 서버 간의 연결을 추적하기 어렵게 만든다.

2. 협력적 난독화
Tor 네트워크는 자원봉사자들이 제공하는 여러 중계 서버를 통해 구성된다.
중계 서버들은 사용자의 트래픽을 다른 경로로 우회시켜주고, 사용자의 신원을 숨겨준다.
이 과정에서 트래픽을 "난독화"시켜서 원래의 출발지나 목적지를 알 수 없도록 만든다.

◾ Tor 네트워크의 작동 방식
Tor 네트워크는 중계(Relays) 또는 홉(Hop)이라고도 부르는 Tor 노드가 모인 전 세계적인 네트워크이다.
Tor 소프트웨어를 실행하는 컴퓨터는 모두 노드가 될 수 있다.
노드는 데이터 검문소 역할을 하며 Tor 네트워크를 거치는 패킷을 받아서 처리하고 내보내는 역할을 한다.

◾ Tor 서킷(Tor Circuit)
사용자가 Tor 네트워크를 통해 인터넷에 접속할 때, 데이터를 전달하기 위해 생성되는 암호화된 경로
이 경로는 여러 노드(중계 서버)를 거쳐 데이터를 전송하여 사용자와 웹사이트 간의 연결을 추적하기 어렵게 만든다.
그렇기 때문에 사용자의 익명성과 데이터를 보호할 수 있다.

Tor 서킷은 3개의 노드(입구 노드, 중간 노드, 출구 노드)를 거치며 경로를 설정한다.
경로를 무작위로 만들기 위해(=랜덤화) 10분마다 새로운 경로로 변경하며 염탐을 더 어렵게 만든다.

ㆍ입구 노드(Entry Node)
- 사용자의 컴퓨터가 가장 먼저 연결하는 노드
- 사용자의 실제 IP 주소를 알 수 있지만, 사용자가 어떤 데이터를 전송하는지는 알 수 없다.(데이터는 암호화됨)

ㆍ중간 노드(Middle Node)
- 입구 노드와 출구 노드 사이를 중계한다.
- 데이터를 단순히 전달하는 역할만 하며, 출처(입구 노드)와 목적지(출구 노드)에 대한 정보를 모두 알지 못한다.

ㆍ출구 노드(Exit Node)
- Tor 네트워크의 마지막 지점으로, 데이터를 암호 해독하고 인터넷 목적지로 보낸다.
- 데이터의 실제 목적지는 알지만, 사용자의 원래 IP 주소는 알 수 없다.

◾ Tor 동작 원리

Tor 동작 원리


데이터 전송 시, 다양한 키로 여러 번 암호화하는 다중 계층 암호화가 적용된다.
양파 껍질 구조(Onion Routing)를 통해 각 노드가 자신에게 할당된 암호화 계층만 해독하고, 데이터를 다음 노드로 전달한다.
암호화된 각 층에는 특정 노드만 해독할 수 있는 전용 패킷 태그가 포함되어 있다.

ex) 사용자가 데이터를 보낼 때, 먼저 출구 노드를 위한 암호화를 하고, 그 위에 중간 노드용, 마지막으로 입구 노드용 암호화를 더한다.
각 노드는 자신만의 암호화 계층을 해독하고 다음 노드로 데이터를 전달한다.
* 각 노드는 각 주소 층의 잠금을 풀기위해 각자의 키를 사용한다.

각 노드는 직전 노드와 다음 노드에 대한 정보만 알 수 있으며, 전체 경로를 알 수 없다.
결과적으로, 사용자의 실제 IP 주소와 데이터의 최종 목적지가 연결되지 않도록 보호된다.

◾ Tor 차단
특정 국가나 조직에서는 Tor 네트워크 입구를 일일이 검열하기도 한다.
이렇게 입구가 차단된 경우에는 브리지(Bridge)를 활용해서 차단된 입구로 접속할 수 있다.
브리지는 공개 Tor 디렉토리에 게시되지 않은 Tor 노드를 말한다.
단, 이때도 브리지의 주소가 알려지면 검열될 수 있다.

검열 당국은 출구 노드도 차단할 수 있는데, 출구 노드를 차단하면 Tor 네트워크로 전송된 모든 패킷이 일반 웹의 웹사이트나 서버에 도달하지 못한다.

◾ 어니언 서비스
Tor 네트워크를 통해 익명성을 제공하는 특별한 형태의 웹 서비스
일반적인 웹 서비스는 도메인 이름을 통해 접근하는 방식이지만, 어니언 서비스는 Tor 네트워크 내에서만 접근 가능하고, 그 주소는 일반적인 인터넷 주소와는 다른 특별한 형식을 가진다.
어니언 서비스는 최상위 도메인으로 .onion을 사용한다.
사용자는 서버와 클라이언트 모두 익명성을 유지하면서 통신할 수 있다.

ㆍ어니언 서비스의 동작 방식
[서버 설정 / 어니언 서비스 시작]
웹 서버는 Tor 네트워크를 사용하여 "어니언 서비스"를 만든다.
서버는 임의로 3개의 노드를 선택해 Tor 서킷을 구축하고, 이 노드를 소개 지점(Introduction Point)으로 만든다.
서버는 기술자(Descriptor) 메시지를 준비하는데, 소개 지점의 이름과 주소(webserver.oninon), 공개키가 포함되어 있다.
기술자 메시지는 서명된 후 Tor 네트워크 내의 분산 데이터베이스에 전달되어, 다른 Tor 클라이언트들이 이 서버에 접근할 수 있도록 한다.

[사용자가 접속 / 어니언 서비스 이용]
사용자가 Tor 브라우저를 통해 webserver.onion과 같은 어니언 서비스 주소에 접속하려고 하면
사용자의 Tor 소프트웨어는 만남 지점(Rendezvous Point, 랑데부 포인트)을 Tor 네트워크 안에 만들고
webserver.onion에서 서명한 서버의 기술자 메시지를 데이터베이스에게 요청한다.
사용자가 메시지를 받으면 사용자의 소프트웨어는 webserver.onion의 공개키로 암호화한 비밀 메시지가 담긴 소개 메시지를 만들고 이 메시지를 소개 지점으로 보낸다.
소개 지점은 이 메시지를 서버로 전송한다.

[익명 연결 / 서버와 사용자 간의 통신]
사용자는 소개 지점에 메시지를 보내어 서버와 연결을 시도한다.
이 과정에서 여러 Tor 노드를 거쳐서 데이터가 전송되기 때문에 서버는 사용자의 IP 주소를 알 수 없고, 사용자는 서버의 실제 위치도 알 수 없다.
모든 데이터는 암호화되어 전달되기 때문에, 중간에서 누군가가 이 데이터를 가로채더라도 내용을 알 수 없다.

[서버와 사용자 간의 안전한 통신]
서버는 사용자의 소개 메시지를 복호화하고, 만남 지점의 주소를 찾아서 비밀 메시지를 전송한다.
서버는 이 메시지를 만남 지점에 전달하고, 만남 지점은 사용자에게 이 작업이 성공적으로 이루어졌음을 알린다.

결국 사용자와 서버는 서로의 3개 노드로 구성된 Tor 서킷을 활용해서 만남 지점에서 통신하게 된다.

◾ Tor의 한계
1. UDP 패킷 거부
현재 Tor는 TCP를 패킷 전송 프로토콜로 사용한다.
그래서 화상 통화나 토렌트를 통한 파일 공유 등 UDP 기반의 애플리케이션은 Tor에서 작동하지 않는다.
Tor를 사용할 때 모든 UDP 패킷은 거부된다.

2. Tor 노드 운영자의 신뢰성 문제
Tor 네트워크는 여러 계층의 노드(릴레이)를 통해 데이터를 전달하는데, 누구나 Tor 릴레이를 운영할 수 있다.
만약 나쁜 의도를 가진 사람이 노드를 운영하면, 사용자의 데이터를 몰래 볼 수 있다.

3. 노드 제어에 따른 익명성 깨짐
Tor 소프트웨어를 자신의 서버에서 실행하는 모든 사람이 Tor 네트워크의 노드가 될 수 있기 때문에 Tor 노드를 운영하는 '염탐꾼'이나 다른 유해 엔티티(entity)가 있을 수 있다.
같은 엔티티가 한 사용자의 패킷을 전달하는 Tor 서킷에서 둘 이상의 노드를 제어한다면, 사용자의 신원과 트래픽에 관한 다양한 정보를 알아낼 수 있기 때문에 익명성이 깨지게 된다.

4. 출구 노드의 위험
출구 노드에 접근할 수 있는 염탐꾼은 사용자가 HTTPS처럼 암호화되지 않은 웹사이트에 로그인하려 할 때 사용자의 신원을 파악할 수 있다.
따라서 Tor를 쓸 때는 항상 암호화를 함께 사용하는 것이 필수다.

5. 표적 트래픽 분석(Targeted Traffic Analysis)
능숙한 공격자라면 발신지와 목적지에서 패킷 사이즈, 전송 시기, 들어오고 나가는 패킷의 양을 면밀하게 모니터링하는 것만으로도 암호화된 패킷의 콘텐츠를 유추할 수 있다.
Tor는 이런 공격을 방어하지 못한다는 한계가 있다.

◾ Tor 네트워크 사용하기
Tor에 접근하는 방법은 두 가지이다.
수동으로 디바이스나 라우터를 설정해서 Tor 네트워크로 트래픽을 주고받도록 하는 것과 소프트웨어 애플리케이션을 사용하는 것이다.

ㆍ소프트웨어 어플리케이션
- TorBrowser(토어 브라우저)는 웹이나 다크웹을 검색할 때 타인이 추적하는 것을 방지하는 애플리케이션이다.
- TorBrowser와 Orbot이라는 스마트폰용 애플리케이션을 사용하면 안드로이드 스마트폰에서 Tor를 사용할 수 있다.
- Tails는 실시간 운영 체제로, 모든 네트워크 트래픽이 자동으로 Tor 네트워크를 거치게 해준다.
- OnionShare를 사용하면 파일을 익명으로 공유할 수 있다.

 

 

 


출처
읽자마자 IT 전문가가 되는 네트워크 교과서