Seal: Ứng dụng iOS mã hóa di chúc số, chỉ mở khi bạn qua đời
Một lập trình viên sinh viên vừa trình làng Seal, ứng dụng iOS cho phép lưu trữ mật khẩu, ảnh, ghi âm và bí mật cá nhân trong các \"phong bì số\" mã hóa, chỉ mở cho người thân sau khi chủ sở hữu qua đời. Dự án không dùng máy chủ riêng, tận dụng CloudKit và khóa phần cứng, nhưng chưa được kiểm toán độc lập.

Seal: Khi di chúc số không còn phụ thuộc vào một công ty trung gian
Giấy phép MPL 2.0
Một sinh viên khoa học máy tính vừa gửi ứng dụng Seal lên App Store — một giải pháp cho bài toán mà ai cũng gặp nhưng ít ai muốn nghĩ tới: làm sao để người thân truy cập được mật khẩu, cụm seed phrase ví tiền mã hóa hay những bí mật riêng tư sau khi bạn không còn nữa. Khác với các trình quản lý mật khẩu truyền thống, Seal không có máy chủ trung tâm và mỗi người nhận chỉ mở được đúng phong bì dành cho mình.
Vấn đề: di chúc giấy là hồ sơ công khai
Khi một người qua đời, bản di chúc phải đi qua tòa án và nội dung của nó trở thành hồ sơ công khai mà bất kỳ ai cũng có thể tra cứu. Điều đó có nghĩa là mật khẩu ngân hàng, cụm từ khôi phục ví tiền mã hóa, vị trí chìa khóa két sắt hay mã két — những thứ bạn chưa từng nói với ai — tuyệt đối không thể đặt trong đó.
Seal ra đời để giải quyết khoảng trống này. Người dùng viết một số lượng nhỏ phong bì (envelope) — mỗi phong bì dành cho một người — bao gồm thư tay, ảnh, tin nhắn thoại, video, tệp đính kèm và các bí mật cần chuyển giao. Sau đó, bạn gặp trực tiếp những người mình tin tưởng và trao cho mỗi người một mảnh của chìa khóa.
Cơ chế hoạt động: gặp mặt trực tiếp, khóa phần cứng, đếm ngược
Quy trình của Seal được thiết kế để loại bỏ hoàn toàn khả năng giả mạo danh tính qua mạng:
- Đăng ký bằng passkey hoặc khóa bảo mật: Không có mật khẩu, không có email, không có mã khôi phục. Điều này đồng nghĩa với việc tin tặc không có gì để lừa bạn qua email phishing. Face ID là đủ, khóa phần cứng chỉ mang tính tùy chọn.
- Thêm người nhận phải gặp mặt trực tiếp: Mỗi điện thoại ghi lại khóa công khai của điện thoại kia ngay tại thời điểm gặp mặt, và từ chối mọi khóa khác xuất hiện dưới cùng tên đó về sau.
- Quy tắc mở phong bì do bạn đặt: Mặc định là "bất kỳ hai trong ba người", sau 90 ngày im lặng, tiếp theo là 21 ngày cảnh báo và 14 ngày chờ. Bạn có thể tùy chỉnh cả bốn con số này cho từng phong bì.
Yêu cầu iOS 18 trở lên
Điểm đáng chú ý về mặt thiết kế: một cú chạm từ bạn sẽ chấm dứt toàn bộ quá trình, và cú chạm đó không bao giờ yêu cầu khóa phần cứng. Tác giả lập luận rằng một người còn sống nhưng làm mất khóa phần cứng không nên bị phần mềm của chính mình tuyên bố là đã chết.
Kiến trúc bảo mật: không máy chủ, không phụ thuộc
Điểm khác biệt lớn nhất giữa Seal và các trình quản lý mật khẩu như 1Password nằm ở mô hình tin cậy. Với tính năng truy cập khẩn cấp của 1Password, người được chỉ định sẽ nhận toàn bộ kho mật khẩu thông qua máy chủ của công ty — nghĩa là công ty đó phải còn tồn tại và còn trung thực vào đúng ngày quan trọng nhất.
Seal đi theo hướng ngược lại:
- Mỗi người nhận có phong bì riêng mà không ai khác mở được
- Không có máy chủ nào ngoài một trang tĩnh miễn phí trên Cloudflare
- Các gói dữ liệu mã hóa nằm trong CloudKit dưới container riêng của Seal, không phải iCloud cá nhân của người dùng
- Không có thư viện bên thứ ba, không analytics, không trình báo lỗi, không backend riêng
Backend: không có
Về mật mã học, toàn bộ đều dùng CryptoKit và AuthenticationServices của Apple, không có thuật toán nào tự viết tay. Cụ thể:
- Danh tính dùng WebAuthn, chữ ký P-256 ECDSA với SHA-256
- Khóa thiết bị nằm trong Secure Enclave, không thể xuất ra ngoài
- Việc bọc khóa dùng X25519 ECDH kết hợp ML-KEM-768 (kháng lượng tử) qua HKDF-SHA256
- Nội dung mã hóa bằng AES-256-GCM với AAD phân tách theo miền
- Chia khóa theo sơ đồ Shamir trên trường GF(256)
Cấu trúc phân cấp khóa: người mở phong bì không đọc được gì
Một chi tiết thiết kế đáng chú ý là những người kích hoạt quá trình giải phóng tài sản không thể đọc nội dung phong bì. Họ chỉ khôi phục được Estate Key, nhưng khóa này tự nó không mở phong bì nào cả — mỗi bảng khóa vẫn cần điện thoại của đúng người mà phong bì được viết cho.
Quy tắc mở phong bì là một tài sản riêng biệt với Estate Key riêng, nên việc giải phóng các phong bì khẩn cấp không tiết lộ bất cứ điều gì về phần còn lại. Đây là điểm mà các giải pháp tập trung khó làm được.
Tính minh bạch: tự kiểm chứng mà không cần tin tưởng nhà phát triển
Seal cung cấp công cụ tools/verify_capsule.py — một tệp Python duy nhất, không chứa mã Seal và không truy cập mạng — cho phép bất kỳ ai xác minh toàn bộ hồ sơ đã ký:
- Kiểm tra mọi phê chuẩn thiết bị như một WebAuthn assertion
- Xác minh digest và chữ ký của từng sự kiện
- Đối chiếu cam kết của mỗi epoch với những gì chủ sở hữu đã ký
- Kiểm tra mọi token RFC 3161
Tuy nhiên, tác giả thẳng thắn thừa nhận một hạn chế: công cụ không thể chứng minh hồ sơ là đầy đủ. Vì chủ sở hữu và nhiều người giữ khóa cùng ghi dữ liệu mà không có máy chủ sắp xếp thứ tự, việc che giấu một sự kiện chỉ có thể phát hiện bằng cách so sánh các capsule do những người khác nhau nắm giữ.
Những gì chưa hoàn thiện: chưa kiểm toán độc lập
Chưa được kiểm toán độc lập
Tác giả — một sinh viên khoa học máy tính làm việc một mình cùng trợ lý AI Claude — công khai liệt kê các điểm yếu. Đây là mức độ minh bạch hiếm thấy trong các dự án bảo mật:
"Không ai độc lập đã xem xét mật mã học hoặc mã nguồn. Đăng ký khóa phần cứng cho người khác chưa từng gặp phần cứng thật. Đó là nơi duy nhất vật liệu khóa riêng rời khỏi điện thoại, và nó xứng đáng được nhìn kỹ nhất."
Các hạn chế khác được nêu rõ:
- Hầu hết bài kiểm tra chỉ chạy trên điện thoại ở chế độ debug, chỉ có nhà phát triển theo dõi
- Không có build tái lập được — không thể chứng minh binary Apple phát hành được biên dịch từ mã nguồn này
- Không có khóa thời gian mật mã thực sự: nhóm M người giữ khóa cộng với người nhận có thể thông đồng để mở sớm
- Cơ quan đóng dấu thời gian hiện chỉ là placeholder
Đặc biệt, tác giả đưa ra cảnh báo rõ ràng: chưa nên đặt cụm seed phrase đang hoạt động vào Seal. Thay vào đó, hãy bắt đầu bằng những thứ gia đình không thể tái tạo nếu thiếu bạn — vị trí tấm thép khắc seed, ví nào sở hữu nó, và cần gọi cho ai trước.
Góc nhìn cho người dùng Việt Nam
Với cộng đồng người dùng tiền mã hóa Việt Nam — vốn đông đảo và thường nắm giữ tài sản số với giá trị đáng kể — bài toán chuyển giao seed phrase cho người thân là vấn đề thực tế và chưa có lời giải thỏa đáng. Việc ghi seed ra giấy rồi cất trong két có thể khiến người thân mất quyền truy cập hoàn toàn nếu không biết tới sự tồn tại của nó.
Seal đề xuất một hướng tiếp cận khác: phân tán niềm tin thay vì tập trung vào một công ty. Tuy nhiên, người dùng Việt Nam cần lưu ý rằng ứng dụng hiện chỉ có trên iPhone và iPad (iOS 18 trở lên), chưa hỗ trợ Android, và quan trọng nhất — chưa được kiểm toán độc lập. Đối với tài sản có giá trị lớn, việc chờ đợi kết quả kiểm toán là quyết định hợp lý.
Mã nguồn của Seal được phát hành theo giấy phép Mozilla Public License 2.0 — mức copyleft theo từng tệp, cho phép đọc, kiểm toán, chạy và fork, đồng thời cho phép xây dựng sản phẩm lớn hơn xung quanh nó. Tác giả chọn MPL thay vì GPL hay AGPL một cách có chủ đích: các giấy phép họ GPL xung đột với điều khoản của App Store — lý do VLC từng bị gỡ khỏi cửa hàng năm 2011 — và một sản phẩm di chúc số không thể phát hành trên App Store thì không phải là sản phẩm.
Hiện tại, ứng dụng vẫn miễn phí trên TestFlight trong khi chờ App Store phê duyệt. Nhà phát triển kêu gọi cộng đồng đóng góp cho quỹ kiểm toán độc lập, với báo cáo kiểm toán sẽ được công bố công khai trong kho mã nguồn khi hoàn thành.

