haker - ehaker.com


Login

Hasło

--Wstęp--
--Artykuły--
--Archiwa--
--Bios--
--Edytory--
--Systemowe--
--Poczta--
--Gwiazdki--
--Serwery--
--Inne--
--Członkostwo--
--Linki--
--Wyszukiwarka--
--Wyszukiwarka--
--Wyszukiwarka--
www.ehaker.com
mail@ehaker.com
brak


Szyfrowanie

 
        Znanym technicznie oraz możliwym do zastosowania przy wyszukiwaniu informacji jest funkcja skrótu zwana też Jednokierunkową Funkcją Hashującą. 
Zadaniem jednokierunkowych funkcji hashujących jest stworzenie unikatowego skrótu informacji. Funkcje te powinny generować różne skróty, dla różnych danych wejściowych. Wymaga się również, aby było praktycznie niemożliwe odnalezienie takiej pary danych wejściowych, dla której otrzymany skrót byłby identyczny. Funkcja spełniająca takie kryteria nazywana jest silnie bezkonfliktową. Obecnie żadnej funkcji hashującej nie udowodniono jednokierunkowości, ale przypuszcza się, że niektóre posiadają taką właściwość. Jedną z takich funkcji, jest metoda Chaum-Van Heijst-Pfitzmann. Bazuje ona na trudności w obliczaniu dyskretnych logarytmów. Jednak ze względu na jej skomplikowanie, a zarazem trudność obliczenia, w praktyce stosuje się inne, łatwiejsze do zrealizowania. Przykładem takiej funkcji jest MD5. Autorem jej jest R. Rivest. Funkcja ta przekształca dowolny 512-bitowy ciąg na 128-bitowy. 
Nie są znane żadne matematyczne podstawy zastosowanego algorytmu, nie mamy więc pewności czy nie istnieje sposób jej obejścia choć dotychczasowe badania tego nie wykazały. Algorytm ten stał się podstawą dla amerykańskiej standardowej funkcji hashującej - Secure Hash Algorithm (SHA), która jest jednym z głównych składników Digital Secure Algorithm (DSA), czyli amerykańskiego standardu podpisów cyfrowych. W rzeczywistości SHA jest jedynie nieznaczną modyfikacją MD5. W trakcie działania MD5, dokonywane są jedynie proste operacje, takie jak suma i iloczyn logiczny oraz negacja. Algorytm ten operuje na 32-bitowych blokach w cztero-rundowym cyklu. W celu hashowania danych dłuższych niż 512-bitów stosuje się techniki podobne do stosowanych w algorytmach szyfrujących (np. Cipher Block Chaining). Stosując więc funkcję skrótu jako indeks w celu wyszukiwania danych z bazy o powyższej złożoności zawężamy ilość przeszukiwanych informacji do porównania 128 bitów w 5 milionach rekordów, co daje nam 128*5mln=640 mln operacji porównawczych. Wadą tej metody jest czas generowania skrótów oraz brak manewrowania długością skrótu. Np. dla omawianej bazy danych wystarczyłaby funkcja skrótu o długości 23 bitów (ilość rek.< 223).Filtrowanie bazy (wyszukiwanie indeksu) trwałoby więc do 6 razy krócej. Wiemy jak ważny jest sposób dystrybucji bardzo ważnych informacji, a taką jest niewątpliwie kod genetyczny. W celu bezpiecznej dystrybucji bardzo ważnych informacji stosuje się algorytmy szyfrujące. Algorytmy te dzielimy na symetryczne i asymetryczne. 
Algorytmy asymetryczne (klucz publiczny do szyfrowania i klucz prywatny do odszyfrowywania powiązane ze sobą poprzez przekształcenia matematyczne) nie są bezpieczne do dystrybucji bardzo ważnych informacji ponieważ opierają się na założeniu, iż niemożliwy jest rozkład dużych liczb na czynniki pierwsze w czasie wielomianowym (sensownie krótkim), a niemożność tego rozkładu nigdy nie została udowodniona. Symetryczne metody szyfrowania charakteryzują się tym, iż używają tego samego klucza do szyfrowania i deszyfrowania danych. Najpopularniejszym obecnie symetrycznym algorytmem szyfrującym jest DES (DATA ENCRYPTION STANDARD). W algorytmie tym szyfrowaniu poddawane są 64 bitowe bloki, co dokładnie odpowiada 8 znakom w kodzie ASCII, przy czym każdy znak posiada bit parzystości. Klucz stosowany do szyfrowania ma długość 56 bitów. Dyskusyjną sprawą jest więc bezpieczeństwo danych przy użyciu tak krótkiego klucza. Szyfrowanie odbywa się w 16 rundach polegających na wykonaniu identycznych działań, jednak kolejne działania przeprowadzane są na danych otrzymanych z poprzedniej rundy. Dokonywana jest również odpowiednia permutacja danych przed rozpoczęciem rund oraz permutacja odwrotna po ich zakończeniu. W każdej z 16 rund wykorzystywany jest inny 48 bitowy podklucz. Generowany jest on z głównego klucza, z którego po odrzuceniu bitów parzystości powstaje 16 różnych kluczy, które składają się z góry określonych bitów tego klucza. W każdej rundzie wykonywana jest ta sama funkcja, pobierająca dwa 32 bitowe ciągi będące wynikiem działania poprzedniej rundy. Funkcja ta realizowana jest w kilku krokach. Z jednego 32 bitowego ciągu tworzony jest ciąg 48 bitowy. Dokonywane jest to przez zdublowanie niektórych bitów, co wydłuża ciąg do żądanej długości. Następnie na otrzymanym ciągu wykonywana jest operacja XOR przez 48 bitowy podklucz przyporządkowany danej rundzie. Wynik dzielony jest na 8 6-bitowych grup, które poddawane są działaniu S-boksu. Jako wynik działania S-boksu otrzymujemy 32 bitowy ciąg bitów, który jest permutowany. S-boksy, są to macierze o rozmiarach 4 na 16, które zawierają liczby z przedziału <0,15. Argumentem dla S-boksu jest 6 bitowy ciąg. Dwa skrajne bity wyznaczają numer wiersza, a 4 środkowe bity wskazują numer kolumny. Wynikiem działania S-boksu jest 4 bitowa wartość pobrana z odpowiedniej komórki. Właściwie skonstruowane S-boksy umożliwiają realizację efektu lawinowego (bardzo podobne dane mają zupełnie inny kryptogram), co skutecznie utrudnia kryptoanalizę. W celu odszyfrowania kryptogramu, stosuje się te same kroki, które były zastosowane podczas szyfrowania, tyle, że w odwrotnej kolejności. Jedynie proces działania S-boksów nie może być odwrócony, w związku z tym wykorzystuje się odpowiednie równanie, wykorzystujące zależności pomiędzy poszczególnymi rundami szyfrowania. DES doczekał się również implementacji sprzętowej, która jest zdecydowanie bardziej wydajna (około 1000 razy) niż programowa. Istnieją różne modyfikacje DES'a, które są wprowadzane ze względu na pewne przypuszczenia, co do istnienia luki w tym algorytmie. Odpowiednie modyfikacje mogą całkowicie uniemożliwić jej wykorzystanie. Przykładem modyfikacji DESa jest DESX. Wykorzystuje on aż 3 klucze do zaszyfrowania 64-bitowego bloku, co skutecznie utrudnia kryptoanalize. Inna modyfikacja DESa to 3DES (trzykrotny DES). Do zaszyfrowania tekstu jawnego stosowane są 2 klucze. Pierwszy klucz szyfruje informacje. Wynik szyfrowania jest deszyfrowany drugim kluczem, a kolejną operacją jest zaszyfrowanie ponowne kluczem pierwszym. Ze względu na to, że DES potrafi szyfrować tylko bardzo małe, 64-bitowe bloki, zastosowano różne metody starające się umożliwić szyfrowanie dłuższych danych. Jedną z tych metod jest Electronic Codebook (ECB). W celu zaszyfrowania długiego tekstu, dzielony jest on na małe bloki, każdy blok szyfrowany jest tym samym kluczem. Sposób ten jest jednak bardzo podatny na ataki, więc nie jest powszechnie stosowany. Kolejną metodą jest Cipher Block Chaining (CBC). W metodzie tej wprowadzono zależności miedzy poszczególnymi blokami. Kolejny blok poddawany szyfrowaniu powiązany jest z poprzednio zaszyfrowanymi blokami, więc temu samemu tekstowi jawnemu odpowiadać będzie inny kryptogram. Jednak zastosowanie takiego sposobu ogranicza wykorzystanie go do szyfrowania np. baz danych, ze względu na to, że nie można usunąć pojedynczego bloku z kryptogramu. Każda ingerencja w kryptogram powoduje niemożliwość prawidłowego odszyfrowania wszystkich kolejnych bloków W Cipher Feedback (CFB) stosowany jest odmienny sposób na szyfrowanie długich informacji. Szyfrowaniu może zostać poddany pojedynczy bit, lub np. bajt. Umożliwia to szyfrowanie strumienia danych, bez konieczności oczekiwania na zgromadzenie bloku o konkretnej długości. W celu zaszyfrowania danych tą metoda, należy wygenerować krótki ciąg, zawierający losowe liczby. W przypadku, gdy w CFB do stworzenia kryptogramu będzie wykorzystywany DES, ciąg ten nie może przekraczać 64 bitów. Następnie poddawany jest on szyfrowaniu przy użyciu stałego klucza. Z kryptogramu pobieranych jest tyle początkowych bitów, ile wynosi długość obranego bloku (w tym przypadku długość nie może przekraczać 64 bitów), a następnie wykonywana jest operacja XOR z kolejną porcją niezaszyfrowanych danych. Wynik przekazywany jest na wyjście. Cały początkowy ciąg przesuwany jest o obraną liczbę bitów w lewo, a z prawej strony ciągu umieszczane są dane, które trafiły na wyjście. W celu odszyfrowania danych dokonywana jest zamiana roli wejścia i wyjścia. Innym powszechnie stosowanym szyfrującym algorytmem symetrycznym jest IDEA. Dyskusyjną sprawą jest jego bezpieczeństwo, ze względu na to, że jest to bardzo młody algorytm (opracowany w latach dziewięćdziesiątych). W stosunku do DESa, liczba bitów stosowana w kluczu wynosi 128, co zapewnia teoretycznie bardzo duże bezpieczeństwo danych. Podobnie jak w DESie, szyfrowaniu poddawane są 64 bity tekstu jawnego. Samo szyfrowanie składa się z 8 rund, które operują na czterech blokach po 16 bitów. Podczas szyfrowania bloków, z głównego 128 bitowego klucza, tworzonych jest 6 podkluczy, które wykonują różne operacje na danych. Każda runda wykorzystuje inny zestaw podkluczy, który jest generowany za pomocą prostych cyklicznych przesunięć głównego klucza. Dodatkowo po ostatniej rundzie dokonywane jest finalne przekształcenie za pomocą 4 nowych kluczy. Jednym z najmłodszych algorytmów symetrycznych jest RC5. Został on stworzony przez R. Rivesta w 1994 r. Cechą charakterystyczną tego algorytmu, jest to, że parametry szyfrowania mogą być praktycznie dowolnie określone przez użytkownika. Kontroli podlegają takie parametry jak liczba rund, długość szyfrowanego bloku i rozmiar klucza. Ciągi losowe charakteryzują się tym, że każdy wyraz ciągu losowany jest z takim samym prawdopodobieństwem, tzn. występuje w tym ciągu tyle samo 0 co 1; losowanie kolejnych wyrazów ciągu jest niezależne od już otrzymanych. Ciągi losowe mają bardzo duże zastosowanie w algorytmach szyfrujących - np. one-time pad, RSA, podpisach cyfrowych, protokołach kryptograficznych. Otrzymanie takich ciągów jest jednak rzeczą bardzo czasochłonną, dlatego w wielu zastosowaniach wykorzystywane są ciągi pseudolosowe, dające się wygenerować za pomocą różnych algorytmów. Ciągi te jednak nie dają całkowitej losowości, gdyż nie spełniają kryteriów ciągów losowych. Zazwyczaj jedynie ziarno ciągu pseudolosowego jest liczbą losową wygenerowaną za pomocą różnych metod (np. mierzenie czasu pomiędzy kolejnymi naciśnięciami klawiszy na klawiaturze). Każdy kolejny element ciągu zależy w bardzo dużym stopniu od swoich poprzedników. W kryptografii, od ciągów pseudolosowych wymaga się by były nierozróżnialne i nieprzewidywalne. Nierozróżnialność polega na tym, iż wygenerowanego ciągu pseudolosowego nie można odróżnić od ciągu losowego. Wymaganie to powstało ze względu na to, że generator pseudolosowy generujący ciągi bitów o długości l, wykorzystując ziarno o długości k (k>0,1/2^l). Generator losowy, zawsze generuje ciągi z prawdopodobieństwem 1/2^l. Jednak w związku z tym, że generator losowy potrafi wygenerować każdy ciąg, nie można jednoznacznie odróżnić go od pseudolosowego. Nieprzewidywalność jest cechą, która ma zagwarantować to, że bez znajomości ziarna, nie jesteśmy w stanie określić kolejnych wyrazów ciągu pseudolosowego, mając do dyspozycji poprzednie wyrazy tego ciągu. Jednym z najpopularniejszych generatorów pseudolosowych jest Linear Feedback Shift Register (LFSR) . Popularność swoją zdobył ze względu na szybkość działania, ale pod kątem kryptograficznym, generowane ciągi są nie do przyjęcia. Algorytm ten opiera się na przesunięciach bitowych i prostej operacji XOR. Shrinking LFSR jest to modyfikacja poprzedniego algorytmu wykorzystująca 2 układy LFSR. Algorytm ten jest również bardzo szybki i posiada dużo lepsze właściwości pod względem kryptograficznym. W celu wygenerowania ciągów pseudolosowych stosowane są również algorytmy szyfrujące. Przykładem może być wykorzystanie takich algorytmów szyfrujących jak DES, RSA, czy też modyfikacja generatora RSA - Blum-Blum-Snub (BBS). Ostatnia wymieniona metoda jest co prawda zdecydowanie wolniejsza od algorytmów typu LFSR, jednak posiada mocne podstawy teoretyczne, przez co otrzymane ciągi pseudolosowe posiadają zdecydowanie lepsze właściwości.

Opracował: Bogdan Tomaszewski
Źródło:
http://www.gck.pl/szyfrowanie.htm

W razie problemów z działaniem serwisu:
admin@ehaker.com

Artykuł
  Jak zapewnić bezpieczne przesyłanie danych w sieci Internet ?
 
Artykuł
  Szyfrowanie plików w Windows 2k/XP (Encrypting File System)
 
Artykuł
  Kryptografia
Masz jakiś materiał dotyczący łamania haseł ?

program lub opis

Wyślij go na adres
e-mail: mail@ehaker.com
Co byś chciał zobaczyć w serwisie ?
   Phreak
   Podsłuch
   Dekodery
   Mail
   Inne
Wpisz szukane pojęcie ?
google.com

© 2003-2008 ehaker.com

test1| test2