Bezpieczeństwo. Wiesław Płaczek Systemy Operacyjne: Wykład 11 1



Podobne dokumenty
Ochrona zasobów. mechanizm ochrony polityka ochrony. 2. Domeny ochrony 3. Macierz dostępów 4. Implementacja macierzy dostępów

Ochrona zasobów. Cele ochrony. Polityka i mechanizm ochrony. Dariusz Wawrzyniak Cele ochrony

Systemy Operacyjne Ochrona

Wykład 12. Ochrona. Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Sieciowe Systemy Operacyjne

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

Podstawy systemów kryptograficznych z kluczem jawnym RSA

2 Kryptografia: algorytmy symetryczne

DZANIA SYSTEMEM INFORMATYCZNYM DLA SYSTEMU PODSYSTEM MONITOROWANIA EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO 2007 U BENEFICJENTA PO KL

ZAŁĄCZNIK Nr 3 do CZĘŚCI II SIWZ

ZAŁĄCZNIK Nr 1 do CZĘŚCI II SIWZ

Podstawy bezpieczeństwa

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych w Urzędzie Miasta Lublin

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

EXSO-CORE - specyfikacja

INSTRUKCJA ZARZĄDZANIA SYSTEMEM INFORMATYCZNYM DLA SYSTEMU PODSYSTEM MONITOROWANIA EUROPEJSKIEGO FUNDUSZ SPOŁECZNEGO 2007 U BENEFICJENTA PO KL

Instrukcja zarządzania systemem informatycznym STORK Szymon Małachowski

System operacyjny UNIX - użytkownicy. mgr Michał Popławski, WFAiIS

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

4. Podstawowa konfiguracja

Windows Serwer 2008 R2. Moduł 5. Zarządzanie plikami

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Bezpieczeństwo w sieci I. a raczej: zabezpieczenia wiarygodnosć, uwierzytelnianie itp.

Bezpieczeństwo systemów komputerowych

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum

Budowa systemów komputerowych

WSIZ Copernicus we Wrocławiu

Projekt pt. Cztery pory roku - zajęcia artystyczne współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Wykład 8: klasy cz. 4

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Laboratorium nr 5 Podpis elektroniczny i certyfikaty

INSTRUKCJA ZARZĄDZANIA SYSTEMEM INFORMATYCZNYM SŁUŻĄCYM DO PRZETWARZANIA DANYCH OSOBOWYCH W OŚRODKU KULTURY W DRAWSKU POMORSKIM

BEZPIECZEŃSTWO W SIECIACH

Działanie systemu operacyjnego

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Zdalne logowanie do serwerów

Metody ataków sieciowych

Projektowanie bezpieczeństwa sieci i serwerów

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Wymagania bezpieczeństwa wobec statycznych bezpośrednich 1-fazowych i 3-fazowych liczników energii elektrycznej. Wymaganie techniczne

Programowanie obiektowe - 1.

KAPITAŁ LUDZKI NARODOWA STRATEGIA SPÓJNOŚCI

ZiMSK. VLAN, trunk, intervlan-routing 1

Bezpieczeństwo usług oraz informacje o certyfikatach

Podstawy Rejestru systemu. Poddrzewa

Ustalanie dostępu do plików - Windows XP Home/Professional

Produkty. MKS Produkty

11. Autoryzacja użytkowników

9. System wykrywania i blokowania włamań ASQ (IPS)

Ataki kryptograficzne.

POLITYKA E-BEZPIECZEŃSTWA

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Problemy z bezpieczeństwem w sieci lokalnej

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Struktury systemów operacyjnych

Działanie systemu operacyjnego

PROGRAMY NARZĘDZIOWE 1

Wykład 11. Ochrona + Bezpieczeństwo cz. I. Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Księgarnia PWN: Kevin Kenan - Kryptografia w bazach danych. Spis treści. Podziękowania O autorze Wprowadzenie... 15

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Modele uwierzytelniania, autoryzacji i kontroli dostępu do systemów komputerowych.

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

4. Procesy pojęcia podstawowe

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Zarządzenie Nr 20/2009 Wójta Gminy Przywidz z dnia 6 marca 2009r.

(Pluggable Authentication Modules). Wyjaśnienie technologii.

Stosowane metody i środki uwierzytelnienia oraz procedury związane z ich zarządzaniem i użytkowaniem

Projektowani Systemów Inf.

Dane osobowe: Co identyfikuje? Zgoda

INSTRUKCJA ZARZĄDZANIA SYSTEMEM INFORMATYCZNYM DLA SYSTEMU PODSYSTEM MONITOROWANIA EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO 2007 U BENEFICJENTA PO KL

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Projekt wymagań bezpieczeństwa wobec statycznych bezpośrednich 1-fazowych i 3- fazowych liczników energii elektrycznej:

ABC systemu Windows 2016 PL / Danuta Mendrala, Marcin Szeliga. Gliwice, cop Spis treści

BEZPIECZEŃSTWO BANKOWOŚCI KORPORACYJNEJ

Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia

Działanie systemu operacyjnego

Jakie nowości i udogodnienia niesie za sobą przejście do Sidoma 8, część z tych różnic znajdziecie Państwo w tabeli poniżej.

Zastosowania PKI dla wirtualnych sieci prywatnych

BlackHole. Bezpieczne Repozytorium Ważnych Zasobów.

Plan nauczania informatyki Opracował: mgr Daniel Starego

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Program Rejestr zużytych materiałów. Instrukcja obsługi

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Bezpieczeństwo systemów informatycznych

SZCZEGÓŁOWA INSTRUKCJA ZARZADZANIA SYSTEMEM INFORMATYCZNYM W ZESPOLE SZKÓŁ PONADGIMNAZJALNYCH W DRAWSKU POMORSKIM

POLITYKA BEZPIECZEŃSTWA

BEZPIECZEŃSTWO BANKOWOŚCI DETALICZNEJ

i częstotliwość tworzenia kopii, zasady sprawdzania obecności wirusów komputerowych oraz dokonywania przeglądów i konserwacji systemów.

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

ZBIÓR DOBRYCH PRAKTYK KORZYSTANIA Z BANKOWOŚCI ELEKTRONICZNEJ

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Jednym z najważniejszych zagadnień, z którym może się zetknąć twórca

Transkrypt:

Ochrona i bezpieczeństwo Ochrona Cele ochrony Domeny ochrony Macierz dostępów Implementacja macierzy dostępów Cofanie praw dostępu Systemy działające na zasadzie uprawnień Ochrona na poziomie języka programowania Bezpieczeństwo Zagadnienie bezpieczeństwa Uwierzytelnianie Hasła jednorazowe Zagrożenia programowe Zagrożenia systemowe Nadzorowanie zagrożeń Szyfrowanie Klasyfikacja poziomów bezpieczeństwa Model bezpieczeństwa systemu Windows NT Wiesław Płaczek Systemy Operacyjne: Wykład 11 1

Cele ochrony Cele ochrony Ochrona (protection) mechanizm służący do kontrolowania dostępu programów, procesów lub użytkowników do zasobów zdefiniowanych przez system komputerowy; musi zawierać środki pozwalające specyfikować rodzaje wymaganej ochrony oraz zasób środków ich wymuszania. Zapewnienie, aby każdy wykonywany w systemie proces używał zasobów tylko w sposób zgodny z polityką przewidzianą dla użytkownika danych zasobów nieodzowne ze względu na niezawodność systemu. Zapobieganie złośliwym, zamierzonym naruszeniom ograniczeń dostępu przez użytkowników. Rolą ochrony jest dostarczenie mechanizmu do wymuszania polityki rządzącej sposobem użycia zasobu. System ochrony powinien być tak elastyczny, aby można było za jego pomocą wymuszać przestrzeganie każdej zasady, którą da się w nim zadeklarować (mechanizm powinien być oddzielony od polityki). Wiesław Płaczek Systemy Operacyjne: Wykład 11 2

Domeny ochrony System komputerowy jest zbiorem obiektów: obiekty sprzętowe (procesor, segmenty pamięci, drukarki, dyski, przewijaki taśmy itd.) oraz obiekty oprogramowania (pliki, programy, semafory). Każdy obiekt ma jednoznaczną nazwę, a dostęp do niego odbywa się tylko za pomocą dobrze zdefiniowanego zbioru operacji, np. procesor może tylko wykonywać rozkazy, segmenty pamięci mogą być odczytywane i zapisywane itd. Proces powinien mieć dostęp tylko do tych zasobów, do których został uprawniony, co więcej, w każdej chwili powinien mieć możność kontaktu tylko z tymi zasobami, których aktualnie potrzebuje do zakończenia zadania zasada wiedzy koniecznej. Struktura domenowa Domena ochrony (protection domain) definiuje zbiór obiektów i rodzaje operacji, które można wykonywać dla każdego obiektu, tzn. jest zbiorem praw dostępu do obiektów. Prawo dostępu (access right) możliwość wykonania operacji na obiekcie ma postać uporządkowanej pary <nazwa-obiektu, zbiór-praw>. Domeny nie muszą być rozłączne mogą dzielić prawa dostępu. Wiesław Płaczek Systemy Operacyjne: Wykład 11 3

Struktura domenowa Przykład: Trzy domeny: D_1, D_2, D_3. D_1 D_2 D_3 <O_3,{czytaj, pisz}> <O_1,{czytaj, pisz}> <O_2,{wykonaj}> <O_2,{pisz}> <O_4,{drukuj}> <O_1,{wykonaj}> <O_3,{czytaj}> Związek między procesem a domeną może być: Statyczny zbiór zasobów dostępnych dla procesu jest ustalony podczas jego dalszego działania problem z zasadą wiedzy koniecznej! Dynamiczny możliwość zmian zawartości domeny lub przełączania między domenami w trakcie wykonywania procesu. Sposoby realizacji domeny: Domeną może być każdy użytkownik przełączanie domen wraz ze zmianą użytkownika (zbiór obiektów zależy od identyfikacji użytkownika). Domeną może być każdy proces przełączanie domen poprzez przesyłanie komunikatów między procesami (zbiór obiektów zależy od ID procesu). Domeną może być każda procedura przełączanie domen wraz z wywołaniem procedury (zbiór obiektów zmienne lokalne procedury). Wiesław Płaczek Systemy Operacyjne: Wykład 11 4

