CS

[네트워크] Tor 네트워크란 무엇인가?

hhongyeahh 2025. 5. 19. 22:18

 

 

 

 

 

 

오늘은 Tor 네트워크에 대해서 알아보겠습니다.
유튜버 Hussein Nasser의 "How Tor Work? (The Onion Router)" 강의를 참고하였습니다.
Tor 네트워크를 처음 접하는 입장에서 이해가 잘 되도록 쉽고 직관적으로 설명해 주셔서
많은 도움이 되었습니다.




유투브 원본 영상 링크를 함께 남깁니다. 더 자세한 설명은 영상을 참고해 주세요

https://youtu.be/gIkzx7-s2RU?si=K0v31QNo_CHxMaQU

 

Normal Request

  • 사용자가 일반적으로 인터넷에 접속할 때 어떤 흐름으로 진행이 될까요?
  • IP가 5.5.5.5인 사용자가 웹 서버 9.9.9.9로 요청을 보냅니다.
  • TCP 패킷에는 다음과 같은 정보가 담깁니다.
    1. Source IP / Port : 5.5.5.5 / 8992
    2. Destination IP / Port : 9.9.9.9 / 80 (HTTP 포트)
    3. Payload : Data Request
  • 해당 구조에서 사용자의 IP와 목적지 IP가 모두 평문으로 노출된다.
  • 따라서 누가, 언제, 어떤 사이트에 접속했는지를 패킷을 가로채는 공격자가 그대로 볼 수 있다.

Normal Request + Sniffers

  • 위 사진에 네트워크 중간에 있는 2명의 관찰자가 있다.
    • 한명은 해커(Sniffer)로 사용자 정보를 감청한다.
    • 한명은 광고주(Tracker)로 웹 서버 측 정보를 분석해 사용자 행동을 추적한다.
  • 이는 보안적으로 어떤 문제를 안고 있을까?
    • A의 IP(사용자)는 해커에게 노출될 수 있다.
    • B의 IP(서버)는 광고 네트워크 등에게 노출될 수 있다.
    ⇒ 이것이 바로 트래픽 메타데이터 유출의 대표적인 사례이다.

What Can Sniffers See

  • Sniffer가 볼 수 있는 정보
    1. 사용자의 IP
    2. 접속한 목적지 IP
    3. HTTP 트래픽 전체
    4. HTTPS는 암호화되어 있지만, 여전히 패킷의 크기, 시간, 빈도 등의 메타데이터는 볼 수 있다.
    5. HTTP를 쓰면 모든 내용이 Sniff 가능하다.
💡HTTPS도 완벽하지 않다!
데이터의 내용은 암호화 되지만, 행동 패턴은 드러난다. → 이걸 이용하는 공격이 바로 Website Fingerprinting

Why Not Just VPN or Proxy?

  • “VPN/Proxy를 해결될 문제가 아닐까?” 생각할 수 있지만 여전히 한계를 지닌다.
    1. 첫번째로 VPN은 나를 안다.
      • Sniffer는 나를 몰라도, VPN은 내 IP와 접속 기록을 모두 알고 있다.
    2. 암호화는 좋지만
      • 내부적으로는 암호화되어 Sniffer가 못 보지만, VPN이 중간에서 모든 정보를 볼 수 있다.
    3. 신뢰성 문제
      • VPN이 로그를 남기는지 여부를 우리는 알 수 없다.
    4. 실제 해킹 사례
      • NordVPN 해킹 사고처럼 VPN 자체가 공격 대상이 되기도 한다.
💡NordVPN 해킹 사고란?
2018년 3월, NordVPN이 핀란드에 위치한 한 데이터센터의 서버를 임대해 운영하던 중,
해당 데이터센터의 보안이 허술했던 탓에 외부 공격자가 root 권한으로 서버에 접근하는 데 성공했다.
누구도 몰랐지만 이 해킹 사실은 2019년 10월에야 언론을 통해 폭로되어 세상에 알려졌습니다

Meet Tor

TLS Certificates of the Tor Network and Their Distinctive Features JOURNAL: International Journal of Systems and Software Security and Protection (IJSSSP) - Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/The-Tor-network-operation_fig1_338804691 [accessed 19 May 2025]

  • Tor가 등장하는 이유는 무엇일까?
    • Tor는 VPN처럼 중앙화된 하나의 서버가 아니라 분산된 다중 노드 구조를 사용한다.
    • 여러 경유지(노드)를 통해 트래픽을 전달하기 때문에 어떤 노드도 전체 경로를 알 수 없다.
    • 그래서 IP도 목적지도 데이터 내용도 은닉이 가능하다!
  • Onion Routing : 계층적으로 암호화된 트래픽이 릴레이를 거치면서 한 겹씩 벗겨진다.
    • 경로 중간의 누구도 ‘시작점과 끝점’을 동시에 볼 수 없다.

How Tor Works

  • 그러면 Tor는 어떻게 회로(Circuit)를 구성하는가?
    • 사용자는 먼저 Tor Directoey에 접속해 중계노드(T1~T6)의 리스트를 받는다.
    • 이 중 3개(T1, T2, T3)를 무작위로 선택하여 회로를 구성한다.
      1. T1 : Entry(Guard) Node
      2. T2 : Middle Node
      3. T3 : Exit Node
  • 회로는 고정된 시간 동안 유지되며, 그동안 동일한 경로로 트래픽을 보낸다.
    • 또한 각 회로는 Circuit ID로 식별된다.

