Jaka jest główna różnica między kluczem, kroplówką i nonce?

kw. 24, 2021
admin

Klucz, w kontekście kryptografii symetrycznej, jest czymś, co trzymasz w tajemnicy. Każdy, kto zna klucz (lub może go odgadnąć) może odszyfrować dane, które zostały nim zaszyfrowane (lub sfałszować kody uwierzytelniające, które zostały za jego pomocą obliczone, itp.)

(Istnieje również kryptografia „asymetryczna” lub z kluczem publicznym, w której klucz składa się z dwóch części: klucza prywatnego, który pozwala na odszyfrowanie i/lub podpisanie, oraz klucza publicznego (pochodzącego z odpowiedniego klucza prywatnego), który pozwala na szyfrowanie i/lub weryfikację podpisu.)

Wektor IV lub wektor inicjujący jest, w najszerszym znaczeniu, po prostu wartością początkową używaną do rozpoczęcia jakiegoś iterowanego procesu. Termin ten jest używany w kilku różnych kontekstach i implikuje różne wymagania bezpieczeństwa w każdym z nich. Na przykład, kryptograficzne funkcje haszujące zazwyczaj mają ustalony IV, który jest po prostu arbitralną stałą, która jest zawarta w specyfikacji funkcji haszującej i jest używana jako początkowa wartość haszująca przed wprowadzeniem jakichkolwiek danych:

Diagram funkcji haszującej Merkle-Damgård z Wikipedii

Odwrotnie, większość trybów działania szyfrów blokowych wymaga IV, który jest losowy i nieprzewidywalny, lub przynajmniej unikalny dla każdej wiadomości zaszyfrowanej danym kluczem. (Oczywiście, jeśli każdy klucz jest używany tylko do zaszyfrowania jednej wiadomości, można obejść się bez użycia stałego IV). To losowe IV zapewnia, że każda wiadomość szyfruje się inaczej, tak że zobaczenie wielu wiadomości zaszyfrowanych tym samym kluczem nie daje atakującemu więcej informacji niż zobaczenie pojedynczej długiej wiadomości. W szczególności, zapewnia to, że zaszyfrowanie tej samej wiadomości dwa razy daje dwa zupełnie różne szyfrogramy, co jest konieczne, aby schemat szyfrowania był semantycznie bezpieczny.

W każdym razie, IV nigdy nie musi być utrzymywane w tajemnicy – gdyby tak było, byłby to klucz, a nie IV. W rzeczywistości, w większości przypadków, utrzymywanie IV w tajemnicy nie byłoby praktyczne, nawet gdybyśmy chcieli, ponieważ odbiorca musi ją znać, aby odszyfrować dane (lub zweryfikować hash, itp.).

Nonce, w szerokim sensie, jest po prostu „liczbą używaną tylko raz”. Jedyną rzeczą ogólnie wymaganą od nonce jest to, że nie powinien być nigdy użyty dwa razy (w odpowiednim zakresie, takim jak szyfrowanie z konkretnym kluczem).Unikalne IV używane do szyfrowania szyfrem blokowym kwalifikują się jako nonces, ale różne inne schematy kryptograficzne również używają nonces.

Istnieją pewne różnice co do tego, który z terminów „IV” i „nonce” jest używany dla różnych trybów działania szyfrów blokowych: niektórzy autorzy używają wyłącznie jednego lub drugiego, podczas gdy niektórzy rozróżniają je. Dla trybu CTR, w szczególności, niektórzy autorzy zastrzegają termin „IV” dla pełnego bloku wejściowego szyfru utworzonego przez konkatenację nonce i początkowej wartości licznika (zwykle blok wszystkich zerowych bitów), podczas gdy inni wolą nie używać terminu „IV” dla trybu CTR w ogóle. To wszystko jest skomplikowane przez fakt, że istnieje kilka wariacji na temat tego, jak nonce/IV wysłany z wiadomością w trybie CTR jest faktycznie mapowany do początkowego wejścia szyfru blokowego.

Odwrotnie, dla trybów innych niż CTR (lub pokrewnych trybów, takich jak EAX lub GCM), termin „IV” jest prawie powszechnie preferowany zamiast „nonce”. Jest to szczególnie prawdziwe dla trybu CBC, ponieważ ma on wymagania dotyczące IV (w szczególności, że są one nieprzewidywalne), które wykraczają poza zwykły wymóg niepowtarzalności oczekiwany od nonces.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.