SHACAL

SHACAL
Rodzaj algorytmu

szyfr blokowy

Data stworzenia

2000–2001

Autorzy

Helena Handschuh, David Naccache

Wielkość bloku wejściowego

160 (SHACAL-1), 256 (SHACAL-2) [bit]

Wielkość bloku wyjściowego

160 (SHACAL-1), 256 (SHACAL-2) [bit]

Długość klucza

0–512 (zalecane 128–512) [bit]

Liczba rund

80 (SHACAL-1), 64 (SHACAL-2)

SHACAL – rodzina dwóch symetrycznych szyfrów blokowych, SHACAL-1 i SHACAL-2, opracowanych przez Helenę Handschuh i Davida Naccache’a. Ich konstrukcja opiera się na funkcjach kompresji wykorzystywanych w kryptograficznych funkcjach skrótu SHA-1 oraz SHA-256 (z rodziny SHA-2).

Pierwszy wariant, pierwotnie nazywany SHACAL, przedstawiono w 2000 roku. W 2001 roku opracowano SHACAL-2, oparty na SHA-256, a pierwotną konstrukcję zaczęto określać jako SHACAL-1. Oba algorytmy uczestniczyły w europejskim projekcie oceny algorytmów kryptograficznych NESSIE (New European Schemes for Signatures, Integrity, and Encryption). W 2003 roku SHACAL-2 znalazł się w końcowym zestawie algorytmów rekomendowanych przez projekt. SHACAL-1 nie został wybrany ze względu na zastrzeżenia dotyczące mechanizmu generowania podkluczy.

Konstrukcja

Oba warianty SHACAL wykorzystują operacje wykonywane wewnątrz funkcji skrótu, lecz przystosowują je do odwracalnego szyfrowania blokowego. W standardowych funkcjach SHA-1 i SHA-256 do stanu uzyskanego po wykonaniu rund dodawany jest stan początkowy. W szyfrach SHACAL pominięto to końcowe dodawanie, aby umożliwić odwrócenie przekształcenia przy znajomości klucza.

SHACAL-1

SHACAL-1 jest szyfrem blokowym opartym na funkcji kompresji SHA-1. Przetwarza bloki danych o długości 160 bitów, podzielone na pięć 32-bitowych słów oznaczanych jako A, B, C, D i E. Szyfrowanie obejmuje 80 rund, w których wykonywane są operacje dodawania modulo 232, przesunięcia cykliczne oraz operacje logiczne, w tym XOR.

Algorytm dopuszcza klucze o długości do 512 bitów, jednak ze względów bezpieczeństwa zaleca się stosowanie kluczy liczących co najmniej 128 bitów. Klucze krótsze niż 512 bitów są dopełniane zerami do tej długości. Następnie klucz jest dzielony na 16 słów 32-bitowych, z których wyznaczane są kolejne podklucze. Dla indeksów od 16 do 79 stosowana jest zależność:

gdzie oznacza alternatywę wykluczającą (XOR), natomiast oznacza przesunięcie cykliczne 32-bitowego słowa w lewo o jeden bit. W ten sposób 512-bitowy klucz zostaje rozwinięty do 80 słów, czyli łącznie 2560 bitów danych wykorzystywanych w kolejnych rundach szyfrowania.

Mechanizm generowania podkluczy jest liniowy względem operacji XOR. Jego właściwości były jednym z powodów zastrzeżeń dotyczących bezpieczeństwa SHACAL-1 zgłoszonych podczas oceny NESSIE.

SHACAL-2

SHACAL-2 wykorzystuje funkcję kompresji SHA-256. W przeciwieństwie do SHACAL-1 operuje na blokach 256-bitowych, które dzieli na osiem 32-bitowych słów, oznaczanych jako A, B, C, D, E, F, G i H. Szyfrowanie składa się z 64 rund.

W każdej rundzie wykonywane są operacje dodawania modulo 232, XOR, przesunięcia cykliczne i operacje logiczne. Wykorzystywane są między innymi funkcje Ch (wyboru), Maj (większości) oraz funkcje i , znane z konstrukcji SHA-256.

