Correva l’anno 2004 quando avevamo realizzato un piccolo software scritto ed assemblato alla bell’e meglio per la gestione dei “dati troppo sensibili”, che poteva e doveva girare solamente sul computer della segretaria personale dell’amministratore di una grossa azienda.

Promette Bene…

Avevamo installato un driver RAM disk open source e le avevamo fornito un gruppo di continuità, un software installato come servizio interattivo nascosto si attivava alla pressione di una combinazione di tasti segreta, chiedeva una password all’operatore e leggeva in RAW da un floppy disk dei dati, questi dati erano un’immagine del RAM disk stesso compresso con LZW e criptato usando l’algoritmo Blowfish 448-bit usando come chiave l’Hash MD5 della password inserita. Se l’operazione aveva successo, il servizio si occupava di inizializzare una nuova unità RAM Disk non formattata nascosta dalla shell di sistema, e vi scriveva – sempre in RAW – l’immagine precedentemente salvata.

 

A questo punto, se i dati erano stati de-crittografati e decompressi in modo corretto, all’interno del RAM disk esistevano solamente due file: un database Access ed un eseguibile che era il client di visualizzazione e modifica del database stesso. Il servizio lanciava così l’eseguibile che appariva a schermo e permetteva di fare tutte le operazioni necessarie.

Alla chiusura del programma o qualcora venisse a mancare l’alimentazione elettrica, il servizio terminava il programma in modo che si chiudesse il database, rileggeva l’immagine del RAM disk in RAW, distruggeva il RAM disk, comprimeva e crittografava l’immagine e la salvava sul floppy, sempre con scrittura in RAW.

Il tutto per non lasciare tracce di tali dati e rendere le cose un po’ più intrigate.

It's complicated

Il workflow deciso con l’azienda era il seguente: la segretaria arrivava la mattina, prendeva dalla cassaforte nell’ufficio del boss il floppy, lo utilizzava e poi alla sera salvava tutto e lo rimetteva nella cassaforte. Non vi dovevano essere altre copie del dischetto: meglio perdere tutti quei dati che rischiare che finisse in mani sbagliate.

Tutto chiaro, tutto semplice… se non fosse che ad un certo punto ci chiamarono ad intervenire perché alla mattina non veniva ripristinato il backup della sera prima.

Panico! Visto che ero a capo del progetto tutti mi pressavano, anche perché esistendo un’unica copia ogni volta che accadeva si perdeva tutto.

Dopo vari test e tentativi e vari sopralluoghi in sede cliente – durante le quali in effetti constatavo che il disco non conteneva dati utilizzabili – cominciai a sospettare dell’implementazione dell’algoritmo MD5, poi quello del Blowfish e infine anche dell’LZW. Per cui li analizzai e testai riga per riga. Poi sospettai del driver del RAM disk, per cui analizzai anche il source code di quello – un bel macello – ma alla fine tutto sembrava funzionare. Ho così incominciato a sospettare del lettore floppy, ma poverino, non aveva colpe.

Ok, now you can panic

La soluzione non era soddisfacente per il cliente e cominciamo ad avere ritardi sui pagamenti delle fatture per tutti altri interventi effettuati, ovviamente lui diceva di aver pagato per un software che non funzionava. Lo stress aumentava ed i miei soci mi guardavano in cagnesco.

Una mattina andai dal cliente per fare le ennesime prove, dopo aver messo output di log ovunque e gestione delle eccezioni praticamente su ogni riga. Arrivai prima di tutti, quando ancora in azienda c’era solo il super capo che mi aprì, poi aprì la cassaforte per darmi il floppy su cui fare delle prove, ma non lo trovò al suo interno. Allarme generale! Cominciamo a cercare questo maledetto floppy. Incominciarono ad arrivare le persone in ufficio e a tutti venne chiesto se avessero notizie di un floppy: niente, nessuno ne sapeva nulla.

Finché si apre la porta dell’ufficio e la segretaria personale del boss entra con la sua borsetta luccicante ed i tacchi a spillo da 12. Alla domanda “dove hai messo il floppy disk?” rispose semplicemente indicando la parete e dicendo: “è li”.

Restore disk do not erase

Situazione molto simile a ciò che trovai io.

Il floppy era attaccato ad una lavagna magnetica grazie ad un bel magnete…

Non dovetti nemmeno fare le prove e installare la nuova versione del programma, inutile dire che le fatture furono saldate e che non ebbi più problemi per quel software.