Serpent (kryptografia)

Z Wikipedii, wolnej encyklopedii
Serpent
Ilustracja
Funkcja liniowa algorytmu Serpent
Rodzaj algorytmu

symetryczny szyfr 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

Serpentsymetryczny szyfr blokowy, jeden z finalistów konkursu na Advanced Encryption Standard. Został stworzony przez Rossa Andersona, Eliego Bihama i Larsa Knudsena.

W 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-Boksów.

Dzięki użyciu w S-Boksach 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-Boksów, co oznaczałoby konieczność przejrzenia 1024 S-Boksów. W Serpencie każdy z czterech bitów wynikowych tych S-Boksó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-Boksach 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]

Linki zewnętrzne[edytuj | edytuj kod]