I2P và khả năng tàng hình trên Internet
2P là gì?
I2P – Invisible Internet Project, có nghĩa là “dự án Internet tàng hình” là dự án phần mềm được xây dựng nhằm mục đích tạo ra một mạng máy tính “ẩn danh” trên nền mạng Internet. Một mạng được xây dựng trên nền một mạng khác như thế còn được gọi là một overlay network. Mô hình phân lớp trong kiến trúc mạng I2P được thể hiện trên hình 1 (nội dung của các giao thức được trình bày tại www.i2p2.de/protocols.html). Mạng I2P là một mạng đồng đẳng, phân tán, tự tổ chức, sử dụng bảng băm phân tán (DHT – Distributed Hash Table) Kademlia cải tiến.
Ứng dụng của I2P bao gồm lướt web, hosting, viết blog, chat, trao đổi thư điện tử, VoIP, chia sẻ file... ẩn danh. Trong đó, hosting ẩn danh (xây dựng các website, các diễn đàn, các server chia sẻ file) là ứng dụng chính. Địa chỉ một website trong mạng I2P (gọi là một eepsite) sẽ có dạng “http://example.i2p”. Ở đây, hosting ẩn danh có nghĩa là thành viên của mạng I2P có thể chia sẻ tài nguyên cho mọi người từ máy tính của mình mà không để lộ địa chỉ IP.
Để có thể khai thác các khả năng của I2P, cần phải cài lên máy tính phần mềm cùng tên được cung cấp trên webiste chính thức của I2P. Phần mềm này có các phiên bản dành cho Windows, Linux và Mac, sẽ thực hiện các chức năng của proxy server, web server và của router. Việc định tuyến (routing) ở đây là thực hiện trên mạng I2P. Để truy xuất được tài nguyên trên các eepsites, cần thiết lập địa chỉ proxy server cho trình duyệt là 127.0.0.1 và cổng là 4444 cho HTTP, 4445 cho HTTPS, 8080 cho FPT. Với cấu hình trình duyệt như vậy, chúng ta không những có thể truy cập các eepsites mà còn có thể ẩn danh truy cập các website thông thường và dữ liệu trên kênh truyền sẽ được mã hóa.
Truyền dữ liệu trong I2P
Dữ liệu trong mạng I2P được mã hóa và truyền qua các đường hầm một chiều (unidirectional tunnel). Người ta phân biệt hai loại đường hầm (hình 2): đường hầm đến (inbound
tunnel) và đường hầm đi (outbound tunnel). Mỗi đường hầm bao gồm một trạm đầu (Gateway), một số (có thể bằng 0) các trạm trung gian (Participant) và một trạm cuối (Endpoint). Đường hầm đến (Inbound tunnel) là các đường hầm mà mọi thứ rơi vào đó sẽ được truyền tới chủ thể khởi tạo đường hầm, còn đường hầm đi (outbound tunnel) là các đường hầm được chủ thể khởi tạo chúng sử dụng để truyền dữ liệu đi. Có thể có nhiều đường hầm cùng đi qua một router, hay nói cách khác, một router có thể thuộc nhiều đường hầm khác nhau. Để phân biệt chúng, mỗi một đường hầm được gán một mã số gọi là tunnel ID. Các tunnel ID này là khác nhau trong phạm vi một router.
Một trong những đặc trưng của đường hầm là độ dài của đường hầm, nó được đo bằng số lượng các bước nhảy (hop) giữa các router trong đường hầm (trong mạng I2P, mỗi máy tính cũng là một router). Nếu trạm đầu đồng thời là trạm cuối thì số bước nhảy bằng 0, tức là đường hầm có độ dài bằng 0. Nếu trạm đầu và trạm cuối là khác nhau và không có trạm trung gian thì số bước nhảy là 1. Còn nếu có 1 trạm trung gian như ở hình 2 thì số bước nhảy là 2. Nếu số bước nhảy của đường hầm là n thì đường hầm đó được gọi là đường hầm n bước nhảy (n- hop tunnel). Độ dài tối đa của đường hầm được quy định là 7, tức là có tối đa 6 trạm trung gian trong một đường hầm. Việc lựa chọn độ dài của đường hầm sẽ ảnh hưởng đáng kể tới các chỉ số chất lượng của đường hầm như thời gian trễ, băng thông, độ ổn định và độ ẩn danh. Đường hầm càng dài thì thời gian trễ càng lớn và xác suất một trạm nào đó của đường hầm ngừng hoạt động cũng tăng (độ ổn định sẽ giảm), còn nếu đường hầm ngắn thì độ ẩn danh sẽ thấp. Người ta khuyến cáo sử dụng đường hầm có độ dài lớn hơn hoặc bằng 3 cho mức bảo vệ cao nhất. Một nghiên cứu mới đây chỉ ra rằng việc sử dụng hơn 3 bước nhảy cũng không giúp bảo vệ thông tin tốt hơn so với việc chỉ dùng 3 bước.
Độ dài của đường hầm cũng như danh sách các router sẽ tham gia vào đường hầm do bên khởi tạo quyết định. Cơ chế cập nhật danh sách các router trên mạng I2P được thực hiện dựa trên DHT Kademlia. Cơ chế này được mô tả chi tiết hơn tại địa chỉ www.i2p2.de/how_networkdatabase.html. Kỹ thuật mã hóa và định tuyến trong I2P được đặt tên là kỹ thuật “củ tỏi” (garlic routing và garlic encryption), đó là một sự cải tiến từ kỹ thuật “củ hành” (onion routing và onion encryption) được sử dụng trong Tor. So với kỹ thuật “củ hành”, kỹ thuật “củ tỏi” có một số điểm khác biệt: kỹ thuật cũ tỏi cho phép gửi nhiều thông điệp cùng lúc, mỗi thông điệp như vậy được gọi là một “tép tỏi” (clove); trong kỹ thuật “củ tỏi” chỉ sử dụng đường hầm một chiều, mỗi bên đầu cuối phải tạo hai đường hầm (inbound tunnel và outbound tunnel) và do vậy cần đến 4 đường hầm cho một phiên trao đổi dữ liệu hai chiều (hình 3). Để tăng tốc độ và sự ổn định của việc truyền dữ liệu, người ta có thể sử dụng một nhóm các đường hầm cho cùng một mục đích. Nhóm các đường hầm như vậy gọi là tunnel pool. Trong trường hợp này, thông điệp (nhóm thông điệp) có thể được phân mảnh và truyền qua các đường hầm khác nhau, sau đó được ghép nối ở trạm cuối.
I2P sử dụng 1 thuật toán mã đối xứng (AES), 1 thuật toán mã công khai (ElGamal), 1 thuật toán băm (SHA256) và 1 thuật toán ký số (DSA). Các tham số cụ thể được công bố tại địa chỉ www.i2p2.de/how_cryptography.html. Mã hóa trong I2P là mã hóa theo tầng (layered encryption). Bên gửi sẽ mã hóa một thông điệp nhiều lần, sau đó thông điệp sẽ lần lượt được giải mã bởi các router trong đường hầm.
Trong pha thiết lập đường hầm, mỗi router chỉ biết được các chỉ thị định tuyến (routing instructions) cho bước nhảy kế tiếp. Trong pha làm việc, thông điệp được gửi qua đường hầm; thông điệp này cùng với chỉ thị định tuyến nó chỉ có trạm cuối của đường hầm mới được biết. Các trạm trung gian không thể biết được chúng đang làm việc trong đường hầm loại nào (inbound tunnel hay outbound tunnel), cũng như không biết được nguồn gốc và đích đến của thông điệp mà chúng truyền tải. Đó là cơ sở để đảm bảo tính ẩn danh trong I2P.
Thách thức từ I2P
Nhu cầu ẩn danh trên Internet không phải là mới lạ. Các hacker cần ẩn danh khi trao đổi “chiến tích”, những người sử dụng trái phép các sản phẩm thông tin (sách điện tử, phần mềm, nhạc, phim) cần ẩn danh khi đăng lên hay tải xuống, những kẻ chống đối chính quyền cần ẩn danh khi đăng tải và đọc các bài viết trên mạng.... Nhìn chung, nhu cầu ẩn danh thường xuất phát từ những việc làm trái với pháp luật hay các quy định chung.
Đến nay, trong số các hệ thống hỗ trợ ẩn danh trên mạng, đáng kể nhất chỉ có Tor và I2P. Trong khi Tor hướng đến việc đảm bảo ẩn danh cho người sử dụng các tài nguyên mở thì I2P lại tập trung vào việc đảm bảo ẩn danh cho người đăng tải các tài nguyên bằng việc xây dựng một mạng mới tách biệt với mạng Internet. Nếu chính quyền có thể hạn chế hoạt động của Tor bằng cách ngăn chặn các website- tracker (thực tế đã xảy ra ở Trung Quốc, Nga) thì điều đó là không khả thi với I2P. Việc đưa các website có nội dung “chống đối” lên mạng I2P sẽ khiến cho các cơ quan chức năng không thể tìm ra được nơi đăng tải để có biện pháp ngăn chặn thích hợp mặc dù trên thực tế có thể website được đặt ở một máy chủ trong nước.
Ngay từ thời điểm bắt đầu dự án (năm 2003), các nhà phát triển đã đặt mục tiêu xây dựng I2P có khả năng chống lại sự tấn công từ phía các tổ chức có tiềm năng lớn về tài chính cũng như quyền lực. Trên website chính thức của I2P, tại địa chỉ www.i2p2.de/how_threatmodel.html, các nhà phát triển đã xem xét một loạt các khả năng tấn công lên mạng I2P (tấn công brute force để dò ra vị trí của một máy nào đó, tấn công từ chối dịch vụ, tấn công lên hệ thống mật mã, tấn công lên các tài nguyên tập trung, v.v...) và đề xuất các biện pháp để ứng phó với các hình thức tấn công này. Như vậy, có thể dự đoán rằng sự phát triển của I2P sẽ khiến cho tình hình vi phạm trong lĩnh vực công nghệ thông tin trở nên phức tạp hơn. Đó cũng sẽ là thách thức lớn hơn cho các nhà bảo vệ luật pháp trong lĩnh vực ATTT