Dane dobrze wymieszane

Do częstego bądź ciągłego przesyłania danych przez sieci publiczne w sposób bezpieczny trzeba posłużyć się rozwiązaniami tunelującymi: IPsec lub SSL. Gdy dane przesyłane są sporadycznie, np. pocztą elektroniczną, można wykorzystać dedykowane programy szyfrujące - takie jak VMPC Data Security autorstwa Bartosza Żółtaka.

Do częstego bądź ciągłego przesyłania danych przez sieci publiczne w sposób bezpieczny trzeba posłużyć się rozwiązaniami tunelującymi: IPsec lub SSL. Gdy dane przesyłane są sporadycznie, np. pocztą elektroniczną, można wykorzystać dedykowane programy szyfrujące - takie jak VMPC Data Security autorstwa Bartosza Żółtaka.

Wlutym ub.r. donosiliśmy o Bartoszu Żółtaku i opracowanej przez niego funkcji jednokierunkowej VMPC oraz bazującym na niej wydajnym szyfrze strumieniowym o tej samej nazwie (CW 8/2004). Na przestrzeni ostatniego roku autor udoskonalił (wzmocnił) swój algorytm szyfrujący, wprowadzając do szyfru algorytm KSA-3 zabezpieczający poufność danych i klucza prywatnego użytkownika nawet w przypadku odnalezienia przez niepowołaną osobę klucza wewnętrznego, a więc po prostu - w przypadku złamania szyfru.

Niezależnie od prac nad samym szyfrem Bartosz Żółtak stworzył program pozwalający łatwo zaszyfrować dowolne pliki oraz treść dokumentów tekstowych za pomocą szyfru VMPC i algorytmu KSA3. Co ciekawe, aplikacja ta pozwala także trwale usuwać pliki z dysku poprzez ich wielokrotne (do 35 razy) nadpisanie losowymi ciągami bajtów. To całkiem niezła alternatywa dla popularnego pakietu PGP i jemu podobnych, a przy tym stworzona w całości w Polsce.

Zrób sobie klucz

VMPC Data Security Pro to niewielka aplikacja (pakiet instalacyjny zajmuje jedynie ok. 1,4 MB) dla komputerów biurkowych z 32-bitowym systemem Windows 98/2000/XP/2003. Pracę z programem rozpoczyna się od wygenerowania klucza prywatnego i już tu napotyka się wiele użytecznych opcji. W zależności od preferencji użytkownik może wybrać długość klucza z przedziału od 8 do 512 bitów. Wartością domyślną jest 128 bitów.

Użytkownik ma także możliwość wskazania zakresu znaków, z których generowany będzie klucz prywatny - oprócz cyfr (od 0 do 9) można wskazać małe litery (od a do z) oraz duże litery (od A do Z). Oczywiście, im większy zakres, tym lepiej - z przeprowadzonych w redakcji testów wynika, że długość klucza i zakres jego wartości nie wpływa istotnie na szybkość szyfrowania/deszyfrowania danych, nawet w przypadku większych zbiorów.

Samo generowanie klucza prywatnego odbywa się na podstawie trzech parametrów: (1) zmian pozycji wskaźnika myszy na specjalnie do tego przeznaczonym białym polu, (2) wektora opartego na czynniku czasu mierzonego z dokładnością do tysięcznej części sekundy oraz (3) generowanego ad hoc ciągu losowego. W zależności od długości klucza i intensywności ruchów wykonanych przez użytkownika generowanie klucza trwa od kilku do kilkunastu sekund. Przed rozpoczęciem procesu generowania klucza użytkownik ma możliwość włączenia lub wyłączenia opcji wyświetlania klucza na ekranie komputera. W przypadku obaw o podejrzenie przez osoby trzecie lub przechwycenie klucza przez oprogramowanie szpiegujące skanujące pamięć karty graficznej, z opcji tej korzystać raczej nie należy. Klucz można także wydrukować, co jednak również nie jest specjalnie bezpieczne, biorąc pod uwagę, że system Windows przez pewien czas buforuje pliki wydruku na dysku.

Najlepiej klucz zaraz po wygenerowaniu zapisać w niezależnym od komputera nośniku - dyskietce lub pamięci Flash. Program - co również jest bardzo użyteczne - proponuje zapisanie od razu pięciu kopii klucza (można zrobić więcej) z wybranym przez użytkownika odstępem w kilobajtach. To zabezpieczenie na wypadek uszkodzenia dyskietki lub pamięci Flash. Każda kopia klucza jest ponadto zapisywana z własnym nagłówkiem, umożliwiającym odzyskanie go, gdyby uszkodzeniu uległa tablica systemu plików nośnika.

