0

[Open Source] #158 - Databag: Hệ thống truyền thông liên minh (Federated) bảo mật với kiến trúc Golang, SQLite và cơ chế mã hóa E2EE "Sealed Topics"

Trong kỷ nguyên của các nền tảng nhắn tin tập trung, quyền riêng tư thường bị đánh đổi lấy sự tiện dụng. Databag ra đời như một giải pháp đột phá, cho phép cá nhân xây dựng mạng lưới truyền thông riêng tư, không cần số điện thoại, không cần email và hoàn toàn do người dùng làm chủ. Với khả năng vận hành mượt mà ngay cả trên phần cứng tối giản như Raspberry Pi Zero, Databag định nghĩa lại khái niệm về một ứng dụng truyền thông hiện đại: nhẹ, bảo mật và kết nối liên minh (Federated).

Dưới góc độ kỹ thuật, Databag là một bài học mẫu mực về việc tối ưu hóa hiệu năng bằng Go, kỹ thuật định danh mật mã học (RSA/AES) và kiến trúc giao tiếp thời gian thực đa tầng.

Github: https://github.com/balzack/databag


🛠️ 1. Nền tảng công nghệ: Tối ưu cho thiết bị Edge

Databag chọn những công nghệ cốt lõi ưu tiên tính gọn nhẹ và hiệu suất thực thi:

  • Backend Core (Golang): Lựa chọn Go giúp máy chủ tiêu thụ cực ít tài nguyên (RAM/CPU), cho phép triển khai trên các thiết bị nhúng mà vẫn đảm bảo khả năng xử lý đồng thời hàng nghìn tin nhắn.
  • Embedded Storage (SQLite): Thay vì quản trị các DB cồng kềnh, Databag sử dụng SQLite để gói gọn dữ liệu vào một tệp duy nhất, giúp việc sao lưu và di chuyển "node" trở nên cực kỳ đơn giản.
  • Multi-platform Frontend (React & React Native): Một bộ SDK dùng chung được thiết kế để đồng bộ logic giữa phiên bản Web (React/Vite) và Mobile (React Native), đảm bảo trải nghiệm người dùng nhất quán.
  • Real-time & Media Processing:
    • WebSockets: Đẩy sự kiện và tin nhắn tức thì.
    • WebRTC: Thiết lập kênh truyền âm thanh/hình ảnh trực tiếp (P2P).
    • FFmpeg & ImageMagick: "Nhà máy" xử lý media tại chỗ để tối ưu hóa dung lượng lưu trữ và hiển thị.

🏗️ 2. Trụ cột kiến trúc: Federation và Crypto-Identity

Kiến trúc của Databag phá vỡ mô hình Client-Server truyền thống bằng các tư duy phi tập trung:

  • Federation Architecture: Databag hoạt động theo mô hình liên minh tương tự giao thức Email. Mỗi máy chủ là một đơn vị độc lập nhưng có khả năng trao đổi thông tin Profile và tin nhắn với nhau thông qua một giao thức bắt tay (Handshake) bảo mật.
  • Identity-as-a-Key: Danh tính người dùng không dựa trên cơ sở dữ liệu trung tâm mà dựa trên cặp khóa RSA Public/Private. Khóa Công khai được dùng để định danh trên toàn mạng lưới liên minh, trong khi Khóa Bí mật nằm an toàn tại thiết bị người dùng.
  • Sealed Topics (Mã hóa đầu cuối): Đây là kỹ thuật bảo mật cốt lõi. Khi một chủ đề được "niêm phong", server Go chỉ đóng vai trò là nơi lưu trữ "mù" (blind storage). Toàn bộ nội dung tin nhắn được mã hóa bằng AES tại phía gửi và chỉ có thể được giải mã bởi người nhận hợp lệ.

🔄 3. Workflow: Vòng đời của một liên kết Liên minh (Sequence Diagram)

Sơ đồ mô tả quy trình thiết lập liên lạc và gửi tin nhắn bảo mật giữa hai máy chủ khác nhau:

image.png

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn

  1. Native Crypto Bridge: Trên Mobile, thay vì dùng thư viện JS chậm chạp, Databag gọi trực tiếp vào các module Native của iOS/Android để thực hiện các phép toán RSA, giúp việc mở khóa tin nhắn diễn ra trong tích tắc.
  2. UnifiedPush Integration: Triển khai một lớp trừu tượng cho thông báo đẩy, cho phép người dùng nhận tin nhắn mà không cần phụ thuộc vào Google FCM, hỗ trợ các giải pháp đẩy tin mã nguồn mở hoặc tự host hoàn toàn.
  3. STUN/TURN Orchestration: Tích hợp sẵn cơ chế điều phối máy chủ Relay, giúp các cuộc gọi WebRTC xuyên qua mọi lớp NAT và tường lửa mạng gia đình phức tạp.
  4. Multi-stage Docker Optimization: Dockerfile được thiết kế để build source React và Go trong các tầng riêng biệt, kết quả cuối cùng là một Image chạy trên Alpine Linux với kích thước cực nhỏ, tối ưu cho việc deploy lên Cloud hoặc NAS.

⚖️ 5. So sánh chiến lược

Tiêu chí Databag Matrix (Element) Signal (SaaS)
Kiến trúc Federation (Gọn nhẹ) Federation (Cồng kềnh) Centralized
Định danh RSA Key Tài khoản server Số điện thoại
Cài đặt Siêu dễ (Single Binary) Khó (Nhiều service) Không cần
Tài nguyên Rất thấp (Pi Zero) Cao N/A
Quyền sở hữu Tuyệt đối Cao Thấp

✅ Kết luận: Tại sao Databag là hình mẫu cho truyền thông cá nhân?

Databag chứng minh rằng chúng ta có thể xây dựng một hệ thống truyền thông mạnh mẽ và bảo mật mà không cần đến hạ tầng máy chủ khổng lồ. Việc kết hợp giữa hiệu năng của Go và triết lý Privacy-by-Design đã biến dự án này thành một công cụ lý tưởng cho những ai muốn thực sự làm chủ tri thức và các mối quan hệ số của mình.

Đối với các kỹ sư Backend, nghiên cứu Databag giúp bạn hiểu sâu về:

  • Cách triển khai Hệ thống liên minh (Federated System) thực tế.
  • Ứng dụng Mật mã học (Cryptography) trong ứng dụng Web/Mobile.
  • Tư duy thiết kế Stateless Server kết hợp với lưu trữ nhúng.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí