RC2 — szyfr blokowy w kryptografii: opis, działanie i podatności

RC2 — szyfr blokowy w kryptografii: opis, działanie i podatności. Poznaj historię, mechanikę 18 rund, znane ataki i praktyczne zalecenia dotyczące bezpieczeństwa.

Autor: Leandro Alegsa

W kryptografii RC2 jest szyfrem z symetrycznym kluczem blokowym, zaprojektowanym przez Ronalda Rivesta w 1987 roku. "RC" oznacza "Rivest Cipher" lub — mniej formalnie — "Ron's Code".

Opis ogólny

RC2 jest 64-bitowym szyfrem blokowym o zmiennej wielkości klucza. Standardowa realizacja wykonuje 18 rund kryptograficznych. Algorytm pracuje na bloku 64-bitowym podzielonym na cztery 16-bitowe słowa i używa kombinacji operacji arytmetycznych (dodawanie modulo 2^16), operacji bitowych (AND, OR, XOR) oraz rotacji bitowych.

Struktura rund

Rundy RC2 są ułożone w siećfeistelową, w której 16 rund jednego typu, nazywanych tu "rundami mieszającymi", jest przeplatanych dwoma rundami innego typu nazywanymi "rundami zacierającymi" (mashing). Łącznie daje to 18 rund wykonywanych według następującej, przerywanej sekwencji:

  1. wykonać 5 rund mieszania.
  2. wykonać 1 rundę zacierania.
  3. wykonać 6 rund mieszania.
  4. wykonać 1 rundę zacierania.
  5. wykonać 5 rund mieszania.

Runda mieszania wykorzystuje cztery sekwencyjne zastosowania prostej transformacji opartej na dodawaniu, maskowaniu i rotacjach, a następnie miesza jeden z 16-bitowych słów rozbudowanego klucza. Runda zacierająca (mashing) dodaje bezpośrednio pewne słowa z rozbudowanego klucza do słów stanu, co zwiększa zależność między każdym bitem klucza a stanem szyfrowania (szczegóły specyfikacji — RFC 2268).

Ekspansja klucza

RC2 wykorzystuje specjalny algorytm ekspandowania klucza, który zadanemu, zmiennej długości kluczowi wejściowemu (tzw. "zmienno-długiemu" kluczowi) generuje tablicę słów używanych w rundach. W typowej specyfikacji wynikowa tablica składa się z 64 słów 16-bitowych; każde z tych słów wpływa na kolejne operacje rundowe w sposób, który ma zapewnić silne rozproszenie wpływu klucza na szyfrowanie (opis procedury rozwinięcia klucza znajduje się w RFC 2268).

Bezpieczeństwo i podatności

RC2 nie jest uważany za bezpieczny zgodnie z dzisiejszymi standardami. Najważniejsze słabości i ataki to między innymi:

  • Atak kluczem pokrewnym: Kelsey i współpracownicy w 1997 roku pokazali atak wymagający około 2^34 ataków wybranych tekstów, skutkujący odzyskaniem klucza powiązanego z pewnym stopniem pracy. Ten wynik oznacza, że bezpieczeństwo algorytmu jest mniejsze niż przewidywano dla pełnych długości klucza.
  • Mały rozmiar bloku: RC2 używa 64-bitowego rozmiaru bloku, co czyni go podatnym na klasy ataków związanych z kolizjami bloków przy przesyłaniu dużych ilości danych (np. ataki typu SWEET32). Przy dużych przepływach danych rośnie prawdopodobieństwo powtórzeń bloków i wycieku informacji o strukturze szyfrowanych danych.
  • Krótkie klucze eksportowe: Historycznie popularne wersje z 40-bitowym kluczem były objęte ograniczeniami eksportowymi i ze względu na rozmiar klucza są dziś całkowicie niezalecane — 40-bitowe klucze można złamać metodą ataku brutalnej siły w praktycznym czasie.

Wniosek: RC2 należy traktować jako przestarzały i niezalecany do nowych zastosowań. Powinien zostać zastąpiony współczesnymi algorytmami blokowymi o większym rozmiarze bloku i lepszych właściwościach kryptograficznych (np. AES).

