Reading Time: 5 minutes

Difetti di SSL

SSL è un algoritmo general-purpose per la protezione delle connessioni di rete. Abbiamo visto i rischi collegati ad SSL che bisogna evitare. Qui, vedremo le funzioni che gli utenti vorrebbero che il protocollo SSL faccia, anche se non le svolge davvero bene (o non le fa affatto!).

Altri protocolli di livello di trasporto

SSL funziona bene con TCP/IP. Tuttavia, non funziona affatto con i protocolli del livello di trasporto che non sono orientati alla connessione, come UDP e IPX.

Non esiste un modo per farlo funzionare anche per tali protocolli.

La crittografia sicura dei protocolli in cui l’ordine di invio e l’affidabilità non sono garantiti è una sfida e non rientra nell’ambito di SSL.

Non ripudio

Diciamo che Alice e Bob stanno comunicando tramite SSL.

Alice, potrebbe ricevere un messaggio da Bob e vorrebbe mostrarlo a Charlie. Alice vorrebbe inoltre dimostrare di aver ricevuto il messaggio proprio da Bob.

Se ciò fosse possibile, il messaggio sarebbe non ripudiato, nel senso che Bob non può negare di aver inviato il messaggio.

Ad esempio, Alice può ricevere una ricevuta per un prodotto e desidera dimostrare di aver acquistato il prodotto a fini fiscali.

SSL non ha supporto per il non ripudio. Tuttavia, è semplice aggiungere un campo SSL, se sia Alice che Bob hanno certificati consolidati. In tal caso, possono firmare ogni messaggio prima di crittarlo SSL.

Naturalmente, in una situazione del genere, se Bob desidera avere un messaggio che può ripudiare, si limita ad allegare una firma non valida.

In tal caso, Alice dovrebbe rifiutare ulteriori comunicazioni.

Protezione contro i difetti del software

A volte il protocollo SSL non riesce a proteggere un’applicazione a causa di un difetto di sicurezza fondamentale nell’applicazione stessa, non a causa di qualche problema legato alla progettazione di SSL.

Cioè, SSL non protegge da buffer overflow, race conditions, errori di protocollo o altri difetti di progettazione o implementazione nell’applicazione che utilizza SSL.

Anche se ci sono molti rischi comuni durante l’implementazione di SSL, questi rischi sono spesso minori rispetto alle lacune nella progettazione e implementazione del software.

Gli aggressori tenderanno a scegliere come target il link più debole lungo la catena di attacco, e spesso SSL non è il link più debole o facile da attaccare.

Gli sviluppatori dovrebbero documentarsi a fondo sulla creazione di software sicuro.

Per gli amministratori che utilizzano software di terze parti, il consiglio è di provare a utilizzare software ben ponderato o comunque software proveniente da fonti attendibili.

Sicurezza dei dati per tutti gli usi

SSL è in grado di proteggere i dati in transito su una connessione in tempo reale, ma non offre alcuna possibilità di proteggere i dati prima che vengano inviati o dopo che essi giungono a destinazione.

Inoltre, se non esiste una connessione attiva, SSL non può fare nulla. Per qualsiasi altra esigenza di sicurezza dei dati, sono necessarie altre soluzioni.

OpenSSL: Nozioni di base

Ora che abbiamo una buona conoscenza delle basi di crittografia e abbiamo visto il protocollo SSL ad alto livello, è tempo di guardare in modo specifico alla libreria OpenSSL.

OpenSSL è un’opera derivata da SSLeay.

SSLeay è stato originariamente scritto da Eric A. Young e Tim J. Hudson a partire dal 1995. Nel dicembre 1998, lo sviluppo di SSLeay è cessato e la prima versione di OpenSSL è stata rilasciata come 0.9.1c.

OpenSSL è essenzialmente l’unione di due strumenti in uno: una libreria di crittografia e un toolkit SSL.

La libreria SSL fornisce un’implementazione di tutte le versioni del protocollo SSL, incluso TLSv1.

La libreria di crittografia fornisce gli algoritmi più popolari per la crittografia a chiave simmetrica e la crittografia a chiave pubblica, gli algoritmi di hash e i digest di messaggi.

Fornisce inoltre un generatore di numeri pseudorandom e il supporto per la manipolazione di formati di certificati comuni e il materiale per la gestione delle chiavi.

Esistono anche librerie helper di uso generale per la manipolazione del buffer e la manipolazione di numeri arbitrari di precisione.

Inoltre, OpenSSL supporta l’hardware di accelerazione crittografica più comune.

OpenSSL è l’unica implementazione SSL completa e OpenSource attualmente disponibile per l’uso con i linguaggi di programmazione C e C ++.

Funziona su tutte le principali piattaforme, inclusi tutti i sistemi Unix e tutte le versioni comuni di Microsoft Windows.

OpenSSL è disponibile per il download in formato sorgente dal link: http://www.openssl.org/. Le istruzioni di installazione dettagliate per una varietà di piattaforme, tra cui Unix, Windows, Mac OS e Open VMS sono incluse nella distribuzione di origine.

Se stai installando su Mac OS X, dovresti seguire le istruzioni Unix.

Le installazioni su Unix e Windows hanno requisiti simili; entrambi richiedono il compilatore Perl e un compilatore C.

I dettagli della compilazione su Windows variano a seconda del compilatore che stai utilizzando e se stai utilizzando le ottimizzazioni del linguaggio assembly.

Si consiglia di fare riferimento alle istruzioni di installazione incluse per i dettagli completi.

Il processo di creazione di OpenSSL su sistemi Unix e Windows prevede innanzitutto l’esecuzione di uno script di configurazione incluso nella distribuzione.

Lo script di configurazione esamina l’ambiente in cui è in esecuzione per determinare quali librerie e opzioni sono disponibili.

Usando queste informazioni, costruisce gli script di make. Sui sistemi Unix, lo script di confiurazione è denominato config; mostra alcuni parametri specifici di Unix e quindi esegue lo script Configure, che è scritto in Perl.

Sui sistemi Windows, Configure viene eseguito direttamente.

Il seguente codice mostra i passaggi di base necessari per costruire su un sistema Unix.

$ ./config

$ make

$ make test # this step is optional.

# you need to be root to “make install”

$ su make install

Una volta eseguito lo script di configurazione, il file sorgente è pronto per essere compilato.

Normalmente questo si ottiene eseguendo il programma make.

Se stai sviluppando su Windows con Visual C ++, dovrai usare il programma nmake. Sui sistemi Unix, una volta completata la compilazione, è possibile eseguire alcuni test facoltativi per assicurarsi che la libreria sia stata costruita correttamente. Questo viene fatto eseguendo make test, come mostrato nel codice sopra.

Quando la libreria è finalmente costruita e opzionalmente testata, è pronta per essere installata. Sui sistemi Unix, questo viene fatto eseguendo make nuovamente e specificando una destinazione di installazione.

Sui sistemi Windows, non esiste un processo di installazione di per sé.

È necessario creare directory per i file di intestazione, le librerie di importazione, le librerie di caricamento dinamico e lo strumento da riga di comando.

È possibile posizionare i file ovunque si desideri, ma è necessario assicurarsi di inserire le DLL e lo strumento da riga di comando in una directory che si trova nel percorso.

error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.