Archivio mensile:Febbraio 2019

Curve Ellittiche in pratica

Ciao,

di seguito un semplice esempio di come utilizzare le curve ellittiche tramite il classico strumento openssl e i nostri classici amici Alice e Bob.

Alice e Bob generano le proprie chiavi pubbliche e private ti tipo ellittico


Creazione Chiavi


Alice:

openssl genpkey -algorithm  X25519 -out alice_privkey.pem
openssl pkey -in alice_privkey.pem -pubout -out alice_pubkey.pem

Bob:

openssl genpkey -algorithm  X25519 -out bob_privkey.pem
openssl pkey -in bob_privkey.pem -pubout -out bob_pubkey.pem

Cifra


Alice:

Alice genera una chiave EC temporanea e ne deriva un segreto usando la chiave pubblica di Bob

openssl genpkey -algorithm X25519 -out temp_privkey.pem
openssl pkeyutl -derive -inkey temp_privkey.pem -peerkey bob_pubkey.pem | base64 -w0 > secret.txt

(Attenzione, openssl tratta i dati da console come stringhe. Per evitare problemi di 0x00 presenti nella chiave, la convertiamo in base64)

Alice cifra il file per Bob con il segreto ottenuto
openssl enc -aes-256-cbc -in Testo.txt -out Testo.txt.enc -pass file:secret.txt

Alice genera la parte pubblica della chiave temporanea dalla quale Bob otterrà il segreto

openssl ecparam -in temp_privkey.pem -pubout -out temp_pubkey.pem

Alice invia a Bob il file cifrato Testo.txt.enc e la chiave pubblica temp_pubkey.pem

Decifra


Bob:

Bob usa la sua chiave privata ” bob_privkey.pem ” e la chiave pubblica ricevuta ” temp_pubkey.pem ” per derivare il segreto

openssh pkeyutl -derive -inkey bob_privkey.pem -peerkey temp_pubkey.pem | base64 -w0 > secret.txt

Bob decifra il testo cifrato

openssl enc -d -aes-256-cbc -in Testo.txt.enc -out Testo.txt -pass file:secret.txt