Anteprima
Vedrai una selezione di 10 pagine su 293
Informatica medica Pag. 1 Informatica medica Pag. 2
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 6
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 11
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 16
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 21
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 26
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 31
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 36
Anteprima di 10 pagg. su 293.
Scarica il documento per vederlo tutto.
Informatica medica Pag. 41
1 su 293
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Algoritmo RSA

RSA è un algoritmo di crittografia asimmetrica ampiamente utilizzato per garantire la sicurezza delle comunicazioni. La sua forza risiede nel fatto che è estremamente difficile decifrare un messaggio senza conoscere la chiave privata corrispondente.

Un esperimento del 1994 ha impiegato 8 mesi per rompere una chiave RSA a 128 bit. Attualmente, è possibile utilizzare chiavi RSA lunghe fino a 2048 bit. L'algoritmo RSA sfrutta il fatto che è facile calcolare il prodotto di due numeri primi grandi, ma è estremamente difficile trovare i fattori primi di un numero dato.

La generazione delle chiavi RSA avviene nel seguente modo: si scelgono due numeri primi p e q, si calcola il loro prodotto N=pq e si determina un intero e che rappresenta la chiave pubblica K (N, e). Insieme a e, viene determinato anche il

Il numero intero 'd', e quindi la chiave segreta K, è costituita dalla coppia di questi numeri interi (N, d). Ovviamente d ed e sono interi ottenuti attraverso operazioni su p e q difficili da invertire, ciò è fondamentale perché se da N ed e si riuscisse a tornare indietro e trovare p e q, poi sarebbe possibile trovare anche d che è lancia cosa effettivamente segreta della chiave segreta. Quindi anche conoscendo la chiave pubblica K = (N, e) è estremamente difficile ottenere p e q, quindi d, quindi la chiave segreta K = (N, d).

Vediamo ora la generazione delle chiavi in RSA:

  • si scelgono p e q primi molti elevati (per esempio p=5 e q=11);
  • si calcola N che è il prodotto (p*q=55);
  • si calcola z come z = (p-1)*(q-1) (per noi sarà 40);
  • scegliere un intero e<N tale che e sia primo rispetto a z (ovvero che non abbia fattori in comune né con (p-1) né con (q-1)) (per esempio consideriamo e=13 nel nostro esempio);

determinare il più piccolo numero intero d tale che il resto intero della divisione tra e*d e z sia 1 (per esempio d=37 nel nostro caso);- a questo punto abbiamo tutto e possiamo formare le chiavi K =(N, e) e K = (N,d) e distruggere pp se q perché altrimenti si può ritrovare la parte segreta della chiave segreta (nel nostro esempio K =(55,13), K =(55,37))s sQuindi la generazione delle chiavi è piuttosto semplice, solo che p e q sono grandissimi quindi difatto è complicato. Ma la Prendiamo il messaggio e lo dividiamo in blocchi dacifratura in RSA?di k bit, ma è importante che 2 <N (facciamo l’esempio con la chiave pubblica di primak(N,e)=(55,13), fingiamo è nota a tutti, anche a Fabrizio che vuole inviare a Bruno un messaggio).Fingiamo che il testo del messaggio sia ‘CIAO’: il messaggio che Fabrizio vuole inviare a Bruno hacome codifica ASCII (67,73, 65, 79), che in binario (8 bit per simbolo), corrisponde la

sequenza:
01000011 01001001 01000001 01001111, e quindi questa è la striscia binaria che corrisponde al testo in chiaro. Vediamo i vari passaggi da compiere ora:
- La prima cosa da fare è dividere questa striscia binaria in blocchi di k bit, tale che 2 N e il nostro N è 55, per esempio k=4. Ecco che quindi dividiamo e lavoriamo in blocchi da 4 bit, quindi vediamo che la striscia con evidenziati i blocchi da 4 bit è: 0100 0011 0100 1001 01000001 0100 1111.
- Seconda cosa: Per ogni blocco da k bit, si calcola il valore numerico intero associato M. Siccome abbiamo blocchi da 4 bit, l'intero associabile è un intero tra 0 e 15 (sarà sicuramente M<= 2k-1, quindi M - Terzo passo: in questo passo usiamo la chiave pubblica (N, e). In particolare per ciascuno di questi valori associati ciascuno ad un blocco,

Facciamo M mod N, cioè facciamo l'elevamento alla 'e', e poi la divisione per 55 cioè N, e prendiamo il resto intero della divisione che sarà un numero intero tra 0 e 54 per i nostri valori. Quindi otterremo:

Quindi se volessimo portarli in binario quanti bit servono per ciascuno di questi numeri? Con 5 bit arrivo al numero 31, con 6 bit arrivo al numero 63 e quindi devo usare per forza 6 bit, 5 non sono sufficienti a riportare questi numeri decimali in binario. Perciò lo faccio in questo quarto passo, servono 6 bit e otteniamo: 50

Questa qui è, una volta rimessa assieme la sequenza cifrata finale, che parte dal computer di Fabrizio e arriva al computer di Bruno.

Quindi questo è quello che parte dal computer di Fabrizio e si potrà decifrare soltanto con la chiave segreta di Bruno. La chiave pubblica era K =(55,13), la chiave segreta era , K =(55,37) che vedremos sall'opera tra un attimo. L'ipotetico testo in ASCII

Che arriva a Bruno è questo, il metodo di criptazione introduce una certa ridondanza, per cui prima avevamo 32 bit, ora invece ne abbiamo 48. Quindi la striscia codificata in questo caso risulta lunga il 50% in più rispetto a quella in chiaro.

