Capire la crittografia white-box whitepaper I sistemi crittografici tradizionali non sono in grado di offrire una protezione completa contro tutti i possibili tipi di aggressione atti a sfruttare le loro vulnerabilità intrinseche. Introduzione In passato la crittografia permetteva di trasmettere informazioni sensibili (cioè segrete, riservate o confidenziali) rendendole incomprensibili a chiunque eccetto il destinatario del messaggio. La crittografia, utilizzata sin da tempi antichissimi, era una tecnica particolare di sostituzione manuale del testo all’interno di un messaggio per oscurarne il significato originale. Molti secoli dopo, durante la seconda guerra mondiale, la crittografia venne ampiamente utilizzata con l’ausilio di macchine cifranti elettromeccaniche (come la famosa “Enigma machine”). Oggi è ancor più diffusa, prevalentemente sotto forma di programmi informatici basati su complesse formule matematiche. La crittografia, come indica il nome stesso, si prefigge di occultare parti di testo a occhi indiscreti utilizzando vari metodi. In teoria il concetto è semplice, ma i fatti hanno dimostrato che numerosi fattori e aspetti ambientali possono influire negativamente sulla robustezza delle chiavi di cifratura. I metodi tradizionali non sono infatti in grado di fornire soluzioni capaci di resistere a tutti i vari tipi di attacchi degli hacker finalizzati a individuare le vulnerabilità intrinseche dei sistemi crittografici. Secondo una citazione del professor Peter G. Neumann, un esperto di sistemi informatici e affidabilità e sicurezza delle reti, “Se pensate che la crittografia sia la soluzione al vostro problema vuol dire che non sapete qual è il vostro problema.” 1 Questo documento esamina le tecniche crittografiche tradizionali, concentrandosi in particolare sull’implementazione della crittografia white-box. Un esame più approfondito della crittografia Nelle implementazioni classiche di DRM (Digital Rights Management) gli algoritmi crittografici sono parte della soluzione di sicurezza e si basano su formule note e complesse abbinate a una chiave crittografica segreta. Nella maggior parte dei casi, però, questa soluzione è del tutto inadeguata, dato che le piattaforme su cui molte di queste applicazioni operano sono esposte al controllo di utenti finali potenzialmente ostili. In genere si pensa alla crittografia come a un sistema black-box, dove si suppone che l’aggressore non abbia accesso alla chiave crittografica, possa controllare solo l’input di cifratura (testo semplice) e abbia accesso al relativo output (il testo cifrato). Per molto tempo questi presupposti sono stati considerati validi anche per dispositivi hardware come le smartcard, tuttavia gli attacchi degli hacker sfruttano le informazioni sfuggite alla scatola nera (ad esempio nel caso delle aggressioni DPA, Differential Power Analysis) per estrarre le chiavi segrete che questa utilizza. 1. Peter G. Neumann, citazione del New York Times del 20 febbraio 2001. Capire la crittografia white-box 1 I sistemi di crittografia più diffusi, ad esempio AES, non sono stati concepiti per operare in ambienti dove è possibile osservarne l’esecuzione. Infatti, i modelli crittografici tradizionali presuppongono che gli endpoint (PC e token hardware di protezione) siano completamente sicuri. Ciò ha in effetti permesso agli hacker di condurre attacchi di tipo non black-box, di conseguenza queste implementazioni finiscono per essere più “grigie” che nere. 2 L’esigenza della crittografia white-box I sistemi di crittografia più diffusi, come ad esempio AES, non sono stati concepiti per operare in ambienti dove è possibile osservarne l’esecuzione. Infatti, i modelli crittografici tradizionali presuppongono che gli endpoint, ad esempio i PC e i token hardware di protezione, siano completamente sicuri. Se questi endpoint si trovano in un ambiente potenzialmente ostile gli hacker che monitorano l’esecuzione dell’applicazione potrebbero essere in grado di vedere direttamente le chiavi crittografiche e quindi cercare di estrarre dalla memoria le chiavi embedded o generate dall’applicazione. Si tratta di un problema comune nell’applicazione dei diritti DRM per le applicazioni software di PC, decoder IPTV e altri dispositivi di elaborazione dati. Monitorando attivamente le API crittografiche standard o i dump della memoria, gli hacker sono in grado di estrarre la chiave o chiavi utilizzate. Un esempio: in alcuni casi di hacking le chiavi vengono estratte dalla memoria permettendo così allo strumento BackupHDDDVD di copiare DVD protetti rimuovendo i DRM dal contenuto media protetto di Windows. I problemi della crittografia white-box La cifratura delle informazioni di valore, come ad esempio la licenza e gli altri segreti commerciali, pone vari problemi quando si opera in un ambiente totalmente trasparente: • Come cifrare/decifrare i contenuti senza rivelare direttamente parti della chiave e/o dati? • Come attuare robusti meccanismi crittografici, pur sapendo che gli hacker possono osservare e/o modificare il codice durante l’esecuzione? I diversi modelli di crittografia La crittografia black-box (tradizionale) Nei sistemi crittografici tradizionali di tipo black-box si presuppone che l’aggressore non abbia accesso fisico alla chiave (l’algoritmo su cui si basa il processo di cifratura/ decifratura) né ai sistemi interni, ma che possa soltanto osservare le informazioni e i comportamenti esterni. Tali informazioni consistono nel testo semplice (input) o cifrato (output) del sistema, mentre si suppone che l’hacker non abbia alcuna visibilità dei codici di esecuzione e delle operazioni di crittografia dinamica. Black Box testo semplice Testo cifrato Chiave 2. Amitabh Saxena, Brecht Wyseur, and Bart Preneel, Towards Security Notions for White-Box Cryptography Capire la crittografia white-box 2 La crittografia grey-box Nel modello grey-box si presuppone che l’aggressore abbia accesso fisico parziale alla chiave, oppure che sia in grado di impossessarsi di informazioni di canale secondarie fuoriuscite dalla stessa. Gli attacchi basati sull’approccio Side Channel Analysis (SCA) sfruttano le informazioni sfuggite durante l’implementazione fisica dei sistemi crittografici, che vengono passivamente desunte dai dati relativi ai tempi di elaborazione, ai consumi energetici, alle radiazioni elettromagnetiche, ecc. La protezione contro gli attacchi SCA è importante in quanto si tratta di aggressioni attuabili con facilità e senza grosse spese. Le informazioni di canale secondario pubblicamente disponibili permettono agli aggressori di individuare con successo parti della chiave e di conseguenza ne riducono drasticamente l’efficacia, inficiandone le caratteristiche di protezione generale.3 La crittografia grey-box è infatti un prodotto secondario della tradizionale implementazione black-box. È stato dimostrato che anche le smartcard, considerate capaci di fornire una buona protezione di sicurezza, nell’eseguire le operazioni interne di crittografia in realtà lasciano fuoriuscire informazioni nell’ambiente esterno. Questo dimostra che anche gli scenari considerati di tipo black-box sono in realtà solo una varietà di “grigio”. Gray Box testo semplice Testo cifrato Informazioni di canale secondario Chiave Radiazioni elettromagnetiche Consumo di elettricità Timpi Il concetto di crittografia white-box La crittografia white-box è diversa dai modelli di sicurezza tradizionali sopra descritti in quanto, a differenza dalle precedenti implementazioni in cui l’aggressore aveva solo la scatola nera su cui concentrarsi – ovvero l’accesso agli input e agli output e l’algoritmo crittografico da decifrare – e in cui si presupponeva che la visibilità delle operazioni interne fosse nulla, i sistemi white-box sono totalmente trasparenti. Le tecniche di crittografia white-box mirano a proteggere le implementazioni software degli algoritmi crittografici contro la lettura della chiave anche se l’aggressore ha pieno controllo della macchina che effettua la cifratura, una caratteristica particolarmente utile nelle applicazioni DRM. La crittografia white-box I sistemi crittografici white-box, diversamente da quelli di tipo tradizionale sopra descritti, sono in grado di fornire protezione da minacce ben più gravi, anche nel caso in cui gli hacker abbiano totale visibilità e controllo sull’intera operazione. Gli aggressori possono osservare liberamente l’esecuzione dinamica del codice (con chiavi crittografiche inizializzate) e le informazioni sugli algoritmi interni sono completamente visibili e modificabili. Nonostante la totale trasparenza di questa metodologia, la crittografia white-box integra la codificazione in modo tale da non rivelare la chiave. 3. S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot, A White-Box DES Implementation for DRM Applications Capire la crittografia white-box 3 È pertanto chiaro che gli algoritmi creati per i modelli di tipo black-box e grey-box non offrono una protezione sufficiente nelle operazioni su host non affidabili. Chiaramente gli hacker non si limitano a cercare di decifrare il codice utilizzando soltanto i mezzi a loro disposizione negli scenari di tipo black-box e grey-box, ma osservano l’esecuzione quando viene utilizzata la chiave non protetta, impadronendosene direttamente. La scelta del modello crittografico più adeguato e sicuro rappresenta pertanto l’unica difesa contro le minacce esterne, esattamente l’obiettivo che la crittografia white-box si propone di conseguire. White Box testo semplice φ(n ) λ= lcm φ od ) (n Testo cifrato m La metodologia sottostante all’implementazione white-box Come si può “nascondere” in modo efficace e sicuro la chiave all’interno del codice di esecuzione se il potenziale aggressore è in grado di monitorare e modificare ogni istruzione? A grandi linee, questo obiettivo viene realizzato combinando le proprietà della chiave segreta con alcuni dati di implementazione specifici basati su operazioni matematiche, per assicurarsi che queste siano praticamente impossibili da invertire.4 Ad esempio, la robustezza intrinseca dei sistemi RSA è dovuta alla semplice moltiplicazione di grandi numeri, anche se esprimere il risultato in numeri primi interi è matematicamente difficile. In aggiunta, ma altrettanto importante, è il fatto che l’implementazione di un algoritmo crittografico white-box permette di effettuare soltanto le operazioni di cifratura o decifratura. Come già accennato, l’implementazione si basa su un’operazione matematica estremamente difficile da invertire. Questo permette di creare un sistema che opera in modo analogo a un modello di chiave pubblica/privata, ma con un livello di performance molto più simile a quello dei sistemi di cifratura simmetrici standard. La decifratura può essere effettuata internamente all’applicazione distribuita, ma la chiave non può essere estratta e la decifratura non può essere invertita per effettuare l’operazione di cifratura. L’aggressore non ha quindi alcun mezzo per creare i dati crittografati corretti da decifrare nel valore desiderato. Questo particolare metodo è particolarmente utile per proteggere le comunicazioni su canali protetti da un dispositivo hardware, come ad esempio un token hardware di protezione. L’aggressore non può infatti estrarre la chiave utilizzata dal canale di comunicazione e per questo motivo non è in grado di decifrare i dati trasmessi su quel canale né inserire dati nel canale stesso, in quanto non sa come crittografarli correttamente. 4. Amitabh Saxena, Brecht Wyseur, and Bart Preneel, Towards Security Notions for White-Box Cryptography Capire la crittografia white-box 4 I problemi di sviluppo Sebbene all’inizio se ne sia parlato come di un problema, la crittografia white-box “mischia tutte le carte”, per questo rappresenta un metodo crittografico altamente sicuro pur operando in un ambiente pienamente trasparente. Anche se del tutto trasparenti, le operazioni di cifratura e decifratura proteggono i dati sensibili senza rivelare parti della chiave o delle informazioni stesse. In aggiunta, la crittografia white-box (assieme ad altre tecniche) consente di eseguire meccanismi di cifratura robusti pur sapendo che l’esecuzione potrebbe essere osservata da potenziali aggressori. Una parte integrante delle misure di sicurezza di SafeNet Il canale di comunicazione sicuro offerto dai prodotti Sentinel di SafeNet permette di crittografare le comunicazioni tra l’applicazione protetta e il token hardware senza che queste possano essere riprodotte. A differenza dell’implementazione precedente, il cui obiettivo consisteva nel nascondere la chiave crittografica, la nuova implementazione basata sulla crittografia white-box suppone che il potenziale aggressore sia in grado di risalire all’applicazione protetta e al runtime in cerca della chiave crittografica. Basando lo sviluppo del nuovo sistema crittografico su questo presupposto, l’algoritmo e le chiavi di crittografia sono sostituiti da librerie specifiche del fornitore che implementano la stessa crittografia ma con una chiave embedded nell’algoritmo stesso e non nella memoria, precludendo di conseguenza la possibilità di estrarla. La generazione delle librerie specifiche del fornitore viene effettuata sui server di SafeNet implementando vari segreti commerciali. Inoltre, ciascuna libreria è generata individualmente e offuscata per ciascun fornitore di software specifico – rendendo così praticamente impossibile l’hacking generico. Una soluzione autenticamente rivoluzionaria SafeNet è la prima e unica azienda ad offrire la crittografia white-box come parte integrante del proprio portafoglio Sentinel di soluzioni per il software licensing. Questa nuova tecnologia garantisce la protezione costante della chiave crittografica, che non può più essere decifrata in quanto ne viene rivelata solo una parte per volta. Dal punto di vista della sicurezza questa soluzione permette di mantenere la chiave nascosta agli hacker, i quali di conseguenza non sono in grado di ricostruirla durante gli attacchi. La crittografia white-box è un’altra componente essenziale che permette agli sviluppatori di proteggere le loro applicazioni da tentativi di reverse engineering, manomissioni e attacchi automatizzati. La crittografia white-box di SafeNet si integra nel processo di progettazione del software, consentendo l’embedding di un livello supplementare di protezione direttamente a livello di codice sorgente. Per questo motivo offre un approccio modulabile e altamente efficace alla protezione del software. Conclusioni La sicurezza complessiva delle applicazioni protette dipende essenzialmente dall’implementazione della metodologia di protezione, nel senso che un semplice algoritmo crittografico, per quanto robusto, non offre alcuna sicurezza se non è utilizzato nel contesto a cui è destinato: per questo motivo il mancato utilizzo di algoritmi whitebox in una configurazione white-box può avere conseguenze letali. La maggior parte degli attacchi tenta di sfruttare le vulnerabilità del software di protezione e non quelle degli algoritmi crittografici, ma gli hacker sono capaci di individuare i punti deboli della crittografica classica in ambiente di PC aperto. Se ne deduce che la protezione del software deve ricevere un’attenzione specifica durante tutte le fasi di sviluppo e implementazione, oltre a essere finemente modulata nel contesto del ciclo di vita del prodotto e dei release delle nuove versioni. Oltre alla crittografia white-box, esistono altre misure di sicurezza complementari da adottare per consolidare ulteriormente il modello di protezione complessivo. La sicurezza ha un prezzo e, di conseguenza, non può mai essere assoluta. È per questo che si rende necessario determinare accuratamente il livello di sicurezza dettato dall’applicazione stessa, in altre parole il valore del bene da proteggere e della perdita che la sottovalutazione dei rischi potrebbe causare. Capire la crittografia white-box 5 PARTECIPA ALLA DISCUSSIONE ≥ Sentinel Online safenet-inc.com/sentinel ≥ Twitter twitter.com/LicensingLive ≥ LinkedIn http://bit.ly/ LinkedInLicensingLive ≥ YouTube youtube.com/user/ LicensingLive ≥ LicensingLive licensinglive.com BrightTalk brighttalk.com Altre pubblicazioni Per maggiori informazioni e pubblicazioni tecniche dettagliate consultare i link sottostanti: 1.Nozioni sulla sicurezza della crittografia white-box http://www.cosic.esat.kuleuven.be/publications/article-1260.pdf 2.Crittografia white-box: dati ufficiali e risultati di (Im)possibilità http://eprint.iacr.org/2008/273.pdf 3.White-box (software engineering) su Wikipedia http://en.wikipedia.org/wiki/White_box_(software_engineering) 4.In cosa consiste l’implementazione white-box degli algoritmi crittografici http://crypto.stackexchange.com/questions/241/what-is-a-white-box-implementation-of-acryptographic-algorithm 5.Protezione dei file eseguibili http://en.wikipedia.org/wiki/Portable_Executable_Automatic_Protection Soluzioni SafeNet Sentinel per la monetizzazione del software Da oltre 25 anni, SafeNet offre ad aziende internazionali di software e tecnologie sistemi per la gestione del software licensing e delle licenze innovativi e affidabili. Facile da integrare e da usare, innovativa e ricca di funzioni, la famiglia di soluzioni Sentinel® per la monetizzazione dei software è studiata per soddisfare i requisiti esclusivi di gestione, potenziamento e attivazione di licenze di qualsiasi tipo di organizzazione, indipendentemente dalla loro dimensione, dai requisiti tecnici o dalla struttura organizzativa. Solo con SafeNet i clienti possono affrontare tutte le problematiche di anti-pirateria, protezione della PI, attivazione e gestione delle licenze, aumentando al tempo stesso i loro ricavi, migliorando le attività interne, mantenendo la posizione competitiva e potenziando i rapporti con clienti e utenti finali. SafeNet vanta lunghe tradizioni di successo nell’adattarsi ai nuovi requisiti e nell’introdurre tecnologie nuove per far fronte all’evoluzione delle condizioni di mercato; i suoi oltre 25.000 clienti in ambito globale sanno che scegliere Sentinel significa scegliere la libertà di evolvere le loro modalità di operato oggi, domani e in futuro. Contatti: Per conoscere tutte le sedi e le informazioni di contatto visitare il sito www.safenet-inc.com Per restare in contatto con noi: www.safenet-inc.com/connected ©2011 SafeNet, Inc. Tutti i diritti riservati. SafeNet e il logo SafeNet sono marchi registrati di SafeNet. Tutti gli altri nomi di prodotti sono marchi di fabbrica dei rispettivi proprietari. WP (IT) A4-04.2.12 Capire la crittografia white-box 6