lunedì 20 giugno 2016

Usare OpenSSL da Delphi

Per chi ha fretta

Su bitbucket (principale) o github (copia) è possibile scaricare una libreria Delphi che consente di usare alcune funzioni crittografiche di OpenSSL.

Introduzione

Nei mesi scorsi mi è capitato di dover cifrare dei messaggi tramite un algoritmo a chiave pubblica, in particolare RSA. Inizialmente, vista anche l'esegua mole di dati, abbiamo scelto di lanciare da linea di comando OpenSSL. Ovviamente non eravamo particolarmente soddisfatti della soluzione e appena abbiamo trovato un po' di tempo abbiamo creato una piccola collezione di classi attorno a libeay32, la libreria che espone tutte le API di OpenSSL.


openssl1.png

Funzionalità

Le funzionalità al momento si riducono alla cifratura con RSA (quindi a chiave pubblica) e con AES (chiave simmetrica). Visto che il progetto era nato chiamando OpenSSL attraverso la linea di comando anche le classi sono state modellate seguendo le funzionalità offerte da OpenSSL.EXE. In particolare l'area OpenSSL RSA è implementata dalla classe TRSAUtil, mentre l'area OpenSSL ENC da TEncUtil.


Le idee per il futuro sono diverse, innanzitutto togliere le dipendenze dai componenti Indy, infatti al momento, uso le unit IdSSLOpenSSLHeaders e IdSSLOpenSSL che contengono alcune dichiarazioni necessarie (prototipi, record, costanti, ecc). Poi implementare le restanti funzioni di RSA, in particolare firma e verifica della firma. Inoltre aggiungere altri algoritmi di cifratura a chiave simmetrica.

Licenza di Delphi-OpenSSL

Delphi-OpenSSL è distribuita secondo i termini della Apache License che consente di usare il software senza restrizioni di sorta, di distribuirlo, modificarlo e di distribuire versioni modificate del software.


La Licenza Apache NON richiede che versioni modificate del software siano distribuite secondo i termini della stessa licenza o come software libero ma solo che si includa un'informativa del fatto che si è utilizzato software licenziato secondo i termini della Licenza Apache.

Licenza di OpenSSL

Dovete tenere anche conto che per usare Delphi-OpenSSL sicuramente dovrete installare anche OpenSSL stesso. La licenza è un po' particolare ma fondamentalmente potete farci quello che volete a patto che includiate da qualche parte questa dicitura: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit".


Leggetevi bene anche il README.txt compreso nella distribuzione di OpenSSL perché in alcuni paesi, per esempio gli Stati Uniti, ci sono delle restrizione sull'esportazione di tecnologie crittografiche.

Luca Minuti