Technologie zapewniające bezpieczeństwo
w systemach operacyjnych






PKI

Wstęp

Metody szyfrowania dzielą się generalnie na dwie grupy : W pierwszej metodzie ten sam tajny klucz jest wykorzystywany zarówno do szyfrowania jak i deszyfrowania wiadomości. Natomiast szyfrowanie asymetryczne, nazywane też szyfrowaniem z kluczem jawnym (publicznym), posługuje się dwoma oddzielnymi kluczami, z których jeden jest tajny (prywatny) a drugi jawny (publiczny). Klucz publiczny jest ogólnie dostępny w sieci, klucz prywatny jest natomiast znany tylko właścicielowi klucza i chroniony przed innymi osobami. Któregokolwiek ze związanych ze sobą kluczy można użyć do szyfrowania, drugiego do deszyfrowania. Dzięki temu każdy użytkownik może odszyfrować to, co zostało zaszyfrowane kluczem prywatnym. Jednocześnie tylko posiadacz klucza prywatnego może odszyfrować to, co ktokolwiek zaszyfrował jego kluczem publicznym. Ponieważ nie jest możliwe na drodze obliczeń określenie klucza deszyfrującego przy znajomości jedynie algorytmu kryptograficznego i klucza szyfrującego, to wynalezione ćwierć wieku temu metody szyfrowania asymetrycznego zyskały sobie w tym czasie opinię wyjątkowo bezpiecznych.
Jedynym zagrożeniem dla procesu bezpiecznej wymiany dokumentów z zastosowaniem szyfrowania asymetrycznego jest możliwość zastąpienia klucza publicznego jednej z korespondujących stron kluczem publicznym intruza. Druga strona, będąc przekonana o tym, że korzysta z klucza publicznego odbiorcy korespondencji, zaszyfruje ją niewłaściwym kluczem, przez co umożliwi odczytanie wiadomości intruzowi. Aby zapobiec takiej sytuacji, należy stworzyć mechanizm zwany procesem certyfikacji klucza, który potwierdzałby autentyczność używanego klucza i prawo do korzystania z niego przez daną osobę, firmę czy instytucję.

Certyfikat cyfrowy to elektroniczne zaświadczenie za pomocą którego dane służące do weryfikacji podpisu elektronicznego są przyporządkowywane do określonej osoby i potwierdzają tożsamość tej osoby.
Fizycznie jest to ciąg danych zapisanych na odpowiednim nośniku - np. na karcie mikroprocesorowej (ang. smartcard). Najpopularniejszym standardem certyfikatów jest X.509 składający się z pól takich jak: wersja, numer seryjny, wydawca certyfikatu, ważność, podmiot dla którego certyfikat został wystawiony, klucz publiczny oraz podpis organu wydającego certyfikat. Autentyczność tego podpisu można sprawdzić tylko wtedy, gdy znany jest klucz publiczny organu certyfikującego. Klucz ten znajduje się na certyfikacie wystawionym dla organu certyfikującego przez organ wyższej instancji. Zatem weryfikacja certyfikatu to prześledzenie łańcucha zaufania, zakończonego przez organ nadrzędny, cieszący się powszechnym zaufaniem, który sam dla siebie wystawia certyfikat. Dlatego też kryptografia klucza publicznego wymaga sprawnie funkcjonującej infrastruktury, zwanej Infrastrukturą Klucza Publicznego (PKI). Infrastruktura ta służy do zarządzania cyfrowymi certyfikatami i kluczami szyfrującymi dla osób, programów i systemów.

Infrastruktura Klucza Publicznego - PKI

Idea PKI oparta jest na cyfrowych certyfikatach potwierdzających związek między konkretnymi uczestnikami transakcji a kluczami kryptograficznymi, stosowanymi podczas realizowania bezpiecznych transakcji.

Certyfikat cyfrowy jest wydawany przez Urząd Certyfikacji (Certification Authority - CA), który w momencie wydania dokumentu potwierdza podpisem cyfrowym związek pomiędzy użytkownikiem a kluczem, którego używa. Ponieważ tak wystawiony certyfikat ma zawsze pewien okres ważności (np. jeden rok), należy przewidzieć następujące sytuacje związane z zarządzaniem certyfikatami: rejestracja użytkowników, generowanie certyfikatów, dystrybucja, aktualizacja i unieważnianie.

