kryptológia - implementácia - csirt.sk · •kryptografia saotá edokáže vyriešiť všetky...
TRANSCRIPT
Obsah
• Kryptografia v praxi• Nástrahy, problémy, zraniteľnosti
• Kryptografia a zraniteľnosti• Heartbleed
• Apple „goto fail“
• BEAST útok
• ...
• Rýchlosť kryptografických konštrukcií
• Heslá
• Time-memory trade-offs• Lúštenie hesiel pomocou
dúhových tabuliek
• Postranné kanály
• Zdieľanie tajomstva
• Politika a kryptografia
2
Kryptológia
• Základom je matematika
• Detaily sú podstatné
• Správna implementácia a použitie
• Kvalitná kryptografia je nutná, ale nie postačujúca
• Môže poskytovať falošný pocit bezpečia• „šifrujeme“ – ako? mód? správa kľúčov? ...
• „podpisujeme“ – ako? implementácia? správa kľúčov? ...
3
Kryptológia a falošný pocit bezpečia
FAQ časť na stránke e-shopu:
Q: Je Váš portál bezpečný?
A: Áno, naše webové sídlo je kompletne zabezpečené, keďže využívame 128-bitové SSL (Secure Socket Layer) šifrovanie. To zaručuje, že údaje o Vašich platbách sú v bezpečí.
Akú verziu SSL / TLS server používa? Čo zraniteľnosť Heartbleed? Ako sú údaje uložené v databáze?
4
Kryptografia v praxi
• Použitie kryptografie sa zdá byť jednoduché• Hlavne, ak sú k dispozícii knižnice na všetky kryptografické primitíva• Prečo potom dochádza tak často k zlyhaniam?
• Príčiny zlyhania:1. Zlá kryptografická konštrukcia, nesprávna implementácia, zlý design, a pod.2. Aj dobrá kryptografická konštrukcia môže byť „obídená“ útočníkmi “mimo
definovaného modelu“3. Aj perfektná kryptografická konštrukcia vlastne len prenáša „najslabší bod“
v systéme na nejaké iné miesto4. Systémy sú zložité
• Vyhnite sa chybám z bodu 1, myslite na 2-4
5
Zložitosť informačných systémov
• Kryptografia samotná nedokáže vyriešiť všetky bezpečnostné problémy• Manažment kľúčov, sociálne inžinierstvo, útoky z vnútra
• Potreba navrhnúť vhodný model útočníka pre systém ako celok
• Hĺbková ochrana systému• Review, detekcia chýb, zotavenie sa systému v prípade chyby
• Bezpečnosť ako proces, nie produkt
6
Kryptografia nie je „zázračná medicína“
• Krypto je ťažké použiť správne• Implementácia musí byť bez chýb
• Potrebná „odbornosť“ - malá znalosť veci môže byť veľmi nebezpečná
• Dobré je integrovať krypto už od začiatku, nie až na konci keď je všetko ostatné hotové
• Nedá sa zabezpečiť cez kontrolu kvality• potreba „code review“ bezpečnostným expertom a penetračné testovanie
7
Všeobecné odporúčania
• Používajte iba štandardizované algoritmy• Použitie utajovaných algoritmov v zásade nezvyšuje bezpečnosť• „no security by obscurity“
• Nesnažte sa implementovať svoje vlastné kryptografické algoritmy• Systém nemôže použiť štandardný algoritmus – prepracujte systém• Ak naozaj potrebujete niečo nové, nechajte si to overiť expertom
• a najlepšie celou komunitou
• Kryptografické primitíva používajte na to, na čo sú určené
• Nepoužívajte rovnaký kľúč na rôzne operácie• T.j. jeden kľúč na šifrovanie aj autentizáciu, alebo RSA šifrovanie aj podpisovanie
• Používajte kvalitné, kryptograficky silné generátory náhodnosti
8
Kryptografické knižnice
• Uprednostnite kryptografické knižnice s vysoko-úrovňovým API pred nízko-úrovňovými• Cryptlib, NaCl, ...
• Pri použití nízko-úrovňovej knižnice je väčšia šanca jej zlého použitia / nastavenia
• Vyhnite sa programovaniu vlastných kryptografických knižníc
9
Kryptografia a zraniteľnosti
• Útoky na kryptografické mechanizmy• Obvykle sú slabiny v správe kľúčov a v implementácii
• Protokoly – zvyčajne slabiny v protokole, bez ohľadu na algoritmy
• Niektoré implementačné slabiny/útoky• Útok postrannými kanálmi (napr. timing útok)
• Nesplnenie bezpečnostných predpokladov (napr. náhodnosť)
• Slabiny v protokoloch (napr. útoky na SSL/TLS)
• Slabé algoritmy (napr. proprietárne algoritmy ako CCS)
11
Kryptografia a zraniteľnosti
• NIST: NVD (National Vulnerability Database)• SW zraniteľnosti a ich klasifikácia (typ, závažnosť a pod.)
• Najčastejšie zraniteľnosti v „Cryptographic Issues“:• použitie nekvalitného zdroja náhodnosti pri generovaní kľúčov,
• nedostatočná (neúplná) kontrola certifikátov,
• nekorektná implementácia kryptografických algoritmov alebo protokolov,
• fixné heslá servisných účtov alebo heslá odvodené z verejne známych údajov
12
Format String Vulnerability
OS Command Injections
Link Following
Configuration
Credentials Management
Race Conditions
Design Error
Cryptographic Issues
Authentication Issues
Path Traversal
Code Injection
Numeric Errors
Cross-Site Request Forgery (CSRF)
Information Leak / Disclosure
SQL Injections
Other
Resource Management Errors
Input Validation
Permissions, Priviledges and Access Control
Cross-Site Scripting (XSS)
Buffer Errors
0 100 200 300 400 500 600 700 800
Počty zraniteľností publikovaných v roku 2012 podľa NVD
13
Generátory náhodných čísel
• Častá príčina zlyhania kryptografických systémov• Generovanie skutočne náhodných čísel je ťažké
• (Ne)kryptografické generátory pseudo-náhodných čísel bývajú predvídateľné
• Určite nepoužívajte “rand()” funkciu zabudovanú v programovacom jazyku • srand(seed) inicializuje generátor, nastaví state=seed
• rand():• state=f(state), kde f je nejaká lineárna funkcia
• return state;
• Generovanie 128-bitového kľúča KEY=rand()∥rand()∥rand()∥rand()
• Entropia kľúča je iba 32 bitov!
14
Generátory náhodných čísel
• Generátor pseudo-náhodných čísel použiteľný v kryptografii• Výstup neodlíšiteľný od úplne náhodného akýmkoľvek efektívnym algoritmom
• Pokiaľ možno, zakaždým reinicializovaný novým zdrojom entropie
• Malo by byť ťažké uhádnuť interný stav generátora• Napr. entropia by nemala pochádzať iba z času (súborov)
• „Cold boot“ problémy• Server práve naštartoval a potrebuje zdroj náhodnosti ... je možné získať dosť
entropie, ak server beží len pár sekúnd?
15
Generátory náhodných číselnajznámejšie zraniteľnosti
• Netscape, implementácia SSL, 1995• Pseudonáhodný generátor inicializovaný na základe času, ID procesu a ID
nadradeného procesu – všetko ľahko predvídateľné hodnoty• Generátor nebol verejne dostupný („security through obscurity“), na analýzu využili
reverzné inžinierstvo
• Windows 2000 / XP, 2007• Leo Dorrendorf - Cryptanalysis of the Random Number Generator of the Windows
Operating System, http://eprint.iacr.org/2007/419.pdf• Vážne nedostatky vstavaného generátora• Ak sa útočníkovi podarilo získať stav generátora (napr. cez buffer overflow), mohol
predpovedať všetky predchádzajúce aj nasledujúce vygenerované hodnoty (napr. SSL šifrovacie kľúče)
• Opravené v XP SP3
16
Generátory náhodných číselnajznámejšie zraniteľnosti
• Debian OpenSSL, 2008• Debian distribúcie Linuxu• Zmeny v kóde pseudo-náhodného generátora drasticky znížili entropiu • Chyba bola spôsobená vývojárom, ktorý na základe upozornení kompilátora
odstránil na pohľad zbytočný kódMD_Update(&m,buf,j); /* neinicializovaná hodnota */[ .. ]MD_Update(&m,buf,j); /* neinicializovaná hodnota */
• Odstránený kód zabezpečoval zvýšenie entropie• Po jeho odstránení bol generátor inicializovaný len na základe ID procesu
(max. 32 768 hodnôt)
• Chyba umožnila odhaliť vygenerované súkromné kľúče• Veľké množstvo kľúčov a certifikátov muselo byť vygenerovaných znovu
17
Generátory náhodných číselnajznámejšie zraniteľnosti
• PlayStation 3, 2010• Sony využíva ECDSA algoritmus na
podpisovanie softvéru pre PlayStation 3
• ECDSA vyžaduje dobrý PRNG
• Opakované použitie 𝑘 vedie k odhaleniu súkromného kľúča
• SONY použilo zakaždým tú istú hodnotu 𝑘
Podpisovanie v ECDSA Sig𝑥 𝑚 :
1. 𝑘 $1,… , 𝑛 − 1
2. 𝑥1, 𝑦1 = 𝑘 × 𝐺
3. 𝑟 = 𝑥1 mod 𝑛
4. 𝑠 = 𝑘−1 𝐻(𝑚) + 𝑟𝑥 mod 𝑛
5. Ak 𝑟 = 0 alebo 𝑠 = 0 začni znova krokom 1
6. 𝜎 = (𝑟, 𝑠)
18
Generátory náhodných číselnajznámejšie zraniteľnosti
• Implementácia Bitcoinov v Androide, 2013• Chyba v Java triede SecureRandom - možné kolízie v hodnote 𝑘 pri použití ECDSA • Kolízia vedie k odhaleniu súkromného kľuča – možnosť ukradnúť Bitcoiny z
Androidovej peňaženky
• DUAL_EC_DRBG, 2007, 2013• NIST Special Publication 800-90 – kolekcia pseudo-náhodných generátorov• DUAL_EC_DRBG – odporúčaný / navrhovaný aj NSA
• Kryptografia nad eliptickými krivkami - štandard obsahuje aj sadu odporúčaných kriviek / konštánt
• 2007, Shumow, Ferguson ukázali, že konštanty mohli byť skonštruované tak, aby umožňovali „zadné vrátka“ k náhodnému generátoru
• 2013, REUTERS – Snowden: NSA zaplatilo firme RSA $10 mil., aby bol predvolený generátor práve DUAL_EC_DRBG
19
Heartbleed
• Apríl 2014
• Zraniteľnosť v rozšírení „Hearbeat“ pre OpenSSL• „keep alive“ pre TLS
• Každá stránka obsahuje veľa súčastí (obrázky, skripty, štýly)
• Rozšírenie heartbeat zabezpečovalo, aby nebolo potrebné zakaždým negociovať nové kľúče
• Chyba v implementácii umožnila na diaľku čítať pamäť servera
21
Heartbleed
buffer = OPENSSL_malloc(
1 + 2 + payload+ padding
);
Payload + padding – hodnota ovládaná klientom
Zakaždým bolo možné získať max. 64kb obsahu pamäte servera
25
Apple goto fail
• Február 2014
• iOS < 7.0.5
• OS X < 10.9.2
• Chyba v implementácii SSL/TLS klienta
• Nedochádza k správnemu overeniu digitálneho podpisu servera
• Možný „man in the middle útok“
Prvé kroky TLS:
C → 𝑆: Zoznam podporovaných šifrovacích algoritmov
𝑆 → C: S vyberie „EphemeralDiffie Hellman“, vygeneruje DH parameter 𝑔𝑎
pošle to podpísané svojim tajným klientovi
𝐶 → 𝑆: C overí podpis parametrov,vygeneruje 𝑔𝑏, pošle to S
𝐶 ↔ 𝑆 : „session“ kľuč 𝑔𝑎𝑏
• ďalšia komunikácia je šifrovaná týmto kľúčom
26
Tento riadok tu nemá byť, zakaždým sa vykoná
Kód zakaždým preskočí sem a err obsahuje hodnotu reprezentujúcu úspešné overenie podpisu
Apple goto fail
27
BEAST útok, 2011
• Aplikovateľný na šifrovacie schémy bežiace v CBC móde v rámci SSL 3.0 a TLS 1.0
• Využíva nedostatočnú náhodnosť IV v týchto šifrovacích schémach• Teoretický útok navrhnutý už v roku 1995 (Rogaway)• IV inicializovaný posledným blokom šifrového textu predošlého packetu
• Predpoklady:• Zapnutý JavaScript – „Man in the browser“ – útočník cez JavaScript posiela na server
dotazy• Možnosť byť „Man in the middle“ – odpočúvať a posielať packety v sieti
• Útočník uprostred môže odhaliť „session cookie“ obete (napr. Do stránky PayPal.com)
=> t.j. pracovať so systémom v mene obete
28
BEAST útok, 2011
29
1. Podvrhnutie JavaScriptu
2. Odoslanie špeciálne vytvorenej požiadavky cez SSL
3. Odpočúvanie komunikácie4. Feedback pre JavaScript
5. Odoslanie upravenej špeciálne vytvorenej požiadavky cez SSL- Opakovane na základe Feedbacku
6. Dešifrovanie cookie
BEAST útok, 2011
• Prehliadače hneď vydali záplaty
• TLS 1.1 a 1.2 nie sú ovplyvnené – IV je generovaný náhodne
• Teoretická možnosť odhalená v roku 1995 sa stala praktickou• Útoky sa časom zlepšujú!
• Útok využíval nástroje z viacerých oblastí bezpečnosti• Man-in-the-browser cez JavaScript
• Nedostatočnú náhodnosť IV
• Možno sa budú dať tieto nástroje využiť aj pri iných útokoch
30
CRIME útok, 2012
• Zneužíva možnosť kompresie posielaných údajov cez TLS
• Teoretický útok známy od roku 2004 (Kelsey)
• Idea:• Dĺžka šifrového textu určuje dĺžku otvoreného textu• Ak poznáme dĺžku otvoreného textu, vieme pomer kompresie• Pomer kompresie odhaľuje niečo (hoci málo) o otvorenom texte
• Útok umožňuje odhalenie „session cookie“• Predpoklady podobné ako v BEAST útoku
• „man in the browser“ – JavaScript pošla na server vhodne zvolenú správu (CPA útok)• „man in the middle” – Možnosť odpočúvať packety v sieti
• Zabránime mu vypnutím konverzie v prehliadači / na serveri
31
CRIME útok, 2012
• Teoretická zraniteľnosť z roku 2004, praktický útok v roku 2012• Útoky sa časom zlepšujú!
• Nástroje vyvinuté pre BEAST útok boli využíté aj v CRIME útoku• A možno sa budú dať použiť aj inde?
• Útoky podporili rozšírenie novších (a lepších) štandardov TLS 1.1 resp. 1.2
32
Útok prehľadávaním priestoru kľúčov
Čas útoku
Individuálny
útočník
1 procesor
Stredne veľká firma
500 procesorov
Príjmy SR za 1 rok
(53,8 mil.
procesorov)
1 minúta 33,7 42,6 59,3
1 hodina 39,6 48,5 65,2
1 deň 44,1 53,1 69,8
30 dní 49,1 58,0 74,7
1 rok 52,7 61,6 78,3
100 rokov 59,3 68,3 85,0
• Ilustračný príklad pre konkrétny procesor (i7-2600)
34
Generické útoky
Konštrukcia Generický útok (k dĺžka kľúča, n veľkosť
odtlačku/výstupu)
Symetrická šifra Prehľadávanie priestoru všetkých kľúčov ~ 2𝑘
Hašovacia funkciaHľadanie kolízií: narodeninový útok ~ 2𝑛/2
Hľadanie vzoru: prehľadanie a vyskúšanie vzorov ~ 2𝑛
MAC Prehľadávanie priestoru všetkých kľúčov ~ 2𝑘, resp.
uhádnutie korektného autentizačného kódu k správe
~ 2𝑛.
Asymetrická šifra Riešenie konkrétneho ťažkého problému (faktorizácia,
výpočet diskrétneho logaritmu a pod.)
Podpisová schéma Riešenie konkrétneho ťažkého problému, resp. útok na
hašovaciu funkciu. 35
Ekvivalentné dĺžky kľúčov
Ochrana Symetrický
kľúč
Výstup
hašovacej
funkcie
RSA modul Eliptická krivka
4 roky 80 160 1248 160
20 rokov 112 224 2432 224
30 rokov 128 256 3248 256
256 512 15424 512
36
• Podľa správy ECRYPT II (2012)• Porovnanie rôznych metód: www.keylength.com• Bezpečnosť vs. výpočtové nároky
Výkonové porovnanie (1)
SW impl.[MB/s]
HW podporaAES-NI (encrypt)
[MB/s]
HW podporaAES-NI (decrypt)
[MB/s]
AES-128-CTR 4 125 4 121
AES-128-CBC 127 749 4 064
AES-192-CBC 106 623 3 509
AES-256-CBC 90 537 3 055
3DES-CBC 28
RC4 891
SHA-1 717
SHA-256 215
SHA-512 335
37
i7-2600, 3.40GHz, Ubuntu 12.04 LTS 64-bit, openssl 1.0.1, 8kB bloky
Výkonové porovnanie (2)
podpisovanie[operácie/s]
overovanie[operácie/s]
RSA-1024 6 100 93 281
RSA-2048 857 27 496
RSA-4096 118 7 370
ECDSA-224 (nistp224) 15 375 7 349
ECDSA-256 (nistp256) 9 024 3 697
ECDSA-521 (nistp521) 3 252 1 501
40
Heslá
• Najčastejší prostriedok autentizácie• samostatne alebo v kombinácii s inými metódami
• Prostriedok pre zabezpečenie dôvernosti / integrity• napr. súkromných kľúčov v súboroch
• Problémy s použitím hesiel:• default heslá (zoznamy k dispozícii na webe)• ľahko uhádnuteľné heslá (nízka entropia v porovnaní s kľúčmi)• ťažko zapamätateľné heslá (poznačené)• nevhodne uložené heslá (napr. v otvorenom tvare v DB)• prenášané cez nezabezpečený kanál (napr. telnet, FTP)• zdieľanie medzi systémami (dopady kompromitácie)
42
Heslá (2)
• Techniky útokov:• úplné preberanie (brute-force), slovníkové metódy, predvýpočty (napr. dúhové
tabuľky)
• Politika hesiel a techniky pre bezpečné používanie hesiel:• dĺžka hesla, “pestrosť” použitých znakov (skupiny)• max. doba platnosti hesla, min. doba platnosti hesla• novosť hesla (história hesiel), odlišnosť od mena a iných dát• blokovanie prístupu po x neúspešných prihláseniach• spomaľovanie odozvy po neúspešnom prihásení, atď.
• Voľba hesla:• náhodne vygenerované (ťažké pamätať)• používateľ volí (predikovateľnosť, podobnosť atď.)• použitie hesiel odvodených z fráz, a pod.
43
Náhodnosť používateľských hesiel
Dĺžka hesla
PIN
(10 znaková
abeceda)
Všeobecné heslá
(94 znaková
abeceda)
4 9 10
8 13 18
10 15 21
16 21 30
22 27 38
• Príklad: 2012, LinkedIn, 6,5 mil. používateľských účtov • 4 hodiny + slovníkový útok cca. 900 tisíc hesiel• Pokračovanie slovníkového útoku cca. 2 mil. hesiel
44
Reálne heslá
1. password
2. 123456
3. 12345678
4. abc123 (+ 1)
5. qwerty (- 1)
6. monkey
7. letmein (+ 1)
8. dragon (+ 2)
9. 111111 (+ 3)
10. baseball (+ 1)
11. iloveyou (+ 2)
12. trustno1 (- 3)
13. 1234567 (- 6)
14. sunshine (+ 1)
15. master (- 1)
16. 123123 (+ 4)
17. welcome (nové)
18. shadow (+ 1)
19. ashley (- 3)
20. football (+ 5)
21. jesus (nové)
22. michael (+ 2)
23. ninja (nové)
24. mustang (nové)
25. password1 (nové)
45Splashdata 2012 a porovnanie s 2011
Uloženie hesiel
• Zle:• V otvorenom tvare• Šifrované• Odtlačok s jednoduchou aplikáciou hašovacej funkcie
• Dobre: ireverzibilne + soľ + iterácie
• Soľ – (náhodný) individuálny reťazec• Pridávaná pri výpočte odtlačku• Znemožňuje útočníkovi predvýpočty, paralelné prehľadávanie rovnakých hesiel (vedú k
rôznym odtlačkom)
• Iterácie – spomalenie výpočtu odtlačku• Spomalenie overenia hesla (nevadí), spomalenie útoku (vyhovuje)
• Vhodné algoritmy: PBKDF2, bcrypt, scrypt
• Zlé heslo je zlé bez ohľadu na uloženie (slovníkový útok)
46
Príklad autentizácie na základe hesla
Používateľ Adam(prihlasovacie meno, heslo)
Počítač / Server
Prihlasovacie meno, heslo Vypočítaj H(heslo)
meno1 H(heslo1)
meno2 H(heslo2)
meno3 H(heslo3)
⋮ ⋮
menoN H(hesloN)
Eva sa snaží uhádnuť Adamove heslo 48
Hľadanie hesla – úplné preberanie
• Online úplné preberanie• skúšame všetky možné heslá, vypočítame ich haš
• Výpočtová zložitosť: N := |A| (A množina všetkých hesiel)
• Pamäť: 0
• Predvýpočet: 0
• Úplné preberanie s predvýpočtom• Predvýpočítame si tabuľku všetkých možných hesiel a ich hašov
• Online výpočtová zložitosť: 0
• Pamäť: N
• Predvýpočet: N
Time-memory trade-off
49
Hellmanove tabuľky, 1980
• Namiesto ukladania celej množiny možných hesiel a ich hašov počítame tzv. reťazce hašov
• Heslá sú organizované v reťazcoch hašov, iba prvý a posledný prvok reťazca je zapamätaný v tabuľke
• Pri predvýpočte vytvoríme 𝑚 reťazcov dĺžky 𝑡
S1
E1
H
R
Heslá Odtlačky
Reťazec:
R – redukčná funkcia50
Predvýpočet, reťazce
• 𝐻:𝐴 → 𝐵 – hašovacia funkcia (MD5, SHA1)
• 𝑅:𝐵 → 𝐴 – „ľubovoľná“ funkcia (redukcia)
• 𝑓: 𝐴 → 𝐴, kde 𝑓 ≔ 𝑅 ∘ 𝐻
Reťazce:
𝑆1 = 𝑥1,1→𝑓𝑥1,2→
𝑓𝑥1,3→
𝑓…→𝑓𝑥1,𝑡 = 𝐸1
𝑆2 = 𝑥2,1→𝑓𝑥2,2→
𝑓𝑥2,3→
𝑓…→𝑓𝑥2,𝑡 = 𝐸2
⋮
𝑆𝑚 = 𝑥𝑚,1→𝑓𝑥𝑚,2→
𝑓𝑥𝑚,3→
𝑓…→𝑓𝑥𝑚,𝑡 = 𝐸𝑚
S1
E1
H
R
A B
S1 E1
S2 E2
S3 E3
⋮ ⋮
Sm Em
51
Online fáza• Pre daný haš 𝑦 ∈ 𝐵, vypočítame 𝑦1 = 𝑅(𝑦) a postupne generujeme 𝑦𝑖 = 𝑓 𝑦𝑖−1 , pre 𝑖 = 2,… , 𝑡. • Pre každé yi kontrolujeme, či to nie je nejaké 𝐸𝑗 (t.j. či sa nenachádza v tabuľke),
• Ak sme našli 𝐸𝑗, môžeme predobraz 𝑦 získať postupným hašovaním z 𝑆𝑗
predobraz
52
Falošný alarm
• Keďže 𝑓 nie je injektívne, môže sa stať, že predobraz sa nechádza v reťazci začínajúcom z 𝑠𝑗 - falošný alarm
• Falošný alarm nás stojí 𝑡 výpočtov funkcie 𝑓• Keďže o neexistencii predobrazu v reťazci sa dozvieme až po vygenerovaní
celého reťazca
• Ak došlo k falošnému alarmu, pokračujeme v hašovaní 𝑦𝑖 = 𝑓 𝑦𝑖−1• Pravdepodobnosť / frekvenciu falošného alarmu je veľmi ťažké
odhadnúť
53
Hellmanove tabuľky
• Vygenerované hodnoty by mali („pravdepodobnostne“) pokrývať množinu A – množinu všetkých hesiel
• Ak zväčšíme 𝑡, znížime veľkosť tabuľky 𝑚, avšak zvýšime čas potrebný pri online útoku (time-memory trade-off)
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S1 E1
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S2 E2
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S3 E3. . . . . . .
. . . . . . .
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦Sm Em
t 54
Kolízie
• Počas predvýpočtu môže dochádzať ku kolíziám, ktoré je ťažké detekovať, keďže posledný prvok sa nemusí zhodovať• Kolízie spôsobujú redundanciu v reťazcoch
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S1 E1
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S2 E2
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S3 E3. . . . . . .
. . . . . . .
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦Sm Em
tRovnaké hodnoty
55
Pravdepodobnosť úspechu
• Nech 𝑁 = 256 je počet všetkých možných hesiel
• Ak je všetkých 𝑚 × 𝑡 prvkov rôznych, potom:
𝑃 𝑆 = 𝑚𝑡/𝑁P(S) – pravdepodobnosť, že nájdeme predobraz k danému Y
• Kolízie v reťazcoch však znižujú pravdepodobnosť úspechu
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S1 E1
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S2 E2
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦S3 E3. . . . . . .
. . . . . . .
◦f
◦f
◦f
◦ . . . . . . . ◦f
◦f
◦Sm Em
t
56
Pravdepodobnosť úspechu
• Efektivita algoritmu teda záleží na funkcii 𝑓, resp. vhodnej voľbe 𝑅
• Nech 𝑓 je uniformne náhodná
• Na základe narodeninového paradoxu môžeme určiť maximálnu hodnotu 𝑚, 𝑡, pre ktoré sa v reťazcoch ešte nebude nachádzať veľa kolízií
• 𝑚𝑡2 = 𝑁• Ak 𝑚𝑡2 ≪ 𝑁, potom s veľkou pravdepodobnosťou v reťazcoch neexistujú
kolízie
• Ak 𝑚𝑡2 ≫ 𝑁, potom bude v reťazcoch veľa kolízií, čo znižuje efektivitu útoku
57
Pravdepodobnosť úspechu
• Parametre teda zvolíme tak, aby 𝑚𝑡2 = 𝑁• Pravdepodobnosť úspechu v tomto prípade je
𝑃 𝑆 = (# rôznych hodnôt v tabuľke)/𝑁~ 0.8 𝑚𝑡/𝑁
• Ak vygenerujeme 𝑡 tabuliek (každá s veľkousťou𝑚 × 𝑡), každú s inou redukčnou funkciou 𝑅, potom
𝑃 𝑆 = 1 − 1 −𝑚𝑡
𝑁
𝑡
~ 1 − 𝑒−𝑡2𝑚𝑁 = 1 −
1
𝑒~0,63
58
Hellmanove tabuľky - zhrnutie
• N – množina hesiel
• Predvýpočet: 𝑃 = 𝑡2𝑚 = 𝑁
• Online zložitosť: 𝑇 = 𝑡2 (výpočtov funkcie 𝑓)
• Pamäť: 𝑀 = 𝑡𝑚 (𝑡 tabuliek po 𝑚 riadkov)
• Ak chceme minimalizovať 𝑇 +𝑀, potom optimálna voľba je
𝑇 = 𝑀 = 𝑁2/3
59
Dúhové tabuľky
• Optimalizácia Hellmanových tabuliek
• Minimalizujeme pravdepodobnosť kolízie použitím inej redukčnej funkcie v každej iterácii pri výpočte reťazca
◦f3◦
f1 ◦f2 ◦ . . . . . . . ◦
ft-1 ◦ft ◦S1 E1
S2 E2
S3 E3. . . . . . .
. . . . . . .
Sm Em
◦f3◦
f1 ◦f2 ◦ . . . . . . . ◦
ft-1 ◦ft ◦
◦f3◦
f1 ◦f2 ◦ . . . . . . . ◦
ft-1 ◦ft ◦
◦f3◦
f1 ◦f2 ◦ . . . . . . . ◦
ft-1 ◦ft ◦
60
Dúhové tabuľky
• Nech 𝑅1…𝑅𝑡: 𝐵 → 𝐴 sú redukčné funkcie
• 𝑓𝑖: 𝐴 → 𝐴, 𝑓𝑖 = 𝑅𝑖 ∘ 𝐻
• Ak 2 reťazce kolidujú v rôznych stĺpcoch, potom sa ich hodnoty neprekrývajú
• Ak 2 reťazce kolidujú v rovnakom stĺpci, potom kolidujú aj na konci • vieme to detekovať a vygenerovať reťazec znovu s inou hodnotou
61
Online fáza
• Komplikovanejšia ako v prípade Hellmanových tabuliek
• Máme dané 𝑦 ∈ 𝐵,
• Pre každé 𝑠 = 𝑡, 𝑡 − 1,… , 1 vypočítame reťazec• 𝑦𝑠 = 𝑅𝑠 𝑌 ,
• 𝑦𝑠+1 = 𝑓𝑠+1 𝑦𝑠 ,
• ⋮
• 𝑦𝑡 = 𝑓𝑡 𝑦𝑡−1
• Skontrolujeme, či 𝑦𝑡 sa nachádza v tabuľke pod nejakým 𝐸𝑗• Ak sme našli 𝐸𝑗, môžeme predobraz 𝑦 získať postupným hašovaním z 𝑆𝑗
62
Online fáza◦
Rt ◦ yt,1
yt,2
yt,3
. . . . . . .
y yt,t
◦Rt-1 ◦
ft ◦
◦Rt-2 ◦
ft-1 ◦ft ◦
◦f3◦
R1 ◦f2 ◦ . . . . . . . ◦
ft-1 ◦ft ◦
y
y
y
E1 S1
E2 S2
E3 S3
⋮ ⋮
Em Sm
?
Sj y◦H
◦H
◦R1 ◦ ◦
H◦◦
R2 …
Hľadaný predobraz 63
Dúhové tabuľky - zhrnutie
• N – veľkosť množiny hesiel
• Predvýpočet: 𝑃 = 𝑁
• Online zložitosť: 𝑇 =𝑡 𝑡−1
2(výpočtov funkcie 𝑓)
• Pamäť: 𝑀 = 𝑡𝑚 (tabuľka s t𝑚 riadkami)
Výhody oproti Hellmanovým tabuľkám
• Polovičná zložitosť online fázy 𝑡(𝑡 − 1)/2 vs 𝑡2
• Detekcia kolidujúcich reťazcov
65
Dúhové tabuľky vs. Windows LM heslá
• Windows LM (LanManager) hash (Win98/ME/2k/XP)
• Malé písmená su skonvertované na veľké
• Heslo rozdelené na dve 7 znakové bloky
DES
DES
Heslo (zarovnané na 112 bitov)
1. polovica hesla (56 bitov)
2. polovica hesla (56 bitov)
Hash (128 bitov)
Konštanta
Konštanta
66
Dúhové tabuľky vs. Windows LM heslá
• Hádanie alfanumerického hesla pre daný LM hash na počítači.
• Veľkosť problému: 𝑁 = 8.06 × 1010 = 236.23
Úplnepreberanie
Dúhové tabuľky
Online útok 4.03 × 1010
2h 15 min1.13 × 106
0.226 sec
PredvýpočetČas
Pamäť
000
1.42 × 1013
33 dní2 GB
67
Limity time-memory trade-off útokov
• TMTO útok nie je nikdy celkovo rýchlejší ako brute-force
• TMTO má význam v nasledovných prípadoch• Útok sa opakuje niekoľko krát• „Útok počas obednej prestávky“• Útočník nie je veľmi výkonný, avšak má možnosť stiahnuť si tabuľky
• Podmienky, aby bolo možné TMTO použiť• Problém rozumnej veľkosti• Jednosmerná funkcia (alebo CPA útok na šifrovom texte)
• Použitie soli pri ukladaní hesiel zabraňuje TMTO útokom
68
Útoky postrannými kanálmi
• V kryptológii často definujeme teoretický „model“ útočníka• V modeli definujeme silu útočníka a jeho prístup k zdrojom
• Konštrukciu následne analyzujeme vzhľadom na tento model
• Kryptoanalýza komunikujúce strany často (v protokoloch / kryptografických konštrukciách) považuje za „black box“
• V praxi sú však komunikujúce objekty počítače / software / zariadenia• To môže viesť k ďalším útokom „mimo definovaného modelu“
=> útok postranným kanálom
70
Útoky postrannými kanálmi
• Aktívne - Útočník pristupuje do vnútorných obvodov zariadenia • Probing attack: útočník do zariadenia vkladá senzory• Fault induction attack: útočník sa snaží navodzovať chybové stavy zariadenia
(prehriatie, zmrazenie,…)
• Pasívne - Útočník pozoruje fyzické vlastnosti zariadenia bez jeho demontáže• Timing attack• Power attack• Electro-magnetic attack• Acoustic analysis• Cache analysis• Error message attack• ...
71
Súkromný kľúč
Postranné kanály
Vstup Výstup
Timing útok
• Čas behu algoritmu môže závisieť od dát
• Koľko trvá zariadeniu dešifrovanie nami zvolenej správy?
• Napr. uvažujme RSA šifrovaciu schému• 𝑛 = 𝑝 ⋅ 𝑞
• Pozorujme čas dešifrovania 𝑐 = 𝐸 𝑚a) ak 𝑚 < 𝑝
b) ak 𝑚 > 𝑝
• Ak je rozdiel času medzi prípadmi a) a b) signifikantný, potom vieme 𝑝 nájsť pomocou binárneho vyhľadávania
72
Timing útoky
• 1996, Kocher – modulárne umocňovanie RSA• Čas beh algoritmu „square-and-multiply“ na počítanie modulárneho
umocňovania závisi od počtu 1 v kľúči
• 1998, Dhem a kol. – praktický útok na smart kartu implementujúcu RSA
• 2001, Song a kol. – analýza stláčania kláves v priebehu času a útok na SSH
• 2003, Boneh a Brumley – útok na web server v lokálnej sieti využívajúci OpenSSL• Po vykonaní ~ 0.3 mil. (cca 2 hodiny) je možné faktorizovať 1024 bitový RSA
modulus
73
Power analysis
• Najčastejšie využívaný útok cez postranné kanály
• Simple Power Analysis (SPA) – na základe odberu prúdu zariadenia sa snažíme uhádnuť, ktorú inštrukciu zariadenie vykonáva a aké sú hodnoty vstupu a výstupu• Presná znalosť implementácie je potrebná
• Differential Power Analysis (DPA) – analyzujeme štatistické korelácie medzi tajným kľúčom a odberom prúdu• Presná znalosť implementácie nie je potrebná
• Prvý útok: 1999, Kocher – Praktický útok na hw. DES implementáciu• Odvtedy veľké množstvo SPA / DPA útokov
74
Power analysis
• Priebeh napätia počas výpočtu RSA podpisu na smart karte
• Ľavý vrchol – odber CPU počas kroku algoritmu bez násobenia
• Pravý vrchol – odber CPU počas kroku s násobením
• Môžeme tak rozoznať bity súkromného kľúča
75
Elektro-magnetic attack
• Meranie EM vyžarovania zariadení – často aj na diaľku
• Podobné power analysis útokom
• 2003, Agrawa a kol., „The EM Side–Channel(s)“ • ukazuje sa, že EM vyžarovanie je možné využiť i tam, kde analýza odberu
prúdu nefunguje
• EM vyžarovanie môže byť dokonca využíté aj na obchádzanie protiopatrení voči iným typom postranných útokov (power analysis,…)
76
Akustická kryptoanalýza
• Veľa počítačov emituje počas výpočtu vysoko frekvenčný zvuk• Spôsobujú to vibrácie v niektorých elektronických súčiastkách
• 2004-2014, Shamir a kol. – odhalenie 4096 bitového kľúča v GnuPGimplementácii RSA v priebehu hodiny
77
Akustická kryptoanalýza2004-2014, Shamir a kol.
• S využitím obyčajného mobilu je možné odhaliť kľúč na vzdialenosť niekoľko desiatok cm• S lepším mikrofónom aj niekoľko metrov
• CCA útok - útok s možnosťou voľby šifrového textu
• Útočník získava kľúč bit po bite • Pre každý bit vytvorí špeciálny šifrový text, ktorý si nechá na zariadení
dešifrovať a následne analyzuje jeho zvuk
78
Akustická kryptoanalýza2004-2014, Shamir a kol.
• Zariadenie chránené voči EM vyžarovaniu (Faradayova klietka) nemusia byť chránené voči vyžarovaniu zvuku
80
Cache útoky
• Procesory majú vlastnú cache na prístup k dátam• Cache procesora ma oveľa nižšiu latenciu ako operačná pamäť
• Ak sa dáta nenachádzajú v cache, procesor ich musí načítať z pamäte(výpadog stránky0
• Útočník môže pomocou paralelného procesu docieliť, aby časť cache pre šifrovací / dešifrovací proces bola nahradená• t.j. nahradí stránku cache svojou
=> Možný timing útok
81
Error message attack
• Server implementujúci kryptografický protokol môže reagovať rôzne, ak (zašifrované) dáta ktoré prijal majú• správny tvar (napr. otvorený text má správny padding)
• nesprávny tvar (napr. otvorený text má nesprávny padding)
• Tzv. padding oracle útoky
82
Padding oracle(server)
Útočník
Šifrový text
Áno / Nie
Error message attack
• 2002, Vaudenay – útok na sym. šifry v CBC móde• Útočník môže s využitím „timing padding“ orákula dešifrovať správy (resp.
vytvoriť správne zašifrovaný text)
• ...
• 2013, Peterson a kol. „Lucky 13“ útok na TLS• “Timing padding oracle útok”• TLS síce nedáva rôzne chybové hlásenia, avšak• ak má správa zlý padding čas, odpovede je iný ako v prípade správneho
paddingu
83
Lucky 13
Špecifikácia TLS 1.2:
…implementations MUST ensure that record processing time isessentially the same whether or not the padding is correct.
In general, the best way to do this is to compute the MAC even if thepadding is incorrect, and only then reject the packet.
• Avšak ak je zlý padding, aký padding máme použiť?
84
Lucky 13TLS Record Protokol: MAC-Encode-Encrypt
MAC
SQN || HDR Payload
Padding
Encrypt
Šifrový text
MAC tagPayload
HDR
Problém je, ako v prípade zlého paddingu určiť, čo je Payload, MAC tag a Padding
85
Lucky 13
86
For instance, if the pad appears to be incorrect, the implementation might assumea zero-length pad and then compute the MAC.
• Tento prístup využívalo viacero implementácií vrátate OpenSSL, NSS (Chrome, Firefox), BouncyCastle, OpenJDK, …
… This leaves a small timing channel, since MAC performance depends to someextent on the size of the data fragment, but it is not believed to be large enough to be exploitable, due to the large block size of existing MACs and the small size of thetiming signal.
Lucky 13
• Útok voči TLS-CBC šifrám implementovaných podľa odporúčania špecifikácie TLS 1.2• Útočník môže dešifrovať komunikáciu - napr. „session cookie“
• Aplikovateľný na všetky verzie SSL/TLS• SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2 pri použití CBC šifry• TLS 1.2 podporuje aj šifry v GCM a CCM móde, ktoré sú odolné
• Využitie BEAST prístupu • „man in the browser“ cez JavaScript
87
Poodle útok, 2014
• Ďalší padding oracle útok na CBC šifry v SSL 3.0
• Požiadavka klienta na server (rozdelená na 8 bajtové bloky):
• Posledný blok obsahuje padding a jeho dĺžku • V našom prípade 7 bajtov
• SSL 3.0 nešpecifikuje ako má vyzerať padding• Padding je akceptovaný vtedy a len vtedy ako posledný bajt je 7
• Útočník odpočuje šifrovanú podobu vyššie uvedenej požiadavky• Duplikuje blok obsahujúci cookie a nahradí nim posledný blok
88
Poodle útok, CBC dešifrovanie
• Ak SSL 3.0 server správu akceptuje (t.j. má správny padding)• cookie blok⊕ predchádzajúci šifrový blok = xxxxxx7
=> Útočník pozná posledný znak cookie
89
Poodle útok, 2014
• Následne útočník vytvorí novú požiadavku, kde je cookie blok posunutý:
=> útočník získa predposledný znak cookie
⋮
=> Útočník získa celý cookie
90
Ďalší útok: Bankomaty a PIN
• Pomocou termokamery je možné čítať PIN
• Niekedy je dokonca možné určiť poradie stlačenia kláves
• Kovové klávesy sú náchylnejšie
91
Ochrana voči útokom postrannými kanálmi
• Maskovacie techniky v implementácii• Náhodné zaspatie
• Dummy inštrukcie
• Náhodné poradie operácii (ak je to možné)
• …
• Úprava kryptografických algoritmov• Útoky postrannými kanálmi sú tak dokázateľne neúčinné
• Napr. zaobalíme kľúč a dáta nejakou náhodnou hodnotou vygenerovanou zakaždým nanovo
• Fyzická ochrana zariadení
92
Zdieľanie tajomstvamotivácia
• Svedomitý bankový manažér• Má pod sebou 8 zamestnancov
• Chce, aby mohol byť trezor otvoreny iba keď je prítomných aspoň polovica zamestnancov
• Ako to urobiť?
94
Zdieľanie tajomstva
• Máme tajomstvo 𝑆
• 𝑛 ľuďom chceme rozdeliť podiely tak, aby• Ak poznáme aspoň 𝑡 z 𝑛 podielov, vieme rekonštruovať tajomstvo 𝑆• Ak poznáme najviac t−1 podielov, nevieme o tajomstve nič povedať
• 𝑡, 𝑛 -prahová schéma na zdieľanie tajomstva
→ Každý podiel musí byť aspoň tak dlhý ako tajomstvo S• Z 𝑡 − 1 podielov nevieme nič o 𝑆 => posledny 𝑡-ty podiel musí obsahovať toľko
informácie ako samotné tajomstvo S
→ Všetky schémy na zdieľanie tajomstva využívajú náhodnosť• Distribúcia 1-bitového tajomstva S medzi 𝑡 ľudí• 𝑡 − 1 podielov nesmie nič prezradiť o bite 𝑆 => podiely musia byť náhodné
95
Shamirova schema - idea
• Polynóm 𝑓 stupňa 𝑛 môžeme popísať 𝑛 + 1 bodmi• T.j. 𝑛 + 1 dvojicami (𝑥, 𝑓(𝑥))
96
Shamirova schema (𝑡, 𝑛) schéma
Inicializácia a rozdelenie tajomstva (vykonáva dôveryhodná autorita):
1. Zvolíme prvočíslo 𝑝 ≥ 𝑛 + 1 a tajnú informáciu 𝑆 ∈ ℤ𝑝
2. Zvolíme náhodný polynóm 𝑓 𝑥 stupňa najviac 𝑡 − 1, tak aby 𝑓 0 = 𝑆
𝑓 𝑥 = 𝑎𝑡−1𝑥𝑡−1 +⋯+ 𝑎1𝑥 + a0,
kde 𝑎𝑡−1, … , 𝑎1 ∈𝑅 ℤ𝑝 a 𝑎0 = 𝑆
3. Účastník 𝑃𝑖 dostane podiel 𝑓(𝑖), pre 𝑖 = 1,… , 𝑛
97
Shamirova schema (𝑡, 𝑛) schéma
Rekonštrukcia tajomstva 𝑆
• 𝑡 účastníkov má k dispozícii
𝑓 𝑥1 = 𝑎𝑡−1𝑥1𝑡−1 +⋯+ 𝑎1𝑥1 + a0,
𝑓 𝑥2 = 𝑎𝑡−1𝑥2𝑡−1 +⋯+ 𝑎1x2 + a0,
⋮
𝑓 𝑥𝑡 = 𝑎𝑡−1𝑥𝑡𝑡−1 +⋯+ 𝑎1𝑥𝑡 + a0,
• Sústava t lineárnych rovníc o t neznámych má práve jedno riešenie
• Vypočítame 𝑎𝑡−1, … , 𝑎0 a následne rekonštruujeme 𝑆 = 𝑓(0)
98
Shamirova schema (𝑡, 𝑛) schémabezpečnosť
• Veľkosť podielu je rovnaká ako veľkosť tajomstva
• Skupina 𝑡 − 1 účastníkov nevie o tajomstve vypočítať nič𝑓 𝑥1 − 𝑠′ = 𝑎𝑡−1𝑥1
𝑡−1 +⋯+ 𝑎1𝑥1,
𝑓 𝑥2 − 𝑠′ = 𝑎𝑡−1𝑥2𝑡−1 +⋯+ 𝑎1x2,
⋮
𝑓 𝑥𝑡−1 − 𝑠′ = 𝑎𝑡−1𝑥𝑡−1𝑡−1 +⋯+ 𝑎1𝑥𝑡−1,
pre každé 𝑠′ existuje 𝑓′, také že 𝑓′ 𝑥𝑖 = 𝑓(𝑥𝑖) pre 𝑖 = 1,… , 𝑡 − 1
• Nečestný účastník• Čo ak účastník podhodí falošný podiel?
• Čo ak účastník po odhalení 𝑡 − 1 podielov svoj podiel neodhalí?
99
Post-Snowden éra
• Veľká časť v praxi používaných kryptografických algoritmov je štandardizovaných NISTom• AES, SHA-1-2-3, ECDSA, …
• Odhalenia Snowdena o praktikách NSA dávajú do popredia otázku, či tieto štandardy neobsahujú zadné vrátka• Spomeňme si na pseudo-náhodný generátor DUAL_EC_DRBG
• AES a SHA-3 boli vyberané verejnou kryptografickou súťažou
• Potenciálny útočníci už nie sú len kyber-kriminálnici• Ale organizácie s miliardovým rozpočtom
102
Štát vs. Krypto - Lavabit
• Lavabit - šifrovaná web-mailová služba• Využíval ju aj Snowden na komunikáciu s novinármi a právnikmi
• Služba navrhnutá programátormi, ktorým vadila bezpečnostná politika Gmailu
• Poskytovala silnú kryptografickú ochranu emailov svojich používateľov• Na úrovni, ktorá by mala byť odolná aj voči spravodajským službám
• August 2013 – Lavabit skončil svoju prevádzku potom, ako bol požiadaný súdom o poskytnutie svojich súkromných kľúčov
• Následne skončila svoju prevádzku aj ďalšia podobná služba SilentCircle• Pre istotu vymazali všetky šifrovacie kľúče
103
TLS RSA výmena kľúčovdôležitosť „forward secrecy“
107
Hello
Certifikát, verejný RSA kľúč 𝑝𝑘
RSAEncpk(AES kľúč)
AESEncAESkľúč(obsah stránky)
• Útočník poznajúci tajný kľúč Lavabitu môže• Vystupovať ako Lavabit pre kohokoľvek
• Dešifrovať všetkú budúcu aj minulú komunikáciu
TLS Diffie-Hellman výmena kľúčovdôležitosť „forward secrecy“
108
Hello, 𝑔𝑥
Certifikát, verejný RSA kľúč, 𝑔𝑦
RSASignpk(𝑔𝑥, 𝑔𝑦)
AESEnc𝑔𝑥𝑦(obsah stránky)
• Útočník poznajúci tajný kľúč Lavabitu môže• Vystupovať ako Lavabit pre kohokoľvek• „Forward secrecy”: Nemôže dešifrovať predchádzajúcu komunikáciu (ak 𝑔𝑥𝑦 bolo
zahodené)
Záver
• Kryptografia nie je miesto na kreativitu a ad-hoc riešenia
• Používajte štandardné kryptografické algoritmy, schémy a protokoly
• Kryptografia nenahradí iné organizačné a technické bezpečnostné opatrenia
• Dbajte na kvalitné generovanie kľúčov a voľbu hesiel
• Poznajte konfiguračné možnosti kryptografických riešení a ich bezpečnostné dopady
• Ak môžete, uprednostnite schémy založené na eliptických krivkách
• Ak je to možné používajte „forward secrecy“
109