Rabbit

Z Wikipedii, wolnej encyklopedii
Schemat algorytmu Rabbit

Rabbitszyfr 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 ([1])

Linki zewnętrzne[edytuj | edytuj kod]