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


Algorytmy asymetryczne.

 
       Cechą charakterystyczną algorytmów asymetrycznych jest to, iż do procesu szyfrowania oraz deszyfrowania wykorzystywana jest para kluczy, z których jeden jest kluczem prywatnym (tajny), a drugi publicznym (jawnym). Jeden z kluczy wykorzystywany jest do szyfrowania a drugi do deszyfrowania danych choć nie jest to regułą co zobaczymy na przykładzie jednego z opisywanych tu algorytmów.

RSA

Zaprezentowany w 1978r. algorytm RSA jest tym dla algorytmów asymetrycznych czym DES dla algorytmów symetrycznych. Nazwa pochodzi od pierwszych liter nazwisk jego twórców a mianowicie Rivesta, Shamira oraz Adlemana. W odróżnieniu od np. algorytmu DES, RSA może operować na dowolnie ustalanej przez użytkownika długości klucza. Z uwagi na swą konstrukcję RSA wymaga wielu operacji arytmetycznych co wydatnie wydłuża czas operacji szyfrowania i deszyfrowania. W stosunku np. do DES`a jest to 100-1000 krotnie mniejsza szybkość. Cecha charakterystyczną dla RSA jest przemienność kluczy stosowanych do szyfrowania i deszyfrowania co wynika z faktu, iż funkcje szyfrująca i deszyfrująca są identyczne.

Algorytm RSA opiera swą siłę na trudności rozkładu liczb na czynniki pierwsze. W pierwszej kolejności dokonywany jest wybór kluczy. Polega on na tym, że wybieramy losowo dwie duże liczby pierwsze p i q. Jest to nieco kłopotliwe ze względu na wielkość liczb. Dokonanie rozkładu na czynniki pierwsze wylosowanych liczb dałoby jednoznaczną odpowiedź czy mamy do czynienia z liczba pierwszą czy też nie, jednak przy tej wielkości liczb jest to praktycznie niemożliwe. Stosuje się zatem testy pierwszości losowanych liczb, które to test nie korzystają z rozkładu na czynniki pierwsze. Test taki mówi tylko o tym, czy mamy do czynienia z liczba złożoną jednak bez 100% pewności czy rzeczywiści tak jest. Wszystkie znane testy są testami probabilistycznymi czyli wynik ich działania jest obarczony pewnym, niewielkim błędem, na przykład test Fermata.

Test Fermata nie daje niestety jednoznacznej odpowiedzi co do liczb pseudopierwszych (zwane liczbami Carmichaela), które to liczby w tym teście dają wynik pozytywny, natomiast liczbami pierwszymi nie są, chociażby liczba 561. Na szczęście nie ma tych liczb zbyt wiele, co zadecydowało o tym iż test Fermata jest wykorzystywany praktycznie, chociażby w popularnym pakiecie PGP. Pewne modyfikacje testu Fermata czynią z niego prawdziwy test probabilistyczny. Najpopularniejszymi odmianami są testy Solovay`a-Strassena czy Millera-Rabina, które dają jednoznaczną odpowiedź na temat pierwszości badanej liczby.

Mając już wylosowane dwie duże liczby pierwsze p i q wybieramy losowo liczbę e taką, aby e oraz (p-1)(q-1) były liczbami względnie pierwszymi. Wykonuje się to w ten sposób, że obliczamy największy wspólny dzielnik da e oraz (p-1)(q-1) aż do momentu wylosowania właściwej liczby e. Kolejnym etapem jest znalezienie przy pomocy algorytmu Euklidesa liczby d takiej, że e*d = 1 mod (p-1)(q-1). Obliczamy liczbę n, która jest iloczynem liczb p i q i kasujemy znalezione wcześniej liczby p i q tak, by nie pozostał po nich żaden ślad. Należy dodać, że (p-1)(q-1) jest wartością funkcji Eulera j (n).Teraz mamy już wszystkie składniki naszych kluczy, bo [e,n] jest naszym kluczem publicznym, natomiast [d,n] jest kluczem prywatnym.

