Serpent (kryptografia)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Serpent
Serpent-linearfunction.svg
Funkcja liniowa algorytmu Serpent
Rodzaj szyfru blokowy
Autorzy Ross Anderson, Eli Biham, Lars Knudsen
Wielkość bloku wejściowego 128 bitów
Długość klucza 128, 192, 256 [bit]
Liczba rund 32

Serpent (z ang. wąż) jest symetrycznym szyfrem blokowym, jednym z finalistów konkursu na Advanced Encryption Standard. Został stworzony przez Rossa Andersona, Eliego Bihama i Larsa Knudsena.

Na konkursie AES szyfr ten zajął drugie miejsce, zaraz po Rijndaelu. Serpent jest wolniejszy od laureata konkursu, jednak równocześnie bardziej bezpieczny.

Serpent podobnie jak inne szyfry zgłoszone na konkurs AES operuje na blokach o rozmiarach 128 bitów oraz na kluczu o długościach: 128, 192 lub 256 bitów. Korzysta on z 32 rund, w trakcie których następuje przekształcenie przez XOR względem klucza rundy, użycie 128-bitowej funkcji mieszającej i zastosowanie 32 4-bitowych S-BOXów.

Dzięki użyciu w S-boxach wyłącznie funkcji boolowskich algorytm zyskuje znacznie na szybkości. W przypadku zwykłej implementacji konieczne byłoby przejrzenie w każdej z 32 rund 32 S-boxów, co oznaczałoby konieczność przejrzenia 1024 S-boxów. W Serpencie każdy z czterech bitów wynikowych tych S-boxów jest wyrażany w postaci funkcji boolowskiej czterech bitów wejściowych. Dodatkowo w 32-bitowych procesorach można przetwarzać transformacje na wszystkich 32 S-boxach jednocześnie, gdyż każdy bit wynikowy opisany jest taką samą funkcją, choć działającą na różnych danych wejściowych.

Serpent nie został opatentowany. Oznacza to, że każdy może z niego nieodpłatnie korzystać w swoim oprogramowaniu czy urządzeniach kryptograficznych.

Zobacz też[edytuj | edytuj kod]

  • Tiger - Funkcja hashująca tych samych autorów.
  • AES - Konkurs AES i jego finalista.

Linki zewnętrzne[edytuj | edytuj kod]