| |||||||||
|
Szyfr strumieniowy VMPC
Źródłowe prace naukowe opisujące Technologię Szyfrowania VMPC:
Szyfr strumieniowy VMPC (VMPC Stream Cipher) opracowałem w roku 2004 i opublikowałem między innymi na międzynarodowej konferencji kryptograficznej Fast Software Encryption w 2004 roku w Delhi w Indiach. Szyfr ten może być uważany za bezpieczniejszą alternatywę dla popularnego algorytmu szyfrowania strumieniowego RC4 zaprojektowanego przez Rona Rivesta. Głównymi zaletami szyfru VMPC są prostota, bezpieczeństwo i wysoka wydajność. Główne źródła przewagi szyfru VMPC nad algorytmem RC4:
Szyfrowanie odbywa się poprzez poddanie kolejnych bajtów szyfrowanej wiadomości operacji logicznej xor (alternatywa wykluczająca) z kolejnymi bajtami generowanego przez szyfr strumienia. Deszyfrowanie realizowane jest przez wykonanie identycznej operacji (dzięki własności A xor B xor B = A). Jeśli podczas szyfrowania i deszyfrowania użyte zostało to samo hasło, strumień użyty do szyfrowania i deszyfrowania będzie taki sam i wiadomość zostanie prawidłowo odszyfrowana. Gdyby do deszyfrowania użyć innego hasła (różniącego się choćby jednym bitem od właściwego hasła), szyfr VMPC wygeneruje "całkowicie" inny strumień danych i jako wynik deszyfrowania otrzymamy ciąg pseudolosowych liczb. Fundamentalnym wymogiem bezpieczeństwa podczas używania szyfru strumieniowego jest użycie innej wartości wektora inicjującego do każdej wiadomości szyfrowanej tym samym kluczem. Aby stwierdzić, czy po odszyfrowaniu otrzymaliśmy tę samą wiadomość, która została zaszyfrowana (a więc czy użyliśmy właściwego klucza i czy zaszyfrowana wiadomość nie została w międzyczasie zmieniona), potrzebujemy dodatkowego algorytmu, który obliczy i sprawdzi tzw. kod uwierzytelniający wiadomość (Message Authentication Code - MAC). W praktyce algorytmy obliczające kody MAC są niezbędne. Jaka bowiem byłaby wartość szyfrowania bez pewności, że po odszyfrowaniu otrzymaliśmy dokładnie tę wiadomość, która została zaszyfrowana. Dla szyfru VMPC funkcję tę spełnia specjalnie zaprojektowany w tym celu algorytm VMPC-MAC. Pełną specyfikację Technologii Szyfrowania VMPC można znaleźć w trzech poświęconej jej pracach naukowych. Gotowe implementacje Technologii Szyfrowania VMPC są dostępne są za darmo w trzech językach programowania - C, Pascal/Delphi oraz Assembler. W dwóch tabelach poniżej przedstawiono pseudokod szyfru strumieniowego VMPC oraz algorytmu inicjowania klucza VMPC-KSA / VMPC-KSA3). Szyfr strumieniowy VMPC
Tabela 1. Szyfr strumieniowy VMPC
W kroku 2 szyfru VMPC (wynik = P[P[P[s]]+1]) mamy bezpośrednie wykorzystanie funkcji jednokierunkowej VMPC. Użycie w tym miejscu funkcji VMPC tworzy dodatkową warstwę bezpieczeństwa kryptograficznego. Szyfr VMPC byłby bezpieczny nawet bez użycia funkcji VMPC (gdyby w kroku 2 wykonywano tylko operację wynik = P[s]). Ale przepuszczenie zmiennej s przez jednokierunkową funkcję VMPC tworzy dodatkową warstwę bezpieczeństwa przeciw atakom mającym na celu odtworzenie stanu wewnętrznego szyfru (permutacji P i zmiennych s, n). Atakujący, który przeprowadziłby atak ze znanym tekstem jawnym (known plaintext attack) (dzięki czemu znałby kolejne wartości strumienia powstałe w kroku 2) musiałby odtworzyć wartość permutacji P z ciągu wartości funkcji VMPC (P[P[P[s]]+1]), a więc odwrócić funkcję VMPC. Algorytm inicjowania klucza VMPC-KSA Algorytm inicjowania klucza VMPC-KSA jest integralnym elementem szyfru strumieniowego VMPC. Przekształca on tajny klucz i jawny wektor inicjujący (Initialization Vector) w stan wewnętrzny szyfru VMPC (w permutację P i zmienne s, n). Każda wiadomość szyfrowana tym samym kluczem musi posiadać inną wartość wektora inicjującego. W przeciwnym razie bezpieczeństwo szyfrowania zostanie drastycznie obniżone. Wektor inicjujący jest wartością jawną i należy go dołączyć do szyfrogramu. Algorytm występuje w dwóch wariantach:
Wariant VMPC-KSA3 powstał w wyniku dalszych badań nad Technologią Szyfrowania VMPC po konferencji FSE 2004. Szczegółową analizę bezpieczeństwa algorytmu VMPC-KSA3 można znaleźć w pracy naukowej poświęconej temu algorytmowi oraz na stronie www.vmpcfunction.com (w języku angielskim). Oba algorytmy (VMPC-KSA oraz VMPC-KSA3) są zalecane do zastosowania. Powstanie VMPC-KSA3 nie było podyktowane żadną słabością podstawowego algorytmu VMPC-KSA. Algorytm VMPC-KSA3 powstał, aby dostarczyć dodatkową warstwę bezpieczeństwa redukującą do pewnego stopnia skutki hipotetycznego ataku odzyskującego stan wewnętrzny szyfru. Odbywa się to kosztem obniżenia o około 1/3 wydajności algorytmu inicjowania klucza, co jest wynikiem ponownego wykonania funkcji mieszającej dla klucza (krok 3). Wybór pomiędzy VMPC-KSA i VMPC-KSA3 jest indywidualny. Jeśli obniżona wydajność algorytmu inicjowania klucza VMPC-KSA3 jest akceptowalna, wówczas lepszym wyborem jest VMPC-KSA3. Jednocześnie w aplikacjach wymagających wysokiej wydajności algorytmu inicjowania klucza można bez żadnych obaw stosować podstawowy wariant VMPC-KSA. Zmienne jak dla szyfru strumieniowego VMPC oraz:
Tabela 2. Algorytm inicjowania klucza VMPC-KSA / VMPC-KSA3
Publikacje naukowe i popularnonaukowe, w których opisana została Technologia Szyfrowania VMPC:
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright © 1999-2022 by Bartosz Żółtak Aktualizacja: 09.09.2024 |