21
Prof. Alessandro Bugatti Crittografia con Python Corso introduttivo Marzo 2015 Con materiale adattato dal libro “Hacking Secret Cypher With Python” di Al Sweigart (http://inventwithpython.com/hacking/index.html )

Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Crittografia con Python

Corso introduttivoMarzo 2015

Con materiale adattato dal libro “Hacking Secret Cypher With Python” di Al Sweigart (http://inventwithpython.com/hacking/index.html)

Page 2: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Cifrari a trasposizione

• A differenza di quelli a sostituzione non trasformano le lettere ma le riordinano

M E G A B U C K

7 4 5 1 2 8 3 6

p l e a s e t r Testo in chiaro pleasetransferonemilliondollarsto myswissbankaccountsixtwotwo Testo cifrato AFLLSKSOSELAWAIATOOSSCTCLNMOMANT ESILYNTWRNNTSOWDPAEDOBUOERIRICXB

a n s f e r o n

e m i l l i o n

d o l l a r s t

o m y s w i s s

b a n k a c c o

u n t s i x t w

o t w o a b c d

Page 3: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Cifrari a trasposizione

• Per verificare di essere in presenza di un cifrario a trasposizione basta verificare la statistica delle lettere che non viene alterata

• Bisogna poi capire su quante colonne è stata fatta la trasposizione: si fanno delle supposizioni su parole probabili

• Si vede quale delle k(k-1) colonne danno la migliore corrispondenza dei digrammi

Page 4: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Esempio

• Supponiamo di sapere che compaia la parola milliondollars

• Supponendo varie lunghezze si trova quella corrispondente all’apparizione delle varie parti della parola avvolta su se stessa (con lunghezza 8 si troverebbero MO, IL, LL, LA, IR e OS)

• Si procede permutando le colonne e analizzando la frequenza dei digrammi

Page 5: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Algoritmi moderni

● Gli algoritmi crittografici moderni si dividono in due grandi famiglie– Algoritmi a chiave segreta o simmetrici: la chiave è

segreta e l’algoritmo è composto da una complicata serie di sostituzioni e trasposizioni

– Algoritmi a chiave pubblica o asimmetrici: le chiavi sono due, una pubblica e una privata e si basano sull’aritmetica modulare o sui logaritmi discreti

Page 6: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Algoritmi a chiave segreta

● Utilizzo di un algoritmo molto complesso tramite concatenazione di blocchi di trasposizione e sostituzione

S-box

De

co

de

r: 3

to

8

En

co

de

r: 8

to

3

Blocco di sostituzione

P-box

Blocco di trasposizione

Page 7: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Algortimi a chiave segreta

● Concatenazione di più blocchi per la creazione di un cifrario

S 1

S 2

P 1 P 4P 3P 2

S 3

S 4

S 5

S 6

S 7

S 8

Cifrario di produzione

(c)

S 9

S 10

S 11

S 12

Page 8: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - Data Encryption Standard

● Sviluppato da IBM nel 1977 e adottato come standard ufficiale dal governo statunitense per le informazioni non classificate

● Blocchi di 64 bit di testo in chiaro generano 64 bit di testo cifrato

● L’algoritmo è parametrizzato da una chiave a 56 bit.

Page 9: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - Data Encryption Standard

(b)(a)

Initial transposition

Iteration 16

L f(R , K )i-1 i-1 i

Ri-1Li-164 bit plaintext

64 bit ciphertext 32 bits Li

32 bits Ri

Iteration 2

Iteration 1

56 b

it ke

y

32 bit swap

Inverse transposition

Page 10: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES: problemi e varianti

● Al di là della sua complessità il DES è un cifrario a sostituzione monoalfabetico con caratteri di lunghezza 64 bit

● Anche se decoficare il codice può essere difficile, esistono situazioni in cui è molto facile cambiare il testo codificato per ottenerne una versione alterata ma valida

Page 11: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - Problemi e varianti

Name Position Bonus

16 8 8Bytes

D a v i s , B o b b i e J a n i t o r $ 5

C o l l i n s , K i m M a n a g e r $ 1 0 0 , 0 0 0

B l a c k , R o b i n B o s s $ 5 0 0 , 0 0 0

A d a m s , L e s l i e C l e r k $ 1 0

Page 12: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES: problemi e varianti

● Per prevenire questo tipo di attacchi si concatenano i blocchi del DES in modo che eventuali scambi portino ad ottenere messaggi non validi

● Modalità:– concatenazione a blocchi– feedback– output feedback

Page 13: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - Concatenazione a blocchi

(a) (b)

#

E

IV

Key

Key

IV

P0

C0

#

E

P1

C1

#

E

P2

C2

#

E

P3

C3

D

#

C0

P0

D

#

C1

P1

D

#

C2

P2

D

#

Decryption box

Encryption box

Exclusive OR

C3

P3

Page 14: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - Rottura del codice

● Con chiavi lunghe 56 bit 256 chiavi (inizialmente chiave a 112 bit)

● Esistono progetti per macchine in grado di rompere DES in meno di quattro ore, però molto costose

● Altra idea: la Lotteria Cinese

Page 15: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - La Lotteria Cinese● Idea:

– Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000 codifiche/s ognuno con uno spazio delle chiavi differente

– Mandare in broadcast la coppia testo in chiaro/ testo cifrato

– Con 1.200.000.000 apparecchi in 60 s verrebbe esplorato tutto lo spazio delle chiavi

– Messaggio di vincita della lotteria

Page 16: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES – Attacchi reali

● EFF DES Cracker: costo circa 250000 dollari (1998), attacco a forza bruta con successo in circa 2 giorni.

● COPACABANA machine: costo circa 10000 dollari (2006) utilizzando hardware commerciale, attacco a forza bruta con successo in circa una settimana

Page 17: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES: miglioramenti

● Applicandolo due volte con due chiavi diverse si ottengono 2112 chiavi (circa 5 x 1033)

● Impossibilità di esplorare tutto lo spazio delle chiavi

● In realtà esiste un attacco (meet-in-the-middle) che riduce lo spazio delle chiavi a 257

● Stessa difficoltà del DES semplice

Page 18: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Attacco Meet-in-the-middle

● Conoscendo un testo in chiaro P e il testo cifrato corrispondente C

C=EK1(EK2(P))● Trovo tutte le codifiche di P usando tutte le chiavi

possibili (256)● Trovo tutte le decodifiche di C usando tutte le

chiavi possibili (256)● Cerco una corrispondenza poiché

DK1(C)= EK2(P)

Page 19: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

DES - Codifica tripla

K1

E

K2

D

K1

EP C

K1

D

K2

E

Codifica Decodifica

K1

DC P

● EDE al posto di EEE per motivi di retrocompatibilità (basta porre K1=K2)

● Non si conoscono metodi per forzarlo

Page 20: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

AES – Advanced Encryption Standard

● Sostituto del DES adottato dal governo statunitense per informazioni classificate Top Secret

● Chiave a 128, 192 o 256 bit● Blocchi da 128 bit

Page 21: Crittografia con Python - Imparando.net...Prof. Alessandro Bugatti DES - La Lotteria Cinese Idea: – Fornire ogni radio/televisione di un processore DES in grado di effettuare 1.000.000

Prof. Alessandro Bugatti

Un'anticipazione golosa

● Due volontari:● Prendete i numeri 753 e 413● Scegliete un numero a caso x (e ricordatevelo)

minore di 413● Elevate 753 alla x e fate modulo 413● Dite a voce alta il numero ottenuto, chiamiamolo y● Prendete y e elevatelo a x modulo 413