SHACAL-2 dopuszcza klucze o długości do 512 bitów, jednak zaleca się stosowanie kluczy liczących co najmniej 128 bitów. Klucz jest dopełniany zerami do 512 bitów, a następnie rozszerzany do 64 słów 32-bitowych. W odróżnieniu od SHACAL-1 rozszerzanie klucza wykorzystuje również dodawanie modulo 232 i przesunięcia bitowe. Zależność dla kolejnych słów ma postać:

dla , gdzie i są funkcjami łączącymi przesunięcia cykliczne, przesunięcia bitowe i operacje XOR.

Kryptoanaliza

SHACAL-1

SHACAL-1 był przedmiotem badań z wykorzystaniem między innymi kryptoanalizy różnicowej, ataków typu boomerang i rectangle oraz ataków z użyciem kluczy powiązanych (related-key attacks).

W 2006 roku Orr Dunkelman, Nathan Keller i Jongsung Kim przedstawili atak typu related-key rectangle obejmujący pełne 80 rund SHACAL-1. Był to jeden z pierwszych opublikowanych ataków na pełną wersję tego szyfru o złożoności mniejszej niż przeszukiwanie całej przestrzeni kluczy.

W 2007 roku Gaoli Wang, Nathan Keller i Orr Dunkelman wykazali błędy w założeniach części wcześniejszych ataków różnicowych na SHACAL-1. Stwierdzili również, że wcześniejszy atak na pełną wersję szyfru był skuteczny jedynie wobec określonej klasy słabych kluczy. Zaproponowali zmodyfikowany atak na wszystkie 80 rund, wykorzystujący klucze powiązane i mający zastosowanie do jednej na 256 czwórek powiązanych kluczy.

Ataki te wymagają szczególnych relacji między kluczami oraz bardzo dużych zasobów obliczeniowych. Nie oznaczają zatem możliwości praktycznego odczytywania dowolnych danych zaszyfrowanych za pomocą SHACAL-1.

SHACAL-2

Kryptoanaliza SHACAL-2 koncentrowała się między innymi na wersjach z ograniczoną liczbą rund. W 2004 roku opublikowano ataki wykorzystujące klucze powiązane, obejmujące do 37 z 64 rund szyfru.

W 2008 roku Jiqiang Lu i Jongsung Kim przedstawili atak typu related-key rectangle na pierwsze 44 rundy SHACAL-2. Wymagał on około 2233 wybranych tekstów jawnych szyfrowanych za pomocą powiązanych kluczy oraz nakładu obliczeniowego odpowiadającego około 2497,2 operacjom szyfrowania.

Wyniki te dotyczą wersji o zmniejszonej liczbie rund i nie stanowią przełamania pełnego, 64-rundowego SHACAL-2.

Przypisy

  1. 1 2 3 4 5 6 7 Final report of European project number IST-1999-12324, named New European Schemes for Signatures, Integrity, and Encryption [online], NESSIE, 19 kwietnia 2004, s. 121–125, 555–557 [dostęp 2026-10-24].
  2. 1 2 Jiqiang Lu, Jongsung Kim, Nathan Keller, Orr Dunkelman, Differential and Rectangle Attacks on Reduced-Round SHACAL-1, 2006, s. 17–31, DOI: 10.1007/11941378_3 [dostęp 2026-10-24].
  3. ↑ Orr Dunkelman, Nathan Keller, Jongsung Kim, Related-Key Rectangle Attack on the Full SHACAL-1, 2007, s. 28–44, DOI: 10.1007/978-3-540-74462-7_3.
  4. ↑ Gaoli Wang, Nathan Keller, Orr Dunkelman, The Delicate Issues of Addition with Respect to XOR Differences, 2007, s. 212–231, DOI: 10.1007/978-3-540-77360-3_14 [dostęp 2026-10-24].
  5. ↑ Jongsung Kim, Guil Kim, Sangjin Lee, Jongin Lim, Junghwan Song, Related-Key Attacks on Reduced Rounds of SHACAL-2, 2004, s. 175–190, DOI: 10.1007/978-3-540-30556-9_15.
  6. ↑ Jiqiang Lu, Jongsung Kim, Attacking 44 Rounds of the SHACAL-2 Block Cipher Using Related-Key Rectangle Cryptanalysis, „IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences”, E91-A (9), 2008, s. 2588–2596, DOI: 10.1093/ietfec/e91-a.9.2588.