0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Khám Phá Kiến Trúc và Tổ Chức Mã Nguồn Của Tor

Đăng vào 7 tháng trước

• 5 phút đọc

🧅 Khám Phá Tor: Cái Nhìn Đơn Giản Về Kiến Trúc và Tổ Chức Mã Nguồn

Tor (The Onion Router) được biết đến nhiều nhất với khả năng duyệt web ẩn danh, nhưng bên trong nó là một hệ thống phức tạp với nhiều lớp về mạng, mật mã và cơ chế client-server. Nếu bạn đã từng nhìn vào mã nguồn của Tor, có thể bạn sẽ cảm thấy choáng ngợp — vì vậy, hãy cùng phân tích nó theo cách mà bạn trải nghiệm như một người dùng.

🔎 Cách Mã Nguồn Phù Hợp Với Các Tính Năng

Kho mã nguồn của Tor có thể được chia thành ba lớp lớn:

1. Giao Diện Người Dùng / Trải Nghiệm Duyệt Web

  • Không nằm trong kho mã nguồn chính của Tor (Tor là một daemon, không phải là một trình duyệt).
  • Trình Duyệt Tor (một dự án riêng) tích hợp Tor như là backend của nó.
  • Các tính năng như “Kết nối với Tor” hoặc “Danh tính mới” là những gì người dùng thấy nhưng dựa vào các dịch vụ cốt lõi của Tor.

2. Mạng Cốt Lõi (Trái Tim Của Tor)

  • src/core/or/ → Logic định tuyến onion, các mạch, relay.
  • src/core/mainloop/ → Vòng lặp sự kiện, lập lịch, I/O không đồng bộ.
  • src/feature/hs/ → Dịch vụ ẩn (hiện nay gọi là Dịch vụ Onion).
  • src/feature/control/ → Giao thức điều khiển (cho Trình Duyệt Tor và các ứng dụng giao tiếp với Tor).

3. Các Bộ Kết Nối và Tiện Ích Ẩn

  • src/lib/crypt_ops/ → Mã hóa, trao đổi khóa, các nguyên lý crypto.
  • src/lib/net/ → Quản lý socket và kết nối ở mức thấp.
  • src/lib/log/ → Ghi log và chẩn đoán.
  • src/test/ → Các bài kiểm tra đơn vị và tích hợp.

Hãy nghĩ về nó như sau: Trình Duyệt Tor yêu cầu → Tor Core xây dựng các tuyến đường onion → Thư viện mạng + Crypto thực hiện công việc nặng nhọc.

📊 Quy Trình: Cách Yêu Cầu Trang Web Hoạt Động Qua Tor

Dưới đây là một quy trình đơn giản về những gì xảy ra khi bạn nhập một URL trong Trình Duyệt Tor:

sequence Copy
sequenceDiagram
    participant User as User (Trình Duyệt Tor)
    participant TorClient as Tor Client (Daemon)
    participant Entry as Node Đầu Vào
    participant Middle as Node Giữa
    participant Exit as Node Ra
    participant Server as Máy Chủ Đích

    User->>TorClient: Yêu cầu trang web
    TorClient->>Entry: Xây dựng mạch mã hóa
    TorClient->>Middle: Mở rộng mạch
    TorClient->>Exit: Mở rộng mạch (tổng cộng 3 bước nhảy)
    User->>TorClient: Yêu cầu HTTP(S)
    TorClient->>Exit: Chuyển tiếp yêu cầu mã hóa
    Exit->>Server: Yêu cầu HTTP(S) đơn giản
    Server->>Exit: Phản hồi
    Exit->>TorClient: Phản hồi mã hóa
    TorClient->>User: Trang web đã giải mã

🖥️ Kiến Trúc Hệ Thống Tor

Dưới đây là cách mà các thành phần chính của Tor kết nối — với các lớp mã hóa onion được hình dung qua các bước nhảy:

flowchart Copy
flowchart LR  
subgraph UserSide\[Phía Người Dùng\]  
Browser\[Trình Duyệt Tor\]  
Client\[Tor Client (Daemon)\]  
end

subgraph TorNetwork[Tor Network]  
    Entry[Node Đầu Vào\n(Lớp Mã Hóa 3)]  
    Middle[Node Giữa\n(Lớp Mã Hóa 2)]  
    Exit[Node Ra\n(Lớp Mã Hóa 1)]  
end

subgraph Services[Services]  

    Hidden[Dịch Vụ Ẩn (.onion)]  

    Server[Máy Chủ Đích Thường]  

end

Browser -->|Yêu Cầu SOCKS| Client  

Client -->|Xây Dựng Mạch| Entry  

Entry --> Middle --> Exit  

Exit --> Server  

Client --> Hidden  

Hidden --> Client  

🥑 So Sánh: Quan Điểm Người Dùng vs Mã Nguồn

Quan Điểm Của Người Dùng Cái Đang Xảy Ra Trong Mã
“Tôi nhấp vào một liên kết trong Trình Duyệt Tor.” Trình Duyệt Tor phát hành một yêu cầu SOCKS đến Tor client (src/feature/control/).
“Kết nối với mạng Tor…” Client khởi động bằng cách liên lạc với các cơ quan thư mục (src/core/or/directory.c).
“Xây dựng kết nối an toàn…” Mạch đa bước được xây dựng (src/core/or/circuitbuild.c).
“Trang tải qua Tor.” Dữ liệu được bọc onion và chuyển tiếp qua entry → middle → exit (src/core/or/relay.c).
“Tôi có thể truy cập một trang .onion.” Cuộc hẹn dịch vụ ẩn (src/feature/hs/).
“Tor vẫn chạy âm thầm.” Vòng lặp sự kiện giữ cho sockets + circuits hoạt động (src/core/mainloop/).

🎯 Những Điều Chính

  • Kho mã nguồn cốt lõi của Tor không phải là một trình duyệt — nó là engine định tuyến.
  • Mã được phân lớp: giao diện điều khiển, logic định tuyến onion, tiện ích crypto & mạng.
  • Trải nghiệm “đơn giản” của người dùng khi nhấp vào một liên kết thực sự kích hoạt một chuỗi phức tạp của xây dựng mạch, mã hóa và phối hợp relay.
  • Các sơ đồ chuỗi giúp cầu nối khoảng cách giữa hành động của người dùngnhững gì mã đang thực hiện.

✍️ Nếu bạn muốn tìm hiểu thêm, hãy khám phá kho mã nguồn Tor trên GitLab — chỉ cần bắt đầu từ src/core/or/ để xem logic định tuyến onion hoạt động.

Các Thực Tiễn Tốt Nhất

  • Tránh sử dụng Tor cho việc giao dịch tài chính: Để bảo vệ thông tin cá nhân, không nên thực hiện các giao dịch nhạy cảm như mua sắm online.
  • Luôn cập nhật phiên bản mới nhất: Đảm bảo rằng bạn đang sử dụng phiên bản mới nhất của Trình Duyệt Tor để bảo mật tốt hơn.

Những Cạm Bẫy Thông Thường

  • Sử dụng Tor mà không có VPN: Mặc dù Tor cung cấp độ bảo mật cao, việc kết hợp với VPN sẽ tăng cường tính ẩn danh.
  • Kết nối với các dịch vụ không an toàn: Hãy cẩn thận khi truy cập các trang web không sử dụng HTTPS.

Mẹo Tối Ưu Hiệu Suất

  • Giới hạn yêu cầu đồng thời: Quá nhiều yêu cầu đồng thời có thể làm chậm tốc độ kết nối.
  • Sử dụng các nút ra gần nhất: Kết nối qua các nút ra gần nhất có thể cải thiện tốc độ truy cập.

Phần Hỏi Đáp

Tor có an toàn không?

Tor rất an toàn khi sử dụng đúng cách, nhưng không nên xem nó là giải pháp hoàn hảo.

Tôi có thể sử dụng Tor cho các hoạt động ngân hàng không?

Không nên, vì thông tin cá nhân có thể bị lộ nếu không cẩn thận.

Hãy bắt đầu hành trình khám phá Tor ngay hôm nay và hiểu rõ hơn về cách mà nó hoạt động!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào