Deterministyczne uwierzytelnianie uwierzytelniania z powiązanymi danymi (deterministyczne AEAD)

Podstawowa funkcja deterministycznego szyfrowania uwierzytelnionego z danymi powiązanymi (Deterministic AEAD) zapewnia szyfrowanie z właściwością deterministyczną: szyfrowanie tych samych danych zawsze daje ten sam tekst zaszyfrowany. Ten typ szyfrowania jest przydatny do opakowywania kluczy lub w przypadku niektórych schematów wyszukiwania zaszyfrowanych danych (więcej informacji znajdziesz w sekcji 1.3 dokumentu RFC 5297). Ze względu na deterministyczną właściwość implementacje tego prymitywu mogą prowadzić do utraty poufności, ponieważ atakujący musi tylko znaleźć szyfrogram dla danej wiadomości, aby zidentyfikować inne wystąpienia tej wiadomości.

Deterministyczne AEAD ma te właściwości:

  • Secrecy o tekście jawnym nie wiadomo nic poza jego długością i równością powtarzających się tekstów jawnych.
  • Autentyczność: nie można zmienić zaszyfrowanego tekstu jawnego, który jest podstawą tekstu zaszyfrowanego, bez wykrycia.
  • Symetryczne: szyfrowanie tekstu jawnego i odszyfrowywanie tekstu zaszyfrowanego odbywa się za pomocą tego samego klucza.
  • Deterministyczne: dopóki klucz podstawowy nie zostanie zmieniony, dwukrotne zaszyfrowanie tekstu jawnego przy użyciu tych samych parametrów daje ten sam tekst zaszyfrowany.

Powiązane dane

Deterministyczne AEAD może służyć do powiązania tekstu zaszyfrowanego z określonymi danymi powiązanymi. Załóżmy, że masz bazę danych z polami user-idencrypted-medical-history. W tym scenariuszu user-id może być używane jako dane powiązane podczas szyfrowania encrypted-medical-history. Zapobiega to przenoszeniu historii medycznej przez atakującego z jednego konta użytkownika na inne.

Dane powiązane są opcjonalne. Jeśli zostanie podany, odszyfrowanie powiedzie się tylko wtedy, gdy te same dane powiązane zostaną przekazane do wywołań funkcji szyfrujących i odszyfrowujących.

Wybierz typ klucza

We wszystkich przypadkach zalecamy używanie klucza typu AES256_SIV.

Gwarancje bezpieczeństwa

  • Siła uwierzytelniania musi wynosić co najmniej 80 bitów.
  • Tekst w formie zwykłego tekstu i powiązane z nim dane mogą mieć dowolną długość (w zakresie 0–232 bajtów).
  • 128-bitowy poziom bezpieczeństwa przed atakami polegającymi na odzyskiwaniu kluczy, a także w przypadku ataków na wielu użytkowników z użyciem maksymalnie 232 kluczy – oznacza to, że jeśli przeciwnik uzyska 232 szyfrogramów tej samej wiadomości zaszyfrowanej za pomocą 232 kluczy, będzie musiał wykonać 2128 obliczeń, aby uzyskać jeden klucz.
  • Możliwość bezpiecznego zaszyfrowania 238 wiadomości, pod warunkiem że każda z nich ma mniej niż 1 MB.

Przypadek użycia

Chcę deterministycznie szyfrować dane i powiązać tekst zaszyfrowany z jego kontekstem.