Pewność
description
Transcript of Pewność
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pewność
• Celem tego rozdziału jest wprowadzenie pojęcia pewności i uzasadnienie jego ważności w systemach krytycznych.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Cele Znać cztery wymiary pewności, tzn. dostępność,
niezawodność, bezpieczeństwo i zabezpieczenie. Rozumieć pojęcie systemu krytycznego, którego
awaria może mieć poważne konsekwencje dla ludzi i gospodarki.
Wiedzieć, że do osiągnięcia pewności konieczne jest unikanie pomyłek w trakcie budowania systemu, wykrywanie i usuwanie błędów w trakcie użytkowania systemu i ograniczenie szkód powodowanych przez awarie w czasie działania.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Zawartość Systemy krytyczne Dostępność i niezawodność Bezpieczeństwo Zabezpieczenie
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Wymiary pewności
Zabezpieczenie Bezpieczeństwo Niezawodność Dostępność
Pewność
Zdolność systemu do realizacji usług, gdy są potrzebne
Zdolność systemu dorealizacji usług zgodnie ze specyfikacją
Zdolność systemu do działania bezkatastroficznych awarii
Zdolność systemu do zabezpieczenia siebie przed przypadkowymlub celowym włamaniem
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pojęcie pewności Pewność systemu komputerowego jest właściwością systemu
odpowiadającą zaufaniu, którym jest obdarzony. Zaufanie oznacza stopień przekonania użytkownika, że system
będzie działał tak jak należy i nie będzie się „psuł” przy normalnym użytkowaniu.
Ta właściwość nie może być wyrażona liczbowo, ale da się ją zapisać nieformalnie.
Określenia, takie jak „niepewny”, „bardzo pewny” i „ultrapewny”, odpowiadają różnym poziomom zaufania, którym obdarzamy system.
Zasługiwanie na zaufanie nie jest oczywiście tym samym co użyteczność.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Krzywa zależności kosztu i pewności
Koszt
Mała Średnia Duża Bardzo Ultra- duża duża
Pewność
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pewność a efektywność Systemy niepewne, niebezpieczne lub
niezabezpieczone zwykle pozostają nieużywane. Koszt awarii systemu może być olbrzymi. Trudno jest odzyskać pewność. Zwykle można zrekompensować brak efektywności
systemu. Systemy niegodne zaufania mogą spowodować
utratę informacji.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Systemy krytyczne
Awarie wielu systemów sterowanych komputerami powodują niewygody, a nie poważne długotrwałe zniszczenia. Istnieją jednak systemy, których awarie mogą powodować znaczne straty gospodarcze, fizyczne zniszczenia lub zagrożenia życia ludzkiego. Systemy te zwykle nazywa się systemami krytycznymi. Pewność jest zasadniczym atrybutem systemów krytycznych. Każdy z jej aspektów (dostępność, niezawodność, bezpieczeństwo i zabezpieczenie) może być ważny.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Rodzaje systemów krytycznych Systemy krytyczne dla bezpieczeństwa to systemy,
których awaria może powodować obrażenia i utratę życia lub poważne zniszczenie środowiska.
Systemy krytyczne dla zadania to systemy, których awaria może powodować niepowodzenie pewnej czynności mającej jakiś cel.
Systemy krytyczne dla przedsiębiorstwa to systemy, których awaria może powodować kłopoty korzystających z nich przedsiębiorstw.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Awarie systemu krytycznego Koszt awarii systemu krytycznego jest zwykle
bardzo wysoki. Obejmuje bezpośrednie koszty awarii (np. konieczność wymiany systemu) oraz koszty pośrednie (koszty procesów sądowych, utracone zyski w związku z niedostępnością systemu).
W rezultacie systemy krytyczne są zwykle budowane raczej za pomocą starannie sprawdzonych metod, a nie nowinek, z którymi dotychczas nie wiążą się znaczące praktyczne doświadczenia.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Typy komponentów systemu najbardziej podatnych na awarie Sprzęt systemu, który może się popsuć z powodu
błędów projektowych, błędów przy ich produkcji lub z powodu naturalnego zmęczenia materiału.
Oprogramowanie systemu, które może ulec awarii z powodu błędów w specyfikacji, projekcie lub implementacji.
Operatorzy systemu, którzy mogą niewłaściwie go obsługiwać.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Prosty system krytyczny dla bezpieczeństwa
• System podawania insuliny może składać się z wszczepionego pacjentowi mikroskopijnego detektora, który mierzy pewien parametr krwi proporcjonalny do poziomu cukru.
• Odczyt jest przesyłany do sterownika pompy.
• Sterownik wyznacza poziom cukru, ocenia ilość potrzebnej insuliny i wysyła sygnał do miniaturowej pompy, która tłoczy insulinę przez wkłutą na stałe igłę.
• Systemy podawania insuliny będą sterowane przez oprogramowanie.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Struktura pompy insulinowej
Igła Igła Pompa Pompa Zegar Zegar
Miernik Miernik Alarm Alarm Sterownik Sterownik
Wyświetlacz1
Wyświetlacz1
Wyświetlacz
2
Wyświetlacz
2
Zbiornik insuliny
Zasilanie
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Model przepływu danych w pompie insulinowej
Detektor cukruwe krwi
Detektor cukruwe krwi
Wyznaczaniepotrzebnej
Ilości insuliny
Wyznaczaniepotrzebnej
Ilości insuliny
Analiza cukruwe krwi
Analiza cukruwe krwi
Sterownikpompy
insulinowej
Sterownikpompy
insulinowejPompa
insulinowa
Pompa insulinowa
Krew
Insulina
Parametry krwi
Polecenia sterujące pompą
Poziom cukru we krwi
Potrzebna ilość insuliny
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Wymiary pewności dotyczą systemu podawania insuliny Dostępność
• System powinien być gotowy do wstrzyknięcia insuliny, gdy jest ona potrzebna.
Niezawodność• System powinien działać niezawodnie i dostarczać właściwą ilość
insuliny w celu zrównoważenia aktualnego poziomu cukru we krwi.
Bezpieczeństwo • Awaria systemu może w zasadzie spowodować wstrzykiwanie
nadmiernych dawek insuliny, które mogą być zagrożeniem życia użytkownika. Ten rodzaj awarii systemu nie powinien się zdarzać.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Dostępność i niezawodność Dostępność systemu to prawdopodobieństwo, że
będzie on realizował usługi dla użytkowników, gdy mu to zlecą.
Niezawodność to prawdopodobieństwo, że system zaoferuje usługi zgodne ze specyfikacją.
Niezawodność wymaga dostępności, ponieważ niezrealizowanie wyspecyfikowanych usług nie jest oczywiście zachowaniem zgodnym ze specyfikacją.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Przykład Dobrym przykładem takiego systemu jest centrala telefoniczna.
Podnosząc słuchawkę, użytkownicy chcą usłyszeć sygnał, więc wymagania stawiane dostępności systemu są duże.
Jeżeli awaria systemu spowoduje przerwanie połączenia, to zwykle łatwo jest to naprawić.
Centrale mogą mieć udogodnienia naprawcze, które ponownie uruchamiają system i próbują nawiązać połączenie.
Można to zrobić bardzo szybko, a użytkownik telefonu może nawet nie zauważyć awarii.
Dostępność, a nie niezawodność, jest w tym wypadku głównym wymaganiem stawianym pewności.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Bardziej precyzyjne definicje Niezawodność.
• Prawdopodobieństwo bezawaryjnego działania w ciągu ustalonego czasu w zadanym środowisku w określonym celu.
Dostępność.• Prawdopodobieństwo, że w ustalonej
chwili system będzie działał i będzie zdolny do realizacji żądanych usług.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Uwagi Niezawodność i dostępność uważa się zwykle za
najważniejsze wymiary pewności. Jeśli system jest zawodny, to trudno zapewnić jego bezpieczeństwo lub go zabezpieczyć, ponieważ może to być zniweczone przez awarie systemu.
Jeśli system jest niedostępny, to wynikające z tego straty gospodarcze mogą być bardzo duże. Zawodne oprogramowanie powoduje wysokie koszty ponoszone przez użytkowników. Twórcy zawodnych systemów mogą zyskać złą opinię o jakości ich produktów i utracić przyszłe możliwości zarabiania.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pojęcia związane z niezawodnością
Pojęcie Opis
Awaria Zdarzenie zachodzące w chwili, w której system przestajesystemu realizować usługi oczekiwane przez użytkowników.
Błąd Błędne zachowanie systemu niezgodne z jego systemu specyfikacją.
Usterka Niepoprawny stan systemu, tzn. stan, którego nie systemu spodziewali się projektanci systemu.
Błąd lub Działanie człowieka, które powoduje usterki systemu.pomyłka człowieka
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Poprawianie niezawodności systemu Unikanie usterek.
• Stosuje się metody tworzenia, które zmniejszają możliwość pomyłek lub umożliwiają wychwytywanie ich, zanim doprowadzą do awarii systemu.
Wykrywanie i usuwanie usterek.• Stosuje się metody weryfikacji i zatwierdzania, które zwiększają
szansę wykrycia i usunięcia usterek przed przystąpieniem do użytkowania systemu.
Tolerowanie usterek.• Stosuje się metody, które zapewniają, że usterki w systemie nie
powodują błędów, a błędy systemu nie powodują awarii.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
System jako odwzorowanie danych wejściowych na dane wyjściowe
Zbiór danychwejściowych
Program Program
Zbiór danychwyjściowych
Wejb
Wyjb
Dane wejściowe powodujące błędne dane wyjściowe
Błedne dane
wyjściowe
Błędne dane wyjściowe
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Wzorce użycia oprogramowania Program może zawierać znane błędy, a mimo tego
użytkownicy mogą go uważać za niezawodny. Niektórzy nigdy nie wprowadzą błędnych danych
wejściowych, awaria nigdy się więc nie zdarzy. Co więcej, doświadczeni użytkownicy zwykle „obchodzą”
usterki oprogramowania, o których wiadomo, że powodują awarie.
Świadome unikają korzystania z udogodnień systemu, o których wiedzą, że spowodują kłopoty.
Naprawienie usterek w tych udogodnieniach praktycznie nie zmienia niezawodności postrzeganej przez użytkowników.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Wzorce użycia oprogramowania
Użytkownik1
Użytkownik2
Użytkownik 3
Błędne danewejściowe
Dopuszczalne dane wejściowe
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Bezpieczeństwo Bezpieczeństwo systemu to atrybut odzwierciedlający
zdolność systemu do normalnego lub nienormalnego działania bez wywoływania zagrożeń dla ludzi lub środowiska.
Jeśli bezpieczeństwo jest zasadniczą cechą systemu krytycznego, to nazywamy go systemem krytycznym dla bezpieczeństwa.
Przykładami takich systemów są systemy sterowania i kontroli w samolocie, systemy sterowania procesami w reaktorach chemicznych i farmaceutycznych oraz systemy sterowania samochodami.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Oprogramowanie krytyczne dla bezpieczeństwa Podstawowe oprogramowanie krytyczne dla bezpieczeństwa
jest oprogramowaniem w postaci sterownika wbudowanego w system. Niewłaściwe działanie takiego oprogramowania może powodować niewłaściwe działanie sprzętu, które powoduje szkody lub zniszczenia środowiska.
Pomocnicze oprogramowanie krytyczne dla bezpieczeństwa jest oprogramowaniem, które może pośrednio powodować szkody. Przykładami takich systemów są systemy komputerowego wspomagania projektowania, których niewłaściwe działanie może doprowadzić do usterek w projektowanym obiekcie.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pojęcie Definicja
Wypadek (lub Niezaplanowane zdarzenie lub ciąg zdarzeń, które powodują obrażenia lub śmierć
nieszczęście) osób, szkody w majątku lub środowisku. Maszyna sterowana komputerem raniąca swego operatora to dobry przykład wypadku.
Zagrożenie Sytuacja, która może spowodować lub przyczynić się do wypadku. Awaria detektora wykrywającego przeszkody na drodze maszyny jest przykładem zagrożenia.
Szkoda Miara strat powstałych w wyniku nieszczęścia. Zakres szkód może być rozmaity, od śmierci wielu osób do mniejszych obrażeń i zniszczenia majątku.
Waga zagrożenia Oszacowanie największych szkód, które mogą być wynikiem konkretnego zagrożenia. Waga zagrożenia może być rozmaita, od katastroficznej (gdy ginie
wielu ludzi) do niewielkiej (jedynie niewielkie szkody).
Prawdopodobieństwo Prawdopodobieństwo wystąpienia zdarzeń powodujących zagrożenie.
zagrożenia Prawdopodobieństwo może być dowolne; zwykle waha się od prawdopodobne (np. zagrożenie wystąpi w jednym na sto przypadków) do niewiarygodne (nie można wyobrazić sobie sytuacji, w których to zagrożenie występuje).
Ryzyko Miara prawdopodobieństwa, że system spowoduje wypadek. Ryzyko szacuje się na podstawie prawdopodobieństwa zagrożenia, wagi zagrożenia i prawdopodobieństwa, że zagrożenie będzie przyczyna wypadku.
Pojęcia związane z bezpieczeństwem
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Unikanie zagrożeń.System jest zaprojektowany tak, aby uniknąć zagrożeń.• System tnący, którego zadziałanie wymaga od operatora naciśnięcia dwóch
przycisków w tej samej chwili, wystrzega się na przykład ryzyka umieszczenia rąk operatora w zasięgu noża.
Wykrywanie i eliminowanie zagrożeń. System jest zaprojektowany tak, aby wykrywać i eliminować zagrożenia, zanim doprowadzą do wypadku.
• System reaktora chemicznego może na przykład wykrywać nadmierne ciśnienie i otwierać zawór bezpieczeństwa w celu zmniejszenia ciśnienia, zanim dojdzie do eksplozji.
Ograniczanie szkód. System może obejmować udogodnienia zabezpieczające, które ograniczają szkody będące konsekwencją wypadku.
• Silnik lotniczy zawiera na przykład automatyczne gaśnice. Gdy pojawi się ogień, zwykle można go ugasić, zanim stanie się zagrożeniem dla pasażerów i załogi.
Sposoby zapewnienia bezpieczeństwa
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Zabezpieczenie systemu to oszacowanie stopnia zabezpieczenia systemu przed atakami z zewnątrz zarówno przypadkowymi, jak i celowymi.
Przykładami ataków są wirusy, nieuprawnione użycie usług systemu, nieuprawnione aktualizowanie systemu lub jego danych itd.
Bez rozsądnego poziomu zabezpieczeń dostępność, niezawodność i bezpieczeństwo systemu mogą być zniweczone przez zewnętrzne ataki, które wywołały szkody w systemie.
Zabezpieczenie
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Przykłady • Istnieją pewne rodzaje systemów krytycznych , w których zabezpieczenie jest najważniejszym wymiarem pewności systemu.• Systemy wojskowe, systemy handlu elektronicznego i systemy przetwarzające i wymieniające poufne dane muszą być zaprojektowane tak, aby osiągnąć wysoki poziom zabezpieczenia. Jeśli system rezerwacji biletów lotniczych jest na przykład niedostępny, to powoduje niewygody i opóźnienia w wydawaniu biletów.• Jeśli jednak byłby niezabezpieczony i akceptował fałszywe rezerwacje, to obsługiwana przestrzeń lotnicza ponosiłaby w wyniku tego problemu znaczne straty finansowe.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Trzy typy szkód, które mogą być wynikiem ataku z zewnątrz
• Zaprzestanie usługi. System może być zmuszony do przyjęcia stanu, w którym nie jest możliwe normalne realizowanie usług.
• Uszkodzenie programów lub danych. Komponenty programowe systemu mogą być podmienione w nieuprawniony sposób.
• Ujawnienie poufnej informacji. Informacja przechowywana w systemie może być poufna. Atak z zewnątrz może ujawnić ją nieuprawnionym osobom.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pojęcia związane z zabezpieczeniem
Pojęcie Definicja
Odsłonięcie Możliwość starty lub szkody w systemie komputerowym.
Słabość Słaby punkt systemu komputerowego, który można wykorzystać do spowodowania start lub szkód.
Atak Wykorzystanie słabości systemu.
Groźba Sytuacja, która może doprowadzić do strat lub szkód.
Nadzór Miara ochrony, która zmniejsza słabości systemu.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Podejścia do zabezpieczenia systemu Unikanie słabości.
• System projektuje się tak, aby nie miał słabości. Jeśli system nie jest połączony na przykład z zewnętrzna siecią publiczną, to ludzie z zewnątrz nie maja możliwości ataku.
Wykrywanie i neutralizacja ataków.• System projektuje się tak, aby wykrywał słabości i eliminował je,
zanim spowodują odsłonięcie. Przykładami wykrywania i usuwania słabości jest zastosowanie programu antywirusowego.
Ograniczanie odsłonięć.• Minimalizuje się konsekwencje udanego ataku. Przykładami
ograniczania odsłonięć są systematyczne tworzenie kopii zapasowych.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Pewne aspekty zabezpieczenia Zabezpieczenie stało się bardziej istotne z powodu
podłączania coraz większej i większej liczby systemów do Sieci. Połączenie z Siecią daje dodatkową funkcjonalność systemu (np. klient może bezpośrednio działać na swoim koncie bankowym), ale oznacza to także możliwość zaatakowania systemu przez ludzi o złych intencjach.
Innym podobnym i bardzo ważnym atrybutem systemów w Sieci jest zdolność przetrwania (Ellison i inni, 1999). Zdolność przetrwania jest zdolnością systemu do ciągłej realizacji usług nawet w czasie ataku i ewentualnego odłączenia części systemu.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Główne tezy Pewność systemu komputerowego jest jego właściwością, która
odzwierciedla stopień zaufania użytkownika do systemu. Najważniejszymi wymiarami pewności są: dostępność, niezawodność, bezpieczeństwo i zabezpieczenie.
System krytyczny to system, którego awarie mogą powodować znaczne straty gospodarcze, fizyczne zniszczenia lub śmierć ludzi. Trzema ważnymi rodzajami systemów krytycznych są systemy krytyczne dla bezpieczeństwa, systemy krytyczne dla zadania i systemy krytyczne dla przedsiębiorstwa.
Dostępność systemu to prawdopodobieństwo, że będzie on realizował usługi dla użytkowników, gdy o to poproszą. Niezawodność to prawdopodobieństwo, że usługi systemu będą wykonywane zgodnie ze specyfikacją.
Niezawodność i dostępność są czasem uważane za najważniejsze wymiary pewności. Jeśli system jest zawodny, to trudno jest zapewnić jego bezpieczeństwo lub zabezpieczenie, ponieważ niweczą je awarie systemu.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 16
Główne tezy Niezawodność jest związana z prawdopodobieństwem wystąpienia
błędu w czasie użytkowania systemu. Program może zawierać usterki, a mimo tego użytkownicy mogą uważać go za niezawodny, ponieważ nie korzystają z udogodnień systemu niepełnowartościowych wskutek tych usterek.
Bezpieczeństwo systemu to jego atrybut, który odzwierciedla zdolność systemu do poprawnego lub niepoprawnego działania bez powodowania zagrożeń dla ludzi i środowiska. Jeśli bezpieczeństwo jest główną cechą systemu krytycznego, to nazywamy go systemem krytycznym dla bezpieczeństwa.
Zabezpieczenie jest ważne we wszystkich systemach krytycznych. Bez rozsądnego poziomu zabezpieczeń dostępność, niezawodność i bezpieczeństwo systemu mogą być zniweczone przez zewnętrzne ataki, które wywołały szkody w systemie.