Przykłady struktur domenowych System operacyjny działający w dwóch trybach (monitora i użytkownika) składa się z dwóch domen: Monitora (nadzorcy) proces może wykonywać rozkazy uprzywilejowane. Użytkownika proces może wykonywać tylko rozkazy nieuprzywilejowane. UNIX: Domena jest związana z użytkownikiem. Przełączaniu domen odpowiada czasowa zmiana identyfikacji użytkownika dokonuje się to poprzez system plików: Z każdym plikiem związany jest identyfikator właściciela i bit domeny, tzw. bit ustanowienia identyfikatora użytkownika (setuid bit). Kiedy użytkownik wykonuje plik będący własnością innego użytkownika, dla którego bit domeny jest ustawiony na 1, to efektywnym identyfikatorem użytkownika (EUID) procesu staje się identyfikator właściciela pliku i proces zyskuje prawa dostępu ustanowione dla właściciela pliku; po zakończeniu działania procesu ta chwilowa zamiana przestaje obowiązywać (np. program passwd, programy do współpracy z siecią itp.) Niebezpieczeństwo nadużycia! MULTICS: Domeny ochrony zorganizowane są hierarchicznie w strukturę pierścieniową. Każdy pierścień odpowiada pojedynczej domenie o numerach od 0 do 7. Domeny o wyższych numerach są podzbiorami domen i niższych numerach. Wiesław Płaczek Systemy Operacyjne: Wykład 11 5

Macierz dostępów Model ochrony można traktować abstrakcyjnie jako macierz, zwaną macierzą dostępów (access matrix): Wiesław Płaczek Systemy Operacyjne: Wykład 11 6 Wiersze reprezentują domeny; Kolumny reprezentują obiekty. Każdy element macierzy zawiera zbiór praw dostępu element dostęp(i, j) określa zbiór operacji, które proces działający w domenie D_i może wykonać na obiekcie O_j. Przykład 1: 4 domeny i 4 obiekty: 3 pliki (F_1, F_2, F_3) i drukarka; Domena D_1 Obiekt F_1 czytaj F_2 F_3 czytaj Drukarka D_2 drukuj D_3 czytaj wykonaj D_4 czytaj, pisz czytaj, pisz

Rozszerzenia macierzy dostępów Poprzez macierz dostępów można definiować i implementować nie tylko statyczną ale i dynamiczną ochronę: Przełączanie domen w trakcie wykonywania procesu poprzez zaliczenie domen i/lub macierzy dostępów do obiektów macierzy dostępów i dodanie operacji przełącz. Umożliwienie kontrolowanych zmian zawartości macierzy dostępów wymaga trzech dodatkowych praw: Kopiowanie (copy): możliwość kopiowania prawa dostępu w obrębie kolumny (dla obiektu) od domeny, dla której zostało zdefiniowane do innej domeny; oznaczane jest gwiazdką (*). Dwa dodatkowe warianty: Przekazanie po skopiowaniu źródłowa domena traci dane prawa dostępu. Ograniczone kopiowanie bez dziedziczenia prawa kopiowania (R* R). Właściciel (owner): możliwość dodawania i usuwania praw w obrębie kolumny. Kontrola (control): możliwość zmiany elementów w wierszu, tzn. w domenie. Problem zamknięcia (confinement problem): zagwarantowanie, że żadna informacja przechowywania na początku w obiekcie nie wydostanie się na zewnątrz jego środowiska wykonania nie jest w ogólności rozwiązywalny! Macierz dostępów dostarcza mechanizmu, który pozwala realizować określoną politykę ochrony (oddzielenie mechanizmu od polityki!). Mechanizm: implementowanie macierzy dostępów oraz zbioru reguł i gwarantowanie, że te reguły będą rzeczywiście wymuszane; sama macierz też musi być chroniona! Polityka: podejmowanie decyzji, jakie prawa powinny się znaleźć w elemencie (i, j) macierzy dostępów w gestii projektantów i użytkowników systemu. Wiesław Płaczek Systemy Operacyjne: Wykład 11 7

Przykłady rozszerzonych macierzy dostępów Obiekt Domena D_1 D_2 D_3 D_4 F_1 czytaj czytaj pisz F_2 czytaj F_3 czytaj wykonaj czytaj pisz Drukarka drukuj D_1 przełącz D_2 przełącz D_3 przełącz D_4 przełącz Przykład 2: Macierz dostępów z Przykładu 1 z domenami w roli obiektów. Obiekt Domena F_1 F_2 F_3 Obiekt Domena F_1 F_2 F_3 D_1 wykonaj pisz* D_1 wykonaj pisz* D_2 wykonaj czytaj* wykonaj D_2 wykonaj czytaj* wykonaj D_3 wykonaj D_3 wykonaj czytaj Przykład 3: Macierz dostępów z prawami kopiowania przed modyfikacją (lewa) i po modyfikacji (prawa). Wiesław Płaczek Systemy Operacyjne: Wykład 11 8

Przykłady rozszerzonych macierzy dostępów Wiesław Płaczek Systemy Operacyjne: Wykład 11 9 Domena Obiekt D_1 D_2 D_3 F_1 właściciel wykonaj wykonaj F_2 czytaj* właściciel F_3 pisz czytaj* właściciel pisz* Domena Obiekt D_2 D_3 właściciel wykonaj właściciel czytaj* pisz* pisz czytaj* właściciel pisz* Przykład 4: Macierz dostępów z prawami właściciela przed modyfikacją (lewa) i po modyfikacji (prawa). D_1 F_1 F_2 F_3 pisz Obiekt Domena F_1 F_2 F_3 Drukarka D_1 D_2 D_3 D_4 D_1 czytaj czytaj przełącz D_2 drukuj przełącz przełącz kontrola D_3 czytaj wykonaj D_4 pisz pisz przełącz Przykład 5: Macierz dostępów z Przykładu 2 z prawem kontroli dla domeny D_2.

