Funkcja gąbka - Sponge function

Ilustracja budowę gąbki
Konstrukcja gąbka do funkcji skrótu. p I są bloki ciągu wejściowego, oo i są zakodowane bloków wyjściowych.

W kryptografii , A funkcja gąbka lub konstrukcja gąbka jest jedną z klasy algorytmów o ograniczonym stanie wewnętrznego , które mają wejście strumienia bitów o dowolnej długości i wytworzenia wyjściowego strumienia bitów o dowolnej długości. Funkcje gąbki mają zarówno teoretycznych i praktycznych zastosowań. Mogą one być wykorzystywane do modelowania lub realizować wiele elementarnych operacji kryptograficznych , w tym skrótów kryptograficznych , kodów uwierzytelnienia wiadomości , funkcji wytwarzania maski , szyfrów strumienia , generatorów liczb pseudolosowych i uwierzytelnione szyfrowania .

Budowa

Funkcja gąbka jest zbudowany z trzech komponentów:

  • pamięć stanu, S, zawierający b bitów
  • funkcją , który przekształca pamięci stanu (często jest pseudolosowych Permutacja wartości stanu)
  • funkcją Wypełnienie P

Pamięć stan jest podzielona na dwie części: jedna o rozmiarze R (przepływności) i pozostałej części o rozmiarze C (liczba). Sekcje te są oznaczone R i C , odpowiednio.

Funkcja wyściółka dodaje tyle bitów w ciągu wejściowego tak, że długość wkładu wyściełana jest całkowitą wielokrotnością od przepływności, R. Wejście wyściełany może być zatem podzielony na r bloków bitowych.

Operacja

Funkcja gąbka działa w następujący sposób:

  • Stan S jest inicjowany na zero
  • Ciąg wejściowy jest usztywniony. Oznacza to, że wejściowy jest przekształcony bloków r bity z wykorzystaniem funkcji Wypełnienie P .
  • na każdy R -bitowych bloków B wejścia wyściełanej:
    • R jest zastąpiony R XOR B (za pomocą logiczną XOR )
    • S jest zastąpiony przez F ( S )

Ten proces „pochłania” (w gąbkę metafory) wszystkie bloki wyściełanym wejściowego łańcucha.

Wyjście funkcji gąbka jest teraz gotowy do wytworzone ( „wyciskana”), jak następuje:

  • R część pamięci stanu wyjścia
  • powtarzać aż wystarczająco bity są wysyłane:
    • S jest zastąpiony przez F ( S )
    • R część pamięci stanu wyjścia

Jeżeli jest ona mniejsza niż r bitów pozostaje do wyjścia, to R będzie obcięta (tylko część R będzie wyprowadzany).

Innym przenośnia opisuje stan pamięci w postaci „ basenie entropii ” z wejściem „wylano do” puli, a funkcja przetwarzania określa się jako „mieszanie dostępnej puli”.

Należy pamiętać, że bity wejściowe nie są XORed do części C pamięci państwowej, ani jakichkolwiek bitów C kiedykolwiek wyjście bezpośrednio. Zakres, w którym C jest zmieniana przez wejście całkowicie zależy od funkcji przetwarzania C. W zastosowaniach mieszających, odporność na zderzenia lub ataków preimage zależy C, a jej wielkość ( „wielkość” C ) jest zwykle dwukrotnie żądany poziom oporu.

konstrukcja duplex

Możliwe jest również, aby wchłonąć i ścisnąć w sposób naprzemienny. Operacja ta nazywana jest budowa dupleks lub dupleks. To może być podstawą jednego przejazdu uwierzytelnione systemu szyfrowania.

  • Stan S jest inicjowany na zero
  • R XORed z pierwszym R bloku bitowych wejścia
  • S jest zastąpiony przez F (S)
  • R jest pierwsze R bitów na wyjściu.
  • R XORed z następnym R bloku bitowych wejścia
  • S jest zastąpiony przez F (S)
  • R jest kolejne R bitów na wyjściu.
  • ...

tryb nadpisywania

Jest możliwe pominięcie operacji XOR podczas wchłaniania, zachowując wybrany poziom bezpieczeństwa . W tym trybie, w fazie chłonnej następny blok wejścia zastępuje część R stanu. Pozwala to na utrzymanie mniejszego stanu pomiędzy etapami. Ponieważ część R zostaną zastąpione w każdym razie, można go wyrzucić z góry, tylko część C musi być zachowany.

Aplikacje

Funkcje gąbki mają zarówno teoretycznych i praktycznych zastosowań. W kryptoanalizy teoretycznej, A losową funkcją gąbka jest konstrukcją gąbki, gdzie f jest permutacją losowy lub przekształcenia, odpowiednio. Losowo wybrane funkcje gąbka uchwycić bardziej praktycznych ograniczeń prymitywów kryptograficznych niż robi to powszechnie używany losowo oracle modelu, w szczególności skończonego stanu wewnętrznego.

Budowa gąbki mogą być również wykorzystywane do budowania praktycznych operacji kryptograficznych. Na przykład, Keccak kryptograficzny gąbka ze stanem 1600 bit został wybrany przez NIST jako zwycięzca w konkurencji SHA-3 . Siła Keccak wynika z zawiłą wielorazowego użytku permutacji f że twórcy opracowali. RC4 -redesign zwane Spritz dotyczy gąbkę konstruktu do określenia algorytmu.

Na innym przykładzie, funkcja gąbki mogą być stosowane do tworzenia uwierzytelniony szyfrowanie ze związanymi danymi (AEAD).

Referencje