1.2 KiB
1.2 KiB
Implementation Details
This document covers concrete technology choices and dependencies. For the architectural design, see ARCHITECTURE.md.
Cryptography
Authentication
- Signature scheme: ed25519
Encryption at Rest
- Scheme: Symmetric AEAD — currently XChaCha20-Poly1305
- Version tracking: Each
aead_encrypteddatabase entry carries aschemefield denoting the version, enabling transparent migration on unseal
Server Identity
- Transport: TLS with a self-signed certificate
- Key type: Generated on first run; long-term (no rotation mechanism yet)
Communication
- Protocol: gRPC with Protocol Buffers
- Server identity distribution:
ServerInfoprotobuf struct containing the TLS public key fingerprint - Future consideration: grpc-web lacks bidirectional stream support, so a browser-based wallet may require protojson over WebSocket
Memory Protection
The unsealed root key must be held in a hardened memory cell resistant to dumps, page swaps, and hibernation.
- Current: Using the
memsafecrate as an interim solution - Planned: Custom implementation based on
mlock(Unix) andVirtualProtect(Windows)