Axino: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Jelfed (discussione | contributi)
+portale
Riga 30:
<references />
 
=== RSA (Rivest, Shamir, Adleman) ===
{{particelle}}
Proposto nel 1977 dai suoi tre ideatori a cui venne dato il nome dell’algoritmo. L'idea di base è che la fattorizzazione di numeri grandi (con più di 100 cifre decimali) nell'algebra modulare è estremamente difficile.
 
Ecco come vengono generate le due chiavi:
 
# Bob sceglie '''due numeri primi grandi p e q e calcola n = p · q'''. n è il modulo.
# Bob calcola il prodotto '''z = (p − 1)·(q − 1)''' e sceglie e primo rispetto a z ovvero tale che '''MCD(z, e) = 1'''
# Bob calcola  d, il '''moltiplicativo inverso modulo z''' per cui ('''d · e ≡ 1(mod z)''').
# Bob '''rende noti e ed n che costituiscono la chiave pubblica''', mentre tiene '''segreti d, p e q''' (e di conseguenza z).
 
Esempio funzionamento algoritmo RSA con calcoli
 
'''p = 97'''
 
'''q = 19'''
 
'''n''' = p * q = 97 * 19 = '''1843'''
 
'''z''' = (p-1) * (q-1) = 96 * 18 = '''1728'''
 
Sceglie e tale che MCD(e,z) = 1 --> '''e = 23'''
 
Calcolo di d tale che d*e = risultato sarà 1 (con mod z) --> '''d = 1127'''
 
1127 * 23 = 25921 mod 1728 = 1
 
'''Kpub Bob (e = 23, n = 1843), Kprv Bob (d = 1127, n = 1843)'''
 
Se Alice vuole '''cifrare 118''' e spedirlo a Bob '''prendo 118 lo elevo alla chiave pubblica''' (e) 23 e faccio il modulo
 
'''118^23 mod 1843 = 1784'''
 
'''Mando a Bob 1784''' che poi '''eleva alla sua Kpr''' col modulo comune
 
'''1784^1127 mod 1843 = 118'''
 
=== Discrete Log Problem (fatto in laboratorio) ===
Collegato con lo schema di alice e Bob dove anche se un attaccante può osservare i valori pubblici g^a e g^b (dove a e b sono le chiavi private di Alice e Bob rispettivamente), risolvere il logaritmo per trovare a o b è un compito estremamente difficile, grazie alla complessità computazionale che cresce esponenzialmente con la dimensione del modulo p. Modulo = %
 
Funzione = '''g<sup>x</sup> % p'''
 
dove '''g''' e '''p''' vengono scelte dagli utenti in comune
 
'''x''' viene scelta privatamente da ogni utente
 
Ci si scambiano i risultati ottenuti e poi per invertire per capire la chiave dell'altro si fa: '''risAltroUtente<sup>x</sup> % p = Key Privata Tra Utenti'''
 
'''Comandi linux'''
 
'''Cifratura'''
 
openssl enc '''-aes-128-cbc''' -pbkdf2 -in plain.txt -kfile pass_file -out cipher.txt
 
'''Decifratura'''
 
openssl enc '''-aes-128-cbc''' -d -in cipher.txt -out plain.txt -kfile pass_file -pbkdf2
 
'''Per generare una coppia di chiavi rsa:'''
 
openssl genrsa -out chiave.privata [1024 | 2048]
 
'''Per cifrare il file plaintex con key.pub:'''
 
openssl pkeyutl -encrypt -pubin -inkey key.pub -in plaintext > mess.cif
 
'''Per decifrare il file mess.cif con key.pri e ottenere mess.decif'''
 
openssl pkeyutl -decrypt -inkey key.pri -in mess.cif -out mess.decif
 
'''Estraggo la chiave pubblica dal certificato'''
 
openssl x509 -pubkey -noout -in cert_mittente.crt > pubK
 
'''Per "firmare un documento" usare l'opzione -sign:'''
 
openssl dgst -sha256 -sign key.pri -out firmaDoc NomeDoc
 
'''Per verificare la validità del documento:'''
 
openssl dgst -sha256 -verify key.pub -signature firmaDoc NomeDoc{{particelle}}
{{Controllo di autorità}}
{{portale|fisica}}