07.04.2024







Projekt VMPC:


Badania nad funkcją VMPC i problemem matematycznym "czy P=NP?"
pieknafunkcja.pl



Aplikacja do szyfrowania danych VMPCrypt
szyfrowanie.com



Gra Permutu na bazie funkcji VMPC
permutu.pl







Zobacz także:


Gra komputerowa Urban



Multimedialne kursy do nauki języka angielskiego
ADL Publishing




Specyfikacja techniczna aplikacji VMPCrypt



1. Technologia szyfrowania

VMPCrypt wykorzystuje do szyfrowania szyfr strumieniowy VMPC (VMPC Stream Cipher), bazujący na funkcji jednokierunkowej VMPC. Do inicjowania klucza używany jest algorytm trójfazowego inicjowania klucza - VMPC-KSA3. Do uwierzytelniania szyfrogramów stosowany jest algorytm VMPC-MAC.


2. Obsługa kluczy tekstowych

VMPCrypt przyjmuje klucze w formacie tekstowym. Nie wchodzą one jednak bezpośrednio do procedury inicjowania kluczy KSA3. Klucz tekstowy dzielony jest na bloki o maksymalnej długości 63 bajtów. Każdy blok dopełniany jest do długości 64 bajtów kolejnymi bajtami pewnego stałego 64-bajtowego ciągu danych, będącego fragmentem pseudolosowej permutacji. Tak przygotowany blok wchodzi do procedury inicjowania klucza VMPC KSA (768 operacji swap). Jeśli klucz jest dłuższy niż 63 bajty (utworzy więcej niż jeden 64-bajtowy blok), wówczas procedura jest powtarzana, a kolejne bloki klucza operują na permutacji P uzyskanej w poprzednim kroku (KSA rozpoczyna się od kroku 11, tabela 2.1). Po przemieszaniu permutacji P wszystkimi 64-bajtowymi blokami klucza, wynikowa permutacja P wchodzi do szyfru strumieniowego VMPC i generowany jest 64-bajtowy strumień bajtów. Strumień ten stanowi właściwy klucz, który wchodzi do algorytmu KSA3, wraz z uzyskanym wg zasad z pkt. 3 wektorem inicjującym i inicjuje permutację P. Tak przygotowana permutacja P jest użyta do szyfrowania szyfrem strumieniowym VMPC.

W przypadku użycia wielu kluczy do jednego szyfrowania (funkcja "Generuj kolejny klucz") 64-bajtowe klucze uzyskane wg tego algorytmu są ze sobą xorowane. Program posiada wbudowaną kontrolę, czy wprowadzone klucze nie są jednakowe (poszczególne klucze nie są nigdzie zapamiętywane) i w przypadku sytuacji, gdy klucz wynikowy (po operacji xor) będzie zawierał ponad 30 bajtów zerowych, wyświetlony zostaje komunikat i Moduł Generowania Kluczy jest automatycznie resetowany do stanu początkowego.

W wyniku działania opcji "Połącz klucze" klucz uzyskany wg powyższego algorytmu wchodzi do KSA, a następnie generowany jest strumień wartości szyfrem VMPC, który to strumień, po zamianie na format tekstowy przy jednoczesnym odpowiednim wydłużeniu klucza, stanowi wynikowy klucz tekstowy. Następnie podczas szyfrowania jest on traktowany tak samo, jak opisano powyżej dla zwykłych kluczy tekstowych (dzielenie na 63 bajtowe bloki itd.).

Algorytm generowania kluczy z przypadkowych ruchów myszką umieszcza w 8-bajtowej tablicy: poprzednią pozycję kursora myszki (2 bajty); wartość bieżącego licznika czasu w milisekundach (1/1000 s), oraz aktualną pozycję kursora myszki (2 bajty). Tak przygotowana tablica wchodzi do algorytmu KSA, który operuje na sekwencyjnie przetwarzanej permutacji P (KSA rozpoczyna się od kroku 11, tabela 2.1). Po uzyskaniu wystarczającej liczby losowych danych, z wynikowej permutacji P generowany jest strumień wartości szyfrem VMPC, który to strumień, po zamianie na format tekstowy przy jednoczesnym odpowiednim wydłużeniu klucza, stanowi wynikowy klucz tekstowy. Następnie podczas szyfrowania jest on traktowany tak, jak opisano powyżej dla kluczy tekstowych (dzielenie na 63 bajtowe bloki itd.).


