Suhteline salajasus. Peeter Laud. Tartu Ülikool. peeter TTÜ, p.1/27

Σχετικά έγγραφα
Kirjeldab kuidas toimub programmide täitmine Tähendus spetsifitseeritakse olekuteisendussüsteemi abil Loomulik semantika

T~oestatavalt korrektne transleerimine

ITI 0041 Loogika arvutiteaduses Sügis 2005 / Tarmo Uustalu Loeng 4 PREDIKAATLOOGIKA

Kompleksarvu algebraline kuju

MATEMAATIKA TÄIENDUSÕPE MÕISTED, VALEMID, NÄITED LEA PALLAS XII OSA

Lokaalsed ekstreemumid

Funktsiooni diferentsiaal

Geomeetrilised vektorid

Kontekstivabad keeled

Matemaatiline analüüs I iseseisvad ülesanded

HULGATEOORIA ELEMENTE

Vektorid II. Analüütiline geomeetria 3D Modelleerimise ja visualiseerimise erialale

2.2.1 Geomeetriline interpretatsioon

Graafiteooria üldmõisteid. Graaf G ( X, A ) Tippude hulk: X={ x 1, x 2,.., x n } Servade (kaarte) hulk: A={ a 1, a 2,.., a m } Orienteeritud graafid

Punktide jaotus: kodutööd 15, nädalatestid 5, kontrolltööd 20+20, eksam 40, lisapunktid Kontrolltööd sisaldavad ka testile vastamist

HAPE-ALUS TASAKAAL. Teema nr 2

Formaalsete keelte teooria. Mati Pentus

MATEMAATIKA TÄIENDUSÕPE MÕISTED, VALEMID, NÄITED, ÜLESANDED LEA PALLAS VII OSA

Matemaatiline analüüs I iseseisvad ülesanded

Ruumilise jõusüsteemi taandamine lihtsaimale kujule

Kontekstivabad keeled

YMM3740 Matemaatilne analüüs II

KATEGOORIATEOORIA. Kevad 2016

KATEGOORIATEOORIA. Kevad 2010

Lambda-arvutus. λ-termide süntaks. Näiteid λ-termidest. Sulgudest hoidumine. E ::= V muutuja (E 1 E 2 ) aplikatsioon (λv.

Mudeliteooria. Kursust luges: Kalle Kaarli september a. 1 Käesoleva konspekti on L A TEX-kujule viinud Indrek Zolk.

Ehitusmehaanika harjutus

Algebraliste võrrandite lahenduvus radikaalides. Raido Paas Juhendaja: Mart Abel

2. HULGATEOORIA ELEMENTE

Arvuteooria. Diskreetse matemaatika elemendid. Sügis 2008

KOMBINATSIOONID, PERMUTATSIOOND JA BINOOMKORDAJAD

28. Sirgvoolu, solenoidi ja toroidi magnetinduktsiooni arvutamine koguvooluseaduse abil.

1 Funktsioon, piirväärtus, pidevus

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

PLASTSED DEFORMATSIOONID

Avaliku võtmega krüptograafia

Eesti koolinoorte XLVIII täppisteaduste olümpiaadi

Mathematica kasutamine

Matemaatiline analüüs IV praktikumiülesannete kogu a. kevadsemester

1.1. NATURAAL-, TÄIS- JA RATSIONAALARVUD

Semantiline analüüs. Süntaksipuu dekoreeritakse tüübi- ja muu kontekstist sõltuva

3. LOENDAMISE JA KOMBINATOORIKA ELEMENTE

Koduseid ülesandeid IMO 2017 Eesti võistkonna kandidaatidele vol 4 lahendused

Diskreetne matemaatika 2016/2017. õ. a. Professor Peeter Puusemp

Λύσεις Σειράς Ασκήσεων 5

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

4 T~oenäosuse piirteoreemid Tsentraalne piirteoreem Suurte arvude seadus (Law of Large Numbers)... 32

Krüptoloogia II: Sissejuhatus teoreetilisse krüptograafiasse. Ahto Buldas

Sisukord. 3 T~oenäosuse piirteoreemid Suurte arvude seadus (Law of Large Numbers)... 32

4.1 Funktsiooni lähendamine. Taylori polünoom.

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

Sisukord. 4 Tõenäosuse piirteoreemid 36

Veaarvutus ja määramatus

Planeedi Maa kaardistamine G O R. Planeedi Maa kõige lihtsamaks mudeliks on kera. Joon 1

9. AM ja FM detektorid

TTÜ informaatikainstituut. Tutvumine Pythoniga

TTÜ informaatikainstituut. Tutvumine Pythoniga

8. KEEVISLIITED. Sele 8.1. Kattekeevisliide. Arvutada kahepoolne otsõmblus terasplaatide (S235J2G3) ühendamiseks. F = 40 kn; δ = 5 mm.

ALGEBRA I. Kevad Lektor: Valdis Laan

20. SIRGE VÕRRANDID. Joonis 20.1

siis on tegemist sümmeetrilise usaldusvahemikuga. Vasakpoolne usaldusvahemik x i, E x = EX, D x = σ2

Mathcadi tööleht ja vormistamisvahendid

1. Paisksalvestuse meetod (hash)

(Raud)betoonkonstruktsioonide üldkursus 33

1 Kompleksarvud Imaginaararvud Praktiline väärtus Kõige ilusam valem? Kompleksarvu erinevad kujud...

sin 2 α + cos 2 sin cos cos 2α = cos² - sin² tan 2α =

FUNKTSIONAALNE PROGRAMMEERIMINE. Skeemid. Eesmärk: esitada riistvara skeeme ja teisi andmevoodiagrammidel baseeruvaid kirjeldusi Haskellis

MATEMAATILISEST LOOGIKAST (Lausearvutus)

Sisukord. 2 Programmeerimiskeel C

1 MTMM Kõrgem matemaatika, eksamiteemad 2014

Keerukusteooria elemente

Review Exercises for Chapter 7

,millest avaldub 21) 23)