Implementacja macierzy dostępów Implementacja macierzy dostępów Tablica globalna: Składa się ze zbioru uporządkowanych trójek <domena, obiekt, zbiór-praw>. Kiedy operacja M ma być wykonana na na obiekcie O_j w domenie D_i, wtedy w tablicy globalnej szuka się trójki < D_i, O_j, R_k >, gdzie M R_k. Jeśli trójka zostanie znaleziona, to operację można wykonać; w przeciwnym razie powstaje sytuacja wyjątkowa (błąd). Tablica na ogół jest tak duża, że nie może znajdować się w pamięci operacyjnej stosuje się techniki pamięci wirtualnej (dodatkowe operacje WE/WY). Nie da się łatwo grupować obiektów lub domen, np. obiekt dostępny do czytania dla wszystkich musi występować osobno w każdej domenie. Listy dostępów do obiektów (access list) kolumny macierzy dostępów: Każdemu obiektowi odpowiadają uporządkowane pary <domena, zbiór-praw>, definiujące wszystkie domeny z niepustymi zbiorami praw dostępu do obiektu. Podejście takie można rozszerzyć dodając domyślny zbiór praw dostępu. Kiedy operacja M ma być wykonana na na obiekcie O_j w domenie D_i, wtedy na liście dostępów obiektu O_j szuka się związanej z nim pary <D_i, R_k>, gdzie M R_k. Jeśli powyższa pozycja zostanie znaleziona, to operacja może być wykonana, w przeciwnym razie przeszukuje się domyślny zbiór praw dostępu itd. Wiesław Płaczek Systemy Operacyjne: Wykład 11 10

Implementacja macierzy dostępów c.d. Listy uprawnień do domen wiersze macierzy dostępów: Lista uprawnień (capability list) domeny jest spisem obiektów i operacji dozwolonych do wykonania na tych obiektach obiekt jest reprezentowany przez nazwę fizyczną lub adres zwany uprawnieniem (capability). W celu wykonania operacji M na obiekcie O_j,operację M należy zaopatrzyć w parametr określający uprawnienie (wskaźnik) do obiektu O_j aby uzyskać dostęp do obiektu wystarczy wejść w posiadanie uprawnienia. Lista uprawnień jest obiektem chronionym, utrzymywanym przez system operacyjny i jest dostępna dla użytkownika/procesu tylko pośrednio. Uprawnienia są odróżnianie od innych danych za pomocą: Znaczników (tags) jeden lub kilka bitów (do oznaczania typów obiektów). Podziału przestrzeni adresowej procesu na dwie części: część dostępną programowi oraz część zawierającą wykaz uprawnień dostępną tylko systemowi operacyjnemu. Mechanizm zamka-klucza (lock-key scheme): Każdy obiekt ma wykaz jednoznacznych wzorców binarnych zamków (locks). Każda domena ma wykaz jednoznacznych wzorców binarnych kluczy (keys). Proces działający w domenie może mieć dostęp do obiektu tylko wtedy, gdy dana domena zawiera klucz pasujący do jednego z zamków tego obiektu. Wykazy zamków i kluczy są zarządzane przez system operacyjny użytkownicy nie mogą ich bezpośrednio sprawdzać ani zmieniać. Wiesław Płaczek Systemy Operacyjne: Wykład 11 11

Implementacja macierzy dostępów c.d. Porównanie: Listy dostępów odpowiadają bezpośrednio zapotrzebowaniom użytkowników, ale określanie zbioru praw dla każdej domeny jest trudne, a przeszukiwanie wykazów może być czasochłonne. Listy uprawnień są wygodne dzięki lokalizowaniu informacji dotyczącej poszczególnych procesów, ale cofanie uprawnień bywa niewydajne, poza tym nie odpowiadają one wprost potrzebom użytkowników. Mechanizm zamka-klucza jest czymś pośrednim między powyższymi schematami może być zarówno efektywny, jak i elastyczny. Kombinacja list dostępów i uprawnień: Kiedy proces po raz pierwszy próbuje uzyskać dostęp do obiektu, wtedy przeglądana jest lista dostępów. Jeśli dostęp jest dozwolony, to tworzone jest uprawnienie, które dołączane jest do procesu. Przy następnych odniesieniach proces korzysta z tego uprawnienia. Np. system plików UNIX a z każdym plikiem związana jest lista dostępów: Przy otwieraniu pliku sprawdzana jest lista dostępów, a następnie jeśli dostęp jest dozwolony tworzona jest nowa pozycja w tablicy plików procesu. Wszystkie dalsze operacje na pliku odwołują się do tej pozycji tablicy plików. Podczas zamykania pliku usuwa się odpowiadający mu wpis w tablicy plików. Wiesław Płaczek Systemy Operacyjne: Wykład 11 12

Cofanie praw dostępu Sposoby cofania (unieważniania) praw dostępu do obiektów: Natychmiast lub z opóźnieniem (kiedy nastąpi?). Wybiórczo lub ogólnie dla pewnej grupy użytkowników lub wszystkich. Częściowo lub całkowicie pewien podzbiór praw lub wszystkie prawa. Czasowo lub na stałe z możliwością późniejszego odzyskania praw lub nie. Schemat listy dostępów cofanie praw jest proste: Wyszukanie danego prawa na liście dostępów i usunięcie go z listy. Unieważnienie jest natychmiastowe i może realizować dowolne z pozostałych sposobów cofania praw dostępów. Schemat uprawnień cofanie praw jest trudniejsze, jako że uprawnienia są rozproszone po całym systemie różne schematy: Wtórne pozyskiwanie: uprawnienia są okresowo usuwane z każdej domeny. Wskaźniki zwrotne: każdy obiekt posiada wykaz wskaźników do wszystkich związanych z nim uprawnień posługując się tymi wskaźnikami można cofać uprawnienia (np. system MULTICS). Schemat ogólny ale kosztowny! Adresowanie pośrednie każde uprawnienie wskazuje na jednoznaczny wpis w tablicy globalnej, a ten wskazuje na obiekt; cofanie uprawnienia usuwanie elementu tablicy. Klucze jednoznaczne wzorce bitowe przyporządkowane uprawnieniom; z każdym obiektem związany jest klucz główny; cofnięcie uprawnień zmiana wartości klucza głównego. Do selektywnego cofania uprawnień potrzebna jest lista kluczy. Wiesław Płaczek Systemy Operacyjne: Wykład 11 13

Systemy działające na zasadzie uprawnień System Hydra charakteryzuje się dużą elastycznością: Dostarcza stałego zbioru praw dostępu, które zna i interpretuje, np. prawo czytania, pisania, wykonywania segmentu pamięci itd. Ponadto zawiera środki umożliwiające użytkownikowi deklarowanie dodatkowych praw interpretacja tych praw zależy wyłącznie od programu użytkownika, ale system umożliwia ochronę dostępu przy korzystaniu z tych praw na takich samych zasadach jak dla praw zdefiniowanych w nim samym. Operacje na obiektach zdefiniowane są proceduralnie nazwy procedur zdefiniowanych przez użytkownika muszą być przedłożone systemowi ochrony. Zawiera obszerną bibliotekę procedur systemowych, które można wywoływać w programach użytkowych, a także translator będący interfejsem z systemem. System Cambrige CAP dwa rodzaje uprawnień: Uprawnienie zadane (data capability) realizowane prawa: standardowe czytanie, pisanie lub wykonywanie segmentów pamięci związanych z obiektem. Uprawnienie programowe (software capability) chronione przez mikrokod CAP, ale nie interpretowane, interpretuje je chroniona procedura, którą może napisać programista aplikacji jako część jakiegoś podsystemu; interpretacja tych uprawnień jest w całości zależna od danego podsystemu i zawartych w nim procedur chronionych możliwa realizacja różnorodnej polityki ochrony. Są to systemy badawcze nie znajdują się w powszechnym użyciu. Wiesław Płaczek Systemy Operacyjne: Wykład 11 14

Ochrona na poziomie języka Określanie ochrony za pomocą języka programowania pozwala opisywać na wysokim poziomie politykę przydziału i użytkowania zasobów. Implementacja języka może umożliwiać egzekwowanie ochrony tam, gdzie nie istnieje możliwość kontroli sprzętowej. Interpretując reguły ochrony może generować wywołania dla dowolnego systemu ochrony, realizowanego przez sprzęt i system operacyjny. Opracowane zostały konstrukcje językowe dostarczające mechanizmów wykonywania trzech funkcji: 1. Bezpieczne i wydajne rozprowadzanie uprawnień między procesami klienta (np. proces skorzysta z zasobu tylko kiedy uzyska do niego uprawnienia). 2. Określanie rodzajów operacji, które dany proces może wykonać na przydzielonym zasobie (np. do czytania pliku potrzebne prawo czytania). 3. Określanie porządku, w którym proces może wywoływać operacje na zasobie (np. plik przed czytaniem powinien być otwarty itd.). Przykład: Język Java za ochronę odpowiedzialna jest JVM (każdy wątek może należeć do innej klasy ochrony). Wiesław Płaczek Systemy Operacyjne: Wykład 11 15

Bezpieczeństwo Zagadnienie bezpieczeństwa Bezpieczeństwo (security) systemu komputerowego wymaga uwzględnienia środowiska zewnętrznego, w którym on działa i zapewnienia ochrony przed: nieupoważnionym dostępem, złośliwymi uszkodzeniami lub zmianami, przypadkowym wprowadzeniem niespójności. System jest bezpieczny (secure), jeżeli w każdych okolicznościach dostęp do jego zasobów i sposób ich wykorzystania jest zgodny z założonym. Naruszenia bezpieczeństwa (nadużycia) systemu mogą być złośliwe (czytanie, modyfikacja lub niszczenie danych bez upoważnienia, uniemożliwienie sensownego użytkowania systemu) lub przypadkowe (błędy sprzętowe, błędy ludzkie, zdarzenia losowe). Łatwiej chronić przed nadużyciami przypadkowymi niż złośliwymi. Problemy bezpieczeństwa są szczególnie ważkie w erze Internetu! Osiągnięcie całkowitego bezpieczeństwa nie jest możliwe! Wiesław Płaczek Systemy Operacyjne: Wykład 11 16

