Przejdź do treści
Palladin.ioDokumentacja
EN
Dokumentacja/Bezpieczeństwo

Aneks: kryptografia

Algorytmy i zasady weryfikacji kopert.

Ten aneks zawiera szczegóły techniczne. Wyjaśnienie kluczy znajdziesz w rozdziale Dane i klucze. VK oznacza klucz sejfu (Vault Key), a DEK — klucz szyfrowania danych (Data Encryption Key).

Zestaw kryptograficzny

Operacja Mechanizm
Wyprowadzenie z hasła Argon2id: 32 MiB pamięci, 2 iteracje, 1 wątek, 32-bajtowy sekret bazowy konta; profil identity-argon2id-password-v1.
Oddzielenie uwierzytelnienia od klucza głównego HKDF-SHA256 wyprowadza z sekretu bazowego dwa klucze, używając różnych etykiet przeznaczenia i identyfikatora konta.
Ochrona klucza prywatnego konta XSalsa20-Poly1305. Odzyskiwanie konta używa osobnego profilu Argon2id z 19 MiB pamięci.
Szyfrowanie treści sejfu i zabezpieczanie kluczy symetrycznych XChaCha20-Poly1305, suite palladin-vault-xchacha-v1.
Asymetryczne przekazanie klucza X25519 sealed package, suite palladin-x25519-sealed-box-v1.
Podpisy tożsamości Agenta Ed25519.
Klucze symetryczne VK / DEK Losowe 32 bajty, generowane po stronie klienta.

Nazwy algorytmów nie wystarczają do odtworzenia protokołu. Implementacja musi stosować dokładny format, domeny podpisów, kodowanie, reguły nonce i kanonikalizację z wersjonowanego kontraktu. Nie implementuj kryptografii na podstawie samego tego streszczenia.

Walidacja przed użyciem

  1. Odczytaj jawny identyfikator suite i wersję protokołu; odrzuć nieobsługiwany wariant.
  2. Sprawdź format i ograniczenia rozmiaru przed przetwarzaniem.
  3. Zweryfikuj podpis oraz wymagane commitmenty.
  4. Porównaj organizację, sejf, odbiorcę, przyznany dostęp, rewizje, epoki i wersje kluczy z niezależnym, zaufanym źródłem.
  5. Otwórz materiał tylko w dozwolonej granicy i przerwij przy błędzie uwierzytelnienia.

Zgodność implementacji

Wspólne dane i wektory testowe powinny sprawdzać zgodność klientów i backendu. Testy negatywne muszą obejmować podmienionego odbiorcę, inny sejf, starą rewizję, niewłaściwą epokę i zmodyfikowane zaszyfrowane dane. Nie wystarcza test, w którym biblioteka odszyfrowuje własny wynik.