Certyfikat tajności

Im drożej, tym bezpieczniej

Przyjrzyjmy się kilku technicznym kwestiom, wpływającym na bezpieczeństwo implementacji.

Istotną kwestią jest wybór sposobu implementacji. Rozwiązania sprzętowe są bardziej odporne na penetrację i szybsze. Jednakże implementacje programowe umożliwiają szybsze i łatwiejsze wprowadzanie zmian, łatwo się je integruje z aplikacjami użytkownika i - co istotne - są tańsze. Jedną z metod wzmocnienia implementacji programowych jest wykorzystanie sprzętowych nośników kluczy. Wybór określonego nośnika wiąże się z kompromisem między bezpieczeństwem oferowanym przez dany nośnik a jego ceną.

Warto również wspomnieć, że wszystkie urządzenia elektroniczne (w tym komputery i drukarki, zwłaszcza igłowe) emitują fale elektromagnetyczne. Możliwe jest zbudowanie (z elementów dostępnych na rynku) urządzenia odczytującego dane wyświetlane na monitorze czy drukowane na drukarce w wyniku obróbki emitowanych fal elektromagnetycznych. Można zmniejszyć emisję poprzez zastosowanie odpowiednich osłon na komputery lub ekranowanie pomieszczeń. Informacje na ten temat można uzyskać np. w Wojskowym Instytucie Łączności w Zegrzu.

Innym aspektem rozróżniającym sprzętowe i programowe implementacje jest sposób generowania kluczy. Jest niezwykle istotne, by generowane liczby były nieprzewidywalne (aby nie można było przewidzieć wartości generowanych kluczy). Można to osiągnąć, stosując sprzętowy generator losowych bitów (Random Noise Generator lub Random Bit Generator, najczęściej oparty na zjawisku szumu w elementach elektronicznych), lub deterministyczny, programowy generator liczb pseudolosowych (Pseudo Random Number Generator). W tym drugim przypadku konieczne jest inicjowanie generatora ciągiem losowych bitów. W obu sytuacjach, jeżeli generator jest słaby, może w najgorszym przypadku generować jedynie kilka różnych kluczy, a wiedza o tym może uczynić atak na system trywialnym.

Oceniając konkretne rozwiązanie, należy wziąć pod uwagę jeszcze tzw. jego odporność na twórców. Rozumiemy pod tą cechą uzależnienie efektu szyfrowania od parametrów wprowadzanych do systemu przez użytkownika, a tym samym uniezależnienie się od stałych parametrów wbudowanych przez producenta. Inaczej mówiąc, postać przekształcenia, którym jest algorytm szyfrowy, musi w znacznym stopniu zależeć od kluczy - długoterminowych, krótkoterminowych lub sesyjnych - generowanych i używanych przez użytkownika. Przykładowo, system zawiera generator liczb pseudolosowych używany do generowania kluczy sesyjnych. Jeśli jest on słaby, informacja o tym dotrze do intruza próbującego złamać szyfr metodą ataku brutalnego (przeglądu wszystkich możliwych kluczy), to zapewne ułatwi mu tę pracę.

Ujawnione algorytmy

Czy stosować algorytmy powszechnie znane, czy tajne, których szczegółów firmy nie ujawniają? Obie opcje mają wady i zalety. Kryptografia cywilna, nazywana tak w odróżnieniu od kryptografii rządowo-wojskowej, gdyż nie jest stosowana przez agendy państwowe, rządzi się trochę innymi prawami. Ta druga zakłada tajność algorytmów, ale również właściwy stopień ochrony fizycznej urządzeń szyfrowych.

W instytucjach cywilnych i prywatnych - gospodarczych czy innych - trudno zakładać stawianie wysokich wymogów wobec pracowników w zakresie przestrzegania tajemnicy służbowej (instytucja państwowa) lub nieujawniania ważnych informacji (firma prywatna). Również stopień ochrony fizycznej może być różny - np. zależny od uczciwości agencji ochroniarskiej. Wobec tego zakłada się, że algorytm kryptograficzny nie zmieniany przez lata, zostanie wcześniej czy później ujawniony. Nie ma więc sensu utajnianie go. Tajne muszą pozostawać i być należycie chronione, okresowo zmieniane i niszczone klucze oraz hasła dostępu.

Paradoksalnie, ujawnienie algorytmu ma swoje dodatnie strony. Na świecie funkcjonuje od dwóch dziesięcioleci aktywne środowisko kryptologów cywilnych, którzy z zapałem pracują nad nowymi rozwiązaniami kryptograficznymi. Na wielu konferencjach - Crypto, EuroCrypt, AsiaCrypt, a ostatnio i PragoCrypt - prezentowane są nowe algorytmy i protokoły oraz krytykowane istniejące. W ten sposób ujawniono (często tego dnia, co ich prezentacja) słabości wielu algorytmów symetrycznych i asymetrycznych, np. tzw. algorytmów plecakowych.

Oczywiście, trzeba mieć świadomość, że pewne słabe miejsca nie zostaną ujawnione, ponieważ kryptolog, który je odkrył, pracuje dla firmy będącej właścicielem rozwiązania. Ale nie ma gwarancji, że inny żądny sławy naukowiec nie znajdzie rozwiązania, które poda do wiadomości. Utajnienie pewnych rozwiązań może w niektórych wypadkach jedynie opóźnić ich ogłoszenie. Przykładem jest wynalezienie kryptoanalizy różnicowej jako ataku na algorytmy blokowe. Po jej ogłoszeniu okazało się, że atak ten NSA znała wcześniej.

Dlaczego wobec tego wiele firm nie chce ujawnić użytkownikowi szczegółów swoich rozwiązań kryptograficznych? Nie należy zakładać, że z obawy pojawienia się krytycznych opinii dyskredytujących algorytmy, protokoły czy inne szczegóły techniczne, choć i tak też może być. Istotnym powodem jest zawsze niechęć firm przed ujawnianiem efektów czasem wieloletniej pracy specjalistów. Dobre systemy szyfrowe, wychodzące naprzeciw nowym wyzwaniom, jakie niesie rozwój telekomunikacji, nie powstają z dnia na dzień. Pamiętajmy, że DES, który został standardem szyfrowym w USA w roku 1975, był opracowany na zamówienie amerykańskiego National Bureau of Standards przez firmę IBM i oceniony przez NSA. Był to więc program niejako rządowy, a IBM nie stracił na tym, że ogłosił licencję na bezpłatne użytkowanie tego algorytmu. Trudno natomiast wyobrazić sobie, by ogłosiły swoje algorytmy inne firmy, choć powszechność pewnych rozwiązań, np. algorytmu A5 używanego w telefonach GSM, dziwi, iż szczegóły tego algorytmu nie zostały ujawnione.

-----

Janusz Cendrowski jest członkiem Normalizacyjnej Komisji Problemowej nr 182 w Polskim Komitecie Normalizacyjnym, zajmującej się zabezpieczaniem systemów i ochroną danych.

Koral Górski i Anna Zugaj są pracownikami Enigma System Ochrony Informacji Sp. z o.o. i Instytutu Telekomunikacji Politechniki Warszawskiej.


TOP 200