Struktura PKI składa się z czterech głównych elementów : Struktura PKI jest tworzona w oparciu o Główne CA, przy czym dla każdego z obszarów zastosowań (np. handel elektroniczny, sektor bankowo-finansowy, administracja publiczna), które będą korzystać z PKI, można tworzyć odrębne CA podległe Głównemu Urzędowi. Główne CA określa ogólną politykę certyfikacji, natomiast CA obsługujące dany obszar zastosowań odpowiadając za politykę w tym obszarze. W strukturze podległej danemu CA dla konkretnych zastosowań może istnieć dowolna liczba podległych CA oraz użytkowników. Taka struktura tworzy hierarchię uwierzytelniania, która z kolei określa łańcuch certyfikatów, wiodący od użytkowników aż do cieszącego się ich zaufaniem Głównego CA. Krajowa struktura PKI musi współdziałać ze strukturami PKI innych krajów, aby zapewnić usługi o podobnym do opisanych charakterze w kontaktach międzypaństwowych.

Schemat PKI wg standardu PKIX


Funkcje PKI

Podstawowe funkcje, które musi realizować każde PKI, aby zapewnić właściwy poziom usług to :

Zastosowanie PKI

PKI zapewnienia usługi uwierzytelniania takie jak : oraz usługi poufności do których należą: Aplikacje korzystające z infrastruktury PKI stosują : Infrastruktura PKI ma zastosowanie w :

Standardy PKI

Standardy PKI można podzielić na dwie grupy: standardy poziomu użytkownika i standardy dla samego PKI. Zastosowanie określonych standardów w strukturze PKI pozwala na współpracę między licznymi strukturami PKI i korzystanie z PKI w wielu aplikacjach.
Standardy PKI są konieczne dla: Próbę zestandaryzowania funkcji PKI podjęła grupa robocza IETF (Internet Engineering Task Force), znana również jako grupa PKIX (PKI dla certyfikatów X.509). Cztery podstawowe składniki modelu PKIX to: użytkownik, CA, RA oraz repozytorium certyfikatów. Specyfikacja PKIX oparta jest na dwóch innych standardach: X.509 Międzynarodowego Zwišzku Telekomunikacji (International Telecommunication Union - ITU) i PKCS Standardów Kryptografii Klucza Publicznego (Public Key Cryptography Standards) autorstwa RSA Data Security. Najpopularniejsze standardy PKCS to : Większość najważniejszych standardów w dziedzinie bezpieczeństwa teleinformatycznego jest zaprojektowana tak, aby umożliwić współpracę z PKI.
Do standardów tych należą:

PKI w Windows 2000

Technologię klucza publicznego wykorzystują następujące systemy zabezpieczenia w Windows 2000: Zabezpieczenia systemu Windows 2000 oparte na kluczu publicznym wykorzystują standardowe technologie, takie jak algorytm uzgadniania kluczy Diffiego-Hellmana, algorytmy opracowane przez RSA Data Security oraz algorytm Digital Signature . Wykorzystane są także standardowe certyfikaty cyfrowe X.509 wersji 3 wydawane przez wybrane, zaufane urzędy certyfikacji. Wiele zabezpieczeń w systemie Windows 2000 wykorzystuje klucze publiczne wraz z certyfikatami do zapewnienia identyfikacji, integralności, poufności i nieodrzucenia.

Do głównych komponentów infrastruktury klucza publicznego w systemie Windows 2000 należą:


Secure Socket Layer (SSL)

Wstęp

SSL - protokół bezpiecznej komunikacji między klientem a serwerem, stworzony przez Netscape. SSL w założeniu jest podkładką pod istniejące protokoły, np. HTTP, FTP, SMTP, NNTP, LDAP. Powszechnie jest używane głównie HTTPS (HTTP na SSL).

SSL zapewnia trzy rzeczy:
Protokół SSL składa się z dwóch podprotokołów: Pierwszy definiuje format używany do transmisji danych, drugi powoduję wymianę serii wiadomości między serwerem i klientem pozwalających na:
Kolejne kroki w protokole powitania:

