Funkcja liniowa algorytmu Serpent | |
Rodzaj algorytmu | |
---|---|
Autorzy | |
Wielkość bloku wejściowego |
128 bitów |
Długość klucza |
128, 192, 256 [bit] |
Liczba rund |
32 |
Serpent – symetryczny 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.