wyk01


OCHRONA DANYCH

Wykład. III r. Informatyka stosowana. Wydział Fiz-Chem UŁ. 2006

Prof. Jerzy Czerbniak.

Celem wykładu jest zapoznanie słuchaczy z nowoczesnymi metodami służącymi do ochrony prywatności danych elektronicznych, autentyfikacji użytkowników systemów komputerowych, zabezpieczaniu przed nieuprawnionymi modyfikacjami danych i innymi tego typu zastosowaniami opartymi

na technikach kryptograficznych. Znaczenie tego typu metod ujawnia się szczególnie ostro w epoce powstawania globalnych sieci komputerowych,

gdzie systemy operacyjne nie gwarantują już bezpieczeństwa.

1. Kryptografia: teoria i praktyka zabezpieczania systemów komputerowych

Mirosław Kutyłowski, Willy-B. Strothmann

Wydawnictwo READ ME & Lupus

2. Ochrona danych w sieci i intersieci

William Stallings. Wydawnictwa Naukowo Techniczne

3. Kryptografia w praktyce

Niels Ferguson, Bruce Schneier

Pojęcia.

  1. Uwierzytelnienie (authentication): polega na poprawnym określeniu pochodzenia komunikatu, z zapewnieniem autentyczności źródła.

  2. Poufność (confidentiality): polega na zagwarantowaniu, że informacje przechowywane w systemie komputerowym i informacje przesyłane mogą zostać odczytane tylko przez uprawnione osoby (podmioty). W szczególności chodzi o drukowanie, wyświetlanie i inne formy ujawniania, w tym istnienia obiektu.

  3. Nienaruszalność (integrity): polega na zagwarantowaniu, by dane przechowywane w systemie komputerowym oraz informacje przesyłane mogły być modyfikowane przez powołane osoby (pisanie, zmiany, zmiany stanu, kasowanie, tworzenie, opóźnianie i powtarzanie komunikatów).

  4. Kontrola dostępu (access control): polega na zapewnieniu, by dostęp do źródeł informacji był kontrolowany przez system.

  5. Dyspozycyjność ( availability): zapewnienie uprawnionym osobom możliwość korzystania z zasobów.

Niektóre cele oszustw:

    1. uzyskanie niedozwolonego dostępu do informacji

    2. Podszywanie się pod innego użytkownika, aby skorzystać z uprawnień w celu stworzenia fałszywych informacji, zmodyfikowania prawdziwych informacji, posługiwania się fałszywą tożsamością, fałszywego autoryzowania transakcji.

    3. Rozszerzenie zakresu uprawnień

    4. Modyfikowanie uprawnień innych osób.

    5. Ukrywanie pewnych informacji

    6. Włączanie się jako aktywny przekaźnik do łącza między innymi użytkownikami.

    7. Niedozwolona modyfikacja oprogramowania np. poprzez dodanie ukrytej funkcji

    8. Ukrywanie pewnych informacji (ukryta komunikacja) w innych informacjach (jawna komunikacja)

    9. i dużo innych.

Funkcją systemu komputerowego jest dostarczanie informacji. Mamy do czynienia z przepływem danych od źródła (pliku, pamięci ..) do miejsca przeznaczenia (inny plik, komputer ..). Cztery główne typy ataków.

0x08 graphic

  1. przerwanie polega na zniszczeniu części systemu lub spowodowania jego niedostępności, niemożliwości użycia. Atak na dyspozycyjność.

  2. Przechwycenie. Ktoś niepowołany zyskuje dostęp do zasobów. Atak na poufność. To może być osoba, program, podsłuch w celu przechwycenia danych, nielegalne kopiowanie plików, programów.

  3. Modyfikacja. Niepowołana osoba zdobywa dostęp do zasobów i wprowadza zmiany. Zmiana wartości danych w pliku, zmiana działania programu, modyfikacja komunikatów przesyłanych w sieci. Atak na nienaruszalność.

  4. Podrobienie. Wprowadzenie do systemu fałszywych obiektów. Np. dodanie danych do pliku. Atak na autentyczność.

Przechwycenie to atak pasywny, trudny do wykrycia. Treść komunikatów możemy ukryć korzystając z szyfrowania. Ale analiza przesyłu może odkryć miejsce znajdowania się i tożsamość wymieniających informację komputerów, częstotliwość wysyłanych komunikatów.

Druga kategoria to ataki aktywne.

Maskarada, podszywanie się. Tekst uwierzytelniający może zostać przechwycony i powtórzony aby osoba o małych przywilejach mogła uzyskać większe przywileje podszywając się pod kogoś innego.

Powtórka polega na pasywnym przechwyceniu danych i ich retransmisji w celu otrzymania niedozwolonych rezultatów.

Modyfikacja komunikatów oznacza zmianę fragmentu komunikatu, opóźnienie przesłania, zarejestrowania go aby osiągnąć niedozwolone skutki.

Blokowanie działania (denial of service) np. całej sieci poprzez przeładowanie jej komunikatami. Ataki aktywne łatwiej wykryć, ale należy być przygotowanym na usuwanie skutków awarii.

Musimy wprowadzić usługi ochrony poufności, uwierzytelnienia, nienaruszalności, niezaprzeczalności, kontroli dostępu, dyspozycyjności.

Model ochrony danych w sieci

0x01 graphic

Komunikat jest przesyłany z jednej strony do drugiej poprzez intersieć. Aby wymiana doszła do skutku obie strony muszą współpracować ze sobą. Wytyczenie drogi w sieci i koordynacja posługiwania się protokołami (TCP/IP) przez podmioty tworzy kanał informacyjny. Dwa składniki zapewniają bezpieczeństwo:

  1. przetwarzanie informacji wysyłanej, np. szyfrowanie komunikatu, zaopatrzenie go w kod oparty na zawartości komunikatu, mogący służyć do identyfikacji nadawcy.

  2. Tajna informacja znana tylko dwóm osobom. Klucz szyfrujący jest użyty do zaszyfrowania przed wysłaniem i odszyfrowania po otrzymaniu.

Wskazane jest istnienie zaufanej strony trzeciej, która może odpowiadać za rozsyłanie tajnej informacji, rozstrzygać spory między obu stronami dotyczące autentyczności przesyłanych komunikatów.

Czyli mamy do wykonania zadania:

Inne sytuacje można przedstawić schematycznie:

0x01 graphic

Ciężar obrony spoczywa na funkcji bramkującej ( np. firewall) i zabezpieczeniach wewnętrznych (np. prawa dostępu).

Istotnym zagrożeniem jest wykorzystywanie luk w oprogramowaniu i systemie operacyjnym. Programy narzędziowe, edytory, kompilatory mogą wytworzyć aplikacje z usterkami.

SZYFROWANIE DANYCH

Nie każda informacja powinna jawna. Od wieków stosuje się metody ukrywające rzeczywistą treść przekazów. Najstarszy szyfr substytucyjny (podstawieniowy) to szyfr Cezara. Zastępujemy n-tą literę w alfabecie literą n+3. Słowo „mama” zamienia się na „ pdpd”. Dla alfabetu 26-cio znakowego mamy

C=E(p)=(p+3) mod 26 dekodowanie p=D(C)=(C-3) mod 26. Oczywiście taki szyfr jest bardzo prosty. Pewnym utrudnieniem jest kompresja danych przed zaszyfrowaniem.  
 

//szyfr cezara
#include<stdio.h>
void main(int argc, char *argv[])
{

//FILE *we, *wy; //deskryptor pliku wejściowego i wyjściowego
char zn; //pojedynczy znak wczytywany z pliku wejściowego
if(argc==3) //czy jest wymagana liczba argumentów wywołania
if((we=fopen(argv[1],"rb"))!=NULL) //otwórz plik wejściowy
{
if((wy=fopen(argv[2],"wb"))!=NULL) // otwórz plik wyjściowy
{
 while((zn=getc(we))!=EOF) //wczytuj znak dopóki nie ma EOF
{
zn+=3; //przesuń w alfabecie o trzy znaki
// przy odkodowaniu powinno być zn-=3;
putc(zn,wy); //zapisz do pliku wyjściowego
}
fclose(wy);
}
fclose(we);
}
return;
}

Do odszyfrowania tekstu zaszyfrowanego należy użyć drugiego programu z instrukcją cofającą znak w alfabecie o trzy znaki.

Inny klasyczny szyfr, całkiem niezły, do 1914 roku.

program szyfruj;

uses Crt, Strings;

var Fin, FOut : file;

P : PChar;

Zs, Zr : LongInt;

Lp, Lz : Word;

function KodujZnak(C : Char; Klucz : Byte):Char;

var I : Word; J : Byte;

begin

J := Ord(C); I := J + Klucz;

if (J + Klucz) > 255 then Dec(I, 255); KodujZnak := Chr(I);

end; { KodujZnak }

function DekodujZnak(C : Char; Klucz : Byte):Char;

var I : Integer; J : Byte;

begin

J := Ord(C); I := J - Klucz;

if (J - Klucz) < 0 then Inc(I, 255); DekodujZnak := Chr(I);

end; { DekodujZnak }

procedure Polia(Co : PChar; Klucz : string);

var I : LongInt; B : Byte;

begin

B := 1;

for I := 0 to StrLen(Co) - 1 do begin

Co[I] := DekodujZnak(Co[I], Ord(Klucz[B]));

Inc(B); if B > Length(Klucz) then B := 1;

end;

end; { Polia }

procedure d_Polia(Co : PChar; Klucz : String);

var I : LongInt; B : Byte;

begin

B := 1;

for I := 0 to StrLen(Co) - 1 do begin

Co[I] := KodujZnak(Co[I], Ord(Klucz[B]));

Inc(B); if B > Length(Klucz) then B := 1;

end;

end; { d_Polia }

begin

0x08 graphic
0x08 graphic
ClrScr;

If (ParamStr(1)='') or (ParamCount<3) then begin

Writeln('skaldnia: deszyfruj.exe crypt_file oryginal_file password ');

halt; end;

Assign(FIn, ParamStr(1)); Assign(FOut, ParamStr(2));

Reset(FIn, 1); Rewrite(FOut, 1);

Zs := FileSize(FIn);

While Zs > 0 Do Begin

Zr := MaxAvail - 1024 * 3; if Zr > 65535 then Zr := 65534;

If Zr > Zs Then Begin Zr := Zs; Zs := 0; End

Else Zs := Zs - Zr;

GetMem(P, Zr);

repeat

BlockRead(FIn, P^, Zr, Lz); Polia(P, ParamStr(3));

{ przy dekodowaniu zamieniamy na: D_Polia(P, ParamStr(3) }

BlockWrite(FOut, P^, Lz, Lp);

until (Lz = 0) or (Lp = Lz);

If Assigned(P) Then FreeMem(P, Zr); End;

Close(FIn); Close(FOut);

end.

A jak jest idea, podstawy tego szyfru?

Niech alfabet ma 26 znaków.

Do szyfrowania i deszyfrowania korzystamy z tablicy. Niech klucz szyfrujący to słowo “dysk” a tekst do zaszyfrowania “lokomotywa”

Litera zaszyfrowana znajduje się na przecięciu wiersza litery klucza i kolumny litery szyfrowanej. Dla “d”-litera klucza i “l” litera do zaszyfrowania otrzymujemy “O” dalej dla “y” i “o” mamy “M”. Gdy wyczerpiemy litery klucza używamy go ponownie.

Tablica Vigenera'a

0x08 graphic
a b b c d e f g h i j k l m n o p q r s t u v w x y z

a A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

b B C D E F G H I J K L M N O P Q R S T U V W X Y Z A

c C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

0x08 graphic
d D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

e E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

f F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

g G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

h H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

i I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

j J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

k K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

l L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

m M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

n N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

o O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

p P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

r R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

s S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

t T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

u U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

v V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

w W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

x X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

Przy rozszyfrowaniu litera klucza oznacza wiersz, pozycja litery tekstu zaszyfrowanego określa kolumnę na której szczycie jest litera tekstu jawnego.

Ten szyfr zaciemnia częstość występowania liter charakterystyczną dla używanego alfabetu. Jeśli w tekście jawnym występują te same sekwencje znaków w odległości równej długości klucza szyfrującego to w tekście zaszyfrowanym pojawiają się także sekwencje znaków w odległości równej długości klucza. Częściowe usunięcie tego braku to dołączenie przy szyfrowaniu do klucza szyfrującego tekstu jawnego. W naszym przykładzie klucz miałby postać “dysklokomo”

Źródło odbiornik

b. przerwanie

Źródło odbiornik

c. przechwycenie

Źródło odbiornik

d. modyfikacja

Źródło odbiornik

e. podrobienie



Wyszukiwarka

Podobne podstrony:
BD Wyk01 TK
WYK01
wyk01
PO wyk01 v1
E wyk01 id 827333 Nieznany
BD Wyk01 TK

więcej podobnych podstron