Wykład 8 Ochrona danych wprowadzenie Sterowanie dostępem do danych Sterowanie przepływem danych Ograniczanie możliwości wnioskowania Szyfrowanie 1
Sterowanie dostępem (przyznawanie prawa dostępu) polega na identyfikacji poszczególnych użytkowników i na przyznawaniu im prawa dostępu do określonego zbioru danych; Sterowanie przepływem danych - to kontrolowanie przesłań danych w celu zabezpieczenia ich przed osobami nieupoważnionymi; Ograniczanie możliwości wnioskowania ma na celu uniemożliwienie użytkow nikowi bazy na podstawie dostępnych danych wyciągania wniosków dotyczących in formacji, których nie powinien poznać; Szyfrowanie - umożliwia przechowywanie lub przesyłanie danych w postaci czytelnej jedynie dla użytkowników znających odpowiedni algorytm lub klucz. 2
Sterowanie dostępem do danych Użytkownik SZBD posiada unikalny, zarejestrowany w bazie identyfikator (nazwa konta użytkownika) oraz, zaszyfrowane hasło dostępu. Administrator systemu ma nieograniczone prawa do wykonywania operacji na wszystkich obiektach bazy danych. Grupy użytkowników użytkownicy, którzy mają takie same uprawnienia. Obiekty bazy: własne obce (systemowe i innych użytkowników) 3
W przypadku relacji (perspektywy) prawo dostępu do niej może obejmować następujące przywileje: odczytu (ang. read), wstawiania nowych krotek (ang. insert), usuwania krotek (ang. delete), modyfikowania wartości jednego lub wielu atrybutów krotki (ang. update), dołączania nowych atrybutów, tj. modyfikacji jej schematu (ang. expand), usuwania całej relacji (ang. drop), tworzenia indeksów dla relacji (ang. index). 4
Obiekty własne utworzył dany użytkownik, posiada on nieograniczone prawa dostępu do nich. Wśród obiektów obcych wyróżnia się podgrupę obiektów systemowych i obiektów innych użytkowników. Obiekty systemowe są zwykle niezbędne dla większości użytkowników, np. w związku z dynamicznym rozwojem schematu bazy danych. Stąd są one dla nich w większości widoczne, choć zwykle nie mogą być modyfikowane. Obiekty pozostałych użytkowników są na ogół niewidoczne, chyba że ich właściciel w sposób jawny wskazał użytkowników, którym przysługują szczególne prawa dostępu. Obiekty własne są adresowane przez podanie ich nazw, natomiast obiekty obce przez złożenie identyfikatora ich właściciela, separator i nazwę. 5
GRANT CONNECT TO user_id IDENTIFIED BY password GRANT DBA TO user_id GRANT RESOURCE TO user_id GRANT GROUP TO user_id GRANT MEMBERSHIP IN GROUP TO user_id GRANT ALTER DELETE INSERT REFERENCES (column_name, ) SELECT (column_name, ) UPDATE (column_name, ) ALL ON table_name TO user_id GRANT EXECUTE ON procedure_name TO user_id REVOKE 6
Szczególnym prawem, niezbędnym do manipulowania obiektami bazy danych, jest prawo dołączania się do bazy danych. Nadaje je administrator systemu, który jednocześnie jest odpowiedzialny za określenie typu użytkownika i ewentualnie grup, do których należy. Innym szczególnym prawem jest prawo przekazywania przyznanych przywilejów innym użytkownikom bazy danych. Użytkownik, który je posiada może określać prawa dostępu innych użytkowników do obiektów obcych. Z reguły zbiór przywilejów przekazywanych przechodnio innym użytkownikom jest podzbiorem przywilejów użytkownika, który je przekazuje. 7
Sterowanie przepływem danych Problem sterowania przepływem danych pojawia się w sytuacji, gdy np. z dwóch użytkowników U1, i U2, pierwszy jest upoważniony co najmniej do odczytu określonego obiektu O, a drugi nie. Użytkownik U1, może utworzyć kopię O obiektu O i upoważnić do dostępu do niej użytkownika U2. Przepływ danych między obiektami X i Y istnieje na przykład wtedy, gdy pewien program użytkowy (aplikacja) dokonuje odczytu obiektu X, a odczytane dane przepisuje następnie do obiektu Y. X stanowi wówczas źródło informacji, a Y ich odbiorcę. 8
9
Większość opracowanych dotąd metod sterowania przepływem danych wykorzystuje pojęcia klasy ochrony i poziomu ochrony. Obiekty bazy danych grupuje się w klasy ochron. Każdej z takich klas odpowiada określony poziom ochrony. Korzysta się z następującej reguły: przepływ informacji od danego źródła do określonego odbiorcy jest możliwy tylko wtedy, gdy poziom ochrony odpowiadający odbiorcy jest co najmniej tego samego stopnia co poziom ochrony źródła informacji. Protokół sterowania przepływem danych określa kanał, którym można przesłać informacje w taki sposób, aby nie dopuścić do przechwytywania informacji poufnych przez osoby nieupoważnione. 10
Przeważnie stosuje się trzy poziomy upoważnienia: 1. Poufności 2. Tajności 3. Ścisłej tajności Kategorie obiektów są tworzy się na podstawie kombinacji pewnych elementarnych cech, takich jak np. zastrzeżony (Z), niezastrzeżony (N), zakodowany (K), wrażliwy (W). Przykładową kombinacją jest ZKW będącą kategorią dla obiektów zastrzeżonych, zakodowanych i wrażliwych. Reguła sterowania przepływem informacji jest następująca: Przesłanie z klasy ochrony (i, x) do klasy (j, y) jest możliwe wtedy i tylko wtedy, gdy i j oraz x y. Przykładowo, można przesłać informacje z klasy (3, Z) do klas (3, ZW) oraz (4, Z), natomiast nie można do klasy (2, W). 11
Klasę ochrony określa się dla każdego z programów i każdego z obiektów tworzących określony system bazy danych. Program P może odczytywać obiekt O tylko wtedy, gdy klasa P jest co najmniej tak samo wysoka jak klasa O. Program P może uaktualnić obiekt O tylko wtedy, gdy klasa P jest równie niska jak klasa O. W konsekwencji, żadna dana przesłana do/z programu nie trafia nigdy z klasy wyższej do niższej. 12
Ograniczanie możliwości wnioskowania Przyjmijmy, że w pewnym systemie bazy danych zawarto informację, że na etacie np. adiunkta jest zatrudniony tylko jeden pracownik o identyfikatorze np. Waldemar. Dociekliwy użytkownik może skierować kieruje do bazy danych trzy kolejne zapytania o dane syntetyczne: 1. Ilu pracowników pracuje w danej instytucji 2. Jakie są średnie zarobki pracowników tej instytucji 3. Jakie są średnie zarobki pracowników tej instytucji z wyłączeniem adiunktów. Na podstawie udzielonych przez system odpowiedzi bardzo łatwo obliczyć utajnioną informację dotyczącą zarobków Waldemara. 13
W drugim przykładzie kierujemy dwa zapytania do bazy danych, w której są ewidencjonowani pacjenci pewnego szpitala. Pierwsze zapytanie jest następujące: 1. Ilu chorych spełnia następujące warunki: płeć męska, wiek 30-40 lat, żonaty, troje dzieci, przyjęty do szpitala określonego dnia Przyjmijmy, że uzyskano odpowiedź I oraz, że pytający wie, że warunki te spełnia jego przełożony Stanisław, który w tym samym dniu nie pojawił się w pracy. Pytający zakładając, że jego szef trafił do szpitala spróbuje uzyskać teraz pewne dodatkowe poufne informacje dotyczące schorzenia Stanisława. 14
Drugie pytanie jest następujące: Ilu chorych spełnia następujące warunki: płeć męska, wiek 30-40 lat, żonaty, troje dzieci, przyjęty do szpitala w podanym dniu, leczony na depresję na oddziale psychiatrycznym. Jeśli po raz wtóry odpowiedzią jest I, wniosek jest oczywisty. 15
Reguła ochrony przed możliwością uzyskiwania odpowiedzi na podstawie wnioskowania jest następująca: System nie udziela odpowiedzi na pytanie w przypadku, gdy musiałby ją wygenerować na podstawie danych o mniej niż k lub więcej niż n-k obiektów określonego typu, gdzie n stanowi liczbę wszystkich obiektów tego typu. Inną metodą ograniczania możliwości wnioskowania jest kontrola pokrywania się odpowiedzi. W metodzie tej nie udziela się odpowiedzi na zapytania jeśli zbiór wynikowy pokrywa się częściowo ze zbiorami wynikowymi ostatnio kierowanych do bazy danych zapytań. Kolejną metodą jest pogrupowanie obiektów bazy danych w taki sposób, że każda z grup ma liczność większą od pewnego ustalonego minimum. Kierowane do bazy danych zapytania mogą dotyczyć wyłącznie całych grup, a nie ich podzbiorów. Ostatnią z typowych metod ograniczania możliwości wnioskowania jest celowe przekłamywanie odpowiedzi w przypadku bardzo ścisłych zapytań. W takim przypadku w odpowiedzi umieszcza się wartość pseudolosową z zakresu uzależnionego od liczby prawdziwych danych. 16
Szyfrowanie Sterowanie dostępem, przepływem danych, ograniczanie możliwości wnioskowania nie może w pełni zabezpieczyć bazy danych przed sytuacją, w której np. pewien użytkownik odgadnie lub podejrzy hasło innego użytkownika, bądź też zrealizuje bezpośredni dostęp do plików bazy danych poza kontrolą SZBD. W takich sytuacjach przydatne jest szyfrowanie danych, które jest skutecznym zabezpieczeniem zarówno danych przechowywanych w pamięci zewnętrznej jak i danych przesyłanych pomiędzy określonymi programami. Przed zapisaniem informacji w bazie danych lub jej przesłaniem, informację przekształca się za pomocą określonego kodu K do postaci zaszyfrowanej. Informację pierwotną odtwarza się w wyniku rozszyfrowania informacji zaszyfrowanej tylko w przypadku posiadaczy kodu K. 17