[Open Source] #22 Berty Messenger: Kiến trúc nhắn tin P2P phi tập trung và giải pháp bảo mật tuyệt đối không cần máy chủ
Hầu hết các ứng dụng nhắn tin hiện nay (Signal, Telegram, WhatsApp) đều dựa trên kiến trúc Client-Server. Dù có mã hóa đầu cuối (E2EE), dữ liệu vẫn phải đi qua một máy chủ trung tâm để điều phối. Berty phá vỡ quy tắc này bằng cách biến mỗi chiếc điện thoại thành một node trong mạng lưới ngang hàng (Peer-to-Peer), cho phép nhắn tin ngay cả khi hạ tầng internet bị cắt đứt.
🛠️ 1. Hệ sinh thái công nghệ: Sự giao thoa giữa Go và React Native
Github: https://github.com/berty/berty
Kiến trúc của Berty cực kỳ đồ sộ vì nó phải giải quyết bài toán chạy một hệ thống phân tán nặng nề ngay trên tài nguyên hạn chế của smartphone:
- Wesh Protocol (Golang): Đây là giao thức lõi (Core) xử lý mọi logic về định danh, mã hóa, quản lý nhóm và định tuyến. Việc sử dụng Go giúp tối ưu hiệu suất xử lý luồng (concurrency) và tính toán mật mã.
- libp2p & IPFS: Berty sử dụng libp2p làm lớp mạng để các thiết bị tìm thấy nhau vượt qua rào cản NAT/Tường lửa. IPFS đóng vai trò là hệ thống phân phối dữ liệu phi tập trung.
- OrbitDB & CRDT: Để đồng bộ tin nhắn mà không có server, Berty sử dụng OrbitDB (xây dựng trên IPFS). Nó áp dụng thuật toán CRDT (Conflict-free Replicated Data Types) để đảm bảo khi nhiều người cùng chat, các tin nhắn sẽ tự động hợp nhất theo đúng thứ tự logic mà không xảy ra xung đột dữ liệu.
- Gomobile & gRPC Bridge: Mã nguồn Go được đóng gói bằng Gomobile thành thư viện native. Giao tiếp giữa giao diện (React Native/JS) và lõi xử lý (Go) được thực hiện qua gRPC streams, giúp truyền tải dữ liệu dung lượng lớn với độ trễ cực thấp.
🏗️ 2. Trụ cột kiến trúc: Offline-first và Metadata Reduction
Kiến trúc của Berty được xây dựng trên triết lý "Zero-Knowledge" và "Censorship-Resistance":
Mạng lưới Proximity (Gần kề)
Berty tích hợp các driver kết nối khoảng cách gần như Bluetooth Low Energy (BLE) và mDNS. Điều này cho phép người dùng trong cùng một khu vực (ví dụ: trong hầm gửi xe, trên máy bay) có thể nhắn tin cho nhau mà không cần bất kỳ trạm phát sóng hay kết nối internet nào.
Bảo mật và Ẩn danh tuyệt đối
- Không số điện thoại/Email: Định danh người dùng dựa hoàn toàn trên cặp khóa mật mã (Public/Private Key).
- Mã hóa Double Ratchet: Sử dụng thuật toán mã hóa tương tự như Signal nhưng được tùy biến để hoạt động trong môi trường P2P, đảm bảo tính bảo mật ngay cả khi một khóa bị lộ trong quá khứ.
- Giảm thiểu Metadata: Vì không có server trung tâm, không có ai có thể thu thập thông tin "ai nhắn cho ai, lúc nào" (một điểm yếu chí tử của các app tập trung).
🔄 3. Phân tích chuyên sâu Luồng hoạt động (Data Lifecycle)
Sơ đồ dưới đây mô tả hành trình của một tin nhắn từ khi nhấn "Gửi" trên điện thoại người gửi cho đến khi xuất hiện trên điện thoại người nhận trong mạng P2P:

Giải mã các kỹ thuật "Pro-level" trong mã nguồn:
- Handshake qua Rendezvous Point: Do các thiết bị di động thường nằm sau NAT phức tạp, Berty sử dụng các máy chủ Rendezvous chỉ để giúp hai thiết bị ban đầu nhìn thấy nhau (chào hỏi). Sau khi thấy nhau, chúng sẽ cố gắng thiết lập kết nối trực tiếp (Direct Connection) và máy chủ Rendezvous hoàn toàn bị loại bỏ khỏi luồng dữ liệu.
- Đồng bộ hóa CRDT (Conflict-free Replicated Data Types): Đây là kỹ thuật cực khó. Khi bạn gửi tin nhắn lúc offline, OrbitDB sẽ lưu dưới dạng một "Operation". Khi có mạng lại, hệ thống sẽ thực hiện phép hợp (Union) các Operation này với các node khác. Thuật toán đảm bảo kết quả cuối cùng ở mọi thiết bị là giống hệt nhau mà không cần một "trọng tài" trung tâm.
- Adaptive Connectivity: Hệ thống có khả năng tự động cảm biến môi trường. Nếu Wifi bị ngắt, nó lập tức kích hoạt Bluetooth hoặc dữ liệu di động để duy trì luồng dữ liệu mà người dùng không hề hay biết.
⚖️ 4. So sánh chiến lược bảo mật
| Đặc điểm | Berty Messenger | Signal / WhatsApp | Telegram |
|---|---|---|---|
| Kiến trúc | P2P (Phi tập trung) | Client-Server (Tập trung) | Client-Server |
| Server trung tâm | Không có | Có (Điều phối) | Có (Lưu trữ) |
| Đăng ký | Anonymous (Key-based) | Số điện thoại | Số điện thoại |
| Hoạt động Offline | Có (Bluetooth/BLE) | Không | Không |
| Metadata | Cực thấp | Thấp | Cao |
✅ Kết luận: Tại sao Berty là một dự án mẫu mực?
Berty Messenger không chỉ là một ứng dụng, nó là một minh chứng kỹ thuật cho thấy chúng ta có thể làm chủ hoàn toàn giao tiếp của mình. Bằng cách kết hợp Golang, IPFS, và CRDT, dự án đã giải quyết những bài toán hóc búa nhất của hệ thống phân tán trên thiết bị di động. Đối với các kỹ sư, đây là kho tàng kiến thức về cách xây dựng các ứng dụng Censorship-resistant (chống kiểm duyệt) và Private-by-design.
Hy vọng bản phân tích chuyên sâu này mang lại giá trị thực tế cho bạn. Đừng quên Upvote và Follow mình để đón xem những dự án kỹ thuật thú vị tiếp theo!
All rights reserved