QT: Lõi nhắn tin mã hóa đầu-cuối kháng lượng tử viết bằng Rust, chạy 10.000 kết nối chỉ với 124MB RAM
Một lập trình viên ẩn danh vừa công bố QT — nguyên mẫu lõi mã hóa và truyền tải của ứng dụng nhắn tin mã hóa đầu-cuối, hỗ trợ cả thuật toán hậu lượng tử. Dự án viết hoàn toàn bằng Rust, đã được kiểm thử nghiêm ngặt và có thể duy trì 10.000 kết nối đồng thời chỉ với 124MB RAM. Tuy nhiên đây vẫn là nguyên mẫu kỹ thuật, chưa sẵn sàng cho người dùng phổ thông.

Một dự án mã nguồn mở mang tên QT đang thu hút sự chú ý của cộng đồng lập trình sau khi xuất hiện trên Hacker News. Đây là nguyên mẫu lõi mã hóa và truyền tải của một ứng dụng nhắn tin mã hóa đầu-cuối (E2EE), được viết hoàn toàn bằng Rust và có khả năng chạy tới 10.000 kết nối đồng thời chỉ với 124MB RAM — một con số đáng nể với bất kỳ hệ thống nhắn tin nào.
Điểm đáng chú ý là QT không chỉ dừng ở mã hóa thông thường, mà còn hỗ trợ PQXDH (mã hóa hậu lượng tử) — tức là khả năng chống lại các cuộc tấn công từ máy tính lượng tử trong tương lai.
QT là gì và giải quyết vấn đề gì?
Hầu hết các ứng dụng nhắn tin phổ biến hiện nay — từ WhatsApp, Telegram đến Signal — đều yêu cầu số điện thoại để đăng ký. Dù nội dung tin nhắn có được mã hóa đi chăng nữa, việc đăng ký bằng số điện thoại vẫn tạo ra một dấu vết siêu dữ liệu: ai đang nói chuyện với ai, khi nào, tần suất ra sao. Đây là dữ liệu cực kỳ giá trị đối với các cơ quan thu thập thông tin.
Tác giả của QT đặt mục tiêu giải quyết vấn đề này bằng kỹ thuật thuần túy, thay vì chỉ dựa vào chính sách bảo mật:
- Danh tính dựa trên khóa mật mã — không cần số điện thoại, không cần email. Định danh của mỗi người sinh ra từ chính khóa công khai của họ, không ai được tự chọn "username".
- Mã hóa đầu-cuối thực sự — ngay cả máy chủ trung chuyển cũng không thể đọc nội dung tin nhắn.
- Mã nguồn mở — bất kỳ ai cũng có thể kiểm tra để chắc chắn không có "cửa hậu" ẩn giấu.
Bối cảnh dự án còn xuất phát từ các dự luật gây tranh cãi tại Liên minh châu Âu, đặc biệt là "Chat Control" — đề xuất có thể buộc các ứng dụng phải quét nội dung tin nhắn của người dùng, kể cả những ứng dụng tự nhận là "đã mã hóa".
Những gì đã hoàn thành và kiểm thử thực tế
Điểm khiến QT khác biệt so với nhiều dự án "sương sớm" khác là tác giả kiểm thử nghiêm túc, không chỉ viết pseudocode hay vẽ sơ đồ. Các thành phần đã hoàn thiện bao gồm:
| Thành phần | Chức năng | Trạng thái |
|---|---|---|
| core | Thiết lập phiên (X3DH + biến thể hậu lượng tử) và mã hóa liên tục (Double Ratchet) — cùng thiết kế Signal đang dùng | Đã kiểm thử với hơn 14 bài test tự động |
| transport | Bảo vệ kết nối mạng bằng Noise Protocol trên WebSocket | Đã kiểm thử với kết nối WebSocket thật |
| server | "Người đưa thư" — chuyển tin nhắn mà không bao giờ đọc được nội dung | Đã kiểm thử, kể cả khi bị tắt đột ngột (kill -9) |
| storage | Lưu danh tính và hội thoại trên đĩa, có mã hóa | Đã kiểm thử, kể cả nhập sai mật khẩu |
| cli | Phiên bản dòng lệnh để thử nghiệm không cần điện thoại | Đã kiểm thử với các tiến trình tách biệt |
| ffi | Cầu nối tới Kotlin (Android), Swift (iOS) và Python | Đã kiểm thử từ Python |
| App Android | Dùng cầu nối để chứng minh mọi thứ chạy trên điện thoại thật | Đã chạy trên trình giả lập Android thực |
Một chi tiết thú vị: mã hóa Double Ratchet mà QT sử dụng chính là thiết kế mà Signal đang áp dụng — nghĩa là nền tảng mật mã của dự án đạt chuẩn công nghiệp, chứ không phải sản phẩm tự chế thiếu kiểm chứng.
Những gì còn thiếu — cần thẳng thắn nhìn nhận
Tác giả khá trung thực khi phân biệt rõ giữa "đã chạy được" và "sẵn sàng dùng thật":
- Chưa có giao diện trò chuyện hoàn chỉnh — hiện ứng dụng Android chỉ có một nút "chạy demo"
- Chưa có máy chủ công khai trên internet — mới chỉ chạy trong mạng nội bộ
- Chưa có TLS (wss://) — hiện dùng ws:// đơn thuần, chỉ phù hợp để thử nghiệm
- Chưa có liên kết máy chủ (federation) — để không chính phủ nào có thể vô hiệu hóa toàn bộ mạng bằng cách tắt một máy chủ duy nhất
- Chưa tích hợp Keystore/Secure Enclave — mật khẩu cơ sở dữ liệu hiện lấy từ tham số dòng lệnh
- Chưa có kiểm toán bảo mật độc lập — điều kiện tiên quyết trước khi bất kỳ ai tin tưởng giao phó hội thoại thật
Tác giả ví von một cách hình ảnh: "Nền móng đã vững và đã được kiểm thử; ngôi nhà vẫn chưa có mái."
Cách thử nghiệm nhanh nhất
Lệnh đơn giản nhất để xem toàn bộ quy trình mã hóa hoạt động, mô phỏng cuộc hội thoại giữa hai người:
cargo run -p qt_cli --bin messenger_demo
Yêu cầu cài đặt:
sudo apt install redis-server libsqlcipher-dev
redis-server --daemonize yes
Lưu ý: biến thể hậu lượng tử của lõi yêu cầu Rust 1.81 trở lên.
Góc nhìn cho người dùng Việt Nam
Với bối cảnh ngày càng nhiều ứng dụng nhắn tin tại Việt Nam thu thập dữ liệu người dùng, các dự án như QT đáng để theo dõi. Tuy nhiên, cần nhấn mạnh rằng QT hiện chưa phải sản phẩm sẵn sàng sử dụng — thiếu giao diện, thiếu kiểm toán bảo mật, thiếu hạ tầng công khai.
Giá trị lớn nhất của QT nằm ở khía cạnh kỹ thuật: nó chứng minh rằng một lõi nhắn tin mã hóa đầu-cuối, sẵn sàng cho kỷ nguyên hậu lượng tử, có thể được xây dựng bằng Rust với hiệu năng ấn tượng (10.000 kết nối/124MB RAM) và mã nguồn mở hoàn toàn.
Dự án phát hành theo giấy phép kép: AGPL-3.0 cho mục đích mã nguồn mở, và giấy phép thương mại cho các tổ chức cần điều khoản khác. Nếu bạn muốn đóng góp hoặc báo cáo lỗ hổng bảo mật, dự án có các tài liệu CONTRIBUTING.md và SECURITY.md riêng — đặc biệt lưu ý không mở issue công khai cho các vấn đề bảo mật.
"Thay vì chỉ nằm ở lý thuyết, mục tiêu là triển khai và kiểm thử từng thành phần một cách nghiêm túc: không pseudocode, không sơ đồ — mà là mã biên dịch được, chạy được, và có kiểm thử tự động xác nhận nó làm đúng những gì nó tuyên bố."