trzy ryby

trzy ryby
Skein permutation.png
Ogólny
Projektanci Bruce Schneier , Niels Ferguson , Stefan Lucks , Doug Whiting, Mihir Bellare , Tadayoshi Kohno, Jon Callas , Jesse Walker
Opublikowane po raz pierwszy 2008
Związany z Rozdymka , Dwuryba
Szczegóły szyfru
Kluczowe rozmiary
256, 512 lub 1024 bity (rozmiar klucza jest równy rozmiarowi bloku)
Rozmiary bloków 256, 512 lub 1024 bitów
Rundy 72 (80 dla rozmiaru bloku 1024-bitowego)
Prędkość 6.1 cpb na rdzeniu 2 .
Najlepsza kryptoanaliza publiczna W październiku 2010 roku
opublikowano atak łączący kryptoanalizę rotacyjną z atakiem odbicia . Atak montuje znany wyróżnik klucza przeciwko 53 z 72 rund w Threefish-256 i 57 z 72 rund w Threefish-512. Wpływa również na Skein .

Threefish to szyfr blokowy z kluczem symetrycznym, który można modyfikować , zaprojektowany jako część funkcji skrótu Skein , wpisu w konkursie funkcji skrótu NIST . Threefish nie używa S-boxów ani innych wyszukiwań w tabelach, aby uniknąć ataków związanych z synchronizacją pamięci podręcznej ; jego nieliniowość wynika z naprzemiennych dodatków z wyłącznymi OR . Pod tym względem jest podobny do Salsa20 , TEA i kandydatów na SHA-3 CubeHash i BLAKE .

Threefish i funkcja skrótu Skein zostały zaprojektowane przez Bruce'a Schneiera , Nielsa Fergusona , Stefana Lucksa , Douga Whitinga, Mihira Bellare'a , Tadayoshi Kohno, Jona Callasa i Jessego Walkera.

Opis szyfru

Threefish działa na słowach 64- bitowych ( liczby całkowite Little endian bez znaku ). słów Poprawka składa się z dwóch słów. Wszystkie dodawania i odejmowania są zdefiniowane modulo .

Kluczowy harmonogram

w i kluczy rundach, a przed pierwszą, do słów dodawane są okrągłe słowa . Aby obliczyć okrągłe klucze, do oryginalnych słów kluczowych . Ponadto do jest dołączane dodatkowe słowo ulepszenia }

Celem pozornie arbitralnej stałej wykorzystujących związek między słowami kluczowymi.

Okrągłe słowa kluczowe są teraz zdefiniowane w następujący sposób:

Tutaj , gdzie to numer rundy, w której okrągłe słowo kluczowe używany.

Funkcja mieszania

Funkcja mieszania trzech ryb

Funkcja mieszania pobiera słów i zwraca kolejną krotkę słów . Funkcja jest zdefiniowana w następujący sposób:

to ustalony zestaw stałych rotacji wybranych w celu uzyskania szybkiej dyfuzji .

Przestawiać

Krok permutacji zamienia pozycje słów zgodnie ze stałym wzorcem. W tym kroku nie uzyskuje się permutacji na poziomie bitów, ale nie jest to konieczne, ponieważ funkcje MIX zapewniają permutacje na poziomie bitów w postaci rotacji bitowych. [ Potrzebne źródło ] Stałe kroku permutacji i rotacji w funkcjach MIX są wybierane w taki sposób, że całkowitym efektem jest całkowite rozproszenie wszystkich bitów w bloku danych. [ potrzebne źródło ]

Ponieważ ta permutacja jest stała i niezależna od klucza, czas potrzebny do jej obliczenia nie dostarcza informacji o kluczu lub tekście jawnym. Jest to ważne, ponieważ w przypadku większości nowoczesnych mikroprocesorów optymalizacja wydajności może uzależnić czas potrzebny do obliczenia operacji na tablicy od tego, gdzie dane są przechowywane w pamięci. W szyfrach, w których wyszukiwanie w tablicy zależy od klucza lub zwykłego tekstu (jak ma to miejsce w przypadku kroku podstawienia w AES), może to narazić szyfr na ataki czasowe poprzez zbadanie czasu wymaganego do zaszyfrowania. Permutacja jest zatem celowo zaprojektowana, aby zapewnić, że powinna być wykonywana w ten sam sposób, niezależnie od używanego klucza lub szyfrowanych danych. [ potrzebne źródło ]

Pełna runda Threefish

  • jeśli okrągły klucz jest dodawany do słowa
  • jest stosowana do par słów, szerokości rotacji zależą od liczby rundy i pary słów
  • słowa są permutowane przy użyciu permutacji niezależnej od okrągłej liczby

tę rundę razy ( ) stosuje _

Operacje końcowe

Po zastosowaniu wszystkich rund słowa kluczowe dodawane do słów i słowa są konwertowane z

Bezpieczeństwo

opublikowano atak łączący kryptoanalizę rotacyjną z atakiem odbicia . Atak montuje znany wyróżnik klucza przeciwko 53 z 72 rund w Threefish-256 i 57 z 72 rund w Threefish-512. Wpływa również na Skein . Jest to kontynuacja wcześniejszego ataku opublikowanego w lutym, który przerwał odpowiednio 39 i 42 rundy. W odpowiedzi na ten atak zespół Skein zmodyfikował stałe rotacji używane w Threefish, a tym samym kluczowe stałe harmonogramu dla rundy 3 konkursu funkcji skrótu NIST.

opublikowano powiązany kluczowy atak bumerangiem na zmniejszoną okrągłą wersję Threefish. W przypadku wersji 32-rundowej złożoność czasowa wynosi , a złożoność pamięci wynosi ; dla wersji 33-rundowej złożoność czasowa wynosi przy znikomym zużyciu pamięci. Ataki działają również przeciwko ulepszonej wersji Threefish: dla wersji 32-rundowej złożoność czasowa wynosi , a złożoność pamięci wynosi ; dla wersji 33-rundowej złożoność czasowa wynosi przy znikomym zużyciu pamięci.

Zobacz też

Linki zewnętrzne