Użyteczne opcje

Gdy klucz jest zapisany, można przystąpić do wyboru opcji szyfrowania. Program oferuje dwa tryby pracy: z plikami oraz z tekstem. Klikając przycisk Dodaj pliki lub wciskając na klawiaturze przycisk Insert, użytkownik zobaczy na ekranie okno dialogowe pozwalające wskazać lokalizację plików do zaszyfrowania. Pliki można wybierać z różnych dysków i katalogów. Wybranie katalogu powoduje oznaczenie "do szyfrowania" całej jego zawartości. Wszystkie wybrane pliki trafiają na jedną listę, którą można jeszcze na spokojnie przejrzeć i ewentualnie usunąć te elementy, które znalazły się na liście przez przypadek.

Zanim szyfrowanie plików zostanie rozpoczęte, użytkownik ma możliwość zdecydowania, klikając odpowiednie opcje, czy przed zaszyfrowaniem pliki mają zostać skompresowane. W przypadku plików tekstowych ma to sens, w przypadku plików skompresowanych, jak zdjęcia w formacie JPG czy filmy, raczej nie. Druga opcja pozwala na wymazanie oryginalnych plików po zakończeniu szyfrowania. Nie chodzi tu bynajmniej o przeniesienie plików do systemowego kosza, lecz o ich rzeczywiste, nieodwracalne wymazanie z dysku.

Szyfr z polisą

O tym jak działa szyfr VMPC pisaliśmy w CW 8/2004. Posiada on algorytm inicjowania klucza (KSA), który - na podstawie klucza prywatnego i stworzonego na bazie czynnika czasu wektora inicjującego - generuje swój klucz wewnętrzny. Klucz ten służy do generowania ciągu pseudolosowego mieszanego bezpośrednio z danymi podlegającymi szyfrowaniu. Wektor jest jawny, ale musi być inny dla każdej szyfrowanej wiadomości. Typowe jest również to, że jeśli atakujący złamie szyfr (wg autora szyfru wymaga to średnio 2900 operacji), a więc odnajdzie wartość klucza wewnętrznego, to bez problemu będzie mógł zdeszyfrować inne wiadomości zaszyfrowane tym samym kluczem prywatnym.

Nie ma w tym nic niezwykłego - jeśli szyfr zostaje złamany - treść wiadomości szyfrowanych za jego pomocą można odczytywać. Złamanie szyfru można jednak utrudnić, wprowadzając jeden dodatkowy krok do algorytmu inicjowania klucza i to właśnie jest istotą algorytmu inicjacji klucza VMPC-KSA3. W algorytmie tym, po utworzeniu klucza wewnętrznego na podstawie klucza prywatnego i wektora inicjującego, wynikowy klucz wewnętrzny jest dodatkowo przekształcany przy użyciu klucza prywatnego. Dopiero wynik tego przekształcenia jest wykorzystywany do wygenerowania ciągu pseudolosowego mieszanego z danymi.

Dzięki temu dodatkowemu krokowi - sterowanemu tajną wartością klucza prywatnego - odwrócenie funkcji VMPC-KSA3 jest niemożliwe. Tym samym atakujący, który złamał szyfr i poznał wartość klucza wewnętrznego, nie jest w stanie wykorzystać go do zdeszyfrowania żadnej innej wiadomości. Dzieje się tak, ponieważ każda inna wiadomość szyfrowana jest innym wektorem inicjującym, którego nawet drobna zmiana wpływa zasadniczo na postać wynikowego klucza wewnętrznego.

Algorytm VMPC-KSA3 jest zatem matematycznym ubezpieczeniem od złamania szyfru. Aby atakujący złamał cały kryptosystem, musi bowiem nie tylko złamać szyfr VMPC, ale dodatkowo odwrócić funkcję VMPC-KSA3, co może się okazać bardziej złożone obliczeniowo niż samo złamanie szyfru.

Dokumentację algorytmu VMPC-KSA3 można także znaleźć na stronie:http://www.VMPCfunction.com w artykule "Security of Symmetric Encryption Schemes with One-Way IND-CNA Key Setup".

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200