Vediamo ora come si effettua la decifratura, si usa la sola chiave segreta [N,d]. In particolare, si recupera la sequenza degli M applicando alla sequenza degli M’ l’operazione M’ mod N.

- Primo passo: continuiamo il nostro esempio, e Bruno sa la chiave segreta (N, d) = (55, 37) e poiché sono stati codificati resti della divisione per N=55, il sistema di Bruno sa di dover dividere la striscia binaria ricevuta:

Ora rimettiamo in blocchi di 8 bit quelli che ora sono da 4, passiamo al decimale, ed ecco che:

Quindi Bruno è riuscito a decriptare il testo sfruttando la sua chiave segreta. 51

Osservazioni:

  1. Da M’ non si può tornare indietro sfruttando

la chiave pubblica [N,e] (provare per credere)2. Ovviamente, si poteva anche usare la chiave privata [N,d] per chiudere e la chiave pubblica[N,e] per aprire, cioè intercambiare le chiavi, ma perché potrebbe essere utile? Chiunque puòavere la chiave pubblica, qual è il senso di fare una cosa del genere: a quel punto non si volevaproteggere la segretezza del messaggio, ma più che altro una volta che viene aperto il messaggio,si chiarisce chi aveva firmato il messaggio. Siccome il messaggio si apre con la chiave pubblica diFabrizio, evidenttmente è stato chiuso con la chiave segreta di Fabrizio che solo Fabrizio sa,perciò è una firma.

3. L’algoritmo è asimmetrico: un messaggio chiuso con una chiave può essere aperto solo dallachiave alter ego.

4. La privatezza (=solo Bruno può “aprire” il messaggio) è garantita.

Tuttavia:- chi garantisce a Bruno che a chiudere il messaggio con KpBruno sia

stato effettivamente Fabrizioe non Cobra (che può conoscere KpBruno, come tutti) ? (quindi come garantire l'identità delcioè come si fa a firmare il messaggio)mittente,- come si fa a garantire che Fabrizio non possa ripudiare il messaggio (ad es. dicendo: "Lo haspedito Cobra, non io") ? (non ripudiabilità degli impegni).Per garantire queste cose, si usa la variante della crittografia asimmetrica usando duePer la si procede cosi: gli interlocutori si scambiano la propria chiave pubblica,chiavi. codificaFabrizio cifra il messaggio che deve spedire usando la sua chiave segreta e ciò serve a firmare ilmessaggio. Dopodiché sulla striscia di bit che è venuta fuori, che è già un messaggio criptato, fagirare da capo l'algoritmo simmetrico usando la chiave pubblica di Bruno. Il messaggio a questopunto parte, Bruno lo riceve e deve dovrà andare al contrario, cioè dovrà prima

faredecriptarlo:la sua chiave segreta (cioè la chiave alterato dell’ultima chiave usata per codificare), poi dovràrenderlo comprensibili decriptandolo con una passata dell’algoritmo asimmetrico, usando la chiavepubblica di Fabrizio. Lo schema è:Sul canale di comunicazione a rischio prima viaggiano le due chiavi pubbliche: Fabrizio cifra con lasua chiave segreta (e questa è la firma che garantirà l’identità del mittente e la non ripudiabilità);dopodiché usa la chiave pubblica di bruno, e manda M’. Una volta che Bruno riceve M’, primapassa con la chiave segreta, e poi con la chiave pubblica di Fabrizio, e cosi il messaggio è fruibile.Ecco che abbiamo garantito anche le due clausole di non ripudiabilità degli impegni e identità delmittente. 523. Crittografia mistaSiamo arrivati alla soluzione perfetta, l’unico problema è che però il prezzo da pagare

ècomputazionali: queste operazioni di crittografia asimmetrica sono pesantissime per il calcolatore, quindi è un migliaio di volte più lento rispetto ad un sistema simmetrico (RSA è 1000 volte più lentodel DES per esempio).

Come bypassare questo problema? Si usano tecniche di crittografiada utilizzare quando la lentezza della crittografia asimmetrica non è tollerabile. Per esempiomista,è la crittografia asimmetrica va bene per titolarci sul numero della carta di credito visto che il testoda cifrare è breve, non va bene per esempio per cifrare un referto clinico. Quindi si prendono gliaspetti vantaggiosi delle due tecniche e si fondono nella crittografia mista.

In parole povere, si utilizza il sistema (lento) asimmetrico solo per comunicare la chiave segreta (chein questi casi viene chiamata “chiave di sessione”). La chiave di sessione verrà poi usata per una normale comunicazione basata su cifrari a chiave simmetrica.

In questo modo si risolve il problema della sicurezza nello scambio della chiave segreta, mentre la velocità di cifratura/decifratura rimane molto alta e non penalizza la comunicazione. Riassumendo quindi, se Fabrizio deve inviare a Bruno un documento in modo sicuro e veloce: - Fabrizio stabilisce una "chiave di sessione", la cifra con RSA usando la chiave pubblica di Bruno (quindi solo Bruno la potrà interpretare) e gliela spedisce - Fabrizio cifra il documento con l'algoritmo a chiave segreta 3DES utilizzando la chiave di sessione di cui sopra e lo manda a Bruno - Bruno decifra la chiave di sessione con RSA usando la propria chiave privata - Bruno decripta il messaggio cifrato con 3DES utilizzando la chiave di sessione appena decifrata. 4. Il problema della firma digitale Vediamo intanto delle considerazioni dal punto di vista normativo: la firma digitale è un particolare tipo di firma elettronica basata su un sistema di chiavi asimmetriche a coppia che

consente altitolare e al destin

Dettagli
Publisher
A.A. 2022-2023
293 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher CarloCirillo di informazioni apprese con la frequenza delle lezioni di Informatica medica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Sparacino Giovanni.