Tor의 Key Sharing

  • 왜 여러개의 키가 필요할까요?
    • A 사용자는 T1, T2, T3 노드와 각각 공개키 기반의 Diffie-Hellman 방식으로 암호키를 공유한다.
    • 목적지 서버와 직접 통신하는 건 Exit Node(T3)이지만, 사용자는 암호키를 3중으로 나누어 통신한다.
  • 보안적으로 어떤 의미를 지니는 것일까?
    • 각 노드는 자신의 앞뒤 노드 외에는 보내는 사람 / 받는 사람을 알 지 못한다.
    • 따라서, 중간자 공격에 매우 강한 구조이다.
💡 공개키 기반의 DIffie-Hellman 방식이란?
A와 B가 각자만의 '비밀 찻잎'을 가지고 있어요. 같은 ‘뜨거운 물(공개값)’에 찻잎을 넣어 우려냅니다.
A는 자신의 비밀 찻잎과 뜨거운 물로 만든 '차 색깔'을 B에게 줍니다.
B도 마찬가지로 '차 색깔'을 A에게 줍니다.→ 이건 도청자가 볼 수 있어요!
A는 B의 차 색깔에 자기 찻잎을 넣고, B는 A의 차 색깔에 자기 찻잎을 넣습니다.
두 사람은 같은 색의 차(같은 비밀값)를 얻게 돼요.
즉, 도청자는 차 색깔과 물은 알 수 있지만, 찻잎의 조합은 절대 알 수 없어요. 이게 바로 Diffie-Hellman의 마법입니다.

1. 공통 공개값 정하기 : 두 사람(A, B)은 서로 공개할 수 있는 값 g, p를 미리 정합니다. (p는 큰 소수, g는 생성자)
2. 개인 비밀값 설정 : A는 비밀 값 a, B는 비밀 값 b를 정합니다.
3. 서로 공개값 계산 후 교환 :  A는 A = g^a mod p를 계산하여 B에게 보냄 B는 B = g^b mod p를 계산하여 A에게 보냄
4. 서로 받은 값으로 비밀키 계산 : A는 B^a mod p → g^(ba) mod p B는 A^b mod p → g^(ab) mod p
둘은 같은 키 g^(ab) mod p를 얻게 됨 → 이걸로 암호화 통신 가능!

Onion Routing의 request flow

  • 사용자가 보내는 요청은 3중 암호화된다.
    1. T3로 보낼 데이터 → T2의 키로 암호화된다.
    2. T2로 보낼 데이터 → T1의 키로 암호화된다.
    3. T1으로 최종 포장 → Tor 회로의 시각
  • 각 노드는 자신에게 해당하는 암호만 해독하고 다음 노드에 전달한다.

Onion Routing의 response flow

  • 응답은 반대 경로를 따라 다시 3중 암호화 후 역방향으로 전송된다.
    • B → T3(암호화) → T2 → T1 → A
    • A는 T1, T2, T3 키로 역순 해독을 한다.
  • 응답 과정에서도 원래 요청ㅜ자가 누구인지 파악이 불가능하다.

Tor 동작 절차

https://itpenote.tistory.com/715 의 Tor 네트워크 다이어그램 참고

 

(1) 리스트 요청: 사용자 → 디렉토리 서버

  • 사용자가 Tor 브라우저를 실행하면 Directory Server에 요청을 보냅니다.
  • 목적: Tor 네트워크에 참여 중인 노드 목록(Router List)을 얻기 위함입니다.
  • 디렉토리 서버는 각 노드의 공개키, 위치 정보, 상태 정보 등을 가지고 있어요.

(2) 리스트 획득: 사용자는 Tor Router List를 받음

  • 디렉토리 서버로부터 Entry, Middle(Relay), Exit 노드 후보들의 정보를 받습니다.
  • 이 정보는 인증된 디렉토리 권한자(DAM: Directory Authority)에 의해 갱신·관리됩니다.

(3) 경로 랜덤 설정: Entry-Relay-Exit 노드를 무작위로 설정

  • 사용자는 받은 리스트 중에서 3개의 노드를 무작위로 선택해 하나의 경로(Circuit)를 구성합니다.
    • Entry Node: 사용자의 진입점
    • Relay Node: 중간 경유지 (경로 다양성 확보)
    • Exit Node: 목적지 웹사이트에 실제 요청이 나가는 지점

(4~5) 패킷 암호화 및 다단계 복호화(Onion Routing)

  • 사용자의 데이터는 3단계로 암호화되어 전송됩니다.
    • 각 노드에서 자신만 복호화할 수 있는 계층만 복호화합니다.
  • 최종적으로 Exit Node에서 완전히 복호화된 원래 요청이 목적지로 전달됩니다.
  • 이렇게 되면 어느 하나의 노드도 전체 경로를 알 수 없게 됩니다.
사용자 Tor 브라우저 일반 브라우저와는 달리 Tor 네트워크를 통해 접속 가능하며, 경로 설정 + 암호화 작업 자동 수행
서버 Directory Server Tor에 참여 중인 노드들의 목록, 공개키, 상태 등을 관리하는 서버. 사용자에게 Router list 제공
네트워크 구성 Cell Tor 내 데이터 단위. 512바이트 고정 크기이며, 각 메시지는 Cell 단위로 나눠져 이동
  Circuit 하나의 연결 경로. 보통 3개의 노드(Entry, Relay, Exit)로 구성되며, 일정 시간마다 재구성됨
  OR (Onion Router) 실제 Tor 노드를 의미함. 데이터를 암호화/복호화하며 릴레이 역할 수행
  OP (Onion Proxy) 사용자 측 Tor 클라이언트가 Circuit을 설정하고, 노드를 관리하며 라우팅 시작점이 됨