Bảo mật
Mã hóa cấp ngân hàng cho cuộc sống số của bạn
Kiến trúc Zero-Knowledge
ByteGuard được xây dựng trên mô hình bảo mật Zero-Knowledge. Chúng tôi không bao giờ xem, truy cập hay lưu trữ khóa mã hóa của bạn.
- Mật khẩu chính: Khóa cá nhân để mở khóa ứng dụng. Không bao giờ được truyền đi hay lưu trữ từ xa.
- Khóa bí mật (Secret Key): Cụm từ khôi phục 12 từ (BIP39) được tạo khi bạn tạo kho. Kết hợp với mật khẩu chính để bảo mật tối đa.
- Dẫn xuất khóa cục bộ: Argon2id với chi phí bộ nhớ 64MB và 3 vòng lặp dẫn xuất khóa chính cục bộ. HKDF-SHA256 tạo phân cấp khóa.
- Không có cửa hậu: Nếu bạn mất cả mật khẩu chính và khóa bí mật, chúng tôi không thể khôi phục dữ liệu của bạn. Đây là thiết kế có chủ đích.
Chi tiết mã hóa
Nhiều lớp mã hóa bảo vệ mọi dữ liệu nhạy cảm.
- Mã hóa cấp trường: Mỗi trường nhạy cảm (mật khẩu, số thẻ, khóa API) được mã hóa riêng bằng AES-256-GCM.
- Phân cấp khóa: Khóa chính → Khóa mã hóa khóa (KEK) → Khóa mã hóa dữ liệu (DEK). Mỗi mục có DEK riêng.
- IV duy nhất: Mỗi thao tác mã hóa sử dụng vector khởi tạo duy nhất, đảm bảo văn bản gốc giống nhau tạo ra bản mã khác nhau.
Lưu trữ dữ liệu
Dữ liệu của bạn nằm trên thiết bị. Đồng bộ đám mây là tùy chọn và luôn được mã hóa.
- Ưu tiên cục bộ: Tất cả dữ liệu được lưu trong cơ sở dữ liệu cục bộ được mã hóa trên thiết bị.
- Đồng bộ iCloud tùy chọn: Khi bật, dữ liệu được mã hóa trên thiết bị trước khi tải lên container iCloud riêng tư qua CloudKit.
- Bảo vệ sinh trắc học: Face ID và Touch ID qua Secure Enclave. Dữ liệu sinh trắc học do iOS xử lý, ứng dụng không truy cập được.
Những gì chúng tôi không thể làm
Kiến trúc Zero-Knowledge của chúng tôi có nghĩa là:
- Chúng tôi không thể xem, truy cập hay giải mã dữ liệu bạn đã lưu
- Chúng tôi không thể đặt lại mật khẩu chính của bạn
- Chúng tôi không thể khôi phục kho mà không có khóa bí mật
- Chúng tôi không thể chia sẻ dữ liệu của bạn với bất kỳ ai — bao gồm cơ quan thực thi pháp luật
- Chúng tôi không thể chèn cửa hậu vào mã hóa
Tương thích bảo mật thiết bị
ByteGuard được thiết kế để hoạt động liền mạch với các tính năng bảo mật tích hợp của Apple.
- Apple Lockdown Mode: Hoàn toàn tương thích với mức bảo vệ bảo mật cao nhất của Apple. Tất cả các tính năng — bao gồm AutoFill, đồng bộ iCloud và widget — hoạt động bình thường khi Chế độ phong tỏa được bật.
- Không phụ thuộc WebView: ByteGuard không sử dụng bất kỳ công cụ hiển thị web nào. Dữ liệu kho của bạn không bao giờ được xử lý qua WebKit, loại bỏ hoàn toàn các vectơ tấn công dựa trên trình duyệt.
- Tích hợp Secure Enclave: Xác thực sinh trắc học được xử lý hoàn toàn bởi Secure Enclave của iOS. ByteGuard không bao giờ truy cập hoặc lưu trữ dữ liệu sinh trắc học.
Device-Level Protection
The biometric quick-unlock boundary is maintained jointly by iOS Keychain and Secure Enclave. The application never holds any Face ID/Touch ID-derived key.
- iOS Keychain ACL: A copy of the Vault DEK is stored in Keychain with kSecAttrAccessibleWhenUnlockedThisDeviceOnly + kSecAccessControlBiometryCurrentSet. Unreadable when the device is locked or Face ID has not authenticated.
- Secure Enclave Takes Over: The Keychain entry is encrypted by a device key inside Secure Enclave. When the app calls SecItemCopyMatching, iOS triggers Face ID; on success SE decrypts and returns the plaintext DEK — the app never touches any SE key.
- Auto-Invalidation on Face ID Re-enrollment: biometryCurrentSet semantics: when the user removes/re-enrolls Face ID in system settings, iOS automatically deletes the Keychain entry. ByteGuard detects the invalidation at launch and forces Master Password re-entry.
- Strict Mode (No Fallback): If biometryCurrentSet is unavailable (simulators, no enrolled biometrics), the DEK cache simply fails — never falls back to a less-protected Keychain entry. Fallback would be weaker than not enabling Face ID at all and would violate user intent.
- Memory Zeroing (Vault DEK): On lock, suspension, or vault switch, the Vault DEK is overwritten three times (zero → random → zero) with a memory barrier defeating compiler optimization. Master Key / KEK are local variables inside the unlock function, released by Swift ARC (not explicitly zeroed). Argon2 internal buffers are zeroed by libsodium via sodium_memzero.
Tải trên App Store