🔒 Tài liệu kỹ thuật mã hóa & lưu trữ cục bộ Monica Android
Kiến trúc Zero-Knowledge
Monica Android triển khai kiến trúc mã hóa xếp chồng nhiều lớp, toàn bộ đĩa và cấp độ trường (field-level) để đảm bảo an ninh tuyệt đối cho các tài sản nhạy cảm của người dùng (như mật khẩu, số thẻ tín dụng, khóa 2FA, ghi chú bảo mật, v.v.) trong quá trình lưu trữ cục bộ và sao lưu WebDAV. Lõi hệ thống tuân thủ nghiêm ngặt khung kiến trúc Zero-Knowledge (Không tri thức): ngay cả khi thiết bị bị mất hoặc các tệp cơ sở dữ liệu bị trích xuất, kẻ tấn công cũng không thể dịch ngược bất kỳ dữ liệu văn bản thuần túy nào nếu không có Mật khẩu chủ của người dùng.
1. Lưu trữ dữ liệu cục bộ
Monica từ chối lưu trữ SQLite văn bản thuần túy hoặc các cấu hình key-value không đáng tin cậy, hoàn toàn áp dụng các thực hành kiến trúc Modern Android Development (MAD) do Google khuyến nghị để quản lý dữ liệu có cấu trúc:
- Tầng lưu trữ cốt lõi: Được triển khai thông qua
Room Persistence Library(một tầng trừu tượng tiên tiến phía trên SQLite) để duy trì các Đối tượng truy cập dữ liệu (DAO) có tính gắn kết cao. - Cơ sở hạ tầng tệp vật lý: Dữ liệu được ghi trực tiếp vào tệp
password_database.dbnằm trong sandbox và các tệp WAL (Write-Ahead Logging) liên quan của nó. - Ranh giới cô lập vật lý Cô lập Sandbox: Tất cả các tệp cơ sở dữ liệu nằm trong phân vùng lưu trữ nội bộ riêng tư của ứng dụng (
/data/data/com.monica.vault/databases/). Hệ điều hành Android thực thi nghiêm ngặt các ranh giới UID cấp hạt nhân để ngăn chặn bất kỳ ứng dụng nào khác trên cùng thiết bị truy cập trái phép vào phân vùng này.
2. Chiến lược mã hóa cấp trường (Field-Level)
Để ngăn chặn các cuộc tấn công rò rỉ bộ nhớ động và bảo vệ dữ liệu chống lại việc trích xuất đĩa ngoại tuyến (offline disk extraction) trong môi trường thiết bị đã root, Monica áp dụng cơ chế mã hóa cấp trường trong tầng Room DAO:
Luồng xử lý dữ liệu:
Trước khi bất kỳ thực thể dữ liệu nhạy cảm nào được ghi vào đĩa, các trường văn bản thuần túy sẽ đi qua một bộ chuyển đổi loại (Type Converter) tùy chỉnh:
$$\text{Plaintext String} \longrightarrow \text{AES-256-GCM Encryption} \longrightarrow \text{Base64 String} \longrightarrow \text{SQLite Storage}$$
Ngược lại, khi truy vấn dữ liệu, quy trình sẽ được đảo ngược. Các trường không nhạy cảm (như dấu thời gian cập nhật hoặc trạng thái danh mục) vẫn có thể lập chỉ mục để đảm bảo hiệu suất truy vấn cao.
3. Kiến trúc quản lý khóa phần cứng
Khóa mật mã tối cao được sử dụng để mã hóa và giải mã trường cơ sở dữ liệu không bao giờ được lưu trữ tĩnh trên đĩa dưới dạng văn bản thuần túy. Hệ thống quản lý khóa tận dụng tối đa kiến trúc bảo mật phần cứng của Android:
Mật khẩu chủ của người dùng (Master Password)
│
▼
[PBKDF2 + HMAC-SHA256]
(100.000 lần lặp)
│
▼
Khóa mã hóa khóa (KEK)
│
▼
[Phần cứng cô lập quân sự: Android KeyStore (TEE/SE)]
│
▼
Giải mã Khóa mã hóa dữ liệu gốc (DEK)
│
▼
Mã hóa/Giải mã trường cơ sở dữ liệu cục bộCác thành phần cốt lõi:
- Android KeyStore: Hệ thống tạo và lưu trữ một Khóa mã hóa khóa gốc (Master KEK) bên trong Môi trường thực thi tin cậy (TEE) hoặc Thành phần bảo mật phần cứng (Secure Element - SE). Khóa này không bao giờ có thể bị trích xuất bởi phần mềm.
- Xác thực sinh trắc học: Việc truy cập vào KeyStore được liên kết trực tiếp với thực thi
BiometricPromptcủa hệ thống. Chỉ khi xác thực vân tay thành công, phần cứng mới mở khóa tài nguyên mật mã cho phiên làm việc hiện tại.
4. Quản lý cấu hình mã hóa
Các cấu hình phi cấu trúc của ứng dụng (như trạng thái đăng nhập, tùy chọn giao diện và cờ đồng bộ hóa) được quản lý thông qua thành phần bảo mật Jetpack EncryptedSharedPreferences.
Thành phần này tự động băm các khóa lưu trữ (key) bằng thuật toán AES-SIV-CMAC và mã hóa các giá trị lưu trữ (value) bằng thuật toán AES-256-GCM, loại bỏ hoàn toàn rủi ro rò rỉ thông tin từ các tệp XML cấu hình truyền thống.
5. Tóm tắt ma trận bảo mật mật mã
| Tầng bảo mật | Triển khai kỹ thuật | Vectơ mối đe dọa mục tiêu |
|---|---|---|
| Lưu trữ dữ liệu cục bộ | AES-256-GCM (256-bit) | Các cuộc tấn công trích xuất cơ sở dữ liệu, giả mạo lật bit vật lý, tiêm kênh kề |
| Bảo vệ mật khẩu chủ | PBKDF2 + HMAC-SHA256 (100.000 lần lặp) | Tấn công bẻ khóa ngoại tuyến (brute-force), khớp bảng cầu vồng, quét từ điển |
| Bảo vệ khóa Runtime | Android KeyStore (Ranh giới TEE/SE) | Dump bộ nhớ runtime, thoát ranh giới tệp đặc quyền Root, trích xuất chip vật lý |
| Đường ống dữ liệu đám mây | Mã hóa luồng nhị phân cứng MONICA_ENC_V1 | Nghe lén trung gian (MITM), rò rỉ nhà cung cấp lưu trữ đám mây, phân tích kích thước dấu chân dữ liệu |