Uwierzytelnianie Podstawowym problemem bezpieczeństwa w systemach operacyjnych jest uwierzytelnianie (authentication). Najpopularniejszą metodą sprawdzania tożsamości użytkowników jest operowanie hasłami (passwords). Gdy użytkownik się przedstawia, wówczas zostaje poproszony o hasło. Jeśli podane hasło jest zgodne z hasłem zapamiętanym w systemie, to system uznaje, że ma do czynienia z pełnoprawnym użytkownikiem. Hasła można uważać za specjalny przypadek kluczy lub uprawnień i używać ich do ochrony obiektów w systemie (np. plików) z różnymi prawami dostępu można kojarzyć różne hasła. Słabości haseł: Hasła mogą być łamane (odgadnięcie, przypadkowe lub celowe ujawnienie). Intruz może odgadnąć hasło na podstawie pewnych informacji o użytkowniku (np. imiona dzieci, zwierząt domowych itd.) lub metodą siłową (brute force) przez sprawdzenie wszystkich możliwych kombinacji znaków. Hasło może być ujawnione wskutek podglądania: zwykłego ( przez ramię ) lub elektronicznego monitory do węszenia (sniffing) haseł. Wiesław Płaczek Systemy Operacyjne: Wykład 11 17

Ochrona haseł Ochrona przed łamaniem haseł: Wymaganie dłuższych i trudniejszych do odgadnięcia haseł (kombinacji różnych typów znaków: małe i wielkie litery, cyfry, znaki specjalne). Wymuszanie zmian haseł w regularnych odstępach czasu (bez powtórzeń). Ograniczanie liczby błędnych prób dostępu oraz ich rejestrowanie. Generowanie haseł przez system zwykle trudniejsze do zapamiętania. Hasła szyfrowane (np. system UNIX): Hasła przechowywane są w postaci zaszyfrowanej plik z hasłami nie musi być utrzymywany w tajemnicy. Hasła są kodowane przy pomocy tzw. funkcji jednokierunkowej (one-way function), tzn. takiej, dla której bardzo trudno jest znaleźć funkcję odwrotną: dla danego x łatwo można obliczyć f(x), ale wyliczenie x dla danej wartości f(x) jest praktycznie niemożliwe; funkcja f(x) algorytm szyfrowania. Gdy użytkownik podaje swoje hasło, zostaje ono zakodowanie i porównane z przechowywanym, zakodowanym hasłem. Brak kontroli systemu nad hasłami: można zrobić kopię pliku z hasłami i próbować łamać hasła, np. przez szybkie procedury szyfrujące każde słowo ze słownika wg. znanych algorytmów i porównujące wyniki z hasłami. W nowszych wersjach systemu UNIX wpisy zaszyfrowanych haseł są ukryte, a w niektórych nie pozwala się używać jako haseł słów ze słownika. Wiesław Płaczek Systemy Operacyjne: Wykład 11 18

Hasła jednorazowe Hasła dobrane parami (paired passwords): System przechowuje zbiór par haseł. Na początku sesji system wybiera losowo i przedstawia jedną część pary haseł, a użytkownik musi podać poprawnie jej drugą część (hasło-odzew). Hasła algorytmiczne: Jako hasło używany jest algorytm, np. funkcja całkowitoliczbowa. System generuje liczbę losową i przedstawia ją użytkownikowi. Użytkownik oblicza wartość funkcji i przekazuje wynik systemowi. System wykonuje analogiczne obliczenia i porównuje oba wyniki. Hasła algorytmiczne z tajemnicą: System i użytkownik dzielą tajemnicę (secret), której nigdy nie przesyła się środkami komunikacji grożącymi ujawnieniem. System generuje tzw. ziarno (seed), np. liczba losowa lub ciąg alfanumeryczny, i przedstawia je użytkownikowi. Użytkownik wylicza wartość funkcji f(tajemnica, ziarno) i przesyła wynik jako hasło do komputera. Komputer wykonuje analogiczne obliczenia i porównuje wyniki. Hasła jednorazowe są niemalże jedynym sposobem zapobiegania niewłaściwym uwierzytelnieniom na skutek ujawnienia hasła. Wiesław Płaczek Systemy Operacyjne: Wykład 11 19

Biometria Czytniki dłoni porównują zapamiętane parametry (np. mapę temperaturową, długość palców, szerokość palców, rysunek dłoni) z tym co jest czytane z ich podkładek analizujących dłoń (hand-reader pad). Urządzenia te są dziś zbyt duże i kosztowne, by ich używać do zwykłego uwierzytelniania komputerowego. Czytniki odcisków palców czytają wzory linii papilarnych palca umieszczonego na specjalnej podkładce i zamieniają je na sekwencję liczb, a następnie porównują tę sekwencję z zapamiętanym wzorcem. Dokładne i ekonomiczne powinny spopularyzować się w niedalekiej przyszłości. Schemat uwierzytelniania dwuskładnikowego wymaganie nazwy użytkownika i hasła oraz analizowanie odcisku palca. Skanery siatkówki oka duża precyzja identyfikacji, łatwość w użyciu duże szanse na spopularyzowanie. Wiesław Płaczek Systemy Operacyjne: Wykład 11 20

Zagrożenia programowe Koń trojański (trojan horse) segment kodu nadużywający swojego środowiska. Wykorzystuje mechanizm pozwalający użytkownikom wykonywanie programów napisanych przez innych użytkowników. Długie ścieżki wyszukiwania zwiększają zagrożenie koń trojański może się wśliznąć, jeżeli jakiś katalog na ścieżce nie jest odpowiednio zabezpieczony. Np. wewnątrz edytora tekstu może być kod służący do wyszukiwania w redagowanym pliku pewnych słów kluczowych i w razie ich wykrycia kopiowania pliku do obszaru dostępnego dla twórcy edytora. Np. program, który naśladuje program login, a jego celem jest przechwytywanie identyfikatora użytkownika oraz jego hasła. Boczne wejście (trap door) Projektant programu lub systemu może zostawić w oprogramowaniu lukę, którą tylko on potrafi wykorzystać, np. specyficzna nazwa użytkownika lub hasło pozwalające na obejście normalnych procedur bezpieczeństwa. Znane są przypadki aresztowań autorów programów bankowych, które manipulowały zaokrąglaniem kwot i przelewały końcówki na konta autorów. Sprytne boczne wejścia mogą być instalowane w kompilatorze: kompilator będzie generował kod wynikowy oraz boczne wejście, które jest trudne do wykrycia (wymaga analizy kodu źródłowego kompilatora). Wiesław Płaczek Systemy Operacyjne: Wykład 11 21

Zagrożenia programowe c.d. Przepełnienie stosu i bufora (stack and buffer overflow) najpospolitszy sposób napaści spoza systemu, siecią lub połączeniem telefonicznym, w celu uzyskania dostępu do upatrzonego systemu. Wykorzystuje się błąd programowy polegający na braku zakodowanego sprawdzania granic pola wejściowego. Napastnik wysyła więcej danych niż program oczekuje powodując przepełnienie pola wejściowego, argumentu polecenia lub bufora wejściowego (np. demona sieciowego), zanim ten zapisze stos. Zastępuje bieżący adres powrotu na stosie adresem kodu penetrującego. Zapisuje prosty fragment kodu w dalszym obszarze stosu, zawierający polecenie, które atakujący ma zamiar wykonać, np. rozmnożenie powłoki. Atak może być dokonywany wewnątrz systemu i rozprzestrzeniać się dowolnymi kanałami komunikacyjnymi! Atak może wystąpić w ramach używanego protokołu komunikacyjnego, dlatego jego wykrycie i zapobieżenia mu może być trudne! Może nawet pokonywać zabezpieczenia zapór ogniowych (firewalls)! Jednym ze sposobów zapobiegania jest wyposażenie CPU w możliwość zabraniania wykonywania kodu w obszarze pamięci przeznaczonej na stos. Wiesław Płaczek Systemy Operacyjne: Wykład 11 22

Zagrożenia systemowe Robaki (worms) procesy używające mechanizmu rozmnażania do paraliżowania działania systemu. Robak rodzi własne kopie, zużywając zasoby systemowe i blokując innym procesom możliwość korzystania z systemu. Szczególną witalność wykazują robaki w sieciach komputerowych, ponieważ mogą się reprodukować między systemami, doprowadzając do awarii sieci. Przykład: The Morris Internet Worm program-robak wpuszczony do sieci Internet dnia 2.11.1988 przez studenta I-go roku Cornell University Roberta Tappana Morrisa, który unieruchomił tysiące komputerów (straty szacowane na miliony dolarów). Wirusy (viruses) fragment kodu osadzonego w poprawnym programie, którego celem jest sianie spustoszenia w systemie (zmienianie lub niszczenie plików itd.). Na wirusy narażone są głównie systemy mikrokomputerowe (słaba ochrona). Zwykle są roznoszone przez zainfekowane dyskietki, zawirusowane programy na publicznych stanowiskach nowości (public bulletin boards), pocztę elektroniczną. Czasem zbliżające się ataki wirusowe są nagłaśniane przez media. Do ochrony przed wirusami służą specjalne programy antywirusowe wyszukujące w programach szablony rozkazów znanych wirusów. Najlepszą ochroną jest profilaktyka safe computing: legalne oprogramowanie itd. Odmowa świadczenia usług (Denial of Service DoS) przeciążenie systemu będącego celem ataku i uniemożliwienie mu wykonywania użytecznej pracy. Wiesław Płaczek Systemy Operacyjne: Wykład 11 23

Robak internetowy Morrisa Program-robak wykorzystywał luki w procedurach bezpieczeństwa systemu UNIX i ułatwienia dzielenia zasobów sieci lokalnych. Robak składał się z dwu części: programu haczącego (grappling hook) oraz programu głównego. Program haczący (l1.c, 99 linii w C) wykonując się na zaatakowanej maszynie sprowadzał na nią kopię programu głównego, który zaczynał poszukiwanie kolejnych maszyn do zainfekowania. Do atakowania nowych maszyn robak używał trzech metod: Wykorzystanie programu sieciowego rsh oraz plików z zaufanymi komputerami. Wykorzystanie błędów w programach finger i sendmail do załadowania i uruchomienia programu haczącego. Po dotarciu na komputer robak główny próbował odgadnąć hasła użytkowników, wykonując prosty, ale wydajny trzyfazowy algorytm łamania haseł. Na każdym nowym komputerze robak poszukiwał swoich aktywnych kopii i jeżeli takie znalazł, to pozostawiał tylko co siódmą kopię to wywołało epidemię! Program-robak starannie zacierał za sobą ślady oraz skutecznie odpierał próby powstrzymania jego ekspansji. Nie posiadał żadnego kodu do uszkadzania lub niszczenia systemów, ale zawierał struktury, które mogły być użyte do takich celów. Sąd federalny skazał Morrisa na 3 lata więzienia w zawieszeniu, 400 godzin pracy społecznej i $10,000 grzywny; koszty procesu wyniosły ok. $150,000. Wiesław Płaczek Systemy Operacyjne: Wykład 11 24

Nadzorowanie zagrożeń Nadzorowanie zagrożeń Śledzenie podejrzanych zachowań i próby wykrywania naruszenia bezpieczeństwa, np. przez zliczanie niepoprawnych haseł większa liczba takich prób może być sygnałem usiłowania włamania. Prowadzenie dziennika kontroli (audit log): zapisywanie czasu, nazwy użytkownika i rodzajów wszystkich dostępów do obiektów. W przypadku naruszenia bezpieczeństwa informacja taka może być użyta do ustalenia szczegółów ingerencji. Dziennik kontroli może być pożyteczny przy usuwaniu skutków włamania, a także do opracowania lepszych sposobów ochrony. Dzienniki takie mogą stawać się bardzo duże! Okresowe przeglądanie systemu pod kątem luk w bezpieczeństwie: krótkie i łatwe do odgadnięcia hasła; nieuprawnione programy manipulujące przywilejem set-uid; nieupoważnione programy w katalogach systemowych; nieoczekiwanie długo wykonywane procesy; nieodpowiednia ochrona katalogów oraz plików, szczególnie systemowych; niebezpieczne wpisy w ścieżkach wyszukiwania programów (koń trojański); zmiany w programach systemowych wykryte za pomocą sum kontrolnych. Wiesław Płaczek Systemy Operacyjne: Wykład 11 25

Zabezpieczenia sieci komputerowych Bezpieczeństwo komputerów pracujących w sieciach jest znacznie bardziej zagrożone niż systemów autonomicznych możliwe ataki z nieznanego i bardzo wielkiego zbioru punktów dostępu. Zapora ogniowa (firewall) jedno z rozwiązań służące do oddzielania systemów zaufanych od niegodnych zaufania. Komputer lub ruter występujący między częścią zaufaną a niepewną. Ogranicza dostęp sieciowy między dwiema domenami bezpieczeństwa (security domains) oraz nadzoruje i rejestruje wszystkie połączenia. Może przepuszczać komunikaty tylko wybranych protokołów, np. http, a nie pozwalać na przechodzenie innym, np. z protokołu finger. Umożliwia wydzielenie w sieci wielu domen. W typowej implementacji zapory ogniowej wyróżnia się 3 domeny: internetowa domena niepewna; częściowo zabezpieczona sieć o ograniczonym zaufaniu, tzw. strefa zdemilitaryzowana (demilitarized zone DMZ); komputery w przedsiębiorstwie (instytucji). Zezwala się na połączenia z Internetu do DMZ oraz z komputerów przedsiębiorstwa do Internetu. Nie zezwala się na połączenia z Internetu lub z DMZ do przedsiębiorstwa. Wiesław Płaczek Systemy Operacyjne: Wykład 11 26

Szyfrowanie Szyfrowanie jest powszechnie stosowaną metodą ochrony informacji przesyłanej przez niepewne łącza. Podstawowy mechanizm szyfrowania: 1. Informacja zostaje zaszyfrowana (encrypted) z początkowej, czytelnej postaci, zwanej tekstem czystym (clear text) na postać wewnętrzną, zwaną szyfrogramem (ciphertext). 2. Tekst zaszyfrowany (szyfrogram) można zapamiętać w pliku otwartym do czytania lub przesłać niechronionymi kanałami komunikacyjnymi. 3. Odbiorca musi odszyfrować (decrypt), czyli zdekodować szyfrogram do postaci tekstu czystego. Najpopularniejsze metody szyfrowania stosują algorytm szyfrowania E, algorytm deszyfrowania D i tajny klucz k. Cechy dobrej metody szyfrowania: Dla danego klucza k oraz każdego komunikatu m: D_k(E_k(m)) = m. Szyfrowanie E_k i deszyfrowanie D_k można wykonać wydajnie. Bezpieczeństwo systemu zależy tylko o tajności klucza k, a nie od tajności algorytmów E lub D. Odgadnięcie klucza jest niezwykle trudne dla intruza! Wiesław Płaczek Systemy Operacyjne: Wykład 11 27

Algorytmy szyfrowania Algorytmy szyfrowania Algorytm szyfrowania symetrycznego funkcja E_k może być wyprowadzona z D_k i na odwrót; wymaga bezpiecznej dystrybucji klucza (key distrubution) co może być problemem! Algorytm szyfrowania asymetrycznego lub szyfrowanie z kluczem publicznym każdy z użytkowników ma dwa klucze: klucz publiczny (jawny) używany do szyfrowania danych; klucz prywatny znany tylko pojedynczemu użytkownikowi, używany do deszyfrowania danych. Klucz prywatny musi być trudny do odgadnięcia (wyliczenia)! Metoda RSA oparta o problem faktoryzacji (podział na czynniki pierwsze) wielkich liczb naturalnych. Niech: n = p q, gdzie p, q liczby pierwsze; Znając p i q można łatwo obliczyć n, ale znając n bardzo trudno jest znaleźć p i q dla znanych algorytmów klasycznych czas rośnie wykładniczo ze wzrostem n; zatem należy wziąć odpowiednio duże p i q (>100 cyfr). Klucz publiczny para (e,n); Klucz prywatny para (d,n); Liczby e i d wylicza się przy użyciu p i q, a szyfrowanie (deszyfrowanie) jest operacją podnoszenia do potęgi e (d) modulo n. Wiesław Płaczek Systemy Operacyjne: Wykład 11 28