Certyfikaty SSL

W pierwszej fazie nawiązywania połączenia serwer i przeglądarka wymieniają certyfikaty. Certyfikat zawiera następujące składniki:
SSL przewiduje użycie następujących rodzajów certyfikatów: Certyfikaty serwerów dzielą się na dwa rodzaje: pełny SSL oraz SSL/SGC (Server Gated Cryptography). SGC jest pewnym uproszczeniem SSL na potrzeby ominięcia ograniczeń eksportowych wprowadzonych w USA. Inicjacja połączenia szyfrowanego przy użyciu SSL/SGC jest mniej bezpieczna, niż przy standardowym SSL 128, transmisja danych jest identyczna w SSL/SGC i SSL.

Algorytmy w SSL

SSL protokół wspiera użycie wielu różnych algorytmów kryptograficznych lub szyfrów, dla takich operacji jak autoryzacja serwera i klienta, transmisja certyfikatów i ustanowienie kluczy sesyjnych.

Algorytmy używane w SSL: Możliwe długości obecnie używanych kluczy symetrycznych w sesji SSL wynoszą: 40, 56, 128, 168 bitów.

Oznaczenia SSL

Do połączenia ze stroną WWW poprzez SSL wykorzystywany jest protokół https.
Połączenie ze stroną WWW poprzez SSL jest oznaczane w przeglądarkach przez graficzny element, np. złączony kluczyk lub kłódka.
Można zobaczyć certyfikat autentyczności danej strony oraz informację o długości używanego klucza symetrycznego.

W tej chwili istnieją dwie specyfikacje SSL: SSL 2.0, SSL 3.0.
Wersja 3.0 ma poprawione wiele słabości SSL 2.0 oraz umożliwia kompresję danych. SSL 3.0 jest wstecznie kompatybilne z 2.0.

Obecnie SSL dostępny jest we wszystkich ważniejszych przeglądarkach WWW (m.in. w Internet Explorerze, Netscapie i Lynxie), a także w serwerach WWW - Apache, IIS Microsoftu.




Smart Cards

Budowa

Z kartami mikroprocesorowymi, czyli inteligentnymi (ang. smart cards), mamy do czynienia wówczas, gdy mikroukład oprócz pamięci posiada wbudowany mikroprocesor. Lista rozkazów takiej jednostki zawiera logiczne i arytmetyczne operacje na bajtach (ewentualnie słowach 16-bitowych). Nie jest to arsenał wystarczający do efektywnej implementacji np. współczesnych algorytmów kryptografii asymetrycznej, opartych na arytmetyce modularnej ciała p-elementowego GF(p) lub ciała skończonego GF(2m). Dlatego pojawiają się rozwiązania, w których procesor jest wspomagany przez koprocesor zaprojektowany do realizacji odpowiednich operacji matematycznych, bądź przez inne układy scalone specyficzne dla aplikacji.
Coraz częściej pojawiają się też w architekturze struktury realizujące zadania generatora liczb losowych, z reguły oparte na algorytmach deterministycznych generowania pseudolosowego ciągu bitów (ziarno startowe pobierane z pamięci nieulotnej lub przesyłane ze świata zewnętrznego), chociaż sygnalizowane są już rozwiązania wykorzystujące np. naturalne szumy cieplne struktur krzemowych.
Brak natomiast w architekturze współczesnych kart autonomicznego zegara czasu astronomicznego, co ogranicza w pewnym sensie możliwości implementacji niektórych protokołów kryptograficznych (np. parametry zależne od czasu w protokołach uwierzytelniania z udziałem kart mogą być realizowane zasadniczo tylko w formie tzw. liczników sesyjnych).

