Analisi di programmi: Crittografia



Похожие документы
Introduzione alla Crittografia

Informatica per la comunicazione" - lezione 13 -

Scambio delle chiavi. mercoledì 7 dicembre 2011

Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

un protocollo è costituito da una serie di passi (step) e coinvolge due o più persone (parti, entità) allo scopo di svolgere un incarico

Introduzione alla crittografia con OpenPGP

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

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

4 3 4 = 4 x x x 10 0 aaa

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

PRIMAVERA IN BICOCCA

Dispense di Informatica per l ITG Valadier

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

La Firma Digitale La sperimentazione nel Comune di Cuneo. Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo

Firma digitale Definizione

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Informazione analogica e digitale

INTRODUZIONE I CICLI DI BORSA

Certificati digitali con CAcert Un'autorità di certificazione no-profit

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

risulta (x) = 1 se x < 0.

Sicurezza digitale. requisiti: confidenzialità, integrità, autenticazione, autorizzazione, assicurazione, riservatezza. soddisfatti mediante

Crittografia. Appunti a cura del prof. Ing. Mario Catalano

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

1 Giochi a due, con informazione perfetta e somma zero

Calcolo del Valore Attuale Netto (VAN)

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it

Fondamenti di Informatica 2. Le operazioni binarie

Corso di ARCHITETTURA DEI SISTEMI INFORMATIVI - Prof. Crescenzio Gallo. 114 Sistemi informativi in rete e sicurezza 4.6

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Guida all uso di Java Diagrammi ER

CALCOLO COMBINATORIO

Elementi di Psicometria con Laboratorio di SPSS 1

Sicurezza a livello IP: IPsec e le reti private virtuali

La firma digitale CHE COSA E'?

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Le curve ellittiche sono un gioiello della matematica. Sono state studiate per secoli per la loro bellezza e importanza.

COMPITO DI MATEMATICA FINANZIARIA 8 Febbraio Come cambia il REA atteso se l'obbligazione sarà ancora in vita dopo le prime tre estrazioni?

Firma Digitale. dott. Andrea Mazzini

Analisi e diagramma di Pareto

Aspetti Crittografici nel Cloud Computing

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Capitolo 2. Operazione di limite

Codifica binaria dei numeri relativi

Internet i vostri figli vi spiano! La PAROLA-CHIAVE: cacao Stralci di laboratorio multimediale

Dimensione di uno Spazio vettoriale

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Le basi della Partita Doppia in parole Facile e comprensibile. Ovviamente gratis.

* Ricordati la BILANCIA Qualunque cosa facciamo ad un lato dell'equazione (piatto della bilancia), dobbiamo farlo anche per l'altro lato.

Convertitori numerici in Excel

Basi di dati 9 febbraio 2010 Compito A

PROGETTO LAUREE SCIENTIFICHE -MATEMATICA 2006/2007 Modelli Matematici per la Società Incontro del

A me è piaciuto molto il lavoro in aula computer perché era a coppie e poi ho potuto imparare ad usare il computer. Anche il

Misure di base su una carta. Calcoli di distanze

Gestione della memoria centrale

Vendere online. Andrea Marin. Università Ca Foscari Venezia SVILUPPO INTERCULTURALE DEI SISTEMI TURISTICI SISTEMI INFORMATIVI PER IL TURISMO

ESEMPIO 1: eseguire il complemento a 10 di 765

Esempi di algoritmi. Lezione III

Mac Application Manager 1.3 (SOLO PER TIGER)

Sicurezza nelle applicazioni multimediali: lezione 7, sicurezza dei protocolli. Sicurezza dei protocolli (https, pop3s, imaps, esmtp )

4. Operazioni aritmetiche con i numeri binari

UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA

RETI DI CALCOLATORI. Crittografia. La crittografia

SISTEMI DI NUMERAZIONE E CODICI

Matematica generale CTF

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

DOCUMENTO ELETTRONICO E FIRMA DIGITALE

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Elementi di Psicometria con Laboratorio di SPSS 1

Firma digitale e PEC: facili e sicure

FIRMA DIGITALE Cos'è e come funziona

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Rapporto sul tirocinio del 01/04 al 30/06. Al Università di Udine DUT. Dall IUT A di Lille 1

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Algoritmi e strutture dati. Codici di Huffman

Sicurezza nei Sistemi Distribuiti

Sicurezza nei Sistemi Distribuiti

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Alessandro Pellegrini

PLIDA Progetto Lingua Italiana Dante Alighieri Certificazione di competenza in lingua italiana

Metodi Stocastici per la Finanza

Calcolare i Rendimenti di Titoli Obbligazionari a tasso fisso con flusso cedolare costante (tipo BTP)

Determinare la grandezza della sottorete

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Marketing Vincente

Express Import system

e-government La Posta Elettronica Certificata

Транскрипт:

Analisi di programmi: Crittografia Come caso concreto di sistema, proviamo ad abbozzare e a vedere una prima implementazione di un sistema di crittografia a chiave pubblica La crittografia studia le tecniche per nascondere l informazione Tecniche di crittografia sono molto usate per la sicurezza di transazioni bancarie, e-commerce, firme digitali Crittografia Un sistema crittografico si compone di due parti: una codifica (o cifratura) e una decodifica (o decifratura) Messaggio in chiaro Cifratura Messaggio criptato Chiave Messaggio criptato Decifratura Messaggio in chiaro Chiave 1

Crittografia simmetrica Quando si usa un'unica chiave sia per proteggere il messaggio che per renderlo nuovamente leggibile, si parla di crittografia simmetrica Fino a pochi anni fa l'unico metodo crittografico esistente era quello della crittografia simmetrica Il problema è portare in giro la chiave senza che venga scoperta Crittografia Macchina per crittografia Enigma, usata dai militari tedeschi nella seconda guerra mondiale Gli alleati, in particolare gli Inglesi, studiarono a lungo il modo di crackare il codice dei Tedeschi e ci riuscirono 2

Crittografia a chiave pubblica Il problema della crittografia simmetrica sta nella gestione delle chiavi: Come faccio a trasmettere la chiave in maniera sicura? Sarebbe bello avere un sistema che permette la codifica dei messaggi con una chiave e la decodifica con una chiave completamente diversa Crittografia a chiave pubblica Nel 1978, Ronald Rivest, Adi Shamir, and Len Adleman inventarono la crittografia RSA La crittografia RSA ha una coppia di chiavi: una chiave pubblica e una privata A e B vogliono comunicare segretamente A genera la coppia di chiavi, tiene per sè quella privata e manda a B quella pubblica B critta il messaggio con la chiave pubblica e lo manda a A. La chiave non importa che sia pubblica: serve solo a crittografare i messaggi A è in grado di decodificare il messaggio con la sua chiave privata 3

RSA: la teoria RSA è basato sulla fattorizzazione in numeri primi si scelgono a caso due numeri primi, p e q, l'uno indipendentemente dall'altro, abbastanza grandi da garantire la sicurezza dell'algoritmo si calcola il loro prodotto n = pq, chiamato modulo (dato che tutta l'aritmetica seguente è modulo n) si calcola poi m = (p - 1) (q - 1) Si seleziona anche un numero e tale che MCD(e,m)=1 La chiave pubblica è la coppia di numeri (n,e) Chiunque voglia mandarci un messaggio s, lo crittograferà utilizzando la seguente trasformazione S = (s e ) modulo n RSA: la teoria Vediamo la parte della chiave privata Se ricevo un messaggio S, lo decodificherò usando la seguente trasformazione RSA, usando la coppia di numeri (n,d) s = (S d ) modulo n Il numero d viene scelto in modo che s = s s = (s e ) d modulo n E si può verificare avviene se de = 1 modulo m (n, d) è la chiave privata 4

RSA: la teoria Quindi una volta che ho calcolato questi numeri, la coppia (n, e) sarà la chiave pubblica, mentre (n, d) sarà la chiave privata La sicurezza del metodo RSA si basa sul fatto che anche se uno conosce la chiave pubblica (n, e), il metodo per ottenere d, è quello di fattorizzare n per trovare i numeri p e q e trovare così gli altri numeri Quindi crackare un codice RSA è difficile almeno quanto fattorizzare n nei sui primi p e q Quando p e q sono numeri di 300 cifre, questo richiede un secolo di tempo macchina del più veloce supercomputer RSA: implementazione Il cuore del metodo è il calcolo (s e ) modulo n (define (expmod b e m) ;; simile all esponenziazione vista (cond ((zero? e) 1) ;; a lezione ma consiederando il modulo ((even? e) (modulo (square (expmod b (/ e 2) m)) m)) (else (modulo (* b (expmod b (- e 1) m)) m)))) Data abstraction per il tipo di dato chiave (define make-key cons) (define key-modulus car) (define key-exponent cdr) ;; il costruttore ;; i selettori (define (RSA-transform number key) ;; il cuore del metodo RSA (expmod number (key-exponent key) (key-modulus key))) 5

RSA: implementazione Una coppia di chiavi RSA, consiste in una chiave pubblica ed una privata (define make-key-pair cons) (define key-pair-public car) ;; i selettori (define key-pair-private cdr) ;; il costruttore (define (generate-rsa-key-pair) ;; implementazione della generazione della coppia di chiavi ) RSA: implementazione Il metodo RSA è pensato per trasformare numeri Noi abbiamo bisogno di spedire messaggi di testo Possiamo pensare si usare come predefinite due funzioni string->intlist e intlist->string che trasformano rispettivamente stringhe di testo in liste di numeri e liste di numeri in stringhe (string->intlist "questo e' un messaggio") (242842353 212350964 232607783 242841248 217706739 67647465) (intlist->string '(242842353 212350964 232607783 242841248 217706739 67647465)) "questo e' un messaggio 6

RSA: implementazione Una volta cha abbiamo questa lista di numeri, li codifichiamo / decodifichiamo con la trasformazione RSA RSA-transform Nei metodi reali si sceglie di codificare il primo numero della lista, sommarlo al secondo, codificare la somma, sommare il risultato al terzo numero ecc (define (RSA-convert-list intlist key) ) (define (RSA-unconvert-list intlist key) ) RSA: implementazione Vediamo le funzioni generali per usare la crittografia RSA Notiamo che tutto il metodo trasforma numeri, mentre noi dobbiamo trattare messaggi di testo (define (RSA-encrypt string key1) (RSA-convert-list (string->intlist string) key1)) (define (RSA-decrypt intlist key2) (intlist->string (RSA-unconvert-list intlist key2))) 7

RSA: test Proviamo ad usare il sistema Es. Sarkozy spedisce messaggi a Carla, con la chiave pubblica di Carla (define sarkozy-rsa-key (generate-rsa-key-pair)) (define carla-rsa-key (generate-rsa-key-pair)) (define cecilia-rsa-key (generate-rsa-key-pair)) (key-pair-public sarkozy-rsa-key) (478995823. 37981609) (key-pair-private sarkozy-rsa-key) (478995823. 213019289) (key-pair-public carla-rsa-key) (530019449. 364979005) (key-pair-private carla-rsa-key) (530019449. 421224373) (RSA-encrypt "Amo Carla Bruni" (key-pair-public carla-rsa-key)) (28522895 337295473 59556703 410503941) (RSA-decrypt '(28522895 337295473 59556703 410503941) (key-pair-private carla-rsa-key)) "Amo Carla Bruni (crack-rsa (key-pair-public carla-rsa-key)) ;; Cecilia cracka la chiave di Carla (530019449. 421224373) 8