330 likes | 553 Views
Andmeturve ja krüptoloogia, VII Krüptoprotokollid, TLS. 26. veebruar 2013 Valdo Praust mois @ mois .ee Loengukursus IT Kolled ž is 2014. aasta kevadsemestril õhtustele tudengitele. Krüptograafia olemus ja roll kaasajal.
E N D
Andmeturve ja krüptoloogia, VIIKrüptoprotokollid, TLS 26. veebruar 2013 Valdo Praust mois@mois.ee Loengukursus IT Kolledžis 2014. aasta kevadsemestril õhtustele tudengitele
Krüptograafia olemus ja roll kaasajal Kaasajal ei tegele krüptograafia küll enam pelgalt teabe salastuse tagamisega, vaid lisaks volitamata muutmiseärahoidmisega (tervikluse tagamisega), mida võib lugeda isegi tema põhifunktsiooniks Nimetus krüptograafia (peidetud sõna) on traditsioonide tõttu jäänud küll alles ja kasutusse, kuigi tihti pole salastusega selle rakendamisel mingit tegemist
Kaasaja krüptograafia teabe teisenduse tüüpvõttena Kaasajal on krüptograafial põhinevad võtted muutunud (Internetis) teabe kaitsmise tüüpvõteteks, ilma milleta ei ole teavet võimalik töödelda Selle vaatlemine erivahendina on lõplikult ja jäädavalt ajalugu
Krüptoalgoritmide peamised liigid Sümmeetrilised ehk salajase võtmega krüptoalgoritmid (on traditsioonilised e ajaloolised) Asümmeetrilised ehk avaliku võtmega krüptoalgoritmid (levinud viimase 20 aasta jooksul) Krüptograafilised sõnumilühendid jms sellesarnased funktsioonid Eriotstarbega algoritmid tõestusteks, autentimisteks, ajatempli jaoks jm
Salajase võtmega krüptoalgoritm Salajase võtmega krüptoalgoritm (secret key cryptoalgorithm) ehk sümmeetriline krüptoalgoritm (symmetric cryptoalgorithm), on selline, kus nii šifreerimisel kui ka dešifreerimisel kasutatakse sama (salajast) võtit • Tuntuimad esindajad: • AES ehkRjindael (128, 192 või 256 bitine võti) • IDEA (128 bitine võti) • Skipjack (80 bitine võti) • DES (56 bitine võti)
Võtme osa šifreerimises ja dešifreerimises Krüpteerimine ehk šifreerimine (encryption, encipherment) nõuab teatud salajase võtme (key) kasutamist. Vastupidine tegevus on dešifreerimine (decryption, decipherment), mille käigus taastatakse sama salajase võtme kaasabil algsed andmed Ilma ühte sama võtit teadmata on mõlemad tegevused võimatud
Salajase võtmega krüptoalgoritm: turvalisus Kaasajal loetakse piisavalt tugevaks vähemalt 80 biti pikkuse salajase võtmega algoritme DES on seega kaasajal nõrguke, kuna ei vasta sellele tingimusele. Lahendus on 3kordse DESi kasutamine Lisaks võtmepikkusele ei tohi algoritmil olla tuntavaid efekte andvaid krüptoanalüütilisi ehk murdmisvõtteid
Salajase võtmega krüptoalgoritm: kasutusalad Neid on kaks: • konfidentsiaalse teabe edastamiseks üle (mitte pealtkuulamiskindlate) võrkude • konfidentsiaalsete teabekogumite salvestamine avalikus keskkonnas sooviga teabe saajate hulka piirata
Avaliku võtmega krüptoalgoritm Avaliku võtmega krüptoalgoritm (public key cryptoalgorithm) ehk asümmeetriline krüptoalgoritm (asymmetric cryptoalgorithm) kasutab kahte võtit– esimese võtmega šifreeritud teave on dešifreeritav vaid teise võtmega ja vastupidi Üldreegel: ühest võtmest teist ei ole võimalik praktikas leida Teoreetiliselt on see võimalik (üksühene seos), aga see võtab aega miljoneid ja enam aastaid
Avaliku võtmega krüptoalgoritm: võtmed Avaliku võtmega krüptoalgoritmi võtmeid nimetatakse reeglina avalikuks võtmeks ja privaatvõtmeks (public and private key) • Avalik võti on tavaliselt piiranguteta kõigile soovijaile teada • Privaatvõti on reeglina aga subjekti (inimese, tehnilise seadme, programmi vms) ainuvalduses
Avaliku võtmega krüptoalgoritmikasutamine turvalisel võtmevahetusel
Avaliku võtmega krüptoalgoritmikasutamine signeerimisel (digitaalallkirja andmisel)
Krüptoräsi ehk krüptograafiline sõnumilühend Krüptoräsi ehk krüptograafiline sõnumilühend (cryptographic message digest, hash, fingerprint, thumbprint) on ükskõik kui pikast sõnumist (failist) teatud matemaatiliste eeskirjade järgi arvutatav lühike (paarsada bitti) teabekogum See seos on ühesuunaline (one-way): etteantud sõnumilühendi korral ei ole võimalik tuletada faili, millele see sõnumilühend vastab
Krüptoräsi: kasutusala Kui meil on olemas paar –sõnum ja räsi (sõnumilühend) – , kus räsi vastab failile, võime olla igal juhul kindlad, et räsi on arvutatud kindlasti sellest failist ega mitte millestki muust Krüptoräside peamine kasutusala on autentimisel ja tervikluse tagamisel (nt digiallkirja juures) Üks räsi kasutamise peamisi põhjuseid seisneb asjaolus, et avaliku võtmega krüptoalgoritm ei ole võimeline töötlema suuri andmemahte
Krüptoräsi ehk krüptograafiline sõnumilühend: toimimisskeem
Räsifunktsioon ja selle tulem Krüptoräsi ehk krüptograafiline sõnumilühend on mõeldud pikast sõnumist püsipikkusega lühikese bitijada, nn sõnumilühendi ehk räsi (message digest) tekitamiseks, millel oleksid teatud eriomadused Algoritmi, mis sõnumilühendi tekitab, nimetatakse (krüptograafilisteks) räsifunktsiooniks (hash function) Räsi ehk sõnumilühend on täpsemini võtmeta räsifunktsiooni väljund, sõltudes vaid sõnumist
Räsifunktsioonilt nõutavad omadused • algse sõnumi mistahes muutused peavad põhjustama muutuse kalühendis (räsis) • ka pika sõnumi räsi peab olema lihtsate protseduuridega leitav • räsi leidmise algoritm ei tohi olla pööratav: etteantud räsi korral ei tohi praktikas olla võimalik leida sellega sobivat sõnumit • etteantud räsi korral ei tohi olla leitav teist sõnumit, mis annaks sama räsi–nõrk kollisioonivabadus • ei tohi olla leitav sellist sõnumitepaari, mis annaks sama räsi–kollisioonivabadus • tihendusfunktsioon F peab olema kollisioonivaba–pseudo-kollisioonivabadus
Nõuded turvalisele krüptoräsifunktsioonile • Räsi peab olema vähemalt 160 bitti (20 baiti) pikk, pikaajalise turvavajaduse korral või kõrgendatud turbe korral aga 256 bitti (32 baiti) pikk • Ei räsifunktsioonil ega ka selle tihendusfunktsioonil ei tohi olla teada kollisioone
Praktikas kasutatavaid häid räsifunktsioone • SHA-1– konstrueeriti 1996. aastal MD4-l põhineva ideoloogia põhjal NSAs viimase turvalisust tugevdades. Räsi pikkus on 160 bitti (20 baiti) • RIPEMD-160– konstrueeriti 1990te algul Belgias, leiab 160-bitise räsi
Praktikas keelatud (või äärmiselt ebasoovitavaid) räsifunktsioone • MD5– välja töötatud Ron Rivesti poolt. Leiab 128-bitise räsi ehk sõnumilühendi • MD2, MD4– MD5 eellased, välja töötatud samuti Ron Rivesti poolt, leiab 128-bitise räsi Räsi on lühike. On leitud kollisioone ja praktilisi murdmsvõtteid. Sellest hoolimata on eriti just MD5 siiski kahjuks senini masskasutuses praktikas
Protokollid (protocol) määravad ära,mis teave millises järjekorras liigub ja kuidas seda teisendatakse Sellega tagavad nad vajalikud omadused (autentimine, võtmevahetus jm) Protokollis sisaldavad reeglina hulga krüptoalgoritme (sümmeetrilisi, asümmeetrilisi, räsifunktsioone), nende kasutamisi ning võtmete genereerimisi Krüptoprotokolli olemus Krüptograafilisi protokolle on väga palju, üks kasutatavaim praktikas (Internetis) on TLS (Transport Layer Security)
on projekteeritud töötama Internetis, st TCP/IP protokollil toimivas võrgus transpordiprotokollile (nt TCP) toetudes võimaldab kasutajatel üksteist autentida võimaldab vahetada võtme teabe krüpteeritud edastamiseks ja seda teavet krüpteeritult edastada kuulub reeglina kõrgema taseme protokollide koosseisu, lisades funktsionaalsusele turvalisuse: telneti asemel ssh http asemel https ftp asemel secure ftp TLS: põhiomadused ja faktid
TLSi kanal TLS tekitab üle võrgu turvalise sidekanali (secure channel), millel on kolm omadust: • Kanal on privaatne. Pärast seda kui osapooled on vahetanud šifreerimisvõtmeid, on kõik edastatavad andmed krüpteeritud • Kanal on autenditud. Mõlemad pooled saavad üksteist autentida, kuid võimalik on ka ühepoolne autentimine • TLS suudab kontrollida andmete puutumatuna päralejõudmist (hädavajalik võrgu pakettresiimi – nt TCP/IP protokolli – korral)
TLSi toimimispõhimõtted TLSi ühenduses võib eristada kahte faasi: • autentimisfaas (handshaking) • teabe vahetamisfaas Tavaliselt toimub ühendus kahe ebavõrdse poole vahel (klient ja server), mida TLS veidi eristab (kuigi on võimalik ka võrdse poole teabevahetus) Autentimisfaas sisaldab igal juhul serveri autentimist. Vajadusel järgneb sellele ka kliendi autentimine
TLSi autentimisfaas, I Lihtsustatult sisaldab see järgmisi tegevusi (klientA hakkab suhtlema serverigaB): • A ütleb B-le tere ja mainib, milliseid krüptoalgoritme ta kasutab • Aütleb B-le, et B tõestaks et ta onB • B tekitab teksti “mina olen B”, teeb sellest räsi ehk sõnumilühendi • lüh(“mina olen B”) • B signeerib räsi oma privaatvõtmega, saades • sigb (lüh(“mina olen B”))
TLSi autentimisfaas, II • B saadab A-le oma avaliku võtme, teksti • “mina olen B” ning signatuuri • sigb (lüh(“mina olen B”)) • A, saades need need kätte verifitseerib signatuuri, veendudes et ta vestluspartner on ikka B. Samas paneb AB avaliku võtme oma kataloogi • Sellega on klient Aserveri B autentinud. • Kui vaja, võib B ka A-d samamoodi autentida (vahel seda tehakse, kui server peab ka klienti autentima, alati pole seda vaja)
A genereerib sümmeetrilise krüptoalgoritmi võtme (primaarvõtme), paneb selle oma andmebaasi ja saadab selle B avaliku võtmega krüpteeritult B-le B dešifreerib saadud salajase primaarvõtme oma privaatvõtmega ja paneb ka oma baasi Sellega on autentimisfaas lõppenud: mõlemad osapooled on üksteist “tundma õppinud” ja vastava teabe endale talletanud TLSi autentimisfaas, III
TLSi sidefaas Eeldus:A ja B hakkavad suhtlema ja veenduvad, et nad on autentimisfaasi juba läbinud ja vastav teave on neil olemas ja varem talletatud • A genereerib seansi võtme ja krüpteerib selle sümmeetrilist krüptoalgoritmi kasutades, misjärel saadab ta selle B-le • B teeb oma primaarvõtmega seansi võtme lahti • Seejärel saavad A ja B suvalist teavet seansi võtme abil krüpteeritult omavahel turvaliselt vahetada
TLS 1.1 on detailselt kirjeldatud RFC 4346-s (aprill 2006) võrreldes SSL3ga on TLSis mitmed puudused ja turvanõrkused kõrvaldatud SSL1 ja SSL2 juures on leitud turvaauke ja nende kasutamine on praktikas keelatud SSL versus TLS TLS (Transport Layer Security) on SSLi edasiarendus, kus on mitmed puudused ja ebakõlad kõrvaldatud
TLS: turvalisus ja probleemid • Kui B on A-le oma avaliku võtme ja sellele vastava privaatvõtmega signeeritud teabe saatnud, võib olla sellest hetkest kindel, et keegi ei suuda A-le enam hiljem B-d teeselda (tal ei ole B privaatvõtit) • Keegi ei saa hiljem liine pealt kuulates ega sinna sekkudes A ja B vahelist teavet ka pealt kuulata (ta ei tea primaarvõtit) • Jääb aga probleem: kui A-ga hakkas algusest peale suhtlema B nime all keegi teine, siis ei suuda A seda avastada Seda probleemi ei ole võimalik lahendada ära ainuüksi TLS protokolli sees
SSL/TLS suudab ilma sertifikaatide ja seda toetava infrastruktuurita vaid tõestada, et järgmise ühenduse tegija oli sama, kes tegi eelmise ühenduse Et midagi lisaks nõuda, peab olema lisateavet (nt sertifikaate, püsiparoole jm) –reeglina on selleks sertifikaat TLSi võimalused ja rakendatavus
DNSSEC (Domain Name Sysrem Security Extensions) – asendamaks tavalist ebaturvalist DNSi IEEE 802.11– traadita lokaalvõrgu protokoll IPSec (IP Security Protocol) S/MIME (Secure MIME) – andmete turvaliseks ja autenditud edastamiseks SSH (Secure Shell) – turvaline kaugpöördus ... (ja palju-palju muid) Teisi krüptoprotokolle