Rsa -gauss jordan

Post on 06-Jul-2015

110 views 2 download

description

Presentation of Gauss jordan algoritm, and RSA algorithm

Transcript of Rsa -gauss jordan

A.A. 2013-14

Franco Alberti, Valeria Dotti, Luisa Lovisetti,

Ester Mancini, Chiara Tognassi

ALGORITMOConsiderando la base canonica {ei}i di Rn ogni matrice invertibile risolve il sistema:

Ax=ei per ogni i= 1,…….,n

Quindi raggruppando gli n sistemi si ricava l’espressione:

AX=I dove X=A-1 (1)

Effettuando delle combinazioni lineari sulle equazioni del sistema (1) siricava:

DX=B dove D è una matrice diagonale (2)

Su questa proprietà si fonda l’algoritmo di Gauss-Jordan, applicando lecombinazioni che permettono di passare dal sistema (1) al sistema (2).

Per applicare queste combinazioni affianchiamo alla matrice A una matriceidentica I della stessa dimensione di A e otteniamo:

[A|I]n x 2n

Adesso su questa matrice rettangolare svolgiamo essenzialmente 3 passaggi:

1. Applicare l’eliminazione di Gauss e ricavare una matrice a scala superiore;

2. Moltiplicare ogni riga della matrice per l’elemento sulla diagonale di A;

3. Riapplicare l’eliminazione di Gauss per rendere la matrice di sinistra ugualealla matrice identica annullando gli elementi rimanenti sopra la diagonale.

Applicando questi passaggi la matrice I che avevamo affiancato allamatrice A diventa la matrice A-1 .

Ora mostriamo come abbiamo riportato questo algoritmo in linguaggioSmallTalk.

Pharo3.0

La crittografia è la scrittura di un testo in modo tale che lepersone estranee al codice non possano comprenderlo, ma illettore desiderato sia in grado di decifrarlo per leggere ilmessaggio contenuto in esso.

In tempi di guerra, ad esempio, è essenziale che il nemico nonsappia cosa voi e i vostri alleati stiate tramando, perché vincere operdere una guerra può dipendere dalla segretezza delleoperazioni belliche e dalle strategie, atte a sorprendere il nemicoquando meno se lo aspetta.

Sistemi crittografici antecedenti a RSA

La codifica e la decodifica dovevano conoscere il metodo dicrittografia e la chiave per decifrare il messaggio;

Le chiavi erano simmetriche.

Nel 1977 si arrivò alla formalizzazione di un nuovoalgoritmo, chiamato RSA, dalle iniziali di Rivest, Shamir eAdleman.

Elementi di baseSfrutta la difficoltà di fattorizzare un numero n molto

grande;

Chiave asimmetrica (pubblica e privata);

Teorema di Eulero;

Piccolo teorema di Fermat.

Supponiamo che Alice voglia mandare un messaggio a Bob eimpedire a Colin di sapere ciò che dice. Per farlo, utilizzando ilsistema crittografico RSA, Bob deve innanzi tutto produrre unachiave secondo la seguente ricetta:

Funzionamento

Generazione di una chiave RSA

1. Si producono due primi p e q in modo che:

a. p e q abbiano lo stesso numero di cifre;

b. p e q siano “random”.

2. Si calcola n=pq e j(n)=(p-1)(q-1)=n-p-q+1.

3. Si sceglie un numero e coprimo con j(n) e più piccolo di j(n).

4. Si calcola d tale che ed=1 mod(j(n)).

5. Si trasmette la chiave pubblica e e si conserva la chiave privatad.

Nella pratica oggi si usano p, q dell’ordine di 10150, in modo taleche n=pq sia un numero a 1024 bit.

Il numero e si chiama esponente di codifica (o cifratura) mentreil numero d si chiama esponente di decodifica (o decifratura).

Notiamo che, una volta creata, la chiave RSA può essereutilizzata indeterminatamente. Il suo utilizzo continuato di persé non la svela.

Per mandare il messaggio a Bob, Alice rappresenterà il suomessaggio attraverso un numero P (testo in chiaro) multiplo din e lo cifrerà secondo la seguente regola:

Cifratura del messaggio

Ee,n(p)=pemod(n)

E si chiama funzione di cifratura (o codifica, o crittatura).c=E(p) si chiama testo cifrato.

Il testo cifrato viene trasmesso da Alice a Bob, il quale lo decifrasecondo la seguente regola:

Decifratura del messaggio

Dd,n(c)=cdmod(n).

La funzione D si chiama funzione di decifratura (o decodifica, odecrittatura).

Tempi necessari a svolgere le tre operazioni:

Generazione della chiave;

Cifratura;

Decifratura.

Per quanto riguarda le ultime due operazioni è dell’ordine diO(log3n).

Un risultato simile si ottiene per la generazione della chiave.

Pur trattandosi di tempi polinomiali, essi rispecchiano ilmaggiore inconveniente di RSA. Si tratta di un sistema lento,poco adatto a cifrare messaggi lunghi.

Assumiamo ora il punto di vista di Colin. Per sapere il contenuto del messaggio (cioè calcolare il valore di P), Colin deve risolvere l’equazione di congruenza:

Xe=c mod(n)

I valori di e, n, c sono infatti pubblici.

Colin potrebbe:

Fattorizzare n;

Calcolare j(n);

Calcolare d=e mod(j(n));

Decifrare proprio come farebbe Bob.

Attacchi all’RSA

•Common Modulus

•Blinding

Common Modulus

Fissiamo n una volta per tutte, che verrà utilizzato da tutti gliutenti. L’utente 1 (Alice) avrà una coppia unica e₁, d₁ dallaquale ricaverà una chiave pubblica (n,e₁) e una chiave segreta(n,d₁).

Common Modulus

Tuttavia, questo non è vero e il sistema risultante non èsicuro. Infatti, Bob può utilizzare i suoi valori e₂ e d₂ perfattorizzare il modulo n. Dopodiché Bob può ricavare la

chiave privata di Alice dalla sua chiave pubblica.

Siano d la chiave privata di Bob ed e la sua corrispondentechiave pubblica. Supponiamo che un antagonista (Colin)voglia la firma di Bob su un messaggio M. Dal momento chenon è uno sprovveduto, Bob si rifiuta di firmarlo.

Colin può allora fare questo tentativo: prende un numerorandom r e pone M’=reM mod(n). Dopodiché chiede a Bobdi firmare il messaggio M’.

Blinding

Bob potrebbe essere convinto ad apporre la sua firma S’,fidandosi dell’aspetto innocuo di M’.

Ma S’=(M’)dmod(n). A Colin basterà quindi calcolareS=(S’/r)mod(n) per ottenere la firma S di Bob sull’originaleM e cioè (dopo alcuni calcoli) Se=M mod(n).

Blinding