Przejdź do zawartości

Rabbit

Z Wikipedii, wolnej encyklopedii
Rabbit
Ilustracja
Schemat algorytmu Rabbit
Rodzaj algorytmu

szyfr strumieniowy

Data stworzenia

2003

Autorzy

Martin Boesgaard, Mette Vesterager, Thomas Pedersen, Jesper Christiansen, Erik Zenner, Ove Scavenius

Wielkość bloku wejściowego

128 bitów

Wielkość bloku wyjściowego

128 bitów

Długość klucza

128 bitów

Złamany przez

Jean-Philippe Aumasson

Skuteczne ataki

atak TMD trade-off, wyróżnik statystyczny (bias)

Rabbit – szyfr strumieniowy o wysokiej prędkości zaprezentowany[1] w lutym 2003 na dziesiątych warsztatach FSE. W maju 2005 został wysłany do projektu eSTREAM sieci ECRYPT.

Rabbit został zaprojektowany przez Martina Boesgaarda, Mette Vesteragera, Thomasa Pedersena, Jespera Christiansena, Erika Zennera i Ove Scaveniusa.

Rabbit korzysta z 128-bitowego klucza i 64-bitowego wektora inicjalizacji. Zaprojektowany został z myślą o dużej wydajności w oprogramowaniu, gdzie w pełni zoptymalizowane impementacje osiągają prędkość 3.7 cykli na bajt na Pentium 3 i 9.7 cykli na bajt na procesorze ARM7. Szyfr jest także optymalny do zastosowań sprzętowych.

Głównym komponentem szyfru jest generator strumienia bajtów który szyfruje 128 bitów wiadomości na iterację. Siła szyfru tkwi w mocnym mieszaniu stanu wewnętrznego pomiędzy następnymi iteracjami. Funkcja mieszająca jest w całości oparta na operacjach arytmetycznych dostępnych na nowoczesnym procesorze, czyli nie występują S-boksy ani potrzeba korzystania z tablicowania.

Autorzy szyfru udostępnili pełny zestaw dokumentów kryptoanalitycznych na stronie Cryptico[2]. Szyfr jest także opisany w RFC 4503 ↓. Cryptico miało oczekujące patenty na algorytm i przez wiele lat wymagało opłaty licencyjnej za komercyjne wykorzystanie szyfru. Został on jednak udostępniony za darmo w październiku 2008.[3]

Bezpieczeństwo

[edytuj | edytuj kod]

Rabbit zakłada 128-bitowe bezpieczeństwo przeciwko atakom, których celem jest jeden konkretny klucz. Jeśli jednak atakowanych jest wiele kluczy naraz i nie jest istotne, który zostanie złamany, mały rozmiar wektora inicjalizacji skutkuje zredukowanym poziomem bezpieczeństwa do 96 bitów. Spowodowane jest to ogólnym atakiem TMD trade-off[4].

Istnieje drobne przekłamanie w wyjściu Rabbita[5], umożliwiające uzyskanie wyróżnika z trudnością 2247, odkryte przez Jean-Philippe Aumassona w grudniu 2006. Mimo że udało się poprawić atak do 2158[6], nie jest to zagrożeniem bezpieczeństwa szyfru, gdyż zaatakowanie go w ten sposób jest trudniejsze niż metoda brute force(2128).

Przypisy

[edytuj | edytuj kod]
  1. ↑ M. Boesgaard, M. Vesterager, T. Pedersen, J. Christiansen, O. Scavenius. Rabbit: A High-Performance Stream Cipher. Proc. FSE 2003. Springer LNCS 2887, pp. 307-329 (PDF)
  2. ↑ M. Boesgaard, T. Pedersen, M. Vesterager, E. Zenner. The Rabbit Stream Cipher – Design and Security Analysis. Proc. SASC 2004. (PDF)
  3. ↑ http://www.ecrypt.eu.org/stream/phorum/read.php?1,1244
  4. ↑ Christophe De Cannière, Joseph Lano, and Bart Preneel, Comments on the Rediscovery of Time Memory Data Tradeoffs, 2005. (PDF)
  5. ↑ Jean-Philippe Aumasson, "On a bias of Rabbit", Proc. SASC 2007. (PDF)
  6. ↑ Yi Lu, Huaxiong Wang, San Ling, "Cryptanalysis of Rabbit", Proc. ISC 2008 ()

Linki zewnętrzne

[edytuj | edytuj kod]
  • Strona główna Cryptico(ang.)
  • M. Boesgaard, M. Vesterager, E. Zenner, A Description of the Rabbit Stream Cipher Algorithm, RFC 4503, IETF, maj 2006, DOI: 10.17487/RFC4503, ISSN 2070-1721, OCLC 943595667 (ang.).
  • strona eSTREAM o Rabbicie(ang.)