Szyfrowanie przy pomocy RSA odbywa się w sposób matematyczny, oznacza to, iż nasz tekst jawny taktowany jest jako liczba zapisana w postaci binarnej. Ograniczeniem jest to, że liczba ta musi być mniejsza od naszej liczby n, przypomnijmy, iloczynu naszych dwóch dużych liczb pierwszych. Załóżmy że nasz tekst jawny w postaci binarnej oznaczymy jako t.

Szyfrowanie tekstu jawnego t ma postać: te mod n = k

Uzyskany wynik tej funkcji jest naszym kryptogramem k.

Deszyfrowanie kryptogramu k ma postać: kd mod n = t

Jak widać obie funkcje są identyczne o czym wspominałem na początku. Oznacza to zamienność kluczy w zastosowaniach algorytmu RSA.

Algorytm ElGamala

Algorytm ElGamala bazuje na trudności obliczenia tzw. dyskretnych logarytmów. Szyfrowanie za każdym razem wykorzystuje losowo wybraną liczbę, co powoduje, że ten sam tekst jawny może być w różny sposób zaszyfrowana. Ten algorytm określa jednoznacznie który z pary kluczy do czego ma służyć. Klucz publiczny służy do szyfrowania, natomiast prywatny do deszyfrowania danych. Nie istnieje tu zamienność kluczy tak jak było to w przypadku algorytmu RSA. Cechą charakterystyczną i niekiedy wadą jest to, że kryptogramy uzyskiwane w wyniku algorytmu ElGamala są dwukrotnie dłuższe od tekstu jawnego.

Na początek przyda się wyjaśnienie pojęcia dyskretnego logarytmu, a więc w zasadzie najważniejszego elementu całego algorytmu.

Przeprowadźmy następujące założenia:

Niech p będzie liczbą pierwszą, natomiast a generatorem Z p ( dla każdej liczby x większej od 0 i mniejszej od p istnieje taka liczba i dla której zachodzi zależność x = a i mod p ). Trudność dyskretnego logarytmu polega na znalezieniu dla danego b większego od 0 i mniejszego od p liczby itakiej, że a i = b mod p.

Musi być spełniony dodatkowy warunek, mianowicie liczba p musi być wystarczająco duża, w praktyce co najmniej 150 cyfrowa oraz to aby liczba p-1 miała co najmniej jeden duży czynnik pierwszy.

Elementami algorytmu ElGamala są liczba pierwsza p przy czym liczba ta obostrzona jest warunkami wymienionymi powyżej a obliczenie dla niej logarytmu modulo p jest praktycznie niemożliwe, następnie generator a dla Z p oraz liczby t i b, przy czym t musi być mniejsze od p-1, natomiast b = a t. Na klucz publiczny składają się liczby p, a oraz b . Kluczem prywatnym jest liczba t.

Szyfrowanie algorytmem ELGamala odbywa się w oparciu o powyższe dane. Powiedzmy, że chcemy zaszyfrować tekst jawny T. Długość tego tekstu musi być mniejsza od liczby p. Wybieramy losowo liczbę k<p, następnie obliczamy c1=a k mod p oraz c2=T*b k mod p. otrzymana para c1, c2 jest naszym kryptogramem tekstu jawnego T.

Deszyfrowanie odbywa się w następujący sposób: zwróćmy uwagę na zależność:

c2 * (c1t)-1 = T * b k * (a kt)-1 = T * a kt * (a kt) = T mod p. Oczywiście osoba, która deszyfruje dane zna liczbę t i jest w związku z tym w stanie wyznaczyć liczę c2 * (c1t)-1 mod p a tym samym liczę T, czyli nasz tekst jawny.

Źródło:
http://panda.tu.koszalin.pl/AI/zabezpieczenia/krypt2/kryptografia.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