IP

Bezpieczne sieci TCP/IP Marek Kozłowski Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska Warszawa 2014/2015 Plan wykładu 1 Wprowad...
Author: Marek Dudek
8 downloads 1 Views 415KB Size
Bezpieczne sieci TCP/IP Marek Kozłowski Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska

Warszawa 2014/2015

Plan wykładu

1 Wprowadzenie

2 Kryptografia symetryczna

3 Kryptografia asymetryczna

4 Protokoły kryptograficzne TCP/IP

Plan wykładu

1 Wprowadzenie

2 Kryptografia symetryczna

3 Kryptografia asymetryczna

4 Protokoły kryptograficzne TCP/IP

Zadania systemu kryptograficznego

Do podstawowych wymogów stawianych bezpiecznej komunikacji [w sieci Internet] należą: poufność, tj. zapewnienie, że informacje są niedostępne dla nieuprawnionych osób, uwierzytelnienie, tj. potwierdzenie deklarowanej tożsamości nadawcy, czasem wyróżnia się jako osobne zadania: identyfikację i autoryzację, niezaprzeczalność – właściwość polegająca na tym, że strona odbierająca może udowodnić tożsamość autora informacji, integralność, tj. uniemożliwienie modyfikacji wysłanej informacji.

Wymagania dotyczące poufności

Bezpieczny system kryptograficzny powinien zapewniać poufność [przez wymagany okres czasu] przy założeniu najgorszego przypadku: intruz zna algorytmy wykorzystywane przez kryptosystem, intruz dysponuje parami: (plaintext , ciphertext ) dla dowolnie wybranych wiadomości lub zaszyfrowanych wiadomości (tzw. atak adaptive chosen-plaintext/ciphertext).

Plan wykładu

1 Wprowadzenie

2 Kryptografia symetryczna

3 Kryptografia asymetryczna

4 Protokoły kryptograficzne TCP/IP

Kryptografia symetryczna

Parametr przekształceń: szyfrującego i deszyfrującego nazywany jest kluczem symetrycznym. Klucz symetryczny jest atrybutem połączenia komunikacyjnego, a nie użytkownika. Zazwyczaj nowy klucz generowany i uzgadniany w procesie nawiązywania połączenia, np. algorytmem Diffiego–Hellmana. Zapewniona poufność i/lub integralność, lecz brak uwierzytelnienia i niezaprzeczalności. Działanie w czasie rzeczywistym. Kryptosystemy symetryczne: blokowe i strumieniowe.

Algorytm Diffiego-Hellmana (1976 rok)

Wybierana jest (niekoniecznie poufnie) para liczb: liczba pierwsza p i liczba g będąca generatorem grupy multiplikatywnej Zp ∗ (zbiór liczb względnie pierwszych z p branych modulo p z operacją mnożenia). Każda ze stron losuje liczbę naturalną: Alicja losuje liczbę a, a Bob losuje liczbę b. Alicja wysyła Bobowi liczbę (g a mod p), a Bob wysyła Alicji liczbę (g b mod p). Alicja wyznacza liczbę g ab = ((g b mod p)a mod p), a Bob – g ba = ((g a mod p)b mod p). Alicja i Bob znają liczbę g ab = g ba . Nie są znane algorytmy o złożoności wielomianowej pozwalające wyznaczyć ją na podstawie p, g, (g a mod p) i (g b mod p).

Wybrane algorytmy blokowe – DES

Data Encryption Standard, opracowany przez IBM, zmodyfikowany przez NSA, w 1977 roku zaakceptowany jako amerykański standard (FIPS PUB 46, następnie uaktualniany: FIPS 46-1, 46-1, 46-3). Bazuje na przekształceniu tzw. sieci Feistela. Operuje na 64-bitowych blokach i wykorzystuje 56-bitowy klucz (precyzyjniej: 64-bitowy, w tym tylko 56 bitów jest znaczących). Ze względu na krótki klucz podatny na ataki brute force. W 2005 roku standard FIPS 46-3 został wycofany przez NIST. 3DES (potrójny DES, TDES, 3TDES) wydłuża klucz do 168 bitów dzięki trzykrotnemu zaszyfrowaniu wiadomości przy wykorzystaniu algorytmu DES. Przestrzeń kluczy dla ataku brute-force: 2112 . Stworzony jako rozwiązanie doraźne i obecnie zastępowany jest przez AES.

Wybrane algorytmy blokowe – AES

