Device Security Overview
The crypto module provides building blocks for protecting secrets on a
device. This page states what the SDK does today; each page below gives the
exact API.
| Area | What exists | Page |
|---|---|---|
| Key storage | Provider: an AES-256 master key (alias aduki_master) in the Android Keystore, with a software fallback off Android | Keystore |
| Encryption | Envelope: AES-256-GCM with a random 12-byte IV per message | Cipher |
| Memory | wipe(), Guard: overwrite secrets after use | Sanitization |
| Transport | Opt-in SPKI certificate pinning with your own pins (none shipped), TLS 1.3/1.2 connection spec | TLS |
| Device keys | dpop.Key: sign-only device keys for DPoP | DPoP |
What is not done for you
- The SDK does not encrypt the local ObjectBox database as a whole; it seals personal text columns (Vault) and leaves structural metadata (ids, flags, timestamps, counters) in the clear. The Android Keystore part ran on an emulator (software-backed keys); hardware backing is unverified.
- Access and refresh tokens are held in memory only; the core SDK never writes them
to disk. The optional Android module stores them sealed (Vault) in
AccountManagerfor the account switcher. - The SDK does not request StrongBox; the Keystore key is generated with the platform default (hardware-backed where the device provides it).