Mã hoá đầu cuối và hệ thống mà server không được đọc
Chủ đề Dành cho thành viên
Bài đọc thử: 2/3 · còn 1 bài miễn phí
· Xem gói thành viên
Bài toán
Một hệ thống bình thường giả định server thấy hết dữ liệu: server fan-out tin nhắn, lưu bản sao lưu, đồng bộ thiết bị, thu log để vận hành, chạy model, chống lạm dụng. Khi sản phẩm hứa chính nhà vận hành cũng không đọc được (mã hoá đầu cuối, E2EE), mỗi việc đó phải làm lại:
- fan-out, đồng bộ, sao lưu phải chạy trên dữ liệu server không giải mã được;
- người dùng cần cách tin rằng public key, mã web, model, phần cứng mà server đưa cho họ là thật, tức phải phòng cả chính server;
- vận hành vẫn cần metric, chống spam và AI, nhưng không được gắn với danh tính hay nội dung.
Trang này theo dõi cách các hệ (gần như toàn bộ là WhatsApp, cộng Firefox Sync) trả lời từng câu đó theo thời gian. Phần secret và quyền ở hạ tầng nội bộ nằm ở Bảo mật hạ tầng và quản lý secret; danh tính và token ở Xác thực và phân quyền (authn/authz).
Diễn tiến theo thời gian
- 2014 · WhatsApp (theo Open Whisper Systems): đưa giao thức TextSecure (sau là Signal Protocol) vào client Android, mã hoá mặc định tin 1:1; group, media và các nền tảng khác làm sau. Theo đối tác, đây là triển khai E2EE lớn nhất tới lúc đó. WhatsApp 2014
- 2014 · Mozilla: Firefox Sync (Firefox 29) đổi từ ghép thiết bị thủ công sang dẫn xuất khoá từ mật khẩu: một bí mật sinh ra cả token xác thực (lên server) và khoá giải mã (ở lại máy). Bản ghép thủ công an toàn hơn trên giấy nhưng ít người dùng hơn. Mozilla 2018
- 2015→2026 · WhatsApp: E2EE không chặn được file độc. Từ Stagefright (2015), thư viện media wamedia kiểm file trước khi tới thư viện hệ điều hành; năm 2026 viết lại bằng Rust (160K dòng C++ → 90K dòng Rust) và mở rộng thành bộ kiểm Kaleidoscope. WhatsApp 2026
- 2016 · WhatsApp (theo Open Whisper Systems): E2EE hoàn tất trên mọi loại liên lạc và mọi client, hơn 1 tỉ user/tháng. Ba pha migration giao thức: chạy song song có thông báo, chặn hạ cấp khi đã thấy liên hệ hỗ trợ E2EE, rồi cho client cũ hết hạn. Security code toàn số (12 nhóm 5 chữ số) để bản địa hoá được. WhatsApp 2016
- 2020 · WhatsApp: bắt đầu xây DIT (de-identified telemetry): lấy token ẩn danh qua kết nối đã xác thực, gửi log qua kết nối không xác thực kèm token (VOPRF); token dùng lại tối đa 64 lần/ngày, xoay khoá thay cho rate limit theo user, bỏ IP ở edge. Rollout toàn cầu 2021. WhatsApp 2021
- 2021 · WhatsApp: multi-device. Bỏ mô hình "điện thoại là nguồn sự thật": mỗi thiết bị một identity key, client fan-out mã hoá N lần cho N thiết bị, server chỉ lưu trạng thái app đã mã hoá (cả metadata). Security code phủ mọi thiết bị để chống server thêm thiết bị lén. WhatsApp 2021
- 2021 · WhatsApp: sao lưu E2EE. Khoá sao lưu do user giữ hoặc cất trong Backup Key Vault trên HSM, HSM giới hạn số lần thử mật khẩu; vault phân tán nhiều data center. WhatsApp 2021
- 2022 · Meta: ACS thành dịch vụ multi-tenant dùng chung cho xác thực ẩn danh (hàng trăm nghìn request/giây cho DIT). Bài học: cho dùng lại credential để chi phí không tăng 1:1 theo traffic, chống đỉnh nhân tạo từ client gửi theo lịch, SDK để đội khác khỏi tự làm mật mã. Meta 2022
- 2022 · WhatsApp: Code Verify. Web app được phục vụ lại mỗi lần tải nên server có thể đưa mã khác; extension so hash mã WhatsApp Web đang chạy với hash do Cloudflare giữ. WhatsApp 2022
- 2023 · WhatsApp: key transparency. Thư mục public key append-only (AKD, Rust), audit proof công khai, để client tự kiểm key thay cho so QR theo từng cặp (group 100 người là 4.950 cặp). Hàng chục nghìn lần đổi key mỗi phút được gom lô thành epoch. WhatsApp 2023
- 2023 · WhatsApp: Device Verification chống malware lấy cắp authentication key: security-token làm mới mỗi lần lấy tin offline, challenge ẩn chỉ cho kết nối đáng ngờ. WhatsApp 2023
- 2023 · WhatsApp: cuộc gọi. Tắt chuông người lạ bằng giao thức do server thực thi để máy nhận không xử lý dữ liệu lạ; server quyết bằng privacy token do client phát, vì WhatsApp không lưu ai gọi ai. Tuỳ chọn đi qua relay để giấu IP. WhatsApp 2023
- 2024 · WhatsApp: DMA của EU buộc mở cho bên thứ ba. Bên thứ ba nối vào server WhatsApp bằng giao thức của WhatsApp và Signal Protocol; theo Meta, không kiểm soát được client bên kia thì không hứa E2EE như cũ được, và proxy trung gian làm mất tín hiệu chống spam, lộ metadata. WhatsApp 2024
- 2024 · WhatsApp: IPLS lưu danh bạ mã hoá, ghép hai primitive đã có: HSM vault giữ khoá, AKD chứng minh danh tính thiết bị chính; Cloudflare ký mỗi epoch và AKD không cập nhật được nếu thiếu chữ ký. WhatsApp 2024
- 2025 · WhatsApp: Private Processing cho AI trên chat: TEE (CVM, GPU confidential), RA-TLS với số đo đối chiếu ledger bên thứ ba, OHTTP qua relay ngoài và credential ẩn danh để không nhắm được một user, stateless, log chỉ theo danh sách trắng. WhatsApp 2025
- 2026 · WhatsApp/Meta: đội HSM sao lưu chạy replication theo đa số; Messenger nhận khoá đội HSM qua mạng trong gói Cloudflare ký, Meta ký kèm, và mỗi lần dựng đội mới sẽ công bố bằng chứng. WhatsApp 2026
- 2026 · WhatsApp: Scam Alert chạy model trên máy, không tự báo cáo. Đo chất lượng bằng confidential federated analytics (số đếm gộp trong TEE, differential privacy, client từ chối nếu tham số riêng tư yếu); mỗi bản model đưa lên ledger trước khi phục vụ, client tự chia nhóm A/B để server không nhắm được ai. WhatsApp 2026
Các lựa chọn và đánh đổi
| Việc cần làm | Cách khi server đọc được | Cách trong hệ E2EE (nguồn) | Cái giá |
|---|---|---|---|
| Fan-out tới nhiều thiết bị | Server nhân bản tin | Client mã hoá N lần (WhatsApp 2021) | Băng thông và CPU client tăng theo số thiết bị |
| Sao lưu, khôi phục | Server giữ bản rõ | Khoá trong HSM giới hạn số lần thử (WhatsApp 2021) | Vận hành đội HSM; dựng đội mới hiếm và phải công bố (WhatsApp 2026) |
| Tin rằng key/mã là thật | Tin server | Log append-only + bên thứ ba ký (WhatsApp 2023, WhatsApp 2022, WhatsApp 2024) | Độ trễ công bố theo epoch; phụ thuộc độ sẵn sàng của nhân chứng |
| Metric vận hành | Log gắn user | Token ẩn danh (WhatsApp 2021), TEE + DP (WhatsApp 2026) | Thêm round-trip; dùng lại token làm yếu tính không nối được |
| Quyết định dựa trên quan hệ | Server tra đồ thị liên lạc | Client phát privacy token (WhatsApp 2023) | Giao thức phức tạp hơn |
| AI, phân loại | Chạy trên server | Trên máy (WhatsApp 2026) hoặc TEE (WhatsApp 2025) | Model nhỏ; hoặc TEE, attestation, mất observability thông thường |
| Thêm client lạ | Không vấn đề | Chỉ hứa phần mình kiểm soát (WhatsApp 2024) | Lời hứa yếu đi theo đầu yếu nhất |
- Mặc định hay tuỳ chọn: WhatsApp bật E2EE mặc định cho tin nhắn từ 2016 (WhatsApp 2016), nhưng sao lưu E2EE, giấu IP, Scam Alert, Private Processing là tuỳ chọn. Mozilla cho rằng tuỳ chọn thì hiếm ai bật, và chấp nhận dẫn xuất từ mật khẩu để có mặc định (Mozilla 2018).
- Gắn cứng hay phân phối qua mạng: khoá tin cậy gắn trong app đơn giản nhưng buộc thay hạ tầng theo chu kỳ phát hành app; phân phối qua mạng cần chữ ký bên thứ ba (WhatsApp 2026). Model Scam Alert tải qua CDN với cùng lý do (WhatsApp 2026).
Quy tắc rút ra
- Thiết kế đường đi của khoá trước: khoá sinh ở đâu, nằm ở đâu, ai giữ khi user mất máy. Mọi tính năng sau (đồng bộ, sao lưu, danh bạ) đều quay về câu này. Mozilla 2018 WhatsApp 2021 WhatsApp 2024
- Migration giao thức trên client có pha chặn quay lui: chạy song song, khoá hạ cấp theo từng cặp khi cả hai sẵn sàng, rồi cho client cũ hết hạn. WhatsApp 2016
- Coi nhà vận hành là một mối đe doạ trong mô hình: thứ server đưa cho client (public key, mã web, model, binary TEE, khoá HSM) phải có bằng chứng trên log append-only hoặc chữ ký bên thứ ba. WhatsApp 2023 WhatsApp 2022 WhatsApp 2025 WhatsApp 2026
- Tách "hợp lệ" khỏi "là ai": token ẩn danh lấy trước qua kênh đã xác thực, dùng sau qua kênh ẩn danh; rate limit theo khoá và theo credential. Đóng gói thành dịch vụ multi-tenant cùng SDK để không đội nào phải tự làm mật mã. WhatsApp 2021 Meta 2022
- Chống nhắm một người là yêu cầu riêng: định tuyến qua relay ngoài, client tự chọn nhóm thí nghiệm, nhóm có kích thước tối thiểu, để muốn tấn công một người thì phải tấn công cả hệ. WhatsApp 2025 WhatsApp 2026
- Mã hoá không thay được việc giảm bề mặt tấn công ở client: đổi giao thức để client khỏi xử lý dữ liệu lạ, và viết parser bằng ngôn ngữ an toàn bộ nhớ. WhatsApp 2023 WhatsApp 2026
- Mỗi nhân chứng ngoài là một phụ thuộc cứng: AKD dừng nếu Cloudflare không ký được; tính đến điều này trong thiết kế độ sẵn sàng. WhatsApp 2024
Câu hỏi mở
- Chi phí vận hành: chưa nguồn nào cho số liệu về chi phí của client fan-out khi số thiết bị tăng, của đội HSM, hay của các phiên TEE so với suy luận thông thường.
- Observability trong TEE: Private Processing chỉ cho xuất log theo danh sách trắng (WhatsApp 2025); chưa có nguồn kể cách debug sự cố production trong điều kiện đó.
- Kết quả thực tế của interop DMA (WhatsApp 2024): bài viết trước khi có bên thứ ba nào kết nối; chưa có nguồn sau về lưu lượng, sự cố, hay phương án proxy có được chọn không.
- Server WhatsApp đổi ra sao sau 2014: các nguồn hiện có gần như chỉ kể phía mật mã và client; việc chuyển từ SoftLayer/FreeBSD sang hạ tầng Facebook (Linux, container) chỉ có qua talk hội nghị, chưa có bài blog trong wiki.
- Firefox Sync và WhatsApp chọn khác nhau về việc server biết danh sách thiết bị: Mozilla chọn biết để user thu hồi thiết bị lạ (Mozilla 2018); WhatsApp cũng giữ ánh xạ account → thiết bị nhưng thêm security code phủ mọi thiết bị (WhatsApp 2021). Chưa nguồn nào so trực tiếp.
- Liên hệ: Xác thực và phân quyền (authn/authz) (token, danh tính thiết bị), Bảo mật hạ tầng và quản lý secret (HSM, chuỗi cung ứng build), Realtime và fan-out (client fan-out), Hạ tầng phục vụ LLM inference (suy luận trong TEE), Migration không downtime (rollout giao thức trên client).