Advanced Encryption Standard, Rijndael (szyfr Rijmena i Daemena) następca DES od 2001 roku jako standard FIPS PUB 197. Szyfr blokowy wykorzystujący bloki 128-bitowe i klucze 128-, 192- lub 256-bitowe (pierwotnie Rijndael dopuszczał użycie dowolnych bloków i rozmiarów kluczy będących wielokrotnością 32 bitów i mieszczących się w przedziale 128–256 bitów).

Wybrane algorytmy blokowe – IDEA

International Data Encryption Algorithm – opublikowany w 1991 roku, jest szyfrem blokowym operującym na 64-bitowych blokach wiadomości i wykorzystujący 128-bitowy klucz. Objęta patentem w USA do 2010 roku (także Japonii i wielu krajach europejskich) i dostępna do darmowego użytku tylko w celach niekomercyjnych. IDEA wykorzystuje trzy typy operacji: XOR, dodawanie modulo 216 , mnożenie modulo 216 + 1.

Wybrane algorytmy strumieniowe – RC4

RC4 (algorytm Rivesta) – opracowany w 1987 roku, został anonimowo opublikowany w 1994 roku. Niezależne implementacje RC4 są legalne pod warunkiem nieużywania nazwy „RC4”. Działanie: 1 2 3

Zainicjuj 256-bajtową tablicę S wpisując kolejno liczby od 0 do 255. KSA (key scheduling algorithm): permutuj tablicę w oparciu o klucz. PRGA (pseudo-random generation algorithm): na podstawie uzyskanej tablicy generuj pseudolosowy ciąg bitów poddawany operacji XOR ze strumieniem szyfrowanym.

Uwaga: PRGA korzysta z zainicjowanej tablicy, natomiast nie wykorzystuje bezpośrednio klucza.

Wybrane algorytmy strumieniowe – RC4 (2)

procedure KSA for i from 0 to 255 S[i] := i j := 0 for i from 0 to 255 j := (j + S[i] + key[i mod keylength]) mod 256 swap(S[i],S[j]) procedure PRGA i := 0 j := 0 while GeneratingOutput: i := (i + 1) mod 256 j := (j + S[i]) mod 256 swap(S[i],S[j]) output S[(S[i] + S[j]) mod 256]

Szyfry blokowe w trybie strumieniowym.

Szyfrowania strumieniowe można również uzyskać poprzez wykorzystanie szyfrów blokowych w trybach: CBC (Cipher Block Chaining) – przed zaszyfrowaniem blok poddawany operacji XOR z zaszyfrowanym blokiem poprzednim, CFB (Cipher Feedback), OFB (Output Feedback) i CTR (Counter) – szyfr blokowy służy do generowania ciągu bitów poddawanych operacji XOR z ciągiem szyfrowanym.

Plan wykładu

1 Wprowadzenie

2 Kryptografia symetryczna

3 Kryptografia asymetryczna

4 Protokoły kryptograficzne TCP/IP

Kryptografia asymetryczna

Para kluczy przypisanych do użytkownika: klucz publiczny oraz prywatny. Klucz publiczny – jawny, klucz prywatny musi być przechowywany bezpiecznie. Wygenerowanie klucza prywatnego na podstawie publicznego powinno być problemem klasy NP. Zależnie od kryptosystemu, wygenerowanie klucza publicznego na podstawie prywatnego również może być trudne (RSA), lecz może też być trywialne (ElGamal).

Usługi kryptografii asymetrycznej

Szyfrowanie wiadomości kluczem publicznym odbiorcy zapewnia poufność informacji. Szyfrowanie kluczem prywatnym nadawcy zapewnia niezaprzeczalność. Ze względu na wysoką złożoność obliczeniową algorytmów asymetrycznych, w praktyce, dla uzyskania niezaprzeczalności, do oryginalnej wiadomości załącza się skrót (uzyskany np. przy wykorzystaniu algorytmu MD5 lub SHA) zaszyfrowany kluczem prywatnym.

Poufność i niezaprzeczalność

Algorytmy klucza asymetrycznego RSA (Rivest, Shamir i Adleman, 1978) opiera się na problemie faktoryzacji dużych liczb. Żeby wygenerować klucz RSA, losujemy dwie duże liczby pierwsze p i q oraz liczbę e względnie pierwszą z (p − 1)(q − 1). Znajdujemy (rozszerzonym algorytmem Euklidesa) liczbę d takżą, że: de mod (p − 1)(q − 1) = 1 oraz przyjmujemy n = pq. klucz publiczny to para (e, n), a prywatny – (d, n), szyfrowanie wiadomości m: c = m e mod n, deszyfrowanie wiadomości c: m = c d mod n