Historia i zastosowania

Rozwój RC2 był sponsorowany przez firmę Lotus, która potrzebowała niestandardowego szyfru do eksportu w ramach oprogramowania Lotus Notes. Projekt został oceniony przez NSA, która zaproponowała pewne zmiany w algorytmie; Ronald Rivest wprowadził te korekty, a po dalszych negocjacjach w 1989 r. szyfr został dopuszczony do eksportu.

Początkowo specyfikacja RC2 była zastrzeżona przez RSA Security. Jednak 29 stycznia 1996 roku kod źródłowy RC2 został anonimowo opublikowany na forum Usenet (sci.crypt). Podobne zdarzenie miało miejsce wcześniej w przypadku RC4; do dziś nie jest jasne, czy źródło anonima było oficjalne, czy też implementacja powstała w wyniku inżynierii odwrotnej.

W przeszłości RC2 był używany m.in. w oprogramowaniu i protokołach, które wymagały eksportowalnych rozwiązań kryptograficznych. Obecnie został w dużym stopniu zastąpiony przez nowocześniejsze algorytmy i tryby pracy zapewniające uwierzytelnianie (AEAD).

Zalecenia praktyczne

  • Nie używać RC2 w nowych projektach. Zamiast tego stosować sprawdzone algorytmy takie jak AES z odpowiednimi trybami (np. AES-GCM, AES-CCM) oferującymi także integralność i uwierzytelnianie.
  • Jeżeli trzeba obsługiwać starsze systemy korzystające z RC2, rozważyć warstwę translacji/proxy, która od strony sieciowej będzie używać współczesnych algorytmów, a wewnętrznie jedynie zapewni kompatybilność ze starym oprogramowaniem (z zachowaniem wszelkich zasad bezpieczeństwa).
  • Unikać używania 40-bitowych lub innych krótkich kluczy; w systemach dziedzicznych rozważyć migrację kluczy do bezpiecznych długości i algorytmów.

Podsumowując: RC2 był ważnym krokiem w historii kryptografii symetrycznej i miał swoje miejsce w praktycznych zastosowaniach, ale z powodu udowodnionych słabości i ogólnego postępu badań kryptograficznych powinien być dziś uważany za przestarzały i zastąpiony bezpieczniejszymi rozwiązaniami.

Przemiana mieszania RC2; Runda mieszania polega na czterokrotnym zastosowaniu przemiany "mieszania".Zoom
Przemiana mieszania RC2; Runda mieszania polega na czterokrotnym zastosowaniu przemiany "mieszania".

Pytania i odpowiedzi

P: Co to jest RC2?


O: RC2 to szyfr blokowy z kluczem symetrycznym, zaprojektowany przez Ronalda Rivesta w 1987 roku. Wykorzystuje 64-bitowy rozmiar bloku i 18 rund szyfrowania.

P: Co oznacza skrót "RC"?


O: "RC" to skrót od "Rivest Cipher" lub inaczej "Ron's Code".

P: Ile rund jest wykonywanych przy użyciu RC2?


O: Przy użyciu RC2 wykonuje się 18 rund - 16 rund mieszania przeplatanych dwoma rundami zacierania.

P: Jak działa algorytm rozszerzania klucza?


O: Algorytm rozszerzania klucza tworzy rozszerzony klucz składający się z 64 (16-bitowych słów) w zależności od każdego bitu dostarczonego klucza wejściowego o zmiennej długości.

P: Na jaki rodzaj ataku jest podatny RC2?


O: RC2 jest podatny na atak na klucz powiązany z wykorzystaniem 234 ataków typu chosen-plaintext.

P: Kto sponsorował rozwój RC2?



O: Rozwój RC2 był sponsorowany przez firmę Lotus, która poszukiwała własnego szyfru, który mógłby być eksportowany jako część ich oprogramowania Lotus Notes.


Przeszukaj encyklopedię
AlegsaOnline.com - 2020 / 2025 - License CC3