Pamięć w kartach procesorowych podzielona jest zazwyczaj na trzy obszary: Obszar swobodnego odczytu zapisywany jest tylko raz podczas personalizacji karty. Dostęp do umieszczonych w nim informacji jest swobodny. Dane dostarczają podstawowych informacji na temat właściciela karty, a więc imię i nazwisko posiadacza, data ważności, numer karty, itp.
W obszarze poufnym dane umieszczane są raz i nie są zmieniane podczas używania karty. Dostęp do nich jest możliwy jedynie po podaniu odpowiedniego numeru ustalonego podczas personalizacji karty. W obszarze tym przechowywane są, np. dane producenta karty, dane użytkownika karty.
Obszar roboczy przechowuje dane, które mogą być zmieniane w trakcie używania karty. Są to przykładowo informacje o ostatnio dokonanych operacjach, o dostępnym limicie transakcji. Reguły dostępu do tego obszaru ustala się w procesie personalizacji. Każda karta posiada specjalny, ustalany podczas produkcji, zapisany w pamięci kod. Jest on znany tylko producentowi i służy do zabezpieczenia karty przed kradzieżą. Niektóre modele kart inteligentnych, przykładowo karty aktywne (ang. active cards) zostały wyposażone w baterię.

Najnowsze karty z modułami szyfrującymi wyposażone są też w szereg zabezpieczeń uniemożliwiających osobom nieupoważnionym odczytanie zawartości pamięci kart. Mogą to być czujniki niskiego i wysokiego napięcia oraz niskiej i wysokiej częstotliwości, a także elektroniczne bezpieczniki dostępu do zapisywania danych oraz niezależne od zegara taktowanie zapisu/kasowania w pamięci.

Cechy

Cechy charakterystyczne kart to:

Podział

Ze względu na sposób komunikowania się karty z układami zewnętrznymi dokonuje się podziału na karty stykowe i bezstykowe.
Karty stykowe są najbardziej popularnymi kartami. Ich czytnik ma prostą konstrukcję mechaniczną sprowadzającą się do zespołu metalizowanych, pokrytych złotem styków. Styki zapewniają transmisję danych do dalszych urządzeń systemu oraz doprowadzają zasilanie do układu elektronicznego karty.
W kartach bezstykowych zasilanie i transmisja odbywają się przez specjalne układy komunikacyjne wbudowane w kartę. Istnieją obecnie dwa rodzaje kart bezstykowych - są to karty aktywne i pasywne. Karty pasywne są zasilane z zewnątrz - mają wbudowaną cewkę, która jest pobudzana przez zewnętrzne pole elektromagnetyczne, a karty aktywne są wyposażone w baterię.

Zastosowanie

Karty elektroniczne umożliwiają regulowanie płatności, korzystanie z telewizji kodowanej, są przepustką do zamkniętych obiektów i obszarów, a także zastępują dotychczas stosowane książeczki zdrowia, karty wstępu do bibliotek, wypożyczalni, indeksy i wszelkie inne dowody tożsamości.

Karty inteligentne mogą służyć do przechowywania certyfikatów i kluczy prywatnych oraz do wykonywania operacji kryptograficznych opartych na kluczu publicznym, takich jak identyfikacja, cyfrowe podpisywanie i wymiana kluczy.

Karty inteligentne niosą następujące korzyści:

Algorytmy

Przykłady algorytmów kryptograficznych realizowanych w kartach:

Krzywe eliptyczne w kartach elektronicznych.
Wydaje się, że w chwili obecnej najbardziej odpowiednim schematem podpisu cyfrowego w zastosowaniach w kartach elektronicznych jest standard podpisu cyfrowego ECDSA wykorzystujący arytmetykę grupy punktów na krzywych eliptycznych. Szczególnie korzystnie dla systemu ECDSA wypada porównanie z klasycznym systemem RSA. Dotyczy to zarówno bezpieczeństwa, mierzonego matematyczną trudnością problemu leżącego u podstaw algorytmu, jego wydajności mierzonej szybkością realizacji (z czym wiąże się także złożoność kodu, ilość obliczeń i obszar niezbędnej pamięci), jak i elastyczności w zastosowaniach specjalnych np. rozwiązaniach hybrydowych. Niezwykle istotna jest tu możliwość wyboru wielu krzywych eliptycznych określonych nad jednym i tym samym ciałem skończonym. Wszyscy użytkownicy mogą wykorzystywać arytmetykę jednego ciała skończonego. W obu systemach RSA i ECDSA, bezpieczeństwo jest funkcją długości klucza. Przy porównywalnym bezpieczeństwie, w systemie ECDSA można więc używać znacznie krótszych kluczy co ma wpływ na wydajność tego kryptosystemu i stanowi główny powód stosowania krzywych eliptycznych w kartach elektronicznych. Dzięki zastosowaniu krzywych eliptycznych, uzyskuje się wyraźnie lepsze czasy zarówno generowania i weryfikacji podpisu, jak również czasy generowania kluczy. Zastosowanie krzywych eliptycznych umożliwia także generację kluczy na karcie. Dla przykładu, podpis cyfrowy wiadomości o długości 2000 bitów będzie miał długość 1024 bity, jeśli używamy systemu RSA, zaś jedynie 320 bitów przy użyciu ECDSA. Krótszy klucz pozwala na łatwiejszą realizację algorytmu, gdy ograniczona jest ilość dostępnej pamięci. Zastosowanie krzywych eliptycznych pozwala na zrezygnowanie z koprocesora arytmetycznego.

