Królik (szyfr)

Rabbit to szybki szyfr strumieniowy z 2003 roku. Algorytm i kod źródłowy zostały udostępnione w 2008 roku jako oprogramowanie należące do domeny publicznej .

Historia

Królik został po raz pierwszy zaprezentowany w lutym 2003 roku na 10. warsztatach FSE. W maju 2005 roku został zgłoszony do projektu eSTREAM sieci ECRYPT .

Królik został zaprojektowany przez Martina Boesgaarda, Mette Vesterager, Thomasa Pedersena, Jespera Christiansena i Ove Scaveniusa.

Autorzy szyfru udostępnili pełny zestaw oficjalnych dokumentów kryptoanalitycznych na stronie głównej Cryptico. Jest to również opisane w dokumencie RFC 4503. Cryptico posiadało patenty na algorytm i przez wiele lat wymagało opłaty licencyjnej za komercyjne wykorzystanie szyfru, z której zrezygnowano w przypadku zastosowań niekomercyjnych. Jednak 6 października 2008 r. algorytm został udostępniony bezpłatnie do dowolnego użytku. Na stronie internetowej znajduje się również informacja, że ​​algorytm i implementacja stanowią oprogramowanie należące do domeny publicznej , a kod źródłowy można pobrać bezpłatnie.

Funkcjonalność

Królik używa 128-bitowego klucza i 64-bitowego wektora inicjującego. Szyfr został zaprojektowany z myślą o wysokiej wydajności oprogramowania, gdzie w pełni zoptymalizowane implementacje osiągają koszt szyfrowania do 3,7 cpb na Pentium 3 i 9,7 cpb na ARM7. Jednak szyfr okazuje się również bardzo szybki i kompaktowy sprzętowo.

Podstawowym elementem szyfru jest generator strumienia bitów, który szyfruje 128 bitów wiadomości na iterację. Siła szyfru opiera się na silnym mieszaniu jego stanu wewnętrznego pomiędzy dwiema kolejnymi iteracjami. Funkcja miksowania w całości opiera się na operacjach arytmetycznych dostępnych na nowoczesnym procesorze, co oznacza, że ​​do implementacji szyfru nie są potrzebne żadne S-boxy ani tablice przeglądowe. Funkcja mieszająca wykorzystuje funkcję g opartą na podnoszeniu arytmetycznym, a operacje ARX – logiczne XOR, rotację bitową ze stałymi wartościami rotacji i dodawanie modulo 2 32 .

Funkcja g zastosowana w Rabbicie – podniesienie liczby 32-bitowej do kwadratu w celu uzyskania liczby 64-bitowej, a następnie połączenie lewej i prawej połowy tej kwadratowej liczby za pomocą xor w celu uzyskania wyniku 32-bitowego – zapewnia znacznie lepsze wyniki wyniki, niż użycie 32 środkowych bitów tej kwadratowej liczby ( metoda środkowego kwadratu ).

Bezpieczeństwo

Rabbit zapewnia 128-bitowe bezpieczeństwo przed atakującymi, których celem jest jeden konkretny klucz. Jeśli jednak atakujący atakuje dużą liczbę kluczy na raz i tak naprawdę nie przejmuje się, który złamie, wówczas mały rozmiar IV skutkuje obniżonym poziomem bezpieczeństwa do 96 bitów. Jest to spowodowane typowymi atakami typu kompromis TMD.

Istnieje niewielkie odchylenie w wynikach działania programu Rabbit, w wyniku czego w grudniu 2006 r. Jean-Philippe Aumasson odkrył wyróżnik o złożoności 2247. Mimo że w 2008 r. ten wyróżnik został ulepszony do 2158 , nie stanowi on zagrożenia dla bezpieczeństwa systemu Rabbit, ponieważ jego złożoność jest znacznie większa niż brutalna siła przestrzeni klucza (2 128 ).

Linki zewnętrzne