Files
arbiter/IMPLEMENTATION.md
2026-02-13 17:24:20 +01:00

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_encrypted database entry carries a scheme field 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: ServerInfo protobuf 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 memsafe crate as an interim solution
  • Planned: Custom implementation based on mlock (Unix) and VirtualProtect (Windows)