Jätkusuutlikud isolatsioonilahendused. U-arvude koondtabel. VÄLISSEIN - COLUMBIA TÄISVALATUD ÕÕNESPLOKK 190 mm + SOOJUSTUS + KROHV

2017/2018. õa keemiaolümpiaadi piirkonnavooru lahendused klass

Aritmeetilised ja loogilised operaatorid. Vektor- ja maatriksoperaatorid

ΔΗΜΟΤΙΚΕΣ ΕΚΛΟΓΕΣ 18/5/2014 ΑΚΥΡΑ

Matemaatiline analüüs II praktikumiülesannete kogu a. kevadsemester

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Krüptoräsid (Hash- funktsioonid) ja autentimine. Kasutatavaimad algoritmid. MD5, SHA-1, SHA-2. Erika Matsak, PhD

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

RF võimendite parameetrid

Αποτελέσματα προόδου

Eesti koolinoorte XLI täppisteaduste olümpiaad

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ

6.6 Ühtlaselt koormatud plaatide lihtsamad

Tuletis ja diferentsiaal

Overview. Transition Semantics. Configurations and the transition relation. Executions and computation

2. FÜÜSIKALISE SUURUSE MÕISTE

Energiabilanss netoenergiavajadus

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

3. IMPULSS, TÖÖ, ENERGIA

7.7 Hii-ruut test 7.7. HII-RUUT TEST 85

Vahendid Otsus Analüüs: Analüüsi Riskantseid Otsuseid

2017/2018. õa keemiaolümpiaadi lõppvooru ülesannete lahendused klass

Kandvad profiilplekid

1 Entroopia ja informatsioon

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Βασικά Στοιχεία της Java

Transcript:

Suhteline salajasus Peeter Laud peeter l@ut.ee Tartu Ülikool TTÜ, 11.12.2003 p.1/27

Probleemi olemus salajased sisendid avalikud väljundid Program muud väljundid muud sisendid mittesalajased väljundid Kas programm rahuldab järgnevat salajasustingimust? Avalikud väljundid tehakse kõigile teatavaks,... aga salajaste sisendite kohta ei tohi midagi avalikuks saada,... aga me oleme mingil viisil kindlaks teinud, et mittesalajased väljundid ei anna salajaste sisendite kohta sensitiivset infot. Formaalne definitsioon? Programmianalüüs? TTÜ, 11.12.2003 p.2/27

Ettekande ülesehitus Keele süntaks ja semantika. Turvalisuse definitsioon. Programmianalüüs. Abstraktne domeen. Üleminekufunktsioonid. declassify-lause. Lihtne, semantiliselt ebakorrektne analüüs. Programmi ümberkirjutamine. Kahe analüüsi suhe. TTÜ, 11.12.2003 p.3/27

Programmeerimiskeel Lihtne imperatiivne keel (WHILE). P ::= x := o(x 1,..., x k ) skip P 1 ; P 2 if b then P 1 else P 2 while b do P Programmi olekute hulk State on Var Val. x, x 1,..., x k, b Var, o Op. Salajased sisendid muutujate Var S Var esialgsed väärtused. Avalikud/mittesalajased väljundid muutujate Var P Var / Var NS Var lõppväärtused. TTÜ, 11.12.2003 p.4/27

Deterministlik semantika Denotatsiooniline semantika kujutab programmi algoleku lõppolekuks. [P] : State State defineeritud induktiivselt üle süntaksi; State = State { }; tähistab mittetermineerumist. Meie tulemused on hetkel termineerumistundetud. Termineerumisega seotud küsimused on ilmselt teistest küsimustest sõltumatud. Seetõttu loeme me [P] : State State. TTÜ, 11.12.2003 p.5/27

Mittemõjutatavus Harilik definitsioon: Programmi avalike väljundite väärtused peavad olema määratud tema teiste sisendite väärtustega. f : (Var T Val) (Var P Val) nii et kõigi S State jaoks [P](S) VarP = f(s VarT ). Siin Var T tähistab programmi mittesalajasi sisendeid. TTÜ, 11.12.2003 p.6/27

Mittemõjutatavus Tähistagu S 1 = X S 2 võrdust S 1 X = S 2 X, kus X Var. Siis mittemõjutatavus tähendab, et kõigi S 1, S 2 State jaoks S 1 = VarT S 2 = [P ](S 1 ) = VarP [P ](S 2 ). TTÜ, 11.12.2003 p.7/27

Suhteline salajasus Programmi avalike väljundite väärtused peavad olema määratud tema teiste sisendite ja mittesalajaste väljundite väärtustega. S 1 = VarT S 2 [P](S 1 ) = VarNS [P](S 2 ) [P](S 1 ) = VarP [P](S 2 ) Kui eeldame (üldisust kitsendamata), et P ei omista muutujatele Var T -s, siis [P](S 1 ) = VarT [P](S 2 ) [P](S 1 ) = VarNS [P](S 2 ) [P](S 1 ) = VarP [P](S 2 ) TTÜ, 11.12.2003 p.8/27

Abstraktne domeen Mingite (suvaliste) S State ja X, Y, Z Var korral huvitab meid, kas S 1 = X S 2 S 1 = Y S 2 S 1 = Z S 2 kehtib kõigi S 1, S 2 S jaoks. Piisab, kui teame kõigi X Var ja z Var jaoks, kas kehtib kõigi S 1, S 2 S jaoks. S 1 = X S 2 S 1 (z) = S 2 (z) Me abstraheerime P(State)-i domeeniga P(P(Var) Var). Olgu α abstraktsioonifunktsioon. TTÜ, 11.12.2003 p.9/27

Analüüsi üldstruktuur Let A võimalike algolekute hulga abstraktsioon. Rakenda P analüüsi A -le, see annab A -i. A abstraheerib võimalike lõppolekute hulka. Ta on konservatiivne abstraktsioon osad paarid (X, z) võivad puududa. Kui ( Var T Var NS, x ) A kõigi x Var P jaoks, siis võime programmi turvaliseks lugeda. TTÜ, 11.12.2003 p.10/27

Abstraktsiooni omadusi Olgu A = α(s) mingi S State jaoks. Siis ({z}, z) A, (X, z) A (X Y, z) A, (X {y}, z) A (X, y) A (X, z) A kehtivad kõigi X, Y Var ja y, z Var jaoks. Ütleme, et A P(Var) Var on kinnine, kui ta neid implikatsioone rahuldab. A sulund on vähim kinnine A-d sisaldav hulk. TTÜ, 11.12.2003 p.11/27

Omistamiste analüüs Analüüs A(x := o(x 1,..., x k )), rakendatuna A -le, konstrueerib A -i järgmisel viisil: tapa x, s.t. kustuta kõik (X, z), kus x X või x = z; lisa ({x 1,..., x k }, x); moodusta sulund. (eeldame, et x {x 1,..., x k }) Kui mõni x i on peale tehet leitav mingist hulgast X {x, x 1,..., x k } siis lisa teisel sammul ka (X, x i ). Näide: y on leitav hulgast {x, z} peale tehet x := y + z. TTÜ, 11.12.2003 p.12/27

skip-i ja kompositsiooni analüüs A(skip) on identsusfunktsioon. A(P 1 ; P 2 ) = A(P 2 ) A(P 1 ). TTÜ, 11.12.2003 p.13/27

if then else-i analüüs Vaatame programmi if b then P 1 else P 2. Olgu {x 1,..., x k } = Var asgn Var muutujad, millele P 1 -s või P 2 -s omistatakse. Olgu Var = Var {N, x true 1,..., x true k, x false 1,..., x false k } Programmil on sama funktsionaalsus. P true 1 on P 1, kus kõik x i -d on asendatud x true i -ga. P false 2 on defineeritud sarnaselt. Analüüsi hoopis parempoolset programmi. N := b x true 1 := x 1 x false 1 := x 1... x true k x false k P true 1 P false 2 := x k := x k x 1 := N? x true 1 : x false 1... x k := N? x true k : x false k TTÜ, 11.12.2003 p.14/27

Lisaks:? :-de jada analüüsimine Vaatame programmi x 1 := N? x true 1 : x false 1 ; x 2 := N? x true 2 : x false 2 ; ; x k := N? x true k Kui : x false k X Var\{x 1,..., x k } Y {x 1,..., x k } i {1,..., k} (X, N) A (X Y true, x true i ) A (X Y false, x false i ) A siis võime võtta (X Y, x i ) A. TTÜ, 11.12.2003 p.15/27

Harude sõltumatu analüüs Programmi if b then P 1 else P 2 võime analüüsida järgmiselt: Olgu N uus muutuja, olgu Siis võtame (X, z) A, kui (X, z) A 1 A 2 ; A 1 = A(N := b; P 1 )(A ) A 2 = A(N := b; P 2 )(A ). kui X {z} Var asgn, siis (X\Var asgn, N) A 1 (või A 2 ). TTÜ, 11.12.2003 p.16/27

while-i analüüs A(while b do P), rakendatuna A -le, rakendab talle analüüsi A(if b then P else skip) seni kaua, kuni jõuab püsipunktini. Korrektsus järeldub võrdusest [while b do P] = [while b do P] [if b then P else skip ]. TTÜ, 11.12.2003 p.17/27

Alternatiiv Programmi while b do P analüüsiks: Olgu A 1 suurim (hulkade sisalduvuse mõttes), mis rahuldab võrrandit A 1 = A A(N := b; P)(A 1 ) (leitakse iteratiivselt, algväärtuseks võime võtta A ). Siis võtame (X, z) A, kui (X, z) A 1 ; kui X {z} Var asgn, siis (X\Var asgn, N) A 1. TTÜ, 11.12.2003 p.18/27

Deklassifitseerimislause Me lisame programmeerimiskeelde lause kus x Var. declassify(x), Tema semantika on sama, mis lausel skip. Intuitiivne tähendus: praegusel hetkel ei ole võimalik x väärtusest midagi salajaste sisendite kohta leida. Intuitiivne tähendus kajastub analüüsis. TTÜ, 11.12.2003 p.19/27

Lihtne analüüs deklassifitseerimisega Vaatame analüüsi, mis kujutab programmi alguses mittesalajsed muutujad lõpus avalikeks muutujateks. B(P) : P(Var) P(Var), nii argument kui ka väärtus on avalike muutujate hulgad. { B {x}, if x 1,..., x k B B(x := o(x 1,..., x k ))(B ) = B \{x}, otherwise. B(declassify(x))(B ) = B {x} skip ja kompositsioon nagu A. TTÜ, 11.12.2003 p.20/27

Lihtne analüüs, if then else B = B(if b then P 1 else P 2 )(B ) leitakse järgmiselt: kus N on uus muutuja. z B, kui z B 1 B 2 ; B 1 = B(N := b; P 1 )(B ) B 2 = B(N := b; P 2 )(B ), kui z Var asgn, siis N B 1 (ehk N B 2 ). TTÜ, 11.12.2003 p.21/27

Lihtne analüüs, while Programmi while b do P analüüsiks: Olgu B 1 suurim (hulkade sisalduvuse mõttes), mis rahuldab võrrandit B 1 = B B(N := b; P)(B 1 ) (leitakse iteratiivselt). Siis z B parajasti siis, kui z B 1 ; kui z Var asgn, siis N B 1. TTÜ, 11.12.2003 p.22/27

Analüüside seostamine Olgu B Var. Etteantud Var T ja Var NS jaoks olgu ξ(b) := { ( Var T Var NS, x ) : x B}. ξ seob B ja A määramis-/muutumispiirkonnad. B analüüsi B leitud salajast infot mittesisaldavad muutujad. Me tahame defineerida programmiteisenduse ja hulga Var NS nii, et kõigi programmide P ja B Var jaoks kehtiks ξ ( B(P)(B ) ) A(P)(ξ(B )). S.t. A oleks vähemalt sama täpne kui B. Var NS -i kuuluvate muutujate väärtused iseloomustavad, kui palju declassify-d infot annavad. TTÜ, 11.12.2003 p.23/27

Programmiteisendus (1/3) Olgu d uus muutuja. Siis P := [ ] d := Nil; T(P) ja Var NS = {d}. T on defineeritud järgmiselt: T(P) = P, kui P-s pole deklassifitseerimislauseid; T(declassify(x)) := [ tmp := d; d := (x, tmp) ], kus tmp on uus muutuja; Analüüsi A juures: nii y kui ka z on x-st peale tehet x := (y, z) leitavad. T(P 1 ; P 2 ) = T(P 1 ); T(P 2 ); TTÜ, 11.12.2003 p.24/27

Programmiteisendus (2/3) Olgu if - ja while-laused märgendatud. Samas programmis ei esine sama märgend kaks korda. T(if l b then P 1 else P 2 ) := if b then tmp := d; d := ( l, tmp); T(P 1 ) else tmp := d; d := ( l, tmp); T(P 2 ), kus l on antud if -lause märgend. tmp on uus muutuja; l Val on väärtus, mis kuskil mujal ei esine. TTÜ, 11.12.2003 p.25/27

Programmiteisendus (3/3) T(while l b do P) := tmp := d; d := ( a l, tmp); while b do [ T(P); tmp := d; d := ( i l, tmp)], kus l on antud while-lause märgend. tmp on uus muutuja; a l, i l Val on väärtused, mis kuskil mujal ei esine. a l algus ; i l iteratsioon. TTÜ, 11.12.2003 p.26/27

Analüüs A kohendamine if - ja while-lausete analüüse on võimalik optimistlikumaks muuta, sest muutuja d lõppväärtusest on tänu -le võimalik leida tema algväärtus ja väärtus peale iga iteratsiooni. Võime lugeda, et d Var asgn, kuigi talle if -lause harudes või tsüklis omistatakse. S.t. tingimuse (X, z) Var asgn = (X\Var asgn, N) A 1 võib asendada tingimusega (X, z) Var asgn \{d} = (X\(Var asgn \{d}), N) A 1. Seda läheb A ja B seostamisel vaja... TTÜ, 11.12.2003 p.27/27