WPROWADZENIE DO ETYKI INFORMATYCZNEJ

Gene Spafford

"Robactwo" komputerowe i ochrona danych

[1]
1. Zaprogramowane zagrożenia

Komputery zostały zaprojektowane do wykonywania następujących po sobie instrukcji. Instrukcje te nakazują zazwyczaj wykonanie czegoś pożytecznego - obliczenie wartości, utrzymanie bazy danych oraz komunikowanie się z użytkownikami i z innymi systemami. Niekiedy jednak podane instrukcje mogą mieć niszczący lub złośliwy charakter. Jeśli dzieje się tak przypadkowo, kod taki nazywamy błędem software'owym - jest to być może najczęściej spotykany powód nieoczekiwanego zachowania programu. Jeśli instrukcje te wprowadził ktoś, kogo zamiarem było spowodowanie nienormalnej pracy programu, wtedy uważamy to za złośliwe kodowanie lub zaprogramowane zagrożenie.

1.1. Definicje

Istnieje wiele rodzajów zaprogramowanych zagrożeń, różniących się między sobą sposobem zachowania, sposobem uruchamiania i rozprzestrzeniania się. W ostatnich latach przypadki takich zagrożeń były zazwyczaj opisywane przez media jako wirusy. Będziemy opisywali te zagrożenia, używając ich prawidłowych nazw i przedstawimy niektóre z częściej występujących form.

Należy zaznaczyć, że niektóre formy przedstawiane tutaj nie zawsze są destrukcyjne. Worms, czyli robaki, mogą zostać wykorzystane do wykonywania oddzielnych obliczeń na wolnym procesorze; back doors, dosł. tylne drzwi są użyteczne przy debugowaniu programu; a wirusy mogą być napisane w celu uaktualnienia kodu źródłowego i wychwycenia "pluskiew" (bugs). Niebezpieczny jest nie tyle sposób ich działania, ile cele, do jakich zostały użyte.

1.1.1. Back doors - tylne drzwi, Trapdoors - drzwi zapadowe

Back doors, często zwane trapdoors, składają się z kodu wpisanego w aplikacje w celu nadania specjalnych praw dostępu z ominięciem stosowanych metod sprawdzania tych praw. Używa się ich od wielu lat i są one najczęściej pisane przez programistów szukających sposobu debugowania ("odpluskwiania") lub monitorowania tworzonego przez nich kodu. Ma to zazwyczaj miejsce, gdy programista tworzy aplikację posiadającą procedurę identyfikacyjną lub długi czas instalacji, wymagający od użytkownika wprowadzania wielu różnych wartości w celu uruchomienia danej aplikacji. Ażeby zdebugować dany program, jego twórca może życzyć sobie otrzymania specjalnych uprawnień lub ominięcia wszystkich koniecznych procedur dotyczących instalacji i identyfikacji użytkownika. Programista może również chcieć zagwarantować istnienie metody aktywowania programu w przypadku wystąpienia błędów


94                                                                                                                                 Gene Spafford

w procedurze identyfikacyjnej wbudowanej w aplikację. Back door jest to kod, który albo rozpoznaje pewną szczególną sekwencję bitów na wejściu, albo jest uruchamiany przez podanie określonego identyfikatora użytkownika. Nadaje on wtedy specjalne prawa dostępu.

Back doors stają się zagrożeniem, jeśli są wykorzystywane przez pozbawionych skrupułów programistów w celu uzyskania nieautoryzowanego dostępu do danych lub kiedy twórca aplikacji zapomni o usunięciu back door po zdebugowaniu systemu, a jaka inna osoba odkryje ich istnienie.

1.1.2. Logic Bombs - bomby logiczne

Bomby logiczne to także zagrożenia programowe występujące od wielu lat. Są one zazwyczaj umieszczone w programach przez twórców oprogramowania, którzy posiadają prawo dostępu do systemu. Bomba logiczna to kod sprawdzający istnienie w systemie określonego zbioru warunków. W przypadku wystąpienia tych warunków wykonywana jest pewna szczególna funkcja, nie będąca funkcją zamierzoną kodu zawierającego bombę logiczną.

Warunki wystarczające do uruchomienia bomby logicznej to istnienie lub brak pewnych plików, określony dzień tygodnia lub określony użytkownik uruchamiający aplikację. Bomba logiczna może badać, którzy użytkownicy są zalogowani lub jakie programy są w danej chwili używane w systemie. W jednym z klasycznych przykładów, bomba logiczna sprawdzała występowanie numeru identyfikacyjnego określonego pracownika, a następnie uruchamiała się, jeśli numer ten nie pojawiał się na dwóch kolejnych listach płac. Raz zaktywizowana, bomba logiczna może doprowadzić do zniszczenia lub zmiany danych, spowodować zawieszenie urządzenia lub w jaki inny sposób uszkodzić system.

1.1.3. Viruses - wirusy

Prawdziwe wirusy to sekwencje kodu, które są umieszczane w innym kodzie wykonawczym, tak że w momencie wykonywania go wykonywany jest także kod wirusowy. Kod wirusowy umieszcza swoje kopie w jednym lub więcej programach. Wirusy nie są oddzielnymi programami - nie potrafią działać samodzielnie, w celu aktywizacji potrzebują uruchomienia jakiego programu bazowego, którego są częścią. Wirusy są stosunkowo nowym zjawiskiem. [Spafford pisał niniejszy tekst w końcu lat osiemdziesiątych - uwaga red.]

1.1.4. Worms - robaki

Worms to programy, które działają samodzielnie i przenoszą się z urządzenia na urządzenie dzięki połączeniom sieciowym; mogą one dzielić się na części działające na wielu różnych urządzeniach. Nie zmieniają one innych programów, chociaż mogą być nosicielami innego, umożliwiającego to kodu, jakim jest np. prawdziwy wirus.

W roku 1982 John Shoch i Jon Hupp z Xerox PARC (Palo Alto Research center) opisali pierwsze komputerowe robaki.[2] Pracowali oni wówczas nad eksperymentalnym, sieciowym środowiskiem, wykorzystując jedną z pierwszych sieci lokalnych. Podczas poszukiwania czegoś, co mogłoby posługiwać się stworzonym przez nich środowiskiem sieciowym, jeden z nich przypomniał sobie książkę pt. The Shockwave Rider napisaną przez Johna Brunnera w roku 1975. Powieść ta, z gatunku science-fiction, opisywała programy, które wędrowały przez sieci, niosąc ze sobą określoną informację. Programy te miały w powieści nazwę tapeworms (tasiemce). Shoch i Hupp nazwali swoje własne programy worms (robaki), ponieważ w po -


"Robactwo" komputerowe i ochrona danych                                                                                 95

dobny sposób przemieszczają się one z jednej stacji roboczej do następnej, zajmując przestrzeń dyskową, odłączając niepracujące stacje robocze, dostarczając pocztę i wykonując inne użyteczne zadania.

Niewiele z komputerowych robaków napisano od tamtego czasu (szczególnie jeżeli chodzi o te, które mogą wyrządzać szkody), ponieważ nie jest łatwo je napisać. Robaki wymagają środowiska sieciowego i autora posiadającego znajomość nie tylko usług sieciowych oraz sprzętu i oprogramowania sieciowego, ale również elementów operacyjnych koniecznych do wspomagania robaków, gdy dotrą one do urządzenia. Przykładem wystąpienia robaka jest "robakowy incydent" w Internecie z listopada 1988 roku; w czasie rozprzestrzeniania się robaka nastąpiło "zatkanie" urządzeń i sieci.[3]

1.1.5. Trojan Horses - konie trojańskie

Nazwa pochodzi od Konia Trojańskiego znanego z mitów i legend. Analogicznie do swojego imiennika, koń trojański przypomina program, który użytkownik ma zamiar uruchomić - grę, arkusz kalkulacyjny lub edytor tekstu. Podczas gdy wydaje się, że program robi dokładnie to, czego chce użytkownik, w rzeczywistości robi on coś zupełnie innego. Na przykład, użytkownik może myśleć, że program jest grą. Gdy na ekranie pojawiają się informacje o otwieraniu bazy danych i pytania typu: "Jak chcesz nazwać twego gracza?" lub "Na jakim stopniu trudności chcesz grać?", program może w rzeczywistości kasować pliki, formatować dysk lub w inny sposób zmieniać informację. To, co widać na ekranie do momentu, kiedy jest już za późno, to interfejs programu, który użytkownik miał zamiar uruchomić. Niestety, konie trojańskie występują często jako żarty w niektórych środowiskach programistycznych. Często są one umieszczane jako okrutne kawały w BBS-ach (Bulletin Board Systems) i rozprowadzane między poszczególnymi użytkownikami jako shareware.

1.1.6. Bacteris - bakterie, Rabbits - króliki

Bakterie, znane również jako króliki, są programami, które w zasadzie nie niszczą plików. Ich jedynym celem jest samokopiowanie. Typowy program w rodzaju bakterii lub królika może nie robić nic więcej niż jednoczesne uruchomienie dwóch swoich kopii w systemach wieloprogramowych lub stworzenie dwóch nowych plików, z których każdy jest kopią oryginalnego pliku źródłowego bakterii. Oba programy mogą następnie skopiować się podwójnie itd. Bakterie reprodukują się wykładniczo, zabierając ostatecznie całą moc obliczeniową procesora, pamięć lub wolny obszar pamięci dyskowej, uniemożliwiając użytkownikowi dostęp do tych zasobów.

Ten rodzaj ataku jest jedną z najstarszych form zaprogramowanych zagrożeń. Użytkownicy niektórych z najwcześniejszych urządzeń wieloprocesorowych używali tych programów w celu zawieszenia pracy danego urządzenia lub po prostu by zobaczyć, co się stanie. Na taką formę ataku są szczególnie narażone urządzenia nie posiadające ograniczeń wykorzystania zasobów i ograniczeń w stosunku do użytkowników.

1.2. Szkody

Szkody będące dziełem programowych zagrożeń można mierzyć na skali od zaledwie denerwujących do katastroficznych, takich jak całkowite zniszczenie wszystkich danych w systemie poprzez niskopoziomowy format dysku. Zniszczenie może być spowodowane selek -


96                                                                                                                                 Gene Spafford

tywnym wymazywaniem określonych plików albo niezauważalnymi zmianami danych poprzez zamiany przypadkowych cyfr lub zerowanie wybranych wartości. Wiele zagrożeń może dotyczyć konkretnych celów - sprawcy szkody mogą sobie życzyć uszkodzenia plików określonego użytkownika, zniszczenia określonej aplikacji lub całkowitego przeinicjalizowania określonej bazy danych w celu ukrycia dowodu jakiej innej czynności dokonanej przez sprawcę szkody.

Inny rodzaj szkód związany jest z ujawnianiem informacji. Zamiast po prostu zmienić dane na dysku lub w pamięci, można spowodować zagrożenie poprzez udostępnienie informacji do odczytu, wysłanie jej jako poczty, umieszczenie w systemie biuletynowym (BBS) lub wydrukowanie. Może to dotyczyć informacji chronionej, jak np. systemu haseł lub rejestru danych pracowniczych, albo tak niszczącego w skutkach działania, jakim jest ujawnienie kopii software'u z tajemnicami zawodowymi. Te zaprogramowane zagrożenia mogłyby także umożliwić nieautoryzowany dostęp do systemu, a dalsze szkody mogłyby powstać na skutek zainstalowania nieautoryzowanych kont, zmiany haseł lub ominięcia istniejących kontroli. Rodzaj poczynionych szkód różni się w zależności od motywów, jakimi kierują się ludzie piszący złośliwy kod.

Złośliwy kod może się także przyczynić do wystąpienia szkód pośrednich. Jeśli twoja firma sprzedaje oprogramowanie, które przypadkowo zawiera wirusa lub bombę logiczną, należy brać pod uwagę kilka rodzajów potencjalnych szkód. Oczywiście znacznie ucierpi reputacja firmy. Możliwe, że twoja firma zostałaby również zobowiązana do pokrycia strat klienta; zastrzeżenia w licencjach i gwarancjach dotyczących oprogramowania mogłyby nie stanowić odpowiedniego zabezpieczenia w przypadku procesu sądowego z powodu powstałych szkód.

Nie można być pewnym, że jakiekolwiek straty (pośrednie lub bezpośrednie) zostaną pokryte z ubezpieczenia. Jeśli twoje przedsiębiorstwo nie posiada dobrze zdefiniowanego postępowania zabezpieczającego, a pracownicy nie stosują zasad ostrożności podczas przygotowywania i dystrybucji oprogramowania, twoje ubezpieczenie może nie pokryć wynikających stąd strat. Powinieneś dowiedzieć się w towarzystwie ubezpieczeniowym, jakie są ograniczenia dotyczące pokrycia szkód w przypadku wyżej wymienionych sytuacji.

2. Ochrona sprzętu i danych

Termin "ochrona komputerów" wywołuje w umysłach niektórych ludzi obrazy odpowiedniejsze dla filmu science-fiction niż dla standardowego pomieszczenia komputerowego. Ochrona sprzętu i danych to coś, co każdy użytkownik komputera powinien mieć na uwadze, bez względu na to, czy urządzenie, jakiego używa, jest małym "pecetem", czy też dużym komputerem typu mainframe.

Ochrona danych jest obowiązkowa w przedsiębiorstwach, gdzie komputery używane są do przechowywania rejestrów finansowych lub do przeprowadzania operacji finansowych. Jest to nie tylko powierniczy obowiązek ochrony rejestrów i aktywów przedsiębiorstwa, ale i obowiązek prawny. Przepisy nałożone przez Służbę ds. Dochodów Wewnętrznych [Internal Revenue Service, odpowiednik Głównego Urzędu Skarbowego - przyp. tłum.], Komisję ds. Papierów Wartościowych i Walut [Securities and Exchange Commission] i inne agencje federalne (oraz ich stanowe odpowiedniki) nakazują ochronę pewnych rodzajów akt przedsiębior -


"Robactwo" komputerowe i ochrona danych                                                                                 97

stwa. Jedna z możliwych interpretacji Federalnej Ustawy dotyczącej Zagranicznych Praktyk Korupcyjnych [Federal Foreign Corrupt Practices Act] z roku 1977 czyni wszystkie osoby zarządzające i kierujące przedsiębiorstwem osobiście odpowiedzialnymi za ochronę akt przedsiębiorstwa, znajdujących się pod ich pieczą, nawet jeśli dane przedsiębiorstwo nie jest zaangażowane w praktyki zagraniczne lub korupcyjne. Jeśli akta te przechowywane są w systemie komputerowym, muszą być one chronione przy użyciu odpowiednich zabezpieczeń ograniczających dostęp do danych i zapewniających im bezpieczeństwo. Utrata lub zmiana danych mogłaby postawić w stan odpowiedzialności karnej zarówno ofiary, jak i sprawców czynu!

Celem zabezpieczenia jest ochrona wartościowych pozycji. Może to się odnosić do sprzętu, do użytkowania tego sprzętu, do czasu zaangażowanego w używanie i obsługę sprzętu lub do danych przechowywanych w systemie. Ochrona komputerów odnosi się do wszystkich wymienionych powyżej pozycji. Procedura, jaką kierujemy się dla ochrony sprzętu i danych, to zidentyfikowanie istniejących zagrożeń i ryzyka dla naszej inwestycji i dla operacji komputerowych oraz zabezpieczenia przed możliwymi stratami.

2.1. Definicja ochrony

Ogólnie rzecz biorąc, kiedy mówimy o logicznej ochronie jako przeciwieństwie fizycznej ochrony (uniemożliwiającej komu wyniesienie komputera), myślimy o pięciu różnych rodzajach zabezpieczeń. Pierwszy z nich dotyczy prywatności lub poufności. Chcemy być pewni, że dane w naszych komputerach pozostają tajne i że nikt bez odpowiedniej autoryzacji nie będzie mógł dotrzeć do tych informacji. Jest to tradycyjne spojrzenie na zabezpieczenie danych.

Drugim ważnym aspektem zabezpieczenia danych jest ich nienaruszalność - musimy mieć gwarancję, że dane i programy znajdujące się w naszym systemie nie zostaną w żaden sposób zmienione przez nikogo, kto nie posiada uprawnień do tego rodzaju działań.

Trzeci cel dotyczy niezawodności usług świadczonych nam przez komputer. Chcemy wiedzieć, że są one w pełni dostępne, kiedy ich potrzebujemy, i że komputer nie wykonuje nieodpowiedniej lub niepotrzebnej pracy. Uniemożliwienie dostępu do usług komputera jest znane jako atak polegający na odmowie wykonania usługi. Główna trudność związana z programami w rodzaju worms czy bacteria polega na tym, że w zarażonych systemach powodują one odmowę wykonania usługi przez komputer lub pogarszają jej jakość.

Czwarty rodzaj ochrony dotyczy stałości - zapewnienia, że dane i działania, z jakimi mamy do czynienia dzisiaj, będą takie same jutro. Oznacza to często ochronę systemu przed jego własną populacją użytkowników. Użytkownicy mogą przypadkowo wymazać ważne pliki, a personel opiekujący się systemem może zainstalować nowe wersje komend z niezgodnymi opcjami i cechami operacyjnymi, chyba że będą oni kontrolowani w określony sposób.

Piąty rodzaj ochrony dotyczy kontrolowania dostępu do zasobów - zapewnienia, że nasze zasoby nie są wykorzystywane przez nikogo, kto nie jest do tego uprawniony. Mimo że może się wydawać, iż punkt ten pokrywa się z innymi formami ochrony, stanowi on odrębną kwestię. Nawet jeśli ktoś nie może odczytywać i zmieniać informacji zawartej w naszym systemie ani zmieniać zachowania któregokolwiek z naszych programów i nie może uniemożliwiać nam korzystania z systemu, wciąż możemy życzyć sobie odmówienia tej osobie dostępu do którejkolwiek z usług.


98                                                                                                                                 Gene Spafford

2.2. Ochrona jako cel

Zarówno z teoretycznego, jak i z praktycznego punktu widzenia istnieją ograniczenia dotyczące naszych możliwości w zakresie ochrony posiadanych przez nas zasobów. Bez względu na to, jak bardzo utrudnimy penetrację zabezpieczeń naszego systemu, zawsze znajdzie się na to sposób dla kogoś, kto będzie wystarczająco zdeterminowany, posiadający odpowiedni sprzęt i odpowiednio dużo czasu. Analogicznie, nie istnieje doskonale bezpieczny skarbiec bankowy. Ktoś, kto posiada szczegółowy plan, odpowiedni sprzęt i wystarczającą ilość czasu, energii i motywacji, aby włamać się do bankowego skarbca, odniesie w końcu sukces. Celem ludzi projektujących skarbce bankowe jest uczynienie włamania do nich tak kosztownym w kategoriach czasu i wysiłku, ażeby możliwe do uzyskania korzyści nie były warte zachodu.

Te same cele przyświecają ochronie danych komputerowych. Musimy określić ilość czasu, pieniędzy oraz energii, jakie należy wydatkować w celu uniemożliwienia komukolwiek narażenia naszego systemu na szwank. Dla osiągnięcia prawdziwego zabezpieczenia musielibyśmy zrezygnować z wszelkiego dzielenia się danymi, a być może nawet z używania komputera - jedynie bowiem system wyłączony jest naprawdę bezpieczny. Ochrona danych komputerowych sprowadza się do serii kompromisów - znajdowania właściwej równowagi między wartością elementów, jakie chcemy chronić, a ilością środków, które chcemy zainwestować w ochronę tych zasobów.

2.3. Ocena ryzyka

W celu stworzenia strategii ochrony danych - szerokiego zespołu procedur i mechanizmów służących do ochrony naszych informacji - musimy dokonać oceny ryzyka. Ocena ryzyka to proces określania potencjalnych strat, wysokości tych strat, prawdopodobieństwa ich wystąpienia oraz kosztów, jakie muszą zostać poniesione w celu zapobiegania tym stratom. Przykładem może być ryzyko pożaru w pomieszczeniu, gdzie stoją nasze komputery; pożar mógłby zniszczyć wszystkie dane w naszym systemie, jak również cały system. Musimy oszacować, ile wyniosłyby straty, gdyby doszło do takiego pożaru. Z pewnością należy uwzględnić utratę komputera, lecz wystąpiłoby tu również wiele przypadkowych strat. Miałaby miejsce strata związana z fizycznymi szkodami w danym pomieszczeniu, strata związana z wymianą sprzętu komputerowego, jak również utrata danych. Mógłby ucierpieć na tym także nasz biznes w okresie, gdy nie mielibyśmy dostępu do komputera i zawartych w nim danych. Biorąc pod uwagę wszystkie te straty, możemy oszacować sumę kosztu czy ryzyka. Jeden rodzaj strat, na który nie możemy sobie pozwolić, niezależnie od kosztów, to straty związane z katastrofami lub zagrożeniem ludzkiego życia. Ryzyko takiej straty, nawet jeśli jest ona mało prawdopodobna, musi być traktowane jako poważne, z uwagi na ogrom szkód, jakie mogłyby wystąpić. Inne rodzaje ryzyka są o wiele mniejsze, na przykład przerwa w dopływie prądu, która trwa kilka sekund. Kiedy szacujemy ryzyko strat na skutek wirusów komputerowych i innych zaprogramowanych zagrożeń, musimy brać pod uwagę różne koszty, takie jak: koszty archiwizacji, koszty oprogramowania służącego do ponownego kompilowania, koszty czasu trwania awarii, koszty osobowe, koszty sądowe (jeśli takie mają miejsce) oraz koszty odwirusowania systemu. Występują również koszty pośrednie w postaci zaostrzonych środków bezpieczeństwa, które zazwyczaj zostają wprowadzone w następstwie takich wypadków. Gdy ustaliliśmy już wszystkie rodzaje ryzyka, musimy oszacować prawdopodo -


"Robactwo" komputerowe i ochrona danych                                                                                 99

bieństwo ich wystąpienia oraz potencjalne straty w przypadku każdego z nich. Następnie musimy zbadać metody mające służyć zapobieganiu lub zmniejszaniu występujących strat, oszacować koszt każdej z tych metod oraz zdecydować, ile chcemy wydać na zapobieganie stratom. Pozwoli nam to wybrać odpowiedni sposób ochrony i mechanizmy kontroli, jak również sposób ich wprowadzenia.

większość sposobów ochrony wiąże się zarówno z kosztami jednorazowymi, jak i ciągłymi; oba te rodzaje kosztów muszą być rozważane podczas dokonywania oceny różnych możliwości ochrony. Koszty jednorazowe mogą obejmować pierwotny zakup i instalację, koszty nowych wersji i renowacje. Koszty ciągłe obejmują konserwację, szkolenie itd. Ubezpieczenie jest formą zabezpieczenia na wypadek straty i stanowi zazwyczaj zarówno początkowy, jak i ciągły koszt związany z możliwością wystąpienia szkody. Ochrona może być rozważana jako forma ubezpieczenia; uruchamia ona mechanizmy mające na celu zredukowanie możliwości wystąpienia straty i jest w efekcie inwestycją mającą na celu zapobieganie przyszłym stratom.

Jednym z elementów, jakie należy brać pod uwagę, dokonując oceny ryzyka, jest różnica między kosztami naprawy a kosztami zapobiegania. W wielu sytuacjach mniej kosztownym może być pozwolenie na wystąpienie zidentyfikowanej przez nas uprzednio straty, a następnie zapłacenie za naprawę szkody, niż próba zapobiegania szkodzie. Dla przykładu, w wielu środowiskach preferuje się resetowanie urządzeń po wystąpieniu wyłączenia prądu zamiast kupowania i utrzymywania zasilacza awaryjnego (tzw. UPS). Kluczem do oszacowania ryzyka związanego z naszym systemem komputerowym jest rozumienie, że dane stanowią aktywa przedsiębiorstwa. Dane osobowe, rejestry sprzedaży i księgowość mogą być przechowywane w komputerze. Produkcja i zapasy mogą być kontrolowane przez komputery przedsiębiorstwa. Dane przechowywane w komputerach przedsiębiorstwa mogą nie istnieć w formie innej niż zapis magnetyczny na dysku lub tamie. Jest więc ważne, aby zarząd przedsiębiorstwa doceniał znaczenie swoich komputerowych zasobów podczas tworzenia strategii obniżania ryzyka.

2.4. Kilka ogólnych sugestii

Prezentacja procedur przeprowadzania pełnej kontroli zabezpieczeń, to znaczy szacowanie ryzyka lub ustalenie strategii ochrony i procedur już stosowanych, ich efektywności, wad oraz sposobu zwiększenia tej ochrony, nie mieści się w ramach tego opracowania. To, co tu prezentujemy, to pewne ogólne wskazówki dotyczące zwiększenia bezpieczeństwa systemów komputerowych - łącznie z twoim "pecetem", gdzie ochrona może okazać się najsłabsza, a możliwość pojawienia się wirusów komputerowych jest największa. Proszę brać pod uwagę te wskazówki. Mogą one pomóc w identyfikacji pewnych słabych miejsc w istniejących zabezpieczeniach i zasugerować sposoby podjęcia prostych działań korekcyjnych. Sugestie te nie zostały przedstawione w żadnym szczególnym porządku - wszystkie one są ważne i wszystkie posiadają zastosowanie w określonych dziedzinach.

2.4.1. Edukacja

Być może najbardziej wartościowym krokiem, jaki może być podjęty w celu zwiększenia ochrony sprzętu i danych, jest szkolenie użytkowników - szkolenie ich na temat niebezpie -


100                                                                                                                               Gene Spafford

czeństw, z jakimi ty, jako korporacja, i oni, jako użytkownicy, macie do czynienia z powodu różnego rodzaju zagrożeń. Na przykład, użytkownicy powinni być świadomi następstw ujawnienia lub zniszczenia informacji dotyczących własności oraz tego, jaki to może mieć wpływ na ich pracę. Powinni oni również zostać uświadomieni co do pewnych trudności prawnych, jakie mogłyby się pojawić, jeśli w przedsiębiorstwie zostałoby znalezione pirackie oprogramowanie lub gdyby odkryto, że użytkownicy zajmują się pisaniem programów wirusowych albo usiłują włamać się do innych systemów komputerowych. Gdy użytkownicy są świadomi konsekwencji swoich działań, stają się częścią programu zabezpieczeń. Nie wystarczą jednak same dobre intencje - użytkownicy potrzebują także podstawowego szkolenia w zakresie bezpieczeństwa. Powinni być oni poinstruowani w kwestii dobrych nawyków związanych z ochroną danych, np. właściwego zarządzania hasłami: zasadą jest unikanie w haśle własnego nazwiska, imion dzieci, nazw ulubionych zwierząt lub innych łatwych do odgadnięcia słów; ważne jest też, by nigdy nie zapisywać swoich haseł.

Powinno być jasne dla każdego, że żadne środowisko nie jest odporne na problemy związane z bezpieczeństwem danych. Rozmiary przedsiębiorstwa oraz istota wykonywanej w nim pracy niekoniecznie zabezpieczają przed wirusami, robakami, końmi trojańskimi lub piractwem komputerowym. Pracownicy nie powinni pławić się w fałszywym poczuciu bezpieczeństwa - przestępstwa komputerowe mogą dotknąć również ich.

2.4.2. Strategie ochrony

Samo szkolenie użytkowników nie jest wystarczające, chyba że istnieje podstawowy plan ochrony sprzętu i danych. Należy mieć dobrze określoną strategię, która jasno przedstawia powody i reguły zachowań związanych z uczciwością i bezpieczeństwem. Ważne jest, aby każdy, od najwyższych do najniższych szczebli w przedsiębiorstwie, uczestniczył w twoim planie. Wszyscy pracownicy powinni być świadomi nastawienia przedsiębiorstwa do kwestii bezpieczeństwa oraz tego, jakie postępowanie jest uważane za etyczne i odpowiednie. Odnośne zasady powinny być dostępne w takiej formie, aby każdy miał do nich dostęp, był ich świadomy i aby nikt nie usiłował ich ominąć. Nie powinno się "iść na skróty" na żadnym szczeblu, ponieważ, idąc za przykładem, każdy zaczyna demonstrować swoje priorytety; bezpieczeństwo powinno być priorytetem każdego.

2.4.3. Plany opanowania awarii

Dodatkową ogólną wskazówką, oprócz stworzenia strategii bezpieczeństwa, jest stworzenie pakietu planów, związanych z postępowaniem w razie wystąpienia awarii. Plany te powinny szczegółowo wskazywać, co pracownicy muszą zrobić, jeśli odkryją naruszenie zabezpieczeń lub zagrożenie dla systemu. Może to dotyczyć zarówno zastania otwartych drzwi do pokoju, w którym stoją komputery, lub znalezienia jakiej tamy nie na swoim miejscu, jak i natknięcia się na nieoczekiwany program lub wirusa w systemie czy odkrycia pożaru. Plany takie powinny jasno określać, co należy zrobić lub kogo wezwać w każdej z sytuacji. Powinny one również zawierać wskazówki dotyczące postępowania w razie nieprzewidzianych wypadków, jeśli nie poskutkuje pierwsza seria zawiadomień i działań.

Kiedy pojawią się nowe zagrożenia, należy opracować nowe plany, ale w każdym wypadku należy okresowo ćwiczyć i sprawdzać zaakceptowane plany. Dzięki temu pracownicy będą wiedzieli, co należy robić, nie marnując czasu na szukanie instrukcji obsługi lub instrukcji


"Robactwo" komputerowe i ochrona danych                                                                               101

postępowania. Muszą oni wiedzieć, kogo zawołać, jakiego rodzaju jest zagrożenie oraz jaka jest odpowiedzialność każdego z nich w danej sytuacji. Jest to podobne do wiedzy dotyczącej wyjść awaryjnych i alarmów przeciwpożarowych - gdy nastąpi pożar, jest zbyt późno na to, aby szukać alarmu lub wyjścia.

Należy okresowo badać słabe punkty, ryzyko oraz potencjalne straty, aby zobaczyć, czy uległy one zmianie od czasu wprowadzenia aktualnego planu opanowania awarii. Jest to szczególnie ważne, jeśli twoje przedsiębiorstwo przeszło przez proces zmiany swoich preferencji lub priorytetów albo jeśli wystąpiły inne zmiany wymagające uaktualnienia planu.

2.4.4. Zabezpieczenia fizyczne

Często, gdy myślimy o bezpieczeństwie danych, niekoniecznie przychodzą nam na myśl środki fizycznego zabezpieczenia. Niemniej jednak zabezpieczenie twojego sprzętu może okazać się ważniejsze od wielu rzeczy, jakie mógłby w tym względzie zrobić, wykorzystując oprogramowanie. Na przykład, można umieścić w systemie dobre mechanizmy zabezpieczenia haseł i oprogramowania, tak żeby jedynym sposobem, w jaki ktoś mógłby się dostać do kont i bazy danych twojego przedsiębiorstwa, było przejście skomplikowanego łańcucha haseł, pytań i odpowiedzi. Niemniej jednak, jeśli intruz potrafi odczytać twoją bazę bezpośrednio z tam zapasowych, twój system zabezpieczeń nie będzie miał znaczenia. Jeżeli posiadasz wspaniały system operowania hasłami dla wszystkich twoich stacji roboczych, ale potencjalny intruz potrafi uruchomić analizator danych w twojej sieci lokalnej lub w Ethernecie, wtedy software'owe środki zabezpieczeń nie będą chronić twoich danych. Powinieneś zbadać zabezpieczenia fizyczne dotyczące każdego elementu twojego komputera, który jest nośnikiem danych. Dotyczy to tam, dyskietek, pakietów dysków twardych, CD-ROM-ów, kabli terminali, linii telefonicznych i sieci.

Zabezpieczenie fizyczne jest ważne również podczas pozbywania się materiałów komputerowych. Należy zachować ostrożność, wyrzucając stare wydruki, podręczniki, tamy i dyski. Ktoś, kto szuka dostępu do twojego systemu, może odkryć hasło lub backdoor podczas szperania w śmieciach. Choć może to brzmieć melodramatycznie, spalenie lub zniszczenie wyrzucanego papieru może być tu najodpowiedniejsze. Media magnetyczne, nawet jeśli są uszkodzone i nieczytelne w twoim sprzęcie, powinny zostać poddane całkowitemu zmazaniu lub zniszczeniu w jaki inny sposób.

Jeśli twoja aplikacja jest szczególnie ważna, możesz zechcieć przeprowadzić testy badające przenikanie promieniowania elektromagnetycznego. Ktoś z zewnątrz mógłby użyć skomplikowanego sprzętu do odczytania promieniowania elektromagnetycznego wydzielanego przez twoje ekrany i klawiatury, a przez to być w stanie odtworzyć to, co robisz. Może to brzmieć nieprawdopodobnie, ale przy pomocy umiarkowanej wiedzy technicznej i mniej niż 100 000 dolarów możliwe jest złożenie urządzenia pozwalającego na odczyt tego, co wyświetlane jest na jakimś ekranie odległym o dwa lub trzy pomieszczenia. Departament Obrony dysponuje standardem o nazwie Tempest [burza - przyp. tłum.] określającym, jak wyprodukować i zainstalować urządzenie zabezpieczające przed takim działaniem. Sprzęt posiadający certyfikat Tempest jest kosztowny, jeżeli chodzi o zakup i instalację, lecz można go nabyć u większości poważnych sprzedawców. większość niezwiązanych z ochroną instalacji nie wymaga aktualnie takiego stopnia zabezpieczenia, ale być może jest to zagadnienie, które chciałby rozważyć.


102                                                                                                                               Gene Spafford

2.4.5. Archiwizacja

Innym ważnym aspektem ochrony danych jest archiwizacja. Jest ona kluczowym przykładem znanej procedury ochronnej będącej standardem dla systemów typu mainframe, lecz występuje sporadycznie lub nie występuje w ogóle wśród użytkowników "pecetów". Może ona chronić cię przed błędami, jak również przed złośliwymi działaniami. Utrzymanie całego zarchiwizowanego zbioru, tworzonego regularnie i przechowywanego z dala od twojej maszyny w bezpiecznym, odległym miejscu (możliwie daleko od miejsca pracy), może mieć bardzo istotne znaczenie. Ważną rzeczą jest, aby przechowywać archiwizowane dane; na wypadek awarii, powodującej zniszczenie twojego urządzenia lub podstawowego zbioru danych, będziesz miał możliwość odtworzenia twojego systemu.

Nie tylko przechowywanie tych zbiorów, lecz również upewnienie się, że nadają się one do użytku, może mieć decydujące znaczenie dla twojej działalności. Należy okresowo odczytywać archiwa i upewniać się, że mogą one zostać użyte w celu odtworzenia systemu, jeśli wystąpi taka konieczność.

2.4.6. Sprawdzanie działań użytkowników

Kolejną sugestią jest prowadzenie i badanie procesu powstawania danych. większość systemów posiada możliwość, choć może być ona minimalna, śledzenia tego, kto jest użytkownikiem danego urządzenia, kto rozporządza wynikami oraz do jakich zasobów dana osoba ma dostęp. Jeśli posiadasz takie możliwości, wykorzystaj je. większość przestępstw komputerowych to dzieło zaufanych pracowników, którzy są zaznajomieni z działalnością przedsiębiorstwa i których działania nie są podejrzane ani obserwowane. Wyznacz pracownika (najlepiej takiego, który nie jest użytkownikiem systemu) do regularnego badania procesu powstawania danych. Może on dostrzec podejrzane zachowanie sugerujące, że ktoś z pracowników robi coś nielegalnego.

Badanie procesu powstawania danych jest użyteczne także w przypadku wystąpienia problemu. Pozwala ono ustalić rodzaj szkód i ewentualną możliwość ich naprawienia. Może także okazać się pomocne w przypadku śledztwa i podjęcia odpowiednich kroków sądowych w związku z przestępstwem kryminalnym dotyczącym twoich systemów.

2.4.7. Bądź ostrożny

Powinieneś być nieufny w stosunku do niecodziennego zachowania się sprzętu, programów i użytkowników. Jeśli podczas uruchamiania dobrze ci znanej aplikacji otrzymasz dziwne informacje o błędzie, a nigdy przedtem ich nie widziałeś, powinieneś dopuszczać możliwość, że jest to coś więcej niż zwykły błąd. Jeśli system ulega nieoczekiwanemu zawieszeniu, powinieneś zbadać tę sprawę.

2.4.8. Sprawdzaj identyfikatory

Ważnym jest, aby każda ze stron w transakcjach systemowych miała możliwość weryfikacji identyfikatorów pozostałych stron związanych z obliczeniami. Jeśli mamy do czynienia z użytkownikami uruchamiającymi aplikacje, powinni oni być identyfikowani pozytywnie w celu zapewnienia, że posiadają odpowiednie uprawnienia, a także w celu rejestrowania ich działań.


"Robactwo" komputerowe i ochrona danych                                                                               103

większość dużych systemów dostarcza mechanizmów sprawdzania, takich jak hasła lub pewien rodzaj pytań i odpowiedzi. Niektóre z tych mechanizmów mogą zostać oszukane lub ominięte i - w zależności od ważności twojej aplikacji - możesz być zmuszonym do zastosowania bardziej skomplikowanych metod ustalania identyfikatorów. Mechanizmy, takie jak dedykowane linie i terminale, klucze typu smart-card i klucze biometryczne (biometric keys), mogą zostać użyte do ulepszenia sposobów identyfikacji użytkowników.

Tak więc, jeżeli w twoim systemie stosuje się hasła i konta, użytkownicy nie powinni dzielić się kontami. Każdy użytkownik powinien posiadać oddzielne konto, tak aby każde konto było inne i by istniała łatwość rozróżniania między poszczególnymi kontami. Użytkownicy powinni wybrać dobre hasła, które z kolei powinny podlegać okresowym zmianom.

Bądź ostrożny w stosunku do nowych pracowników. Sprawdź ich referencje - upewnij się, że osoba, którą zatrudniasz, jest tą, za jaką się podaje, a nie kimś wykorzystującym referencje innej osoby, aby otrzymać dostęp do twojego systemu.

Ponadto użytkownicy powinni umieć zidentyfikować urządzenia i zasoby, do których mają dostęp. Jest to szczególnie ważne, gdy stosujesz łącza komutowane. W przypadku, gdy użytkownicy łączą się z systemem i wyświetlany jest na ekranie znak zachęty, muszą oni mieć pewność, że łączą się z tym urządzeniem komputerowym, z którym chcą się połączyć, a nie z jakimś innym komputerem. I znowu sytuacja ta może wymagać zastosowania pewnej formy linii dedykowanych, sprzętu szyfrującego, wyspecjalizowanych pytań i odpowiedzi związanych z kartami typu smart card lub innych mechanizmów.

2.4.9. Ogranicz przywileje

Kolejna warta zastosowania zasada zabezpieczenia to zasada najmniejszych przywilejów. Nadaj użytkownikom tylko minimalny zestaw przywilejów, niezbędny do wykonania przydzielonych im zadań. Pomaga to zapobiec wypadkom, jak również utrudnia złośliwe postępowanie. Na przykład, jeśli użytkownik nie może usunąć ważnej komendy, nie może ona zostać przypadkowo usunięta lub zastąpiona przez konia trojańskiego. Ta sama zasada stosuje się do programów aplikacyjnych. Na przykład, programy związane z pocztą elektroniczną nie powinny posiadać praw zapisu do dowolnych plików lub praw wykonywania dowolnych komend.

2.4.10. Weryfikuj źródła

Upewnij się, że oprogramowanie, jakie instalujesz w twoim systemie, działa jak należy. Musisz to zrobić nie tylko w celu zapobiegania załączeniu złośliwego kodu, ale również w celu identyfikacji błędów. Jeśli używasz programów do określonych operacji, powinieneś się upewnić, że ich kod zachowuje się w oczekiwany sposób oraz że nie powoduje on żadnych szkodliwych skutków ubocznych. Jeśli zakupiłeś kod od kogoś z zewnątrz, musisz być pewny, że kod ten nie zawiera żadnych ukrytych cech ani pułapek (trap doors) wbudowanych w program. Być może jedynym sposobem jest tu zdobycie kodu źródłowego i sprawdzenie go przez twoich programistów pod kątem nieoczekiwanych odchyleń.

Każde oprogramowanie tworzone wewnątrz przedsiębiorstwa powinno być szczegółowo sprawdzone, najlepiej przez kogoś niezaangażowanego w jego napisanie. Weryfikacja ta powinna wykraczać poza problemy związane tylko z umyślnymi działaniami. Do dobrego sprawdzenia oprogramowania należy upewnienie się, że zajęto się wszystkimi ewentualnościami


104                                                                                                                               Gene Spafford

oraz że kod nie zawiera żadnych ewidentnych błędów [w oryginale bugs - przyp. tłum.]. Błędy powodują czasem więcej szkód niż złośliwe kodowanie, tak więc czas spędzony na regularnym przeglądaniu kodu może być wart twojego wydatku.

2.4.11. Izoluj systemy szczególnie ważne

Jest również ważne, aby inwestować w zasoby, które są decydujące, jeżeli chodzi o nieprzerwane funkcjonowanie twojego przedsiębiorstwa. Jeżeli posiadasz bazę danych, której utrata lub uszkodzenie może spowodować upadek twojego biznesu, nie jest dobrym pomysłem instalacja takiej bazy w urządzeniach szeroko dostępnych, przeznaczonych do ogólnych zastosowań. Jeśli dane urządzenie posiada łącza sieciowe lub telefoniczne, ryzyko uszkodzenia twojej bazy danych może być zbyt duże. Powinieneś rozważyć zamiast tego zakup oddzielnego urządzenia komputerowego, które będzie się znajdować w bezpiecznym miejscu, bez takich połączeń. Może to być osobne zamknięte pomieszczenie, do którego dostęp wymaga posiadania klucza. Oszczędzanie na wydatkach i personelu może cię drogo kosztować, jeśli pojawi się wirus lub atak hakerski.

2.4.12. Kwestionuj role

Na koniec powinieneś poważnie zastanowić się nad rolą twojego systemu, twoich zasobów i połączeń między nimi. Jest możliwe posiadanie przez każdego pracownika na biurku stacji roboczej, połączonej za pomocą sieci ze wszystkimi pozostałymi komputerami w przedsiębiorstwie. W niektórych przedsiębiorstwach traktowane jest to jako rzecz oczywista, lecz ze względu na twoją strategię bezpieczeństwa powinieneś postawić pytanie, dlaczego osoby te mają tak szeroki dostęp. Czy jest to konieczne z punku widzenia funkcjonowania twojej firmy? Każda z tych stacji roboczych to dodatkowy słaby punkt, który należy zabezpieczać i kontrolować, dodatkowy pracownik, który musi być świadomy rodzajów ryzyka, odpowiednich strategii i procedur, jak również jest to jeszcze jedno miejsce generowania informacji dla procesu powstawania danych, który musi być kontrolowany. W większości przedsiębiorstw byłoby przecież rzeczą niesłychaną udostępnianie wszystkim pracownikom książeczki czekowej i kont czekowych firmy. To samo pytanie należy zadać w odniesieniu do komputerowych baz danych. Czy jest niezbędne nadanie każdemu pracownikowi prawa pełnego dostępu do nich? Im dane dostępniejsze, tym bardziej zagrożone.

PRZYPISY:

[1] Pod podanym tytułem pomieściliśmy dwa rozdziały z pracy Spafford Eugene H. (i inni) (1989). Computer Viruses: Dealing with Electronic Vandalism and Programmed Threats. ADAPSO; rozdział 2 (Programmed Threats) i rozdział 5 (Security).

[2] The Worm Programs - Early Experience with a Distributed Computation, "Communications of the ACM", 25(3), s. 172 - 180, marzec 1982.

[3] W lipcu 2001 r. mielimy do czynienia z wielką inwazją robaków o nazwach Sircam i Code Red. Zwłaszcza ten drugi doprowadził do poważnych perturbacji w licznych sieciach lokalnych i rozległych; w tarapatach znalazła się oficjalna witryna Białego Domu. Code Red wykorzystywał błąd w oprogramowaniu firmy Microsoft. Więcej informacji w serwisie prasowym TP S.A. z dnia 7 lipca 2001 r. - http://www.tpsa.pl.