Una chiavetta USB non deve necessariamente comportarsi come una chiavetta USB

Chiavetta USB configurata per comportarsi in modo diverso dalla normale memoria rimovibile

La maggior parte delle persone pensa di sapere cosa succederà quando collega una chiavetta USB a un computer. Compare una lettera di unità, viene indicata una certa capacità di archiviazione e si possono copiare file sulla chiavetta oppure prelevarli. È questo che fa una chiavetta USB.

Solo che non deve necessariamente comportarsi così.

La memoria USB non è definita soltanto dalla NAND flash che si trova dentro il guscio di plastica. Tra il connettore USB e quella memoria NAND c’è un controller, e quel controller svolge un ruolo fondamentale nel determinare come il dispositivo si identifica e come il computer host interagisce con esso.

Ed è qui che le cose diventano interessanti, perché una chiavetta USB può contenere una NAND flash perfettamente normale e allo stesso tempo presentarsi al computer come qualcosa di completamente diverso.

Un esempio è una chiavetta USB configurata a livello del controller hardware per comportarsi come un dispositivo CD-ROM.

E no, il punto non è semplicemente rendere i file di sola lettura.

Il computer in realtà non sa cosa c’è dentro la chiavetta

Quando si collega un dispositivo USB a un computer, il sistema operativo non guarda in qualche modo attraverso l’involucro di plastica per scoprire che dentro c’è memoria NAND flash. Avviene invece una sorta di conversazione tra l’host USB e il dispositivo, e il dispositivo fornisce informazioni su ciò che è e su come il computer dovrebbe comunicare con lui.

Immaginatelo un po’ come una persona che si presenta al controllo immigrazione in aeroporto.

La persona mostra delle credenziali che, in sostanza, dicono:

“Sono questo tipo di dispositivo. Ecco come mi identifico. Ecco il tipo di funzionalità che offro. Ecco come dovete comunicare con me.”

Nel caso di una chiavetta USB, è il controller a gestire gran parte di questa conversazione.

Con una normale chiavetta USB, il controller presenta la memoria in un modo che il sistema operativo riconosce come archiviazione simile a un disco. Windows, Linux o macOS carica quindi il supporto appropriato e interagisce con il dispositivo di conseguenza.

Ma la NAND flash, di per sé, non deve necessariamente essere presentata in questo modo.

Un controller progettato e configurato per l’emulazione CD-ROM può prendere la memoria NAND flash ed esporre un dispositivo di archiviazione logico che si comporta come un supporto ottico. Dal punto di vista del computer host, a quel punto potrebbe trovarsi davanti a qualcosa che assomiglia molto più a un dispositivo CD-ROM che a una normale chiavetta USB scrivibile.

Al computer non interessa particolarmente che la memoria fisica sottostante sia in realtà NAND flash.

Ed è proprio questa la parte affascinante.

La tecnologia di archiviazione fisica e il dispositivo di archiviazione presentato al computer non devono necessariamente essere la stessa cosa.

Ed è anche qui che diventa importante distinguere tra trucchi software e vero comportamento a livello di controller. Abbiamo spiegato questa differenza più in dettaglio nel nostro articolo sull’emulazione USB CD-ROM e sulle differenze tra metodi firmware e software. In breve, cambiare il modo in cui un controller presenta la memoria è qualcosa di fondamentalmente diverso dal semplice modificare un attributo di un file o montare un file ISO tramite software.

Immaginatelo come un edificio con un’insegna diversa sulla porta

Immaginate un singolo edificio fisico.

Mettete fuori un’insegna con scritto BANCA, e chi entra si aspetterà sportelli, conti correnti, depositi e prelievi.

Cambiate l’insegna in BIBLIOTECA, e le persone si avvicineranno esattamente allo stesso edificio con aspettative completamente diverse. Non andranno allo sportello cercando di depositare denaro. Cercheranno libri e si aspetteranno le regole di una biblioteca.

L’edificio non è necessariamente cambiato.

Ciò che è cambiato è l’identità che viene presentata e le regole associate a quell’identità.

Un controller USB può fare qualcosa di concettualmente simile.

La memoria sottostante può continuare a essere NAND flash, ma invece di presentarla come una normale memoria scrivibile simile a un disco, il controller può presentare un dispositivo logico che il sistema operativo interpreta come un supporto in stile CD-ROM.

