Crittografia con Python

Похожие документы
Crittografia con Python

logaritmo discreto come funzione unidirezionale

E necessaria la chiave segreta? RSA. Funzioni One-way con Trapdoor. Un secondo protocollo

Crittografia a chiave pubblica

la crittografia tratta delle "scritture nascoste", dei metodi per rendere un messaggio "offuscato"

Crittografia per la sicurezza dei dati

Crittografia a chiave pubblica

Crittografia con Python

Aritmetica modulare, numeri primi e crittografia

! La crittoanalisi è invece la scienza che cerca di aggirare o superare le protezioni crittografiche, accedendo alle informazioni protette

Crittografia a chiave pubblica

Sicurezza nelle reti: protezione della comunicazione

idea della crittografia a chiave pubblica

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

Elementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia

CODICI SEGRETI: UN VIAGGIO NELLA CRITTOGRAFIA

Elementi di Crittografia

Scambio delle chiavi. mercoledì 7 dicembre 2011

crittografia a chiave pubblica

Fattorizzazione di interi e crittografia

(G, ) un gruppo moltiplicativo di ordine n l ordine di un elemento g G, o(g), è il minimo intero positivo m tale che g m = 1

La firma digitale, o firma elettronica qualificata, basata sulla tecnologia della crittografia a chiavi asimmetriche, è un sistema di autenticazione d

Introduzione alla crittografia. Diffie-Hellman e RSA

La crittografia. La crittografia è un'arte antica, risale almeno ai Greci (Tucidide, scitala lacedemonica).

Aritmetica modulare: un applicazione alla crittografia

Crittografia da Whatsapp a Wikileakes, tra spie e segreti di stato

Elementi di crittografia

Università del Piemonte Orientale

CRITTOGRAFIA E NUMERI PRIMI TFA A059 ANNA NOBILI OTTAVIANO ROSI

NUMERI E CRITTOGRAFIA. Carlo Toffalori (Camerino) Scuola Estiva Mathesis Telese Terme, 28 luglio 2015

Altre alternative a RSA interessanti e praticabili

Sicurezza nelle applicazioni multimediali: lezione 4, crittografia asimmetrica. Crittografia asimmetrica (a chiave pubblica)

Breve storia della crittografa

Identificazione, Autenticazione e Firma Digitale. Firma digitale...

La sicurezza nelle reti di calcolatori

una possibile funzione unidirezionale

Informatica di base 6/ed

Privacy e firma digitale

Aritmetica e Crittografia

Il nano sulle spalle del gigante

DIARIO DEL CORSO DI TEORIA DEI NUMERI E CRITTOGRAFIA. (41 ore complessive di lezione)

La codifica digitale

La crittografia moderna e la sua applicazione

Capitolo 8 La sicurezza nelle reti

Crittografia e firma digitale INTRODUZIONE INTRODUZIONE

metodi crittografici maurizio pizzonia sicurezza dei sistemi informatici e delle reti

Crittografia. Ringraziamenti. Scopo della crittografia. Privatezza

Storia della crittografia

Crittografia a chiave pubblica. Cenni alla teoria dei numeri

Crittografia a chiave pubblica. Crittografia a chiave pubblica. Crittografia a chiave pubblica Autenticazione

Sicurezza nei Sistemi Distribuiti

Sicurezza nei Sistemi Distribuiti

Cifratura a chiave pubblica Sicurezza nelle reti di TLC - Prof. Marco Listanti - A.A. 2008/2009

Crittografia: dagli antichi codici di Cesare ai protocolli avanzati

Crittografia a chiave pubblica

Piccolo manuale PGP pubblica privata chiave pubblica chiave privata non firewall personale

Crittografia. Steganografia

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

BLOWFISH. Introduzione Algoritmo. Prestazioni Cryptanalysis of Vaundenay. Egizio Raffaele

Crittografia con Python

Funzioni di hash sicure: MD5 e SHA-1

Транскрипт:

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)

Ci eravamo lasciati così... 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 elevato a x modulo 413

Scambio di chiavi di Diffie-Hellman Problema: come condividere la chiave (o le chiavi) senza incontrarsi personalmente? Soluzione: algoritmo di Diffie-Hellman Vengono scelti due numeri primi n e g molto grandi e resi pubblici Alice e Bob scelgono indipendentemente due numeri x e y Attraverso uno scambio di messaggi creano una chiave condivisa

Scambio di chiavi di Diffie-Hellman Alice sceglie x Alice 1 n, g, g x mod n 2 g y mod n Bob sceglie y Bob Alice calcola (g y mod n) x = g xy mod n Bob calcola (g x mod n) y = g xy mod n

Esempio n=47, g=3, x=8, y=10 Messaggio da Alice a Bob 3 8 mod 47=28 quindi (47,3,28) Messaggio da Bob ad Alice 3 10 mod 47=17 quindi (17) Chiave condivisa 17 8 mod 47= 28 10 mod 47 = 4

Scambio di chiavi di Diffie-Hellman Problema: come essere sicuri dell identità di chi manda il primo messaggio? Alice sceglie x 1 n, g, g x mod n Trudy sceglie z Bob sceglie y Alice 3 Trudy 2 n, g, g z mod n Bob g z mod n 4 g y mod n Attacco Man in the middle

Algoritmi a chiave pubblica Problema degli algoritmi a chiave segreta: distribuzione e sicurezza delle chiavi Diffie e Hellman, dopo aver proposto l'algoritmo visto in precedenza, nel 1976 proposero un metodo di cifratura nuovo in cui chiave di codifica e di decodifica sono differenti Non possono essere derivate l una dall altra

Nel mondo reale Distribuisco un lucchetto uguale in ogni ufficio postale, di cui solo io ho la chiave Chi vuole spedirmi un messaggio segreto va con il suo scrigno in un ufficio e prende uno dei miei lucchetti e chiude lo scrigno Quando mi arriva lo scrigno prendo la mia chiave e lo apro Con i lucchetti non è realistico...

L algoritmo RSA Inventato nel 1978 da Rivest, Shamir, Adleman Utilizza l aritmetica modulare Si fonda sul fatto che sia estremamente difficile fattorizzare numeri molto grossi (l esperienza accumulata dai matematici ha dimostrato che è così) RSA (Rivest, Shamir, Adleman)

L algoritmo RSA Funzionamento Scegliere 2 grandi numeri primi p e q (>10 100 ) Calcolare n = p q e z = (p-1) (q-1) Scegliere un numero primo rispetto a z e chiamarlo d Trovare e tale che (e d) mod z = 1 (e,n) chiave pubblica e (d,n) chiave privata

L algoritmo RSA Il messaggio P viene scomposto in blocchi Pi tali che 0 P i n Per ogni blocco Ci = P i e (mod n) Per decodificare Pi = C i d (mod n) La difficoltà sta nell impossibilità di scomporre n nei numeri p e q di cui è il prodotto

L algoritmo RSA: esempio p=3, q=11 n=33 z=20 d=7 e=3 Plaintext (P) Ciphertext (C) After decryption Symbolic Numeric P 3 3 P (mod 33) C 7 7 C (mod 33) Symbolic S U Z A N N E 19 21 26 01 14 14 05 6859 9261 17576 1 2744 2744 125 28 21 20 1 5 5 26 13492928512 1801088541 1280000000 1 78125 78125 8031810176 19 21 26 1 14 14 5 S U Z A N N E Sender's computation Receiver's computation

L algoritmo RSA Con p e q dell ordine di 10100 è possibile avere blocchi di 664 bit, quindi 83 caratteri da 8 bit, contro gli 8 del DES Con 200 cifre 4000000000 di anni a forza bruta RSA è molto più lento di algoritmi a chiave privata come AES, quindi nella realtà vengono usati sistemi ibridi, nei quali RSA viene usato per scambiare la chiave di sessione e AES o analoghi per la cifratura successiva

Esempio di numero con 640 bit RSA-640 = 31074182404900437213507500358885679300373460228427275457 20161948823206440518081504556346829671723286782437916272 83803341547107310850191954852900733772482278352574238645 4014691736602477652346609 RSA-640 = 16347336458092538484431338838650908598417836700330923121 81110852389333100104508151212118167511579 19008712816648221131268515739354139754718967899685154936 66638539088027103802104498957191261465571

RSA per la cifratura Bob crea una copia chiave privata chiave pubblica e distribuisce la sua chiave pubblica sulla rete Alice cifra il messaggio con la chiave pubblica di Bob Alice spedisce il messaggio cifrato a Bob, che è l'unico che lo può leggere perché solo lui ha la chiave privata che permette la decodifica

RSA per la firma Alice crea una copia chiave privata chiave pubblica e distribuisce la sua chiave pubblica sulla rete Alice firma il messaggio cifrandolo con la sua chiave privata (o allegandogli un digest codificato con la sua chiave privata) e lo spedisce a Bob Bob usa la chiave pubblica di Alice per decodificare il messaggio e verificare l'dentità di Alice, che è garantita poiché è l'unica a poter creare il messaggio

RSA per cifratura e firma Si combinano i due passaggi precedenti Alice firma il messaggio con la sua chiave privata, poi con la chiave pubblica di Bob e poi lo spedisce Bob prima decodifica il messaggio con la propria chiave privata e successivamente ne verifica il mittente usando la chiave pubblica di Alice

Come si trovano numeri primi grandi Magari non è evidente, ma trovare numeri primi grandi non è banale... È vero che sono infiniti, ma più diventano grandi più sono sparsi Inoltre bisognerebbe scegliere primi sempre diversi, quindi bisogna produrli ogni volta

Algoritmo di Miller-Rabin Come altri algoritmi di questo tipo non è deterministico Si basa sulla verifica di alcune proprietà che un primo deve soddisfare Purtroppo anche alcuni numeri, detti pseudoprimi, soddisfano queste proprietà.

Algoritmo di Miller-Rabin Se si vuole verificare se N è primo, si sceglie un numero a e si verificano alcune proprietà. Se queste proprietà risultano soddisfatte allora N è probabilmente primo, altrimenti è sicuramente composto La probabilità che un numero composto passi il test per a è ¼ (nel peggiore dei casi) Basta ripetere il procedimento per diversi valori di a per ottenere una probabilità grande a piacere di aver trovato un numero primo