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