3. Gospodarowanie wektorem inicjującym (IV)

Każdy zaszyfrowany plik w archiwum posiada własny unikalny wektor inicjujący. Zaszyfrowane obie kopie nagłówka archiwum (zapisane na początku archiwum), zaszyfrowane dwie kopie bloku nazw plików (zapisane na końcu archiwum) oraz zaszyfrowany tekst komentarza - wszystkie posiadają własne unikalne wektory inicjujące.

Główny wektor inicjujący dla danego archiwum pozyskany jest z bieżącego czasu (rok, miesiąc, dzień, godzina, minuta, sekunda, milisekunda [1/1000 s]). Czas umieszczany jest w 16-bajtowej tablicy, która wchodzi do VMPC KSA (768 operacji swap). Następnie tak zainicjowana permutacja P wchodzi do szyfru strumieniowego VMPC i generowane jest 16 bajtów, które stanowią wynikowy wektor inicjujący (IV). Tak uzyskany wektor wchodzi do algorytmu KSA3, wraz z uzyskanym wg zasad z pkt. 2 kluczem, inicjuje permutację P i tak zainicjowana permutacja P jest użyta do szyfrowania.

Kolejne wektory inicjujące (dla kolejnych plików, nagłówka, itd.) są generowane przy pomocy szyfru strumieniowego VMPC. Po zaszyfrowaniu danego bloku (np. pliku) szyfr VMPC generuje nadmiarowe 16 bajtów, które stanowią wektor inicjujący wykorzystany do zaszyfrowania kolejnego bloku danych (kolejnego pliku, kolejnej kopii nagłówka, itd.).

Podczas aktualizacji archiwum generowany jest nowy wektor inicjujący z bieżącego czasu. Wszystkie pliki aktualizowane w archiwum bądź dodawane do archiwum, tekst komentarza, obie kopie nagłówka oraz bloku nazw plików, są szyfrowane nowymi wektorami inicjującymi.


4. Gospodarowanie sumami kontrolnymi MAC

Każdy blok danych (plik, pierwsza i druga kopia nagłówka, pierwsza i druga kopia bloku nazw plików, tekst komentarza - posiadają własne 20-bajtowe sumy kontrolne MAC, obliczone algorytmem VMPC-MAC. Przy każdym deszyfrowaniu tych bloków suma kontrolna MAC jest obliczana i porównywana z tą zapisaną w archiwum. W przypadku niezgodności sygnalizowany jest komunikat o treści "MAC: Błąd...", co zwykle oznacza, że użyty został nieprawidłowy klucz lub że szyfrogram został zakłócony.


5. Szyfrowanie wiadomości tekstowych (emaili)

Wprowadzony w edytorze tekst szyfrowany jest jako ciąg znaków ASCII zgodnie z ogólnymi zasadami opisanymi w pkt. 1-4. Suma kontrolna MAC (20 bajtów) oraz wektor inicjujący (16 bajtów) zaszyfrowanego tekstu są zapisywane na końcu szyfrogramu. Tak przygotowany szyfrogram zamieniany jest na format zapisu tekstowego Base64.






FSE 2004
Publikacja na konferencji Międzynarodowego Stowarzyszenia Badań Kryptologicznych (IACR) FSE 2004

Konferencje Enigma
Publikacje na Krajowej Konferencji Zastosowań Kryptografii Enigma w Warszawie

WCTT
Nagroda Wrocławskiego Centrum Transferu Technologii przy Politechnice Wrocławskiej

Software Developer's Journal
Rekomendowany projekt magazynu Software Developer's Journal























Copyright © 1999-2022 by Bartosz Żółtak
Aktualizacja: 07.04.2024