Il sistema operativo reagisce di conseguenza.

Questa è una distinzione importante, perché creare un supporto CD-ROM su una chiavetta USB non equivale a fare clic su un file in Windows e selezionare “Sola lettura”.

E non equivale necessariamente nemmeno a prendere una normale memoria USB e impedire le operazioni di scrittura.

Questi approcci cercano di controllare ciò che una persona può fare con un dispositivo di archiviazione.

L’emulazione CD-ROM fa un passo ulteriore, cambiando il tipo di dispositivo di archiviazione che viene presentato all’host.

Perché qualcuno dovrebbe voler fare una cosa del genere?

All’inizio, configurare una moderna chiavetta USB perché si comporti come una tecnologia dell’era dei CD-ROM può sembrare un passo indietro.

Ma ci sono motivi sorprendentemente pratici per farlo.

Pensate a una macchina industriale costruita 15 o 20 anni fa.

Il suo software di assistenza potrebbe essere stato progettato in un’epoca in cui i lettori CD-ROM erano ovunque. L’applicazione potrebbe aspettarsi che aggiornamenti, file di calibrazione, pacchetti di installazione, materiale di riferimento o utility di ripristino arrivino su supporti ottici.

Prima o poi il lettore CD fisico si guasta.

I lettori ottici sostitutivi diventano difficili da trovare. Gestire e mantenere dischi masterizzati diventa scomodo. Forse il vecchio computer non vale la pena di essere sostituito, ma l’apparecchiatura industriale collegata a quel computer sicuramente sì.

Sostituire quel computer potrebbe inoltre creare un problema completamente diverso. I sistemi industriali non sono sempre ambienti in cui si può installare un nuovo PC, copiare un paio di programmi e considerare concluso il martedì pomeriggio.

Potrebbero esserci driver specializzati, hardware proprietario, requisiti di convalida, problemi di certificazione o software che non viene aggiornato da anni semplicemente perché ha continuato a svolgere perfettamente il proprio lavoro.

La macchina potrebbe valere 100.000 dollari mentre il computer che la controlla utilizza un sistema operativo che la maggior parte delle persone non vedeva dai tempi in cui i propri figli andavano alle elementari.

È in quel momento che la compatibilità diventa più preziosa della novità.

Un dispositivo USB capace di presentarsi nel modo corretto come supporto di tipo ottico può potenzialmente creare un ponte tra queste diverse generazioni tecnologiche.

Invece di riscrivere la vecchia applicazione perché capisca la memoria moderna, si fa parlare alla memoria moderna la lingua che la vecchia applicazione conosce già.

L’emulazione CD-ROM consiste meno nel fingere di essere un CD e più nel parlare il linguaggio del CD-ROM a un computer che si aspetta di sentirlo.

I sistemi embedded possono essere ancora più particolari

I moderni sistemi operativi desktop sono straordinariamente flessibili.

Collegate una normale chiavetta USB a un computer Windows attuale e ci sono ottime probabilità che Windows capisca cosa sia e vi dia accesso ai file.

I sistemi embedded possono essere un animale completamente diverso.

Pensate a macchine CNC, apparecchiature diagnostiche, strumenti da laboratorio, sistemi di produzione, chioschi, apparecchiature per l’assistenza automobilistica, sistemi POS e strumenti di misura specializzati.

Molte di queste macchine non sono state progettate come computer generici.

I loro programmatori sapevano esattamente cosa doveva fare la macchina, esattamente quale hardware avrebbe dovuto utilizzare e, in molti casi, esattamente in che modo le informazioni sarebbero dovute arrivare.

C’era ben poco motivo di scrivere una routine di archiviazione meravigliosamente flessibile capace di gestire qualsiasi dispositivo che qualcuno avrebbe potuto collegare alla macchina 20 anni più tardi.

Se la specifica originale diceva che il software sarebbe arrivato su CD-ROM, è proprio attorno a questo che il programmatore ha progettato il sistema.

Il sistema potrebbe quindi fare determinate supposizioni sul tipo di dispositivo, sul comportamento del supporto, sulla struttura del file system, sulle unità logiche o su altre caratteristiche del dispositivo di archiviazione.

Ed è qui che l’emulazione diventa molto più di una semplice curiosità.

Invece di modificare il sistema host, si modifica ciò che il dispositivo USB comunica all’host riguardo alla propria identità.

Per apparecchiature vecchie o specializzate che sono costose, difficili o impossibili da modificare, questa può essere un’opzione estremamente utile.

Una chiavetta USB è molto più di un connettore e un po’ di memoria

Tutto questo mette in luce anche uno degli equivoci più interessanti sulle chiavette USB.

È facile immaginare una chiavetta USB come una semplice equazione:

connettore USB + NAND flash = chiavetta USB

Ma in questa equazione manca un elemento importante.

Il controller.

Il controller USB si trova tra il computer host e la memoria NAND flash. Tra i suoi compiti c’è quello di tradurre ciò che l’host richiede in ciò che effettivamente accade all’interno della memoria flash.

Il controller contribuisce inoltre a definire come il dispositivo si identifica, come viene esposta la memoria, quali caratteristiche vengono dichiarate e come il dispositivo risponde ai comandi dell’host.

Questo significa che due dispositivi USB contenenti NAND flash simile possono comportarsi in modo molto diverso quando vengono collegati esattamente allo stesso computer.

Uno potrebbe presentarsi come normale memoria rimovibile.

Un altro potrebbe essere configurato per comportarsi come un disco fisso.

Un’altra implementazione potrebbe esporre un’unità logica CD-ROM.

E alcune architetture di controller possono fare qualcosa di ancora più interessante: esporre più dispositivi di archiviazione logici attraverso una singola connessione USB fisica.

Un solo connettore USB può portare a due stanze diverse

Immaginate di collegare una singola chiavetta USB a un computer.

Il computer scopre un’area in stile CD-ROM contenente:

PROGRAMMA DI INSTALLAZIONE
MANUALI
DRIVER
STRUMENTI DI RIPRISTINO

Ma lo stesso dispositivo USB fisico fornisce anche una normale memoria scrivibile contenente:

FILE DI LOG
REPORT
FILE DI CONFIGURAZIONE
DATI UTENTE

C’è ancora un solo connettore USB e un solo dispositivo fisico nella vostra mano.

Dal punto di vista logico, però, al computer sono stati presentati due ambienti di archiviazione differenti, progettati per svolgere due lavori differenti.

La parte CD-ROM può contenere il materiale originale pubblicato dal produttore, mentre la parte scrivibile può rimanere disponibile per le informazioni generate durante l’utilizzo sul campo.

Un tecnico potrebbe portare con sé un singolo dispositivo contenente il software diagnostico originale e la documentazione di assistenza, utilizzando allo stesso tempo un’altra area dello stesso dispositivo per archiviare risultati dei test, registri delle apparecchiature o file di configurazione specifici del cliente.

La distinzione in questo caso è importante.

Non è semplicemente la stessa cosa che dividere una normale chiavetta USB in due partizioni.

Le partizioni dividono la capacità di un dispositivo di archiviazione simile a un disco. Entrambe le partizioni fanno comunque parte dello stesso tipo fondamentale di ambiente di archiviazione.

Un controller USB può invece esporre più unità logiche, talvolta chiamate LUN, permettendo a un singolo dispositivo fisico di presentare all’host personalità di archiviazione chiaramente differenti. Abbiamo una spiegazione separata sulle LUN rispetto alle partizioni e sul motivo per cui una singola unità USB può apparire come due dischi per chi vuole addentrarsi ancora un po’ in questa tana del coniglio.

L’emulazione CD-ROM può quindi cambiare il comportamento e l’identità del dispositivo di archiviazione logico presentato all’host, invece di limitarsi semplicemente a dividere la capacità di archiviazione.

È la differenza tra dividere una stanza con una parete e creare due stanze destinate a svolgere lavori completamente diversi.

C’è anche un vantaggio nella distribuzione dei contenuti

I CD-ROM avevano un’altra proprietà utile alla quale molti di noi hanno smesso di pensare, semplicemente perché era il modo naturale in cui funzionavano i supporti ottici.

Chi pubblicava il contenuto controllava il contenuto originale.

Vent’anni fa si comprava un software su CD-ROM e lo si installava sul computer. Installare il software non modificava il CD.

Non si potevano trascinare accidentalmente le foto delle vacanze nella cartella di installazione sul disco. Un dipendente non poteva cancellare con noncuranza metà del programma di installazione. E qualcuno non poteva decidere di aver bisogno di altri 300 MB di spazio e cancellare la documentazione.

Il supporto era, di fatto, un oggetto pubblicato e definito.

Le chiavette USB hanno migliorato i dischi ottici praticamente sotto ogni aspetto pratico. Sono più piccole, più veloci, più facili da trasportare e hanno una capacità di archiviazione enormemente superiore.

Ma la normale memoria USB scrivibile ha anche reso meno netta la distinzione tra la persona che pubblica il contenuto e la persona che lo utilizza.

Per documentazione, distribuzione software, strumenti di assistenza, materiale di formazione, utility di ripristino e altri contenuti controllati, a volte quella distinzione è molto utile.

Un’area logica in stile CD-ROM può offrire uno spazio per i contenuti destinati a rimanere nel loro stato originale di distribuzione, mentre un’altra area di memoria sul dispositivo può essere utilizzata per le informazioni che devono legittimamente cambiare.

Non è la stessa cosa della sicurezza

C’è un limite importante che conviene mantenere ben chiaro.

L’emulazione CD-ROM non dovrebbe essere descritta automaticamente come un sistema di sicurezza completo.

Fare in modo che la memoria si comporti come un supporto ottico non sostituisce firme crittografiche, meccanismi di avvio sicuro, crittografia, autenticazione o altre tecnologie progettate per stabilire se un software o dei dati possono essere considerati affidabili.

Queste tecnologie risolvono problemi diversi.

Il valore dell’emulazione CD-ROM riguarda principalmente il comportamento del dispositivo, la compatibilità, la distribuzione controllata e la conservazione dei contenuti pubblicati.

In alcune applicazioni, impedire le normali modifiche è estremamente utile. Ma “difficile da modificare per l’utente” e “dimostrato crittograficamente come autentico” non sono la stessa cosa.

Capire questa differenza è importante, soprattutto quando questi dispositivi vengono utilizzati in ambienti industriali o specializzati.

A volte non si vuole che una chiavetta USB si comporti come una chiavetta USB

La scomparsa dei lettori CD-ROM fisici non significa necessariamente che tutte le caratteristiche utili della memoria ottica siano scomparse insieme a loro.

A volte un vecchio computer si aspetta un supporto ottico.

A volte un software specializzato è stato progettato proprio attorno a quel tipo di supporto.

A volte è molto più semplice adattarsi a un sistema embedded che modificarlo.

A volte un produttore vuole mantenere la documentazione originale o il software separati dallo spazio di archiviazione che l’utente deve poter modificare.

E a volte la soluzione più pratica non consiste nel convincere un vecchio sistema a capire qualcosa di nuovo.

Consiste nel fare in modo che qualcosa di nuovo si comporti come ciò che il vecchio sistema sa già comprendere.

È una delle cose interessanti della tecnologia USB che spesso rimane nascosta dietro la semplicità del gesto di collegare una chiavetta.

Ciò che tenete in mano può contenere memoria NAND flash, ma la NAND da sola non determina ciò che il computer vede.

Anche il controller ha voce in capitolo in questa conversazione.

E con il controller giusto e la configurazione giusta, una chiavetta USB non deve necessariamente comportarsi come una chiavetta USB.

Nota sull’esperienza tecnica: GetUSB lavora da molti anni con configurazioni di chiavette USB a livello di controller e le documenta, compresi il comportamento come supporto rimovibile, le configurazioni come disco fisso, la protezione da scrittura, più unità logiche e l’emulazione CD-ROM. La distinzione importante in questo articolo è che il comportamento CD-ROM può essere creato a livello del controller flash anziché semplicemente tramite un’impostazione dei file di Windows o un’immagine montata via software. Le funzionalità effettivamente disponibili dipendono dal controller USB e dal firmware utilizzati nel supporto flash. L’immagine è stata creata con intelligenza artificiale e si basa su un concetto relativo a un’azienda che offre soluzioni USB CD-ROM.

Leggi Altri Articoli

Continua a esplorare storie, analisi e approfondimenti tecnici.