430 likes | 729 Views
Krüptoprotokollid. Algoritmid ja andmestruktuurid Loeng 7. Raamat. Bruce Schneier. Applied Cryptography. Protokollid, algoritmid ja lähtekoodid C-s Teine väljaanne (1996). Krüptoprotokollid. Kokkuleppelised sõnumivahetusreeglid Kõigi osaliste poolt üheselt mõistetavad
E N D
Krüptoprotokollid Algoritmid ja andmestruktuurid Loeng 7
Raamat Bruce Schneier. Applied Cryptography. Protokollid, algoritmid ja lähtekoodid C-s Teine väljaanne (1996)
Krüptoprotokollid • Kokkuleppelised sõnumivahetusreeglid • Kõigi osaliste poolt üheselt mõistetavad • Rollid: protokollide osaliste tegevused ja nende otstarve
Protokollirollid (kokkulepe) • Alice – esimene osaline • Bob – teine osaline • Carol – 3. osaline (keerukamad) • Dave – 4. osaline (keerukamad) • Eve – kurikael, kes püüab pealt lugeda • Mallory – kurikael, kes püüab häkkida (aktiivne) • Trent – usaldusväärne notar • Walter (Warden) – valvab Alice ja Bobi tegevust mõnedes protokollides • Peggy – tõestaja • Victor – kontrollija
Protokolli nõuded • Iga osaline teab ette kõiki protokolli samme ja reegleid • Iga osaline täidab neid reegleid • Protokoll on kõigile üheselt arusaadav • Protokoll on täielik
Protokollide liigid • arbiitriga protokollid • on nn kolmas asjast mittehuvitatud osapool, kelle korrektsuses on teised veendunud (notar) ja kes osaleb kogu sõnumivahetuses • kohtunikuga protokollid • komas osapool osaleb ainult vaidluses (kohtunik) • autonoomsed protokollid • protokoll ise tagab korrektsuse
Protokollirünne • passiivne rünne – protokolli pealkuulaja proovib saadud informatsiooni kasutada • aktiivne rünne – protokolli pealtkuulaja proovib muuta sõnumeid, nende järjekorda või lisada uusi
Protokoll sümmeetrilise võtmega • Alice ja Bob lepivad kokku süsteemi • Alice ja Bob vahetavad võtme • Alice arvutab C = E(k,M) • Alice saadab C Bobile • Bob loeb M = D(k,C) samm 2 peab olema salaja sooritatud!!!
Assümeetriline võti (PKI) • Alice ja Bob lepivad kokku süsteemi • Bob saadab Alice’ile oma ka • Alice arvutab C = E(ka,M) • Alice saadab C Bobile • Bob arvutab M = D(kp, C) assümeetrilised algoritmid on aeglased!!!
Hübriidprotokoll • Bob saadab Alice’ile oma ka • Alice genereerib sessioonivõtme k • Alice saadab Bobile CK = E(ka,k) • Bob arvutab k = D(kp, CK) • Alice arvutab C = E(k,M) • Alice saadab C Bobile • Bob loeb M = D(k,C) • ... jne
Avaliku võtme infrastruktuur • Alice võtab andmebaasist Bobi ka • Alice genereerib sessioonivõtme k • Alice saadab Bobile CK = E(ka,k) • Bob arvutab k = D(kp, CK) • Alice arvutab C = E(k,M) • Alice saadab C Bobile • Bob loeb M = D(k,C) • ... jne
Digiallkiri • Alice koostab sõnumi M • Alice arvutab S = E(kp, M) • Alice saadab Bobile M+S • Bob arvutab M1 = D(ka, S) • Bob võrdleb M == M1 • Bob saadab Carolile M+S • Carol arvutab H = D(ka, S) • Carol võrdleb M == M1
Digiallkiri Hashiga • Alice koostab sõnumi M ja arvutab H(M) • Alice arvutab S = E(kp, H) • Alice saadab Bobile M+S • Bob arvutab H = D(ka, S) ja H(M) • Bob võrdleb H == H(M) • Bob saadab Carolile M+S • Carol arvutab H = D(ka, S) ja H(M) • Carol võrdleb H == H(M)
Allkirjafunktsioonid (tähised) • Signeerimine • S(k,M) või S(kp, M) või Sk(M) • Valideerimine • V(k,S) või V(ka, S) või Vk(S)
Mitu allkirja • Kaks võimalust • M+S1(M)+S2(M)+... • sõnumile lisatakse mitu allkirja, sõltumatu allkirjastamine • (M+S2)+S1(M+S2) • allkirjastatakse allkirjaga sõnum (allkirja kinnitamine)
Signeerimine ja krüpteerimine • S(E(M)) – enne signeerimist sõnum krüpteeritakse. • E(S(M)) – enne krüpteerimist allkirjastatakse. • Sel juhul saab valideerida sõnumi sisu NB! Signeerimiseks ja krüpteerimiseks ei kasutata sama võtmepaari
Sõnumi kinnitus • Alice allkirjastab sõnumi (oma isikliku), šifreerib (bobi avaliku võtmega) ja saadab Bobile EB(SA(M)) • Bob dešifreerib (oma isikliku) ja valideerib (Alice’i avaliku võtmega) VA(DB(EB(SA(M)))) • Bob allkirjastab sõnumi šifreerib ja saadab tagasi Alice’ile • Alice dešifreerib ja valideerib. Alice teab, et Bob on saanud õige sõnumi ja selle läbi lugenud
Sõnumi kinnitus ja rünne • kui allkirjastamiseks ja valideerimiseks kasutada sama võtmepaari, on võimalik algortim murda (sama algoritmi puhul Vx = Ex ja Sx = Dx
Võtmevahetus ja PKI • Alice saadab Bobile oma avaliku võtme • Bob saadab Alice’ile oma avaliku võtme • Alice genereerib sessioonivõtme ja saadab Bobile • Edasine suhtlus sessioonivõtmega
Võtmevahetusrünne • Mees keskel – Mallory • Alice saadab Bobile oma avaliku võtme. Mallory püüab selle kinni ja saadab selle asemele oma avaliku võtme • Bob saadab Alice’ile oma avaliku võtme. Mallory püüab ja vahetab ka selle • Alice saadab sessioonivõtme “Boby” (tegelikult Mallory) avaliku võtmega. Mallory saadab selle Bobile edasi Boby avaliku võtmega. • Malloryl on sessioonivõti. Mõlemad arvavad, et suhtlevad omavahel, tegelikult suhtlevad Malloryga
Katkestusega protokoll • Alice ja Bob vahetavad avalikud võtmed • Alice saadab Bobile pool oma sõnumist • Bob saadab Alice’ile pool oma sõnumist • Alice saadab Bobile teise poole oma sõnumist • Bob dešifreerib selle • Bob saadab Alice’ile teise poole oma sõnumist. Alice dešifreerib selle
Katkestusega protokoll • sõnumi poolitamise võimalused • paaris ja paaritud bitid • IV (initsialiseerimisvektor – hiljem) • sõnumi hash • Mallory raskus?
Allkirjastatud võtmed • Bob, Alice, Carol, Dave ei vaheta avalikke võtmeid vaid säilitavad neid usaldusväärses andmebaasis • Kõigil on andmebaasi avalik võti (juba ammu) • Alice saadab andmebaasi päringu Bobi avalikule võtmele • Andmebaasist tuleb vastuseks Bobi avalik võti signeeritud andmebaasi salajase võtmega • Alice valideerib Bobi võtme andmebaasi avaliku võtmega
Autentimine • Kui Alice suhtleb serveriga H, siis server peab saama veenduda, et Alice on Alice. • Kui Alice suhtleb serveriga H, siis peab ta olema kindel, et server H on server H
Paroolid ja sõnastikrünne • Server hoiab kasutajate nimesid ja paroole. Kui saada kätte see nimestik on käes ka paroolid. • Server hoiab kasutajate nimesid ja hashe. Sõnastikuga saab läbi proovida suhteliselt lihtsalt. • Nimi, Hash ja Sool. Paroolile lisatakse juhuslik string. arvuttaakse hash ja hoitakse andmebaasis koos selle stringiga. Sõnastikrünne on palju raskem (aga mitte võimatu)
SKEY • Alice sisestab juhuarvu R • Server arvutab 101 korda • P1=f(R) P2=f(f(R)) p3=f(f(f(R))) jne • f on ühesuunaline funktsioon • server prindib P1-P100 ja salvestab P101 • Alice sisestab parooli (P100) • server kontrollib f(Px) == P • server salvestab P = Px • Alice tõmbab P100 loetelust maha • Järgmine kord kasutab Alice parooli P99 jne
Autentimine ja PKI • H saadab Alice’ile juhusliku stringi S • Alice saadab vastu EA(S)+A (A on Alice’i nimi) • H leiab baasis Alice’i avaliku võtme, dešifreerib ja võrdleb • Protokoll on nõrk! • Protokolli tugevdamiseks saadab Alice alguses serverile juhusliku stringi
SKID symmetric cryptography identification protocol eeldab, et on varem jagatud võtit K • Alice leiab juhuarvu Ra ja saadab Bobile • Bob leiab juhuarvu Rb ja saadab Alice’ile Rb, Hk(Ra, Rb, B) • Alice Arvutab H ja võrdleb ja teab, et suhtleb Bobiga • Alice saadab Bobile Hk(Rb, A) • Bob arvutab H ja võrdleb ja teab, et suhtleb Alice’iga
Autentimine ja võtmevahetus • protokollipere turvaliseks suhtluseks • kasutavad usaldusväärset kolmandat (Trent) • eesmärk vahetada sessioonivõti • osalistel on (varem jagatud) ühisvõti Trendiga (igal oma)
Autentimine ja võtmevahetus Sümbolid A – Alice’i nimi B – Bobi nimi EA – krüpteerimine Trenti ja Alice’i ühisvõtmega EB – krüpteerimine Trenti ja Bobi ühisvõtmega I – indeks K – sessioonivõti TA, TB – ajatempel RA, RB – juhuarvud (Alice’i ja Bobi valitud)
Wide-Mouth Frog • Lihtsaim sümmeetriline notariga protokoll. Alice’il ja Bobil on mõlemal Trendiga varem vahetatud sümmeetriline võti • Alice Trentile A, EA(TA, B, K) • Trent Bobile EB(TB, A, K) • Kõige nõrgem koht on sessioonivõti K. Me peame lootma, et Alice’il on väga hea juhuarvude generaator
Yaholom • Tingimused samad • Alice Bobile oma nime ja juhuarvu A, RA • Bob Trentile B, EB(A, RA, RB) • Trent Alice’ile EA(B, K, RA, RB), EB(A,K) • Alice loeb ja kontrollib kas RA on õige • Alice Bobile EB(A,K), EK(RB) • Bob loeb ja veendub, et RB on õige
Needham-Shroder • Alice Trentile • A, B, RA • Trent Alice’ile • EA(RA, B, K, EB(K, A)) • Alice loeb ja kontrollib RA • Alice Bobile • EB(K, A) • Bob Alice’ile uue juhunumbri • EK(RB) • Alice Bobile • EK(RB-1) // RB-1 on RB-st genereeritud uus arv • Bob kontrollib RB-1
Needham-Shroder • Peamine nõrkus on vana sessioonivõtme K kehtivus. Kui Malloryl on õnnestunud vana sessioonivõti K kätte saada, siis • Mallory Bobile EB(K, A) • Bob Alice’ile // Mallory püüab kinni EK(RB) • Mallory Bobile EK(RB-1) • Bob on veendunud, et räägib Alice’iga
Otway-Rees • Alice Bobile I, A, B, EA(RA, I, A, B) • Bob Trentile I, A, B, EA(RA, I, A, B), EB(RB, I, A, B) • Trent Bobile I, EA(RA, K), EB( RB, K) • Bob Alice’ile I, EA(RA, K) Kui indeks ja juhunumbrid klapivad, siis OK
Kerberos variant Needham-Shroederist • Alice Trentile A, B • Trent Alice’ile EA(T, L, K, B), EB(T, L, K, A) • Alice Bobile EK(A, T), EB(T, L, K, A) • Bob Alice’ile EK(T+1) Kellad peavad olema sünkroonis!!!
Neumann-Stubblebine Yahalomi täiendus Alice Bobile A, RA Bob Trentile B, RB, EB(A, RA, TB) Trent Alice’ile EA(B, RA, K, TB), EA(A, K, TB), RB Alice Bobile EB(A, K, TB), EK(RB) Kellade sünkroonsus ei ole oluline Jätkuvõimalus!!!
Neumann-Stubblebine jätkamine • Alice Bobile EB(A, K, TB), R’A • Bob Alice’ile R’B, EK(R’A) • Alice Bobile EK(R’B) mingi aja jooksul saavad Alice ja Bob ilma Trenti kasutamata taasautentida
DASS distributed authentication security service Alice’il ja Bobil on oma isiklik võti Trentil on signeeritud koopia avalike võtmetega DEC-i välja töötatud kasutab sümmeetrilist ja assümmeetrilist
DESS • Alice Trentile B • Trent Alice’ile ST(B, KB) //signeeritud avalik võti • Alice Bobile // võtmepaar, timestamp ja lifetime EK(TA), SKA(L, A, KP), SKP(EKB(K)) • Bob Trentile (või Trenti vennale) A • Trent Bobile ST(A, KA) • Bob Alice’ile EK(TB)
Denning-Sacco • Alice Trentile A, B • Trent Alice’ile ST(B, KB), ST(A, KA) • Alice Bobile EB(SA(K, TA)), ST(B, KB), ST(A, KA) • Bob loeb, kontrollib ja mõlemad saavad suhelda, aga... Bob võib hakata Caroli ees Alice’it mängima
Denning-Sacco (järg) • Bob Trentile B, C • Trent Bobile ST(B, KB), ST,(C, KC) • Bob Carolile // eelmiselt lehelt EC(SA(K, TA)), ST(A, KA), ST(C, KC) Carol on veendunud, et räägib Aliceiga Lobiseb välja, mis ta sellest Bobist arvab
Järgmine nädal uurime neid algoritme endid proovime C-s või C#-s neid kasutada