Funzioni "a senso unico"


Nell'espressione b = ma (a, b e m interi positivi, m > 1), supponiamo di conoscere b e a, come facciamo a ricavare m?

Per esempio: m7 = 2187

In qualche modo m è una radice, non quadrata, ma "settima" di 2187..... Certo m8 = 6561 sarebbe stato più facile perchè m8 =(m4 )2, quindi m4 è la radice quadrata di 6561 cioè 81, poi m4 =(m2 )2, quindi m2 è la radice quadrata di 81, cioè 9 e finalmente m=3.

Teoricamente la risposta è facile. La funzione esponenziale, expm , è la funzione che al numero a associa ma  (expm(a)= ma). La funzione inversa è il logaritmo logm(expm(a))=logm(ma) = a . Quindi m è quel numero tale che logm(2187)=7.

(Questo non ci aiuta molto a calcolare m ma serve a spiegare la terminologia successiva)

Nell'esempio: 37=2187 e se avete una piccola calcolatrice tascabile potete verificare che log3(2187) = ln(2187)/ln(3) = 7 (qui ln(x) indica il logaritmo "usuale", quello appunto che si trova sulle calcolatrici tascabili e che, forse, conoscete già).

FATTO 1: Il fatto è che conoscendo b e a è comunque difficile (anche con un computer se i numeri sono abbastanza grandi) ricavare m dall'espressione b = ma (questo si chiama il problema del "logaritmo inverso").

La cosa però non deve essere completamente impossibile, altrimenti il ricevente non riuscirà a decifrare il messaggio...

Infatti c'è una situazione nella quale, con una piccola informazione supplementare (la chiave privata) si riesce a calcolare il logaritmo. Per questo però bisogna usare le congruenze (o "numeri dell'orologio") e i numeri primi. In caso di bisogno potete consultare il link congruenze (o "numeri dell'orologio")e il link  numeri primi.

Siano adesso p e q  due numeri primi molto grandi e poniamo n = pq.

Il problema diventa: sia b = ma (mod n), conoscendo b e a, determinare m  (possiamo assumere m < n)

C'è una circonstanza in cui questo è fattibile ed è quando a   non ha divisori comuni (tranne 1) con p-1 e con q-1                                             (si indica questa situazione con (a, p-1)=1=(a, q-1) e si dice che a e p-1 (risp. a e q-1) sono primi tra di loro)

In questo caso si procede così:

Chi è curioso di vedere perchè bd= m (mod n) può cliccare qui.

Adesso abbiamo tutto quello che ci serve...avanti02.gif (9574 bytes)

fleche_retour.gif (1377 bytes)