visita il sito del nostro sponsor





Tecniche di protezione del software




Il presente articolo è stato pubblicato per la prima volta sul numero 113 (Settembre 2000) della rivista:


Potete trovare gli articoli indediti di Enigma Amiga Life al seguente indirizzo:
http://www.amigalife.info


In questa terza puntata introdurremo la seconda famiglia di tecniche che non mira a proteggere il software rendendo induplicabile il supporto sul quale viene distribuito, ma tende a rendere non pienamente utilizzabile o funzionante il software pirata. Infatti, se il supporto è induplicabile non è possibile per l'utente, legalmente autorizzato, effettuare copie di backup, per altro previste dalla legge sulla tutela del software, o installare il programma sul proprio harddisk, ed eseguirlo dal lì.
Questa seconda limitazione può essere trascurabile per il software videoludico, o più in generale di intrattenimento, ma è inopportuna ed anacronistica per gli applicativi, la cui complessità ed il numero di funzioni disponibili rende l'eseguibile ben più grande dello spazio offerto da un comune floppy disk, tant'è vero che oggi sono distribuiti su uno o più CD-Rom. Gli applicativi odierni devono essere necessariamente installati sull'harddisk della macchina ospite, e quindi la loro protezione dovrà essere slegata dall'induplicabilità dei supporti originali. Inizialmente fu adottata una tecnica mista, ovvero il software diveniva eseguibile solo dopo l'installazione, mentre i supporti sui quali era distribuito erano induplicabili, e fungevano da chiave durante il funzionamento dell'applicativo, per impedire che venisse utilizzato su più macchine contemporaneamente. Come vedremo tra breve, i dischetti chiave furono sostituiti ben presto, anche se con tecniche un po' più costose o più noiose per l'utente finale.
In passato, spesso si assisteva, al lancio del programma, alla comparsa di un requester nel quale veniva richiesta la digitazione della parola n° x, sita alla pagina n° y, sulla riga n° z (dove x, y, e z variavano casualmente di volta in volta), legando la presenza del manuale alla possibilità di eseguire il programma, oppure, per i videogiochi, all'inserimento di una sequenza di colori riportati su uno speciale foglio colorato, presente nella confezione originale, fotocopiandolo si otteneva una copia non perfetta e molte combinazioni (scelte ad arte) divenivano illegibili, bloccando momentaneamente il programma.
Tale tecnica oltre ad indispettire l'utente dell'originale, che deve necessariamente aprire il manuale e cercare la parola indicata ogni volta, o leggere dal foglietto colorato la sequenza giusta (ed i daltonici?), ha mostrato, in brevissimo tempo, tutta la sua inutilità; e dalla richiesta di PASSWORD software si è passati alla richiesta di PASSWORD hardware, detta DONGLE, ben più affidabile dei dischetti chiave. Tali dongle sono circuiti elettronici, oggi progettati e realizzati in tecnologia Application Specific Integrated Circuit, che vengono inseriti negli slot o collegati ai connettori di I/O presenti sul computer. Basano la loro efficacia sull'impossibilità di ricostruire il microcircuito, senza le sue specifiche tecniche, o quanto meno sulla antieconomicità di tale operazione. Anche questa tecnica è facilmente aggirabile, a meno che la dongle non abbia un ruolo attivo come nell'esempio che tra breve sarà illustrato, ma induce nel programmatore un falso senso di sicurezza, nonché un elevato costo di produzione e genera insoddisfazione nell'utente, che spesso è costretto ad inserire e rimuovere la dongle a seconda del software da usare, per evitare conflitti ed incompatibilità.
Uno degli impieghi più riusciti di tale tecnica è senza alcuna ombra di dubbio: Lightwave 3D, software per sistemi Amiga di modellazione e rendering 3D con qualità cinematografica, realizzato dalla NewTek, ed ora disponibile per tutte le piattaforme commerciali. Lightwave usava come vero e proprio dongle la scheda: VideoToaster della stessa casa. In questo caso non era possibile neutralizzare semplicemente la routine che verifica la presenza del dongle, in quanto la scheda serviva per visualizzare l'output a 24bit generato dal programma e creare interressanti effetti video. Successivamente la NewTek decise di abbandonare questa efficacissima protezione soprattutto per poter far migrare il software anche su altre piattaforme, dato che su queste non era possibile realizzare una scheda video equivalente. Anche in questo caso la facilità con cui era possibile duplicare il software ed il relativamente basso costo dell'originale hanno decretato il successo commerciale del prodotto, a scapito dei concorrenti più blasonati ed assopiti dalla cronica mancanza di concorrenza.
Si sente dire spesso che le protezioni basate su dongle siano affidabili; certo lo sono, se l'idea, almeno sulla carta, non fosse buona nessuno le userebbe, ma il loro punto debole è l'impiego, e non la tecnologia contenuta nella dongle.
Le dongle commerciali sono realizzate come una vera e propria periferica connessa al computer via seriale, con all'interno un circuito elettronico. La presenza della dongle impedisce il normale utilizzo della porta seriale, rendendo necessaria la presenza di più di una porta per collegare le altre periferiche al computer. Per ovviare a questo inconveniente, di solito, la dongle è di tipo passante, ovvero è dotata di una seconda porta alla quale dovranno essere collegate le altre periferiche, e non interferisce con il normale fuzionamento della seriale, in quanto la logica di controllo intercetta solo le chiamate ad essa destinate, e lascia passare sul bus tutte le altre, come se la dongle non esistesse.
Gli esemplari, in tecnologia obsoleta, sono semplicemente costituiti da una basetta, sulla quale sono disposti un gate (logica di controllo) ed una eprom, di solito di 64Kb. Nella eprom sono memorizzate delle risposte, il programma deve limitarsi ad fare delle interrogazioni al gate, il quale preleva dalla eprom le risposte e le invia al programma, che successivamente ne verificherà la bontà. Il gate e le eprom utilizzati sono facilmente reperibili, ed in fase di progetto sono scelti in base proprio alla loro reperibilità, economicità e scarsi consumi elettrici. Chiunque con un po' di esperienza in elettronica può riprodurre tale dongle, ed attraverso un programmatore di eprom copiarne i contenuti nella nuova, ma ciò comporta un esborso economico, seppur minimo, e la necessità di clonare tante dongle quante sono le copie pirata, ovviamente esistono altre vie a costo nullo o quasi, alcune comuni alle altre forme di protezione, e quindi verranno illustrate nelle prossime puntate.
Le dongle moderne, come già accennato sono progettate e realizzate in tecnologia ASIC, e rendono induplicabile la dongle per chi non possieda il supporto industriale per tale tipo di produzione. La tecnologia ASIC ha un'altro vantaggio, consente di assemblare rapidamente componenti provenienti da librerie di dispositivi elettronici già pronti e testati, realizzando così circuiti integrati complessi e specifici per il compito da svolgere in breve tempo. Nel chip di controllo è incluso un microporcessore, di solito ad 8bit con una potenza di calcolo che oscilla tra i 10 ed i 20 milioni di operazioni al secondo, una potenza sufficiente per il compito da svolgere, una manciata di byte di tipo ram da usarsi solo come buffer temporaneo per i risultati dell'elaborazione, ed un'area di memoria di tipo eeprom (memoria non volatile) che contiene il programma che sarà eseguito dal processore, o un area a disposizione dell'utente, a seconda della scelta del produttore. La stessa tecnologia è alla base dei sistemi di allarme telecomandati delle nostre automobili e delle smart card, tipicamente impiegate nei decoder della TV satellitare, telefonini celullari o per i servizi di borsellino elettronico, e che ora la Microsoft sta spingendo per imporle come standard, per i servizi di commercio elettronico, in alternativa al numero di serie all'interno del processore, come ha fatto la Intel con il Pentium III, scatenando le paure di tutti per la nascita del Grande Fratello immaginata da George Orwell nel suo fantastico romanzo "1984", dimenticando che le schede di rete hanno già un ID unico a livello mondiale. La Microsoft ha annunciato che integrerà nei suoi kit di sviluppo un set di API per la programmazione di smart card, a quel punto la clonazione sarà a portata di tutti o quasi, con ovvi rischi per la sicurezza.
Queste nuove dongle non basano il loro funzionamento su domande e risposte tabellate, ma sulla risoluzione "just in time" (al volo) di problemi di natura complessa, generalmente di tipo crittografico, ovvero basati sulla scomposizione in fattori primi di un numero molto grande. Nonostante le ingenti risorse spese nella ricerca, non si è trovato ancora un algoritmo efficace per risolvere questo tipo di problema senza conoscere parte della soluzione, e sembra che l'algoritmo, in realtà, non esista; ma nessuno è ancora riuscito a dimostrarlo matematicamente. L'intera crittografia moderna si basa proprio sull'impossibilità di eseguire la fattorizzazione in tempi accettabili partendo da zero, purtroppo è sempre possibile, disponendo di un calcolatore molto potente e di molto tempo, decodificare il messaggio semplicemente con la forza bruta, ovvero provando tutte le possibili chiavi, come dimostrano gare tipo l'RC5 Crack Effort indetta dalla RSA, società nordamericana che si occupa dello sviluppo di sistemi per la crittografia forte, e che ha voluto sensibilizzare l'opinione pubblica sull'uso di vecchi algoritmi o chiavi troppo corte per le potenze elaborative raggiunte oggi.
Come in tutte le catene, a cedere sotto sforzo è l'anello più debole, ed in questo caso l'anello debole è proprio la comunicazione tra dongle ed applicativo, che può essere intercettata usando un monitor di sistema che crei sul nostro harddisk un logfile di tutte le comunicazioni sulla seriale, o se ciò non è possibile, un secondo computer, collegato alla seriale di quello che ospita l'applicativo, che funga da dongle, intercettando le comunicazioni sulla seriale e rigirandole alla vera dongle collegata ad una sua seconda porta seriale, ovviamente provvedendo a memorizzare le comunicazioni intercettate in un apposito file. Questo genere di attacco è detto "man in the middle" (l'uomo nel mezzo), ed è uno dei cardini per verificare la sicurezza dei sistemi di transazione elettronica. In una delle prossime puntate si tornerà sull'argomento, illustrando un protocollo di comunicazione immune a questo genere di attacco. Certo, non conosceremo tutte le risposte, ma ciò ci da la prova tangibile che scrivendo un'apposita utility le collezioneremo tutte. L'utility dovrà generare tutte le possibili domande, in fondo sono sequenze di bit, associandovi le risposte ottenute dalla dongle, e memorizzarle in un file, che in genere sarà poco più grande del doppio della capacità della eprom presente nella dongle, quindi le sue dimensioni sono del tutto trascurabili rispetto alle normali dotazioni standard.
Scrivere una siffatta utility può sembrare un'impresa titanica, in realtà le cose sono più semplici di quanto sembri, infatti i produttori di Dongle, nel tentativo di promuovere il proprio prodotto, non esitano nel rilasciare le informazioni tecniche e persino le API a chiunque ne faccia richiesta, in periodo promozionale è possibile portarsi a casa con poche migliaia di lire, necessarie per coprire le sole spese di spedizione, una chiave hardware completa con tutta la documentazione, oppure si può visitare il loro sito alla ricerca della documentazione. Cosa pensate che faccia il cracker? Si documenta e si esercita, perché non lo faccia anche il programmatore è un mistero, eppure qualche esercizio di crack non gli farebbe male.
A questo punto è possibile scrivere una sorta di emulatore della dongle, che ad ogni domanda dell'applicativo è in grado di fornire la risposta giusta. Se si è fortunati si riesce a scoprire l'algoritmo che correla le domande alle risposte, rendendo del tutto inutile la presenza del file archivio.
Il punto critico dell'operazione consiste nell'ingannare l'applicativo facendolo comunicare con la dongle emulata e non più con quella reale. Se l'applicativo accede direttamente all'hardware, leggendo e scrivendo nei registri hardware del computer, non è possibile ricorrere all'emulatore, ma comunque la protezione, come vedremo nelle prossime puntate è lo stesso aggirabile, altrimenti è sufficiente sostituirsi allo strato software di astrazione usato dall'applicativo per comunicare, sia esso driver, dynamic linked library, o device a seconda dell'ambiente operativo. Le applicazioni pulite, ovvero quelle che seguono le regole di programmazione imposte dai moderni sistemi operativi multitasking, sono quelle più facili da ingannare, ecco perchè i programmatori, in particolare quelli di videogiochi, non disdegnano l'uso di trucchi sporchi o scorciatoie non documentate.
Le dongle delle ultime generazioni basate sulla risoluzione di problemi sembrano immuni da simili attacchi, infatti usare un'utility-registratore, in questo caso, è poco pratico dato che la sequenza di domande risposte è generata algoritmicamente, e quindi i problemi sottoposti alla dongle sono del tutto casuali ed infiniti, e tabellarli tutti è impossibile, però ciò non toglie la possibilità di usare i logfile per un "postmortem calculation attack", ovvero si prova in un secondo momento con tecniche tipiche della criptoanalisi a determinare l'algoritmo, ed una volta scoperto, non sempre ciò è fattibile o conveniente, si può creare facilmente l'emulatore.
La fantasia degli hacker ha partorito molti altri tipi di attacco sistematici ai confini della realtà, come analizzare le risposte elettriche del processore durante il suo funzionamento, o procedere con bagni acidi per rimuovere strato su strato, ed osservare con un microscopio la sua struttura intima e da qui risalire al suo modus operandi, o peggio sfruttare bug hardware del processore o sue caratteristiche non documentate. Questi non sono attacchi alla portata di tutti, e vengono generalmente usati per rompere i sistemi delle smart card dei decoder TV, dove il ritorno economico è maggiore ed immediato, ed in seguito potrebbero essere traghettati per i sistemi di borsellino elettronico, non appena questo sarà sufficientemente diffuso. Ciò dovrebbe far riflettere su quanto delicata sia la questione, e come il confine tra protezione del software e sistemi sicuri di transazione sia impalpabile. Per ora è tutto, alla prossima.


Francesco De Napoli




visita il sito del nostro sponsor