Jako że rozwiązania VPN wykorzystują sieci publiczne, dużym nietaktem byłoby pominąć fakt, że taka transmisja jawna, otwarta jest narażona na podsłuch i manipulacje. Obecnie w znacznej większości przypadków transmisja ta jest szyfrowana przy użyciu odpowiednich technik kryptograficznych. Dane są przekształcane w celu zapewnienia:

  • Poufności
  • Integralności
  • Uwierzytelnianie źródła
  • Niezaprzeczalności otrzymanych danych [1]

Szyfrowanie może odbywać się programowo i jest to rozwiązanie tańsze, łatwiej dostępne. Do zastosowań specjalnych (np. wojskowych) używa się szyfratorów programowych, posiadających odpowiednie certyfikaty jakości.

2.1 Szyfry symetryczne i asymetryczne

Regularne techniki kryptografii zakładają używanie takiego samego klucza do szyfrowania i deszyfrowania danych. Wartość takiego klucza nie może być jawna dla osób trzecich. Takie rozwiązanie określamy mianem szyfrowania symetrycznego. Algorytmy które je wykorzystują możemy podzielić na:

  • Blokowe – szyfr jest funkcją tylko jednej obecnie przetwarzanej wiadomości ( AES, DES,3DES,RC2,RC5)
  • Strumieniowe – szyfr jest wynikiem wszystkich wiadomości poprzedzających (RC4, A5).

Rysunek 2.1 Przykład szyfrowania symetrycznego [opracowanie własne na podstawie publikacji internetowej Instytutu Sterowania i Elektroniki Przemysłowej Politechniki Warszawskiej[2]]

Jakość takiego szyfru jest wprost proporcjonalna od jego odporności na krypto analizę, szczególnie na atak siłowy (ang. brute force). Szybkość w jakiej klucz może zostać odgadnięty metodą siłową zależy w znacznej mierze od długości klucza.

Inną techniką jest szyfrowanie przy użyciu publicznego klucza jawnego, które określamy mianem szyfrowania asymetrycznego. W takim układzie nadawca i odbiorca posiadają dwa klucze – publiczny (jawny) i prywatny (tajny). Klucze są od siebie matematycznie zależne.

Rysunek 2.2 Przykład szyfrowania asymetrycznego [opracowanie własne na podstawie publikacji w serwisie szyfrowanie.estrefa.net[3]]

Najpopularniejsze systemy to algorytm RSA, wymyślony w 1978 r. przez Ronalda Rivesta, Adi Shamira i Leonarda Adlemana oraz algorytmy bazujące na krzywych eliptycznych (Neal Koblitz i niezależnie Victor S. Miller w roku 1985) .

Wadą tego rozwiązania jest stosunkowo niska szybkość działania (wg danych z RSA Laboratories w przypadku szyfrowania programowego DES jest min.100 razy szybszy od RSA, natomiast przy użyciu szyfratora sprzętowego wartość ta wynosi 1000-10000 [4]). Istnieją jednak rozwiązania, które wykorzystują szyfr asymetryczny tylko w pierwszej fazie nawiązywania połączenia, aby zapewnić poufność wymiany tajnego klucza, a następnie przeprowadzają regularną wymianę danych wykorzystując szyfr symetryczny.

2.2 Algorytm Diffiego-Hellmana

Jest bardzo istotnym rozwiązaniem wykorzystywanym przy negocjacji kanału wymiany bezpiecznej informacji. Algorytm nie służy bezpośrednio do szyfrowania informacji. Jego zadaniem jest wyznaczenie klucza tajnego pomiędzy dwoma stronami kanału komunikacyjnego bez uprzedniej wymiany niejawnych informacji[5].

Rysunek 2.3 Działanie algorytmu Diffiego-Hellmana [opracowanie własne na podstawie grafiki w serwisie algorytm.org autorstwa Marka Rudolfa[6]]

Tak wyznaczony klucz może być wykorzystywany do szyfrowania danych przy pomocy innych systemów szyfrowania z kluczem tajnym (RC4, DES).

Bazując na materiałach firmy Microsoft: „Algorytm Diffiego-Hellmana (DH) jest jednym z najstarszych i najbezpieczniejszych algorytmów używanych do wymiany kluczy[7].”

2.3 Funkcje skrótu

Są niezwykle istotne w procesie wymiany informacji narażonym na podsłuch lub manipulację. Pozwalają one na zapewnienie integralności przesyłanych danych. Istotą ich działania jest utworzenie określonej, stałej długości łańcucha z danych które otrzymujemy w taki sposób, aby mając zakodowany skrót wiadomości nie można było wykonać operacji odwrotnej i poznać treści wiadomości. Algorytmy takie określamy mianem jednokierunkowej funkcji skrótu. Do najpopularniejszych należą MD2 i MD5 (Ronald Rivest) oraz SHA i SHA-1 (amerykańskie NSA oraz NIST).

Aby zapewnić dodatkowe uwierzytelnienie źródła danych, można zastosować operację HMAC (hashing message authentication code). Polega ona na tym, że hashowaniu poddajemy wiadomość wraz z tajnym kluczem, które znają dwie strony kanału komunikacji.

Rysunek 2.4  Przykład generowania skrótu z wykorzystaniem funkcji HMAC [opracowanie własne na podstawie artykułu Cisco Press[8] ]

 

 

 

Przyjmijmy, że wysyłamy istotną wiadomość o treści:

witam,

Zgodnie z umową proszę o przelanie kwoty 1 mln zł. na konto:

58 1020 1000 0000 5235 2122 1799

I dołączamy do niej skrót wiadomości wygenerowany algorytmem MD5 (skrót warto wysłać innym kanałem komunikacji np.SMS, aby nie mógł zostać przechwycony i łatwo powiązany z tą wiadomością). Skrót ten ma postać:

md5:   55f5cf60e5af06eda1fc4aa292ef8a8d

Jeżeli osoba niepowołana zmieni nawet jedną cyfrę w numerze konta (a w praktyce więcej), skrót MD5 tej wiadomości ma zupełnie inną postać i możemy szybko wychwycić próbę wyłudzenia. Dla przykładu zmieniłem pierwszą cyfrę w numerze konta bankowego „5” na wartość „1” i  otrzymałem następujący skrót:

md5:   06fbed4f0755f7815a90cd88c1f7885f

Wartość funkcji skrótu pierwszej i drugiej różni się znacząco. Porównując wartości, możemy stwierdzić, że doszło do manipulacji przesłanej informacji.

2.4 Podpisy cyfrowe, certyfikacja

Stosowanie funkcji skrótów wraz z tajnym kluczem HMAC w zastosowaniach codziennych jest zbyt kłopotliwe ze względu na konieczność wymiany klucza HMAC. Dlatego też powszechnie zaczęto stosować tzw. Podpisy cyfrowe. Jest to odpowiednio przygotowany ciąg znaków, który służy to potwierdzania autentyczności przesłanej wiadomości. Obecnie najczęstszym schematem jego użycia jest szyfr asymetryczny z kluczem publicznym i funkcją skrótu.

Potwierdzenie autentyczności polega na zaszyfrowaniu własnym kluczem, korzystając z klucza publicznego nadawcy treści wiadomości. Jeżeli skrót wiadomości który wygenerowaliśmy jest taki sam jak skrót który przesłał nam nadawca, możemy założyć że jest to osoba zaufana.

Rysunek 2.5 Schemat wykorzystania podpisu cyfrowego [opracowanie własne]

Jak sprawdzić czy dany podpis jest autentyczny? Wystarczy wysłać zapytanie do organu nadrzędnego, który wystawia certyfikaty i odpowiada za ich prawdziwość, czyli do urzędu certyfikacji CA (Certificate Authority). Jest to zaufana instytucja odpowiedzialna za dystrybuowanie kluczy publicznych dla użytkowników[9].

System ten nosi nazwę X.509 i jest w tej chwili najchętniej wykorzystywanym, ponieważ w przeciwieństwie do PGP, istnieje jednoznaczna odpowiedzialność, łatwiejsza do osadzenia w prawie i na tym systemie bazowane jest polskie prawodawstwo o podpisie elektronicznym.

Prace nad infrastrukturą kluczy PKI w Polsce rozpoczęto w 1993r, zaś pierwszy urząd certyfikacji w naszym kraju uruchomiono w roku 1998.[10]

PGP jest systemem bez organu centralnego, a poziom zaufania do klucza jest zależny od liczby osób, które uznały ten klucz za autentyczny. Stosuje się go w środowiskach korporacyjnych.



[1] M. Stawowski Projektowanie i praktyczne implementacje sieci VPN, Warszawa 2004, ArsKom s.14

[2] Źródło internetowe: http://www.isep.pw.edu.pl/~slawekn/info1/lekcja7/segment4.htm

[3] Źródło internetowe: http://szyfrowanie.estrefa.net/Szyfrowanie-asymetryczne-i-autentycznosc-oraz-poufnosc

[4] Źródło internetowe:  http://www.rsa.com/rsalabs/node.asp?id=2215

[5] M. Stawowski Projektowanie i praktyczne implementacje sieci VPN, Warszawa 2004, ArsKom, s. 17

[6] Źródło internetowe: http://www.algorytm.org/inne/algorytm-diffie-hellmana.html

[7] Źródło internetowe:  http://technet.microsoft.com/pl-pl/library/cc731752.aspx

[8] Qiang Huang i Jazib Frahim dla magazynu internetowego Network World, 2008, Pearson Education (odnośnik: http://www.networkworld.com/subnets/cisco/102208-ch2-ssl-vpn-technology.html )

[9] M. Stawowski Projektowanie i praktyczne implementacje sieci VPN,Warszawa 2004,ArsKom, s. 21

[10] Źródło internetowe: http://www.certum.pl/certum/cert,wiedza_wszystko_o_podpisie_elektronicznym.xml