Skip to content

📦 Monica WebDAV Backup Format Specification

Tóm tắt

Tài liệu đặc tả này định nghĩa cấu trúc lưu trữ, định dạng dữ liệu cơ bản và các giao thức mã hóa được sử dụng bởi kho lưu trữ cục bộ Monica trong quá trình sao lưu WebDAV tự động và truyền tải dữ liệu. Khung kiến trúc này đảm bảo khả năng phân tích cú pháp đa nền tảng mạnh mẽ cùng với tính riêng tư và bảo mật tuyệt đối không thỏa hiệp.


1. Tổng quan

Cơ chế sao lưu WebDAV của Monica đóng gói dữ liệu cốt lõi của người dùng vào một kho lưu trữ ZIP tiêu chuẩn (.zip khi không mã hóa và .enc.zip khi tính năng mã hóa sao lưu cường độ cao được kích hoạt).

Thay vì xuất trực tiếp cơ sở dữ liệu nhị phân truyền thống và dư thừa, kho lưu trữ sao lưu áp dụng kiến trúc liên kết lỏng lẻo bao gồm dữ liệu cốt lõi .json, bản tóm tắt .csvtài nguyên phương tiện (Hình ảnh). Điều này đảm bảo việc kiểm toán dữ liệu được đơn giản hóa và quy trình khôi phục có độ chính xác cao trên các nền tảng khác nhau trong tương lai.


2. Cấu trúc thư mục của kho lưu trữ sao lưu

Cấu trúc cây của một kho lưu trữ ZIP sao lưu tiêu chuẩn sau khi giải nén được mô tả chi tiết dưới đây:

text
/ (Thư mục gốc)
├── passwords/                  # Các bản ghi mật khẩu (lưu trữ riêng biệt có tính kết dính cao)
│   ├── password_1_1700000.json
│   └── password_2_1700001.json
├── notes/                      # Các ghi chú bảo mật (định dạng JSON)
│   └── note_101_2026.json
├── cards/                      # Bản ghi thẻ tín dụng/thẻ ngân hàng
│   └── card_50_visa.json
├── otps/                       # Seed và cấu hình xác thực hai yếu tố (2FA TOTP)
│   └── otp_201_github.json
├── images/                     # Tài nguyên phương tiện và tệp đính kèm nhị phân
│   ├── img_hash_9a8b7c.jpg
│   └── doc_hash_1f2e3d.pdf
├── summary.csv                 # Tập tin mục lục tổng hợp (dùng để xem trước nhanh cấu trúc dòng)
└── metadata.json               # Siêu dữ liệu phiên bản sao lưu (dấu thời gian, thông tin client, ID thế hệ)

3. Quy trình mã hóa nhị phân mã nguồn (MONICA_ENC_V1)

Khi người dùng kích hoạt tính năng mã hóa sao lưu, tệp ZIP thô sẽ không được ghi trực tiếp lên đĩa. Thay vào đó, nó sẽ được chuyển đổi thành một luồng nhị phân được mã hóa thông qua quy trình sau:

text
[Quy trình đóng gói cục bộ]
Bộ dữ liệu JSON cốt lõi trong Sandbox

[Đóng gói thành luồng ZIP nhị phân tiêu chuẩn]

[Lấy mật khẩu sao lưu của người dùng] ➔ [Phái sinh khóa PBKDF2 với 100.000 lần lặp]

[Tiêm mã hóa AES-256-GCM kiên cố]

[Thêm Header ma thuật MONICA_ENC_V1] ➔ Tạo tệp .enc.zip độc lập ➔ Tải lên WebDAV

Thiết kế Header tệp:

Header của tệp đóng gói rõ ràng một chuỗi các byte ma thuật độc nhất:

  • MONICA_ENC_V1 (Chỉ báo phiên bản thế hệ định dạng)
  • Salt ngẫu nhiên có entropy cao
  • Vector khởi tạo ngẫu nhiên (IV)

4. Chống phát lại & Khử tương quan (Anti-Replay & De-correlation)

Mỗi thực thể sao lưu độc lập đều tạo ra các salt có entropy cao và các IV duy nhất. Ngay cả khi tải trọng sao lưu (payload) giữa các lần là hoàn toàn giống nhau, cấu trúc nhị phân của các kho lưu trữ .enc.zip kết quả trên đám mây sẽ khác biệt hoàn toàn. Điều này ngăn chặn các nhà cung cấp dịch vụ đám mây phân tích hành vi hoặc lập hồ sơ dữ liệu người dùng thông qua kích thước dấu chân tệp (file footprint sizes).


5. Logic khôi phục xuyên thiết bị & Giảm thiểu xung đột

Trong giai đoạn khôi phục dữ liệu, runtime của client sẽ thực thi nghiêm ngặt vòng đời đường ống (pipeline) tuần tự sau:

  1. Giải mã & Xác thực: Giải mã .enc.zip ➔ Xác thực tính toàn vẹn của khối header ➔ Giải mã luồng dữ liệu thông qua các khóa phái sinh từ mật khẩu chủ ➔ Giải nén các tệp vào một sandbox cô lập trong bộ nhớ.
  2. Giải quyết xung đột ID:
  • Nếu một bản ghi JSON được trích xuất có id trùng với id đã tồn tại trong cơ sở dữ liệu hoạt động của thiết bị, engine sẽ từ chối việc ghi đè trực tiếp.
  • Kích hoạt tuyến đường dự phòng: Cấp một Long ID vật lý duy nhất mới cho bản ghi mới đến và ghi nó vào cơ sở dữ liệu một cách an toàn.
  1. Tái cấu trúc đồ thị quan hệ (Sửa đổi liên kết ID):
  • Các tiến trình runtime sẽ biên dịch một bảng ánh xạ tạm thời theo dõi các điều chỉnh Old ID ➔ New ID.
  • Tự động vá các tham số ssoRefEntryId, các chỉ báo tài khoản liên kết và các ràng buộc TOTP liên quan, giữ cho các liên kết đồ thị toàn vẹn không bị phá vỡ.
  1. Di chuyển tài nguyên phương tiện:
  • Xử lý tất cả các bản ghi nhị phân bên trong cây thư mục images/.
  • Di chuyển an toàn các ảnh chụp nhanh và tệp đính kèm tài liệu vào không gian hệ thống tệp cục bộ cô lập của ứng dụng lưu trữ (context.filesDir), cập nhật lại các liên kết đường dẫn nội bộ tương ứng trong cơ sở dữ liệu ghi chú đang hoạt động.
最近更新