CsL, system do weryfikacji bezpieczeństwa programów XVII FI, Karpacz 003 Wiktor Zychla, Wojciech omanik Uniwersytet Wrocławski Instytut Informatyki 13 grudnia 003 CsL, system do weryfikacji bezpieczeństwa programów p.1/0
Non-Interference Mamy dany model programu/systemu, złożonego z n równolegle działających komponentów. Wszystkie akcje klasyfikujemy jako jawne (bezpieczne, publiczne, L) lub tajne (niebezpieczne, prywatne, H). odobnie użytkowników systemu dzielimy na użytkowników L i H. Dwa poziomy dostępu wystarcza do analizy bardziej złożonych scenariuszy. aką klasyfikację traktujemy jako pewną polisę bezpieczeństwa. Klasyfikacja akcji jest punktem wyjścia do dalszej analizy systemu. Non-Interference nie narzuca tutaj jednak żadnych ograniczeń. CsL, system do weryfikacji bezpieczeństwa programów p./0
Non-Interference, definicja System nazwiemy bezpiecznym w sensie Non-Interference, jeśli nie ma żadnej interferencji między akcjami jawnymi i tajnymi, to znaczy że obserwując wykonanie się swojego programu, użytkownik L nie potrafi wydedukować czy w systemie wykonują się jakiekolwiek akcje tajne Okazuje się, że w pewnych przypadkach jest to polisa zbyt silna. Mimo to, Non-Interference potrafi wykrywać wiele jawnych oraz niejawnych kanałów możliwego wycieku informacji. CsL, system do weryfikacji bezpieczeństwa programów p.3/0
CsL - system kompletny Algebra CsL Język CsL Semantyka Systemy dowodowe NI Kompilator dla.ne Certyfikaty CC CsL, system do weryfikacji bezpieczeństwa programów p.4/0
Algebra CsL a algebra SA rosta algebra SA: E :: 0 µ E µ E E E E E E L E f Algebra CsL: 1. n x 1 x 1 xk xl E 1 E n gdzie E i :: 0 E i µ?x L Ei E i f µ!x if Ei else E i j E i y 1 E i E i ym CsL, system do weryfikacji bezpieczeństwa programów p.5/0
Algebra CsL a algebra SA Analiza bezpośrednia procesów SA ma złożoność podwójnie wykładniczą Wykładnicza złożoność translacji VSA do SA Wykładnicza złożoność ewaluacji operatora O(m log n) złożoność algorytmu rozstrzygania NI CsL+CC pozwala na podwójny unik Uniknięcie translacji do rachunku niesymbolicznego Wykładnicza złożoność ewaluacji operatora Liniowa złożoność weryfikacji dowodu NI CsL, system do weryfikacji bezpieczeństwa programów p.6/0
Kontesty algebraiczne dla NI NI jest klasycznie definiowana jako własność dynamiczna, może być jednak określona algebraicznie za pomocą bisymulacji Różne odmiany polisy NI wyraża się przez tzw. konteksty algebraiczne bisymulacji NNI SNNI. I Act H Act H Act H Act H Act H CsL, system do weryfikacji bezpieczeństwa programów p.7/0
Bisymulacja, badanie NI Na termy SA można patrzeć jak na automaty skończone o klasycznej semantyce. Dwa termy, i Q są bisymulacyjnie równoważne ( Q), gdy: µ µ Q Q Q µ Algorytmy rozstrzygania równoważności dzielą przestrzeń stanów modelu na podzbiory stanów równoważnych. Q CsL, system do weryfikacji bezpieczeństwa programów p.8/0
Bisymulacja symboliczna Modelami termów CsL są automaty symboliczne o symbolicznych tranzycjach postaci b µ. Na przykład term c?x if x 0 c!1 else c! ma model x 0 c!1 true c?x x 0 c! CsL, system do weryfikacji bezpieczeństwa programów p.9/0
!!! Bisymulacja symboliczna owiemy, że zbiór B wyrażeń booleowskich jest b-podziałem (B AR b ), gdy B b. Rodzina relacji S { S b, b - wyrażenie booleowskie } jest bisymulacją symboliczną, gdy t b u S b t b 1 AR b b 1 b t b α t α b u α u S b AR b α b u b b 1 α u CsL, system do weryfikacji bezpieczeństwa programów p.10/0
" ( ' ( ' ' + * ) + ) * Systemy dowodowe: termy System dla formuł postaci EQ # EQUIV U Q. U U %U V V EQ # REFIX α & U α &U EQ # CHOICE U U EQ # SIMLE A t u t; A B u; B CsL, system do weryfikacji bezpieczeństwa programów p.11/0
/ 5 4 3 4 3 4 3, /, / 5 4 3 4 3 5 4 3 4 3, / 4 3 4 3, /, Systemy dowodowe: rekursja Rekursja jest najczęściej definiowana przy pomocy operatora punktu stałego fix, gdzie przyjmuje się, że f ixx F F f ixx F X W takim ujęciu rekursji trudno jest modelować systemy wielokomponentowe. a trudność jest jedną z motywacji dla składni CsL. REC X 1 -...-Xk ;Xs X 1, /10 x 1 #X X S 5 -... -Xk x k #X X S 5 -#X x s #X X S ;X s RECREFIX X 1 x 1 X s µ.0 5 -... -Xk X 1 x k X s µ.0 ;X s -...-Xk ;Xs Y 1 Y 1, /10, /10 -...-Ym;Yt y 1 Y t µ.0 5 -... -Ym y m Y t µ.0 ;Y t RECEXAND X 1 -...-Xk ;Xs X 1 Y 1, /10 x 1 -...-Xk y 1 X s x k ;X s Y t 5 -..., /10 -Ym Y 1 y m X s y 1 -...-Ym Y t 5 -X1 y m ;Y t -...-Xk ;Yt CsL, system do weryfikacji bezpieczeństwa programów p.1/0
78 6 9 > BH A A = E A = = < I % %Yj % %Yi ; : > BH A A = E A = = < I % %Yi % %Yj M KL J O BH A N I BH A I M KL J Systemy dowodowe: modele System dla formuł postaci A B M # BISIM µ Y i Y j X i X j µ >@? µ >@? BDC BDC Y j Y i X j X i X i X j µ µ >@? >@? BGF BGF Y i Y i Y j Y j M # REC X i. X i X i X j X j X j CsL, system do weryfikacji bezpieczeństwa programów p.13/0
9 CC dla NI, termy Aby zbudować infrastrukturę CC dla NI trzeba pokazać jak budować warunki weryfikacyjne i jak ich dowodzić. Dla logiki dowodzącej równość termów mówimy: V Act H Act H w.: V jest dowodliwy ma własność NI. Dowód: V definiuje kontekst algebraiczny dla Non-Interference. CsL, system do weryfikacji bezpieczeństwa programów p.14/0
7 6 6 8 Q 9 Q 8 Q 9 9 CC dla NI, modele Dla logiki dowodzącej równość modeli definiujemy modele dla kontekstów algebraicznych: 1 Act H 7 Act H Warunek weryfikacyjny definiujemy jako: V 1 gdzie 1 w.: V jest dowodliwy Dowód: 1 init init 1 init jest mnogościową sumą 1 and. 1 ma własność NI. init oznacza, że stany początkowe modeli 1 i są równoważne, więc Act H Act H. CsL, system do weryfikacji bezpieczeństwa programów p.15/0
rzykładowy program w CsL chanof int comm1; chanof comm1 comm var comm1 c1; var comm c; env Sender( 5 )... proc Sender( int x ) { %{ Console.WriteLine( "{0}", x ); comm1 privatec = null; int y; %} c? privatec; ( privatec? y ) { Sender( y ); } + ( c1? y ) { Sender( y+1 ); }; } proc... CsL, system do weryfikacji bezpieczeństwa programów p.16/0
Coq - definicje i reguły Zmienne i akcje Axiom Channels : Set. Axiom Vars :Set. Inductive Actions : Set := tau: Actions inch : Channels -> Vars -> Actions outch: Channels -> Vars -> Actions. rocesy Inductive SrocessBody : Set := nil : SrocessBody cons: Actions -> SrocessBody -> SrocessBody plus: SrocessBody -> SrocessBody -> SrocessBody nameroc: SrocessName -> SrocessBody. Inductive Srocess: Set := proc: rocnames -> SrocessBody -> Srocess. CsL, system do weryfikacji bezpieczeństwa programów p.17/0
Coq - jak używać Certyfikowanie ranslacja programu CsL -> Coq Wczytanie logiki i opisu programów. Wprowadzenie dowodów o równoważności. Utworzenie dowodów. Weryfikacja Wczytanie logiki Wczytanie opisu programów Wczytanie twierdzeń o równoważności wraz z dowodami. CsL, system do weryfikacji bezpieczeństwa programów p.18/0
CsL Coq proc Nadawca { [...] } int x; [...] Definition NadawcaBody := (Simple.cons [..]). Definition Nadawcarocess := (proc Nadawca NadawcaBody). (Simple.cons Simple.tau [...]). c! x; [...] (Simple.cons (Simple.outCh c x) [...]). CsL, system do weryfikacji bezpieczeństwa programów p.19/0
rzykład - Certyfikat Load Simple. Load testw0. Lemma m1: (Simple.Equiv Nadawca1 Nadawca). roof. Unfold Nadawca1.Unfold Nadawca. Apply Simple.equiv_body. Unfold NadawcaBody1.Unfold NadawcaBody. Apply Simple.prefix.Apply Simple.choice_m. Qed. CsL, system do weryfikacji bezpieczeństwa programów p.0/0