Skip to content

🔒 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.db nằ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:

text
                  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:

  1. 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.
  2. 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 BiometricPrompt củ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ậtTriển khai kỹ thuậtVectơ 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 RuntimeAndroid 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âyMã hóa luồng nhị phân cứng MONICA_ENC_V1Nghe 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
最近更新