Ograniczenia implementacji algorytmów kryptograficznych wynikające z architektury sprzętowej kart:


Ściany ogniowe



Wstęp

Często efektywnym sposobem zabezpieczenia systemu przed atakami z zewnętrznego otoczenia sieciowego jest odseparowanie go od otoczenia przez zastosowanie tzw. architektury ściany ogniowej (ang. firewall).
Termin ten pierwotnie określał konstrukcją mającą zapobiec rozprzestrzenianiu się ognia. W budynku takie ściany oddzielają kompletnie jego części, a w samochodach fizycznie oddzielają silnik od pasażerów.
W architekturze takiej system informatyczny organizacji - mający połączenie z globalną siecią komputerową - połączony jest do tej sieci za pośrednictwem specjalnej struktury sprzętowo-programowej (może to być jeden komputer lub pewna podsieć z odpowiednim oprogramowaniem).
Ściana ogniowa może także oddzielać poszczególne elementy systemu organizacji.

Ściana ogniowa wykonuje dwojakiego rodzaju działania: Należy zdawać sobie sprawę z tego, że nie istnieje uniwersalna konfiguracja sprzętowo-programowa ściany ogniowej. Działanie każdej takiej architektury wiąże się ze specyfiką systemu informatycznego organizacji i wynika z jej polityki bezpieczeństwa.

Wady i zalety ścian ogniowych.

Zalety: Wady:

Filtrowanie pakietów w Linuxie

Filtrowanie pakietów w jądrze Linuxa ma długą historie, począwszy od wersji 1.1 istnieje tam kod, który potrafi śledzić i kontrolować pakiety jakie pojawiają się w jego zasięgu. Jądra z serii 2.4 posiadają zupełnie przepisany kod dotyczący TCP/IP w stosunku do 2.2. Został też przepisany od nowa kod odpowiedzialny za filtrowanie pakietów.

System filtrowania pakietów w Linuksie (2.4) został zbudowany na bazie Netfilter. Netfilter jest szkieletem zaimplementowanym w jądrze służącym do manipulowania pakietami. Dla każdego protokołu definiuje tzw. punkty zaczepienia (ang. hooks), czyli miejsca w ścieżce przeglądania pakietów jądra. W każdym z tych punktów będzie wywoływany kod Netfilter i przekazywany aktualnie przeglądany pakiet oraz numer punktu zaczepienia.
Na bazie Netfilter budowane są inne moduły służące do manipulowania pakietami. Dzięki takiej architekturze można w łatwy sposób dodawać nowe możliwości do filtrowania pakietów.

IP tables jest systemem selekcji pakietów, który został zbudowany na bazie Netfilter. Moduły jądra rejestrują nowe tabele, które są przeglądane wówczas, gdy pakiet znajduje się w jądrze. Na podstawie tych tabel podejmowana jest decyzja w sprawie danego pakietu. Tabele składają się z łańcuchów (ang. chains), które są zbiorami reguł określających, co należy zrobić z pakietem, jeżeli spełnia on określone warunki.

IP tables rejestruje następujące tabele:

Schemat przetwarzania pakietów


Przykładowe możliwości postąpienia z pakietem:
iptables jest narzędziem administratora, które umożliwia modyfikowanie reguł zawartych w tabelach filtracji pakietów jądra.


Możliwości jądra do użycia jako ściany ogniowej:



Materiały:

Dariusz Potakiewicz