Encryption

master key & encryption

Wszystkie credentiale są szyfrowane AES-256-GCM przy pomocy MASTER_KEY_B64 (32 bajty, base64). Wybrane wpisy mają drugą warstwę Argon2id wymagającą passphrase przy odczycie. Klucz mistrza nigdy nie trafia do bazy — żyje wyłącznie w zmiennej środowiskowej kontenera.

Klucz mistrza

aktywny
Algorytm
AES-256-GCM + optional Argon2id passphrase layer
Długość klucza
32 bajtów(AES-256 ✓)
Fingerprint (SHA-256 prefix)
68abbf2b
Źródło
env: MASTER_KEY_B64

Zaszyfrowane zasoby

3
credentials (AES)
9
shares (Argon2 pwd)
17
notes (plain)
Ostatnio dodany credential: 30 maj 2026, 10:37

Backup i offline copy

Katalog lokalny
/var/backups/vault
GPG recipient
nie skonfigurowane (ustaw BACKUP_GPG_RECIPIENT)
Off-site S3
brak
Backup pipeline: pg_dump + Qdrant snapshot → tar → GPG → S3. Runbook w repo: scripts/backup.sh.

Rotacja klucza mistrza

Rotacja to operacja CLI — nie ma jej w UI z premedytacją (jedno błędne kliknięcie = ryzyko utraty dostępu do wszystkich credentiali).

  1. Wykonaj pełny backup: ./scripts/backup.sh i zweryfikuj że plik trafił do S3.
  2. Wygeneruj nowy klucz: openssl rand -base64 32
  3. Uruchom: node tools/rotate-master-key.ts --new-key <new-b64>
  4. Skrypt: decrypt wszystkich credentiali starym → re-encrypt nowym → atomowy commit.
  5. Update .env nowym MASTER_KEY_B64.
  6. sudo docker restart aion-vault-mcp aion-vault-web aion-vault-worker
  7. Weryfikacja: odśwież tę stronę — fingerprint się zmieni. Otwórz dowolny credential w panelu i sprawdź czy revealuje plaintext.
Utrata MASTER_KEY_B64 = wszystkie credentiale są stracone. Backupy bez tego klucza są bezużyteczne. Trzymaj kopię offline w password managerze (1Password, Bitwarden) oraz w sejfie domowym. Nigdy nie commituj do git.