Deploying key transparency at WhatsApp
Bài tóm tắt WhatsApp 2023 3. Quy mô lớn Độ khó: Khó
WhatsApp · 2023 · 3. Quy mô lớn · Độ khó: Khó — bài gốc
Bối cảnh
- Mã hoá đầu cuối chỉ đáng tin nếu hai đầu biết public key của nhau là thật. Public key do WhatsApp lưu và phát, nên server độc (hay bị xâm nhập) có thể đưa key giả để làm person-in-the-middle.
- Cách kiểm cũ: so mã QR hoặc chuỗi 60 chữ số ngoài WhatsApp. Khó làm khi đổi thiết bị; mỗi cặp trong group có mã riêng (group 100 người là 4.950 cặp), phải làm lại mỗi khi ai đó vào, ra, thêm thiết bị.
Thay đổi chính
- Auditable Key Directory (AKD): server duy trì một thư mục append-only ánh xạ account → public key, sinh được inclusion proof và key history proof. Mỗi thay đổi kèm audit proof đưa ra kho công khai để bất kỳ ai kiểm rằng lịch sử không bị sửa. Dựa trên CONIKS, SEEMless và Parakeet; thư viện AKD viết bằng Rust và mã nguồn mở, phần lớn thành phần nội bộ cũng bằng Rust.
- Client chỉ cần tự kiểm với thư mục, không cần hai người phối hợp; là lớp kiểm nhẹ đầu tiên, không thay QR.
- Xoá account thì xoá public key, nhưng sự kiện "từng có key" vẫn bất biến.
- Khối lượng ghi: hàng chục nghìn lần đổi key mỗi phút (đăng ký, đăng ký lại). Một tiến trình ghi tuần tự không theo kịp, mà thư mục chỉ cho một cập nhật mỗi lần vì mỗi epoch xây trên epoch trước. Họ dựng hàng đợi phân tán cho thay đổi đang chờ, gom thành lô rồi commit nguyên tử thành một epoch. Lô lớn giảm số thao tác DB và tận dụng các nhánh chung của Merkle tree; đổi lại có độ trễ từ lúc đổi key tới lúc key được công bố. Tần suất phát epoch là tham số chỉnh được.
- Rollout: AKD chạy cho mọi user; kiểm tự động lên Android trước rồi iOS (sau đã có đủ cả hai).
Bài học cho SWE
- Khi chính nhà vận hành là một mối đe doạ, dùng log append-only kiểm được công khai thay cho "hãy tin chúng tôi".
- Log append-only có một người ghi là nút thắt tuần tự; gom lô theo epoch là cách lấy throughput, trả bằng độ trễ công bố.
Liên quan
Mã hoá đầu cuối và hệ thống mà server không được đọcBatching và khấu hao round-tripXác thực và phân quyền (authn/authz)
#Key transparency#Auditable Key Directory#AKD#Rust#Merkle tree#Epoch#Batch insert#Append-only#CONIKS#SEEMless#Parakeet#Public audit proof
Được nhắc tới trong
Chủ đề (3)
Công ty (1)
Bài tóm tắt (1)