ElGamal (Elgamal, 1984) do generowania kluczy wykorzystuje algorytm uzgadniania kluczy Diffiego-Hellmana – klucz publiczny Alicji, to trójka: (p, g, g a mod p), a prywatny to czwórka: (p, g, g a mod p, a). DSA jest amerykańskim standardem (FIPS 186) podpisu elektronicznego. Wykorzystuje algorytm skrótu SHA-1 i algorytm generowania kluczy zbliżony do ElGamala (algorytm bazuje na schemacie podpisu Elgamala).

Funkcje skrótu – MD5, SHA-1

MD5 (Message Digest algorithm 5; Rivest, 1991) opisany w RFC 1321 przekształca ciąg znaków w 128-bitowy skrót. W 2004 roku wykazano słabość algorytmu MD5 (praktyczną możliwość „podrabiania” wiadomości z takim samym skrótem MD5). SHA to rodzina funkcji szyfrujących publikowanych przez NIST (FIPS PUB 180). SHA-1 (1995 rok), opisany w RFC 3174, generuje 160-bitowy skrót (z wiadomości nie dłuższej, niż 264 bitów). Bazuje on na podobnych założeniach co MD5, jest więc potencjalnie podatny na podobne ataki jak MD5. Do 2010 roku NIST nakazał wycofać SHA-1 z zastosowań federalnych i zastąpić go rodziną SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512).

Kryptografia asymetryczna – uwierzytelnienie

Problem: Skąd wiadomo, że ogólnodostępny klucz publiczny jest rzeczywiście kluczem publicznym Alicji? Rozwiązania: weryfikacja skrótu klucza innymi kanałami (np. telefonicznie), przechowywanie kluczy publicznych w bezpiecznym, wiarygodnym miejscu, wykorzystanie certyfikatów klucza publicznego (podpisane dane: klucz publiczny oraz informacje o właścicielu). Możliwe modele zarządzania certyfikatami to: Web of Trust – ludzie nawzajem podpisują swoje klucze publiczne (np. PGP), Public Key Intrastructure – hierarchiczna struktura centrum podpisywania kluczy (Centres of Authority).

Standard X.509

Standard PKI (Public Key Infrastructure) opisujący m.in. format certyfikatu klucza publicznego oraz ścieżki certyfikacyjne. Początkowo (1988 rok) rozwijany był razem ze standardem X.500 (usługi katalogowe) stąd zakładał hierarchiczną strukturę CAs. Ostatnia, trzecia wersja X.509 dopuszcza inne topologie. W Polsce urzędem certyfikującym centra autoryzacji kluczy (CA) jest Narodowe Centrum Certyfikacji (http://www.nccert.pl) przy Narodowym Banku Polskim.

Certyfikat klucza asymetrycznego – X.509 v3 Certificate Version Serial Number Algorithm ID Issuer Validity Not Before Not After

Subject Subject Public Key Info Public Key Algorithm Subject Public Key

Issuer Unique Identifier (Optional) Subject Unique Identifier (Optional) Extensions (Optional) ...

Certificate Signature Algorithm Certificate Signature

Systemy hybrydowe

Kryptografia symetryczna zapewnia poufność, lecz nie pozwala na uwierzytelnienie. Algorytmy symetryczne mogą działać w czasie rzeczywistym. Kryptografia asymetryczna umożliwia stworzenie poufnego i uwierzytelnionego połączenia. Wadą systemów asymetrycznych jest jednak wysoki koszt obliczeń. W praktycznych implementacjach kryptografię asymetryczną wykorzystuje się w początkowej fazie połączenia. Po uwierzytelnieniu stron bezpieczny kanał komunikacyjny jest wykorzystywany do wyboru kryptosystemu symetrycznego oraz ustalenia kluczy symetrycznych. Dalsza komunikacja (transfer danych) odbywa się za pośrednictwem systemu symetrycznego.

Plan wykładu

1 Wprowadzenie

2 Kryptografia symetryczna

3 Kryptografia asymetryczna

4 Protokoły kryptograficzne TCP/IP

IPsec – protokoły AH i ESP

Protokoły wchodzące w skład architektury IPSec służą do bezpiecznego przesyłania przez sieć pakietów IP. Działają one na zasadzie enkapsulacji, tj. oryginalny (zabezpieczany) pakiet IP jest szyfrowany, otrzymuje nowy nagłówek protokołu IPSec i w takiej formie jest przesyłany przez sieć. Protokołami kryptograficznymi IPsec są: protokół AH (Authentication Header, RFC 4302) zapewniający wyłącznie integralność danych, protokół ESP (Encapsulating Security Payload, RFC 4303) zapewniający zarówno integralność jak i poufność.

Protokoły te mogą działać w trybie transportowym lub tunelowym.

IPsec – tryb transportowy vs. tryb tunelowy W trybie transportowym nagłówek IP pozostaje niezmieniony, po nim dodawany jest nagłówek AH lub ESP (numery protokołów: dla AH – 51, dla ESP – 50), po którym następuje zaszyfrowana dalsza część pakietu (np. TCP i dane) W trybie tunelowym dodawany jest nowy nagłówek IP, po nim nagłówek AH lub ESP, po których następuje zaszyfrowany oryginalny pakiet IP. Tryb tunelowy wykorzystywany jest np. do tworzenia VPN-ów. W nagłówkach AH i ESP występują pola SPI (Security Parameters Index) i Sequence Number. Pole SPI identyfikuje tunel i jest ustalane w trakcie tworzenia kanału. Wartość pola Sequence Number zwiększana jest o jeden z każdym przesłanym pakietem. Po wysłaniu 232 pakietów (pole to jest 32-bitowe) kanał musi zostać zamknięty i na jego miejsce musi zostać utworzony nowy.

IPsec – tryb transportowy vs. tryb tunelowy

IPsec – protokół IKE

Protokoły AH i ESP można skonfigurować (tj. ustalić algorytm kryptograficzny i klucz asymetryczny) „ręcznie”, choć jest to kłopotliwe. Zazwyczaj ich konfiguracja realizowana jest dynamicznie poprzez protokół IKE (Internet Key Exchange, RFC 4306). Protokół IKE: uwierzytelnia obie strony komunikacji (np. poprzez hasło lub certyfikaty X.509), nawiązuje bezpieczny kanał na potrzeby IKE (UDP, port 500), bezpiecznie uzgadnia klucze kryptograficzne oraz parametry tuneli IPSec, opcjonalnie renegocjuje klucze i parametry tuneli.

IPsec – uwagi

Kanały komunikacyjne (AH i ESP) są jednokierunkowe (od hosta A do hosta B). Do komunikacji dwustronnej potrzebne jest stworzenie dwóch kanałów IPsec. Mają one osobne SPI, liczniki i klucze kryptograficzne. Wsparcie dla IPsec (AH i ESP) zazwyczaj jest wkompilowane w kernel (w Linuksie – od 2.6), natomiast IKE jest częścią userlandu (np. KAME, w Gentoo: net-firewall/ipsec-tools).

Secure Shell (SSH) Zestaw standardów oraz protokół umożliwiające ustanowienie bezpiecznego kanału komunikacyjnego między lokalnym i zdalnym hostem. SSH wykorzystuje kryptografię asymetryczną do uwierzytelniania zdalnego komputera i (opcjonalnie) użytkownika. Podstawowym zadaniem SSH jest terminalowe łączenie się z hostem (domyślnie poprzez port TCP 22). SSH umożliwia także transfer plików (SFTP, SCP), tunelowanie, połączenia X11 i in. Historia, wydania: Opracowane przez Yl¨ onena w latach: 1995 (SSH-1, przestarzały) i 1996 (SSH-2, używany obecnie) rozwijane początkowo jako wolne oprogramowanie, później na zamkniętej licencji przez powołaną przez Yl¨ onena SSH Communications Security. Od 1999 roku w ramach projektu OpenBSD rozwijana jest wolna wersja SSH bazująca na pierwszych wydaniach – OpenSSH. Niezależną od OpenSSH wolną implementacją SSH jest PuTTY.

Secure Shell (SSH) – cd.

W marcu 2006 protokół SSH (SSH-2) doczekał się propozycji standardu IETF (RFC 4250–4256, a także RFC 4335, 4344–5, 4419, 4432). SSH-2 (wg RFC 4251) ma budowę warstwową i składa się z: warstwy transportowej (transport protocol, RFC 4253) – wymiana kluczy, szyfrowanie (zalecane: AES 128-bitowy), kompresja i integralność, warstwy uwierzytelnienia użytkownika (authentication protocol, RFC 4252) – m.in hasło, klucz publiczny (jest to jedyna wymagana przez RFC w każdej implementacji metoda uwierzytelnienia), host, zewnętrzne mechanizmy, np. Kerberos i in. Uwaga: uwierzytelnienie jest client-driven – to program kliencki pyta użytkownika o hasło, warstwy połączenia (connection protocol, RFC 4254) odpowiedzialnej za tworzenie tzw. kanałów.

Tunelowanie SSH – przykład

Zdalny dostęp HTTP do omegi $ ssh -L 2015:omega:80 [email protected] $ links http://localhost:2015

Secure Socket Layer (SSL)

Opracowany przez Netscape Communications Corporation. Wersja SSL 3.0 opublikowana w 1996 roku. Na bazie SSL 3.0 IETF opracowało w 1999 roku TLS 1.0 (Transport Layer Security, RFC 2246) uważany za następcę SSL. Aktualna wersja to TLS 1.2 (RFC 5246). SSL zapewnia bezpieczne i uwierzytelnione połączenie na poziomie warstwy transportowej. Zazwyczaj uwierzytelnienie jest jednostronne (serwer uwierzytelnia się wobec użytkownika). SSL wykorzystywane jest m.in. przez protokoły HTTP, NNTP, SMTP, POP3, IMAPi in. Wolne implementacje bibliotek SSL/TLS, to: OpenSSL i GnuTLS.

Secure Socket Layer (SSL) – cd.

W połączeniu SSL można wyróżnic trzy fazy: negocjacja algorytmów, asymetryczne: uwierzytelnienie przy wykorzystaniu certyfikatów X.509 i wymiana kluczy, komunikacja szyfrowana systemem symetrycznym.

Dopuszczalne przez SSL algorytmy to m.in.: systemy asymetryczne: RSA, DSA, Diffie-Hellman, systemy symetryczne: DES, 3DES, AES, IDEA, RC4, funkcje skrótu: MD5 i SHA-1.

Pretty Good Privacy (PGP)

Projekt zapoczątkowany w 1991 roku przez Zimmermanna. Historia rozwoju PGP i zasady licencji są dość pogmatwane ze względu na amerykańskie prawa patentowe (do 2000 roku RSA podlegało patentowi, IDEA wciąż podlega patentowi) i prawa eksportowe w początku lat 90. (eksport technologii kryptograficznych z kluczem dłuższym niż 40-bitowy podlegał pod prawo federalne). W latach 1997-1998 IETF opublikowało standard OpenPGP (RFC 2440, obecnie zastąpiony przez RFC 4880). Wolną implementacją standardu OpenPGP (a więc nie wykorzystującą IDEA) jest GnuPG (GPG, GNU Privacy Guard)

Pretty Good Privacy (PGP) – cd.

W PGP wiadomość jest szyfrowana systemem symetrycznym, a użyty klucz symetryczny zaszyfrowany kluczem publicznym odbiorcy dołączany jest do wiadomości lub udostępniany innymi kanałami. Wiadomość może być także podpisana cyfrowo kluczem prywatnym nadawcy. Weryfikacja certyfikatów w PGP opiera się o sieć zaufania (web of trust), tj. nie ma żadnego hierarchicznego systemu zarządzania certyfikatami. Wtyczka do czytnika Thunderbird – Enigmail.

Routing cebulowy (The Onion Routing, TOR)

TOR, to system chroniący przez analizą ruchu (traffic analysis). Zapewnia anonimowość połączeń TCP poprzez ukrywanie źródłowych i docelowych adresów IP przed hostami pośrednimi (routerami). TOR jest z założenia systemem prostym, elastycznym i gwarantującym niewielkie opóźnienia. TOR wspiera tylko protokoły górnych warstw korzystające z transportu TCP i współpracujące z SOCKS.

Routery cebulowe (Onion Routers)

Serwery TOR (onion routers) tworzą łańcuch połączeń TLS, tzw. obwód, (circuit) pomiędzy obiema stronami sesji TCP. Co minutę zalecana jest zmiana obwodu. Każdy onion router zna tylko swojego poprzednika i następnika danym w obwodzie, nie może odszyfrować transmitowanych przezeń danych. Część routerów TOR może być „podstawiona” lub kontrolowana przez stronę atakującą. Routery TOR rejestrują się w predefiniowanych, publicznych serwerach katalogowych directory servers. Obecnie sieć TOR tworzy ponad 1000 działających routerów TOR.

Zasada cebuli (Onion)

Obwody tworzone są przyrostowo; kolejne routery TOR wybierane są przez klienta pragnącego zachować anonimowość. Klient TOR tworzący obwód negocjuje (Diffie-Hellman) klucz z każdym dodawanym do obwodu routerem: (OR1 , . . . , ORN ). Oznaczmy te klucze jako: k (OR1 ), . . . , k (ORN ) Każda wiadomość (komórka, cell) wysyłana przez klienta za pośrednictwem obwodu jest początkowo zaszyfrowana N razy przy użyciu kluczy: k (ORN ), . . . , k (OR1 ). Każdy OR deszyfruje nadchodzącą komórkę własnym kluczem k (ORi ). Jeśli nie jest odbiorca docelowym, wówczas komórka przekazywana jest następnemu OR w obwodzie.