La maggior parte degli esempi di utilizzo delle librerie OpenSSL per la cifratura simmetrica agisce su buffer (a volte caricando interi files in memoria prima di processarli).
Si tratta di una semplificazione ragionevole se si ha l'obiettivo di tenere gli esempi minimali. I tool presentati in questa pagina cercano di fare un piccolo passo oltre, mostrando come approcciare il problema di gestire tramite OpenSSL file di grandezza arbitraria.
I tool forniti sono:
- ccaKeyGen, indicato un algoritmo di cifratura simmetrica C, genera una chiave random k di dimensioni adeguate
- ccaEncrypt, indicato un file pt (plaintext), un algoritmo di cifratura simmetrica C, una chiave k (generata con ccaKeyGen per C), e un algoritmo di hashing md, produce un file ct (ciphertext) che è ct = C(pt,k)||HMAC(C(pt,k),md)
- ccaDecrypt, indicato un file ct (ciphertext)
ottenuto con ccaEncrypt, una chiave k adeguata,
e un algoritmo di hashing md,
- calcola HMAC(C(pt,k),md) dove C(pt,k) è la prima parte del ciphtertext ct
- se il valore calcolato corrisponde con l'HMAC riportato in coda a ct, considera il file autentico e quindi procede con la decifratura, altrimenti segnala l'errore
Codice sorgente disponibile per il download:
archivio codice sorgente