Techniki zabezpieczania kodu analiza przepływu informacji. Temat V

Podobne dokumenty
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie obiektowe

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Czym są właściwości. Poprawne projektowanie klas

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Klasy abstrakcyjne, interfejsy i polimorfizm

Platformy Programistyczne Podstawy języka Java

Programowanie obiektowe

Enkapsulacja, dziedziczenie, polimorfizm

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Języki i metody programowania Java. Wykład 2 (część 2)

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Projektowanie obiektowe. Roman Simiński Polimorfizm

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Dziedziczenie. dr Jarosław Skaruz

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wykład 4: Klasy i Metody

Lab 9 Podstawy Programowania

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

PARADYGMATY PROGRAMOWANIA Wykład 4

Wskaźniki. Informatyka

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Wstęp do programowania obiektowego. Wykład 2

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Podstawy programowania obiektowego

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie obiektowe

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Definiowanie własnych klas

Java: interfejsy i klasy wewnętrzne

Metody Metody, parametry, zwracanie wartości

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Szablony. Szablony funkcji

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie w Javie

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Kurs programowania. Wykład 9. Wojciech Macyna

Typy sparametryzowane

Programowanie obiektowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Technologie obiektowe

Wykład 8: klasy cz. 4

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Testy jednostkowe Wybrane problemy testowania metod rekurencyjnych

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Co jeszcze mogą nam dać adnotacje? Adam Warski

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Wykład 7: Pakiety i Interfejsy

Tworzenie aplikacji w języku Java

Bezpieczne uruchamianie apletów wg

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Przypomnienie o klasach i obiektach

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Programowanie obiektowe - 1.

Specyfikacje w praktyce na przykładzie JML-a. Sesja I

Klasy i obiekty cz II

Microsoft IT Academy kurs programowania

Programowanie obiektowe zastosowanie języka Java SE

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Referencje do zmiennych i obiektów

Ćwiczenie 1. Przygotowanie środowiska JAVA

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Funkcje i instrukcje języka JavaScript

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Podstawy programowania skrót z wykładów:

Transkrypt:

Techniki zabezpieczania kodu analiza przepływu informacji Temat V

Bezpieczeństwo w systemie operacyjnym 1. system operacyjny kontroluje dostęp do zasobów, 2. zmieniaja się potrzeby, 3. ewolucja API jadra powolna, 4. ewolucja API powolna potrzeba standaryzacji, 5. nieodpowiednie pojęcie aktora (2/31)

Potrzeby bezpieczeństwa zależne od aplikacji GUI dostęp do okien, kod mobilny nie wysyłamy przez sieć po przeczytaniu pliku z numerem konta, e-zakupy towaru nie wysyłamy/pokazujemy przed zapłaceniem, zarzadzanie prawami intelektualnymi. (3/31)

Problemy z zasada minimalnych przywilejów przywileje w systemie operacyjnym na poziomie użytkownikagrupy, różne watki tej samej aplikacji moga wymagać różnych praw, (4/31)

Wielkość Zaufanej Bazy Kodowej (TCB) system operacyjny duża baza kodowa, trudno testować, debugować, kompilator mała baza kodowa łatwiejsze testowanie, debugowanie, (5/31)

Techniki oparte na językach programowania analiza programów na etapie kompilacji/ładowania sprawdzanie analizy na etapie ładowania redukuje TCB transformacja programów na etapie kompilacji/ładowania/działania tak, żeby nie mogły naruszyć bezpieczeństwa; albo żeby logowały akcje (6/31)

Założenia dotyczace bezpieczeństwa atakujacy nie ma fizycznego dostępu do sprzętu, kod programu nie może być (semantycznie) zmodyfikowany w trakcie wykonania, nikt nie monitoruje aktywności radiowej komputera itp. (7/31)

Problemy z założeniami założenia to zagrożenia (czasami znane, a czasami nie), analiza bezpieczeństwa możliwa tylko po abstrakcji, abstrakcja ukrywa szczegóły (być może nieistotne) (8/31)

Analiza przepływu informacji sprawdzamy, jak informacje wędruja poprzez program (9/31)

Model La Paduli Bella informacje sa poklasyfikowane np. ściśle tajne, tajne specjalnego przeznaczenia, tajne, poufne, publiczne w programie zachowanie na niskim poziomie tajności nie powinno zależeć od danych na wysokim poziomie tajności (10/31)

Typy zwiazane z modelem LP-B dodajemy etykiety do języka jako adnotacje typowe, najprostszy język: H tajne, L publiczne; L H OK H L źle int{h} x; // tajna liczba całkowita int{l} y; // publiczna liczba całkowita String{L} z; // publiczny napis x = y; // OK y = x; // źle x = z.size(); // OK z = Integer.toString(x); // źle (11/31)

Własności bezpieczeństwa jako kraty zasady przepływu informacji dobrze reprezentuja się jako kraty, nie deptać trawników A, nie palić w miejscach publicznych B, kombinacje: A B, A B (12/31)

Własności bezpieczeństwa jak zapewniać? łaczenie wartości z różnych zasad przepływu informacji podejście konserwatywne: etykieta wyniku powinna być co najmniej tak silna jak etykiety wszystkich danych wejściowych jeśli x to etykieta x, a y to etykieta y, to etykieta x + y to x y. (13/31)

Przepływy niejawne x = 0; if (b) { x = a; } wartość końcowa x wskazuje na wartości a i b przyjmujemy: a x & b x (14/31)

Przypisanie i licznik instrukcji pomysł: niejawne przepływy ujmowane w liczniku instrukcji (pc) instrukcje if, while, switch podnosza pc x = 0; if (b) { x = a; } // _pc_ = _b_ statyczne sprawdzanie to już nie tylko optymalizacja (co się stanie, gdy powyższe jest sprawdzone w czasie wykonania)? (15/31)

Jif: Java + Information Flow programy w Javie sa anotowane etykietami zmienne maja typ oraz etykietę przepływu etykiety to zasady wyrażone w terminach zleceniodawców (aktorów): int {Ala->Bartek} x; etykiety wyznaczaja jak przepływa informacja (16/31)

Jif etykiety zleceniodawcy pozwalaja na symulowanie grup (gromadzacych wielu aktorów) i roli (w ramach jednego aktora), podstawowa relacja: q acts-for p, q p, reprezentuje zaufanie acts-for jest zwrotna i przechodnia zleceniodawca zleceniodawca zleceniodawca p&q oraz p, q (17/31)

Jif zasady dotyczace odczytów Zapis o r (o - właściciel, r - czytacz) o pozwala q na odczyt, gdy q acts-for o lub r, a także p uważa, że zasada c powinna ograniczać jego czytaczy, gdy właściciel c może act-for p: readers(p, o r) {q jeśli o p then (q o lub q r)} złożone zasady: c d, c d zdefiniowane jako przecięcie zbiorów readers zdefiniowane jako suma zbiorów readers (18/31)

Jif zasady dotyczace zapisów Zapis o w (o - właściciel, w - pisarz) o pozwala q może wpłynać na wartość informacji, gdy q acts-for o lub w, a także p uważa, że zasada c powinna ograniczać jego zapisy, gdy właściciel c może act-for p: writers(p, o w) {q jeśli o p then (q o lub q w)} złożone zasady: c d, c d zdefiniowane jako suma zbiorów writers zdefiniowane jako przecięcie zbiorów writers (19/31)

Jif etykiety {c; d} c to zasada dotyczaca odczytów d to zasada dotyczaca zapisów (20/31)

Jif przykład {Ala Bartek, Czesiek; Ala Czesiek Bartek Czesiek, Darek} Czytanie (I): zleceniodawcy, których roli Ala nie może grać pozwalaja wszystkim czytać, Czytanie (II): zleceniodawcy, których rolę może grać Ala sa ograniczeni i odczyty sa dozwolone tylko dla zleceniodawców, którzy moga grać rolę Ali, Bartka lub Cześka (21/31)

Jif przykład c.d. {Ala Bartek, Czesiek; Ala Czesiek Bartek Czesiek, Darek} Zapis (I): Ala wierzy, że tylko zleceniodawcy, którzy moga grać rolę Czarka lub grać rolę Ali mogli wpływać na informację Zapis (II): Bartek wierzy, że tylko zleceniodawcy, którzy moga grać rolę Czarka, Darka lub grać rolę Bartka mogli wpływać na informację Zapis (III): ktoś, kto gra Alę i Bartka wierzy, że tylko zleceniodawcy, którzy moga grać rolę Ali, Bartka, Czarka lub Darka mogli wpływać na informację Zapis (IV): dla pozostałych na informację mógł wpływać ktokolwiek, więc nie jest ona godna zaufania (22/31)

Jif dodatkowe możliwości parametry etykiet, etykiety dynamiczne, polimorficzne etykiety argumentów (23/31)

Jif adnotacje w kodzie public class Vector[label L] extends AbstractList[L] { private int{l} length; private Object{L}[]{L} elements; } public Vector()... public Object elementat(int i):{l; i} throws IndexOutOfBoundsException {... return elements[i]; } public void setelementat{l}(object{l} o, int{l} i)... public int{l} size() { return length; } public void clear{l}()...... (24/31)

Jif adnotacje w kodzie, klasy public class Vector[principal P, label L] extends AbstractList[L] {... } klasy moga być parametryzowane zleceniodawcami i etykietami parametryzacja jest polimorficzna deklaracje obiektów: final Vector[Alicja, lb] vec = new Vector[Alicja, lb]();! inne operacje... (25/31)

Jif adnotacje w kodzie, pola obiektów private int{l} length; private Object{L}[]{M} elements; można opatrzeć zmienne etykietami można określić etykietę elementów tablicy (L) można określić etykietę tablicy (M) (26/31)

Jif adnotacje w kodzie, metody public void setelementat{l}(object{l} o, int{l} i)... etykieta poczatkowa: w setelementat L wywołanie w miejscu nie bardziej restrykcyjnym niż L modyfikacje co najmniej tak restrykcyjne jak L L jest też górnym ograniczeniem na argumenty faktyczne (o, i) (27/31)

Jif adnotacje w kodzie, metody c.d. public Object elementat(int i):{l; i} }... return elements[i]; throws IndexOutOfBoundsException { po wyjściu znajdujemy się w miejscu co najmniej tak restrykcyjnym jak {L; i} etykieta i oznacza etykietę zmiennej i o etykiecie wyjściowej decyduje informacja podawana w return oraz wyjatkach (28/31)

Jif adnotacje w kodzie, autorytet class C authority(alicja) {... void m() where authority(p); void n() where caller(q, Alicja); klasa może deklarować, że wykonuje się w imieniu jakiegoś zleceniodawcy, np. Alicja także pojedyncza metoda może deklarować, w imieniu kogo się wykonuje można też deklarować, że można ja wykonywać tylko z kodu o określonych pełnomocnictwach (29/31)

Jif adnotacje w kodzie, zmiana poziomu declassify(e, L1 to L2); endorse(e, L1 to L2); declassify(l1 to L2) s; endorse(l1 to L2) s; declassify można odczytywać bardziej tajne rzeczy, endorse można zapisywać bardziej jawne rzeczy (30/31)

Jif adnotacje w kodzie, różne można stosować dynamiczne etykiety cały system deklaracji, można specyfikować biblioteki zewnętrzne (31/31)