
Die meisten Menschen glauben zu wissen, was passiert, wenn sie einen USB-Stick an einen Computer anschließen. Ein Laufwerksbuchstabe erscheint, eine bestimmte Speicherkapazität wird angezeigt, und man kann Dateien darauf kopieren oder Dateien wieder herunterholen. Genau das macht ein USB-Stick.
Nur muss er sich nicht unbedingt so verhalten.
USB-Speicher wird nämlich nicht allein durch den NAND-Flash definiert, der in dem Kunststoffgehäuse steckt. Zwischen dem USB-Anschluss und diesem NAND-Speicher befindet sich ein Controller, und dieser Controller spielt eine entscheidende Rolle dabei, wie sich das Gerät identifiziert und wie der Host-Computer mit ihm kommuniziert.
Genau hier wird es interessant, denn ein USB-Stick kann völlig gewöhnlichen NAND-Flash enthalten und sich dem Computer trotzdem als etwas ganz anderes präsentieren.
Ein Beispiel dafür ist ein USB-Stick, der auf Ebene des Hardware-Controllers so konfiguriert wurde, dass er sich wie ein CD-ROM-Gerät verhält.
Und nein, dabei geht es nicht einfach nur darum, die Dateien schreibgeschützt zu machen.
Der Computer weiß eigentlich gar nicht, was im Stick steckt
Wenn Sie ein USB-Gerät an einen Computer anschließen, schaut das Betriebssystem nicht irgendwie durch das Kunststoffgehäuse hindurch und entdeckt dort NAND-Flash. Stattdessen findet eine Art Gespräch zwischen dem USB-Host und dem Gerät statt, und das Gerät liefert Informationen darüber, was es ist und wie der Computer mit ihm kommunizieren soll.
Man kann sich das ein wenig so vorstellen wie jemanden, der an einem Flughafen zum Schalter der Passkontrolle geht.
Die Person legt Unterlagen vor, die im Grunde Folgendes sagen:
„Ich bin dieser Gerätetyp. So identifiziere ich mich. Diese Funktionen biete ich an. Und so kommunizieren Sie mit mir.“
Bei einem USB-Stick übernimmt der Controller einen großen Teil dieses Gesprächs.
Bei einem gewöhnlichen USB-Stick präsentiert der Controller den Speicher auf eine Weise, die das Betriebssystem als festplattenähnlichen Speicher erkennt. Windows, Linux oder macOS lädt daraufhin die entsprechende Unterstützung und kommuniziert mit dem Gerät auf die dafür vorgesehene Weise.
Der NAND-Flash selbst muss aber nicht zwangsläufig auf diese Weise präsentiert werden.
Ein Controller, der für CD-ROM-Emulation entwickelt und entsprechend konfiguriert wurde, kann NAND-Flash verwenden und daraus ein logisches Speichergerät machen, das sich wie ein optisches Medium verhält. Aus Sicht des Host-Computers hat er es dann mit etwas zu tun, das wesentlich mehr wie ein CD-ROM-Gerät aussieht als wie ein gewöhnlicher beschreibbarer USB-Stick.
Dem Computer ist es dabei ziemlich egal, dass der physische Speicher darunter in Wirklichkeit NAND-Flash ist.
Genau das ist der faszinierende Teil.
Die physische Speichertechnologie und das Speichergerät, das dem Computer präsentiert wird, müssen nicht zwangsläufig dasselbe sein.
Genau an diesem Punkt wird auch der Unterschied zwischen Software-Tricks und echtem Verhalten auf Controller-Ebene wichtig. Diesen Unterschied haben wir ausführlicher in unserer Erklärung zur USB-CD-ROM-Emulation sowie zu Firmware- und Softwaremethoden behandelt. Kurz gesagt: Die Art und Weise zu verändern, wie ein Controller Speicher präsentiert, ist etwas grundlegend anderes, als lediglich ein Dateiattribut zu ändern oder eine ISO-Datei per Software einzubinden.
Stellen Sie es sich wie ein Gebäude mit einem anderen Schild an der Tür vor
Stellen Sie sich ein einziges physisches Gebäude vor.
Hängen Sie draußen ein Schild mit der Aufschrift BANK auf, und Besucher gehen durch die Tür und erwarten Schalter, Konten, Einzahlungen und Auszahlungen.
Ändern Sie das Schild in BIBLIOTHEK, und die Menschen betreten exakt dasselbe Gebäude mit völlig anderen Erwartungen. Sie gehen nicht zum Schalter und versuchen, Geld einzuzahlen. Sie suchen nach Büchern und erwarten die Regeln einer Bibliothek.
Das Gebäude selbst hat sich nicht unbedingt verändert.
Was sich geändert hat, ist die Identität, die nach außen präsentiert wird, und die Regeln, die mit dieser Identität verbunden sind.
Ein USB-Controller kann konzeptionell etwas sehr Ähnliches tun.
Der zugrunde liegende Speicher kann weiterhin NAND-Flash sein, doch anstatt ihn als gewöhnlichen beschreibbaren, festplattenähnlichen Speicher zu präsentieren, kann der Controller ein logisches Gerät darstellen, das das Betriebssystem als CD-ROM-artiges Medium versteht.
Das Betriebssystem reagiert entsprechend.
Diese Unterscheidung ist wichtig, denn CD-ROM-Medien auf einem USB-Stick zu erzeugen ist nicht dasselbe, wie in Windows auf eine Datei zu klicken und „Schreibgeschützt“ auszuwählen.
Es ist auch nicht unbedingt dasselbe, wie bei einem herkömmlichen USB-Speicher Schreibvorgänge zu verhindern.
Bei diesen Ansätzen versucht man zu kontrollieren, was jemand mit einem Speichergerät tun kann.
CD-ROM-Emulation geht einen Schritt weiter, indem sie verändert, welcher Typ von Speichergerät dem Host überhaupt präsentiert wird.
Warum sollte man so etwas überhaupt wollen?
Auf den ersten Blick klingt es rückwärtsgewandt, einen modernen USB-Stick so zu konfigurieren, dass er sich wie Technik aus der CD-ROM-Ära verhält.
Es gibt dafür allerdings einige überraschend praktische Gründe.
Denken Sie beispielsweise an eine Industriemaschine, die vor 15 oder 20 Jahren gebaut wurde.
Ihre Service-Software könnte aus einer Zeit stammen, in der CD-ROM-Laufwerke überall vorhanden waren. Die Anwendung erwartet vielleicht, dass Updates, Kalibrierungsdateien, Installationspakete, Referenzmaterial oder Wiederherstellungswerkzeuge auf optischen Medien bereitgestellt werden.
Irgendwann fällt das physische CD-Laufwerk aus.
Ersatzlaufwerke werden schwieriger zu finden. Gebrannte CDs dauerhaft zu pflegen wird lästig. Vielleicht lohnt es sich nicht, den ursprünglichen Computer zu ersetzen, die damit verbundene Industrieanlage aber sehr wohl.
Ein Austausch dieses Computers könnte außerdem ein völlig anderes Problem verursachen. Industrielle Systeme sind nicht immer Umgebungen, in denen man einfach einen neuen PC installiert, ein paar Programme kopiert und den Dienstagmittag damit abhakt.
Es kann spezielle Treiber geben, proprietäre Hardware, Validierungsanforderungen, Zertifizierungsfragen oder Software, die seit Jahren nicht aktualisiert wurde, weil sie ihre Aufgabe bislang vollkommen zuverlässig erfüllt hat.
Die Maschine selbst kann 100.000 Dollar wert sein, während der Computer, der sie steuert, ein Betriebssystem verwendet, das die meisten Menschen zuletzt gesehen haben, als ihre Kinder noch in der Grundschule waren.
Genau dann wird Kompatibilität wertvoller als etwas Neues und Moderneres.
Ein USB-Gerät, das sich auf geeignete Weise als optisches Medium präsentieren kann, kann möglicherweise eine Brücke zwischen diesen Technologiegenerationen schlagen.
Anstatt die alte Anwendung neu zu schreiben, damit sie modernen Speicher versteht, bringen Sie dem modernen Speicher bei, die Sprache zu sprechen, die die alte Anwendung bereits versteht.
Bei CD-ROM-Emulation geht es weniger darum, so zu tun, als wäre man eine CD, sondern vielmehr darum, mit einem Computer in der Sprache von CD-ROM zu sprechen, weil genau diese Sprache der Computer erwartet.
Embedded-Systeme können noch viel wählerischer sein
Moderne Desktop-Betriebssysteme sind erstaunlich flexibel.
Stecken Sie einen gewöhnlichen USB-Stick in einen aktuellen Windows-Computer, stehen die Chancen ziemlich gut, dass Windows erkennt, um was es sich handelt, und Ihnen Zugriff auf die Dateien gibt.
Embedded-Systeme können dagegen eine völlig andere Kategorie sein.
Denken Sie an CNC-Maschinen, Diagnosegeräte, Laborinstrumente, Fertigungssysteme, Kiosksysteme, Geräte für den Automobilservice, Kassensysteme und spezialisierte Messgeräte.
Viele dieser Maschinen wurden nicht als universell einsetzbare Computer entwickelt.
Ihre Programmierer wussten genau, was die Maschine tun sollte, welche Hardware sie verwenden würde und in vielen Fällen auch ganz genau, auf welchem Weg Informationen eintreffen sollten.
Es gab kaum einen Grund, eine wunderbar flexible Speicherroutine zu schreiben, die jedes Gerät verarbeiten kann, das vielleicht 20 Jahre später einmal jemand an diese Maschine anschließt.
Wenn in der ursprünglichen Spezifikation stand, dass Software auf CD-ROM geliefert wird, dann hat der Programmierer die gesamte Lösung genau darauf ausgelegt.
Das System kann daher bestimmte Annahmen über Gerätetyp, Medienverhalten, Dateisystemstruktur, logische Einheiten oder andere Eigenschaften des Speichergeräts treffen.
Genau hier wird Emulation zu weit mehr als nur einer technischen Spielerei.
Anstatt das Host-System zu verändern, verändern Sie, was das USB-Gerät dem Host über sich selbst mitteilt.
Bei älterer oder spezialisierter Ausrüstung, deren Änderung teuer, schwierig oder sogar unmöglich ist, kann das eine außerordentlich nützliche Möglichkeit sein.
Ein USB-Stick besteht aus mehr als einem Anschluss und etwas Speicher
Das bringt außerdem eines der interessanteren Missverständnisse über USB-Sticks ans Licht.
Man kann sich einen USB-Stick leicht als einfache Gleichung vorstellen:
USB-Anschluss + NAND-Flash = USB-Stick
In dieser Gleichung fehlt jedoch ein wichtiger Bestandteil.
Der Controller.
Der USB-Controller sitzt zwischen dem Host-Computer und dem NAND-Flash-Speicher. Zu seinen Aufgaben gehört es, zwischen dem zu übersetzen, was der Host anfordert, und dem, was innerhalb des Flash-Speichers tatsächlich passiert.
Der Controller ist außerdem daran beteiligt festzulegen, wie sich das Gerät identifiziert, wie der Speicher bereitgestellt wird, welche Eigenschaften gemeldet werden und wie das Gerät auf Befehle des Hosts reagiert.
Das bedeutet, dass sich zwei USB-Geräte mit ähnlichem NAND-Flash völlig unterschiedlich verhalten können, wenn sie an exakt denselben Computer angeschlossen werden.
Eines kann sich als herkömmlicher Wechseldatenträger präsentieren.
Ein anderes könnte so konfiguriert sein, dass es sich wie eine Festplatte verhält.
Eine weitere Implementierung könnte eine logische CD-ROM-Einheit bereitstellen.
Und einige Controller-Architekturen können noch etwas Interessanteres tun: über eine einzige physische USB-Verbindung mehrere logische Speichergeräte bereitstellen.
Ein USB-Stecker kann zu zwei unterschiedlichen Räumen führen
Stellen Sie sich vor, Sie schließen einen einzigen USB-Stick an einen Computer an.
Der Computer entdeckt einen CD-ROM-artigen Bereich mit folgendem Inhalt:
INSTALLATIONSPROGRAMM
HANDBÜCHER
TREIBER
WIEDERHERSTELLUNGSWERKZEUGE
Doch dasselbe physische USB-Gerät stellt zusätzlich einen herkömmlichen beschreibbaren Speicherbereich mit folgendem Inhalt bereit:
PROTOKOLLDATEIEN
BERICHTE
KONFIGURATIONSDATEIEN
BENUTZERDATEN
Es gibt weiterhin nur einen USB-Anschluss und nur ein physisches Gerät, das Sie in der Hand halten.
Logisch betrachtet wurden dem Computer jedoch zwei unterschiedliche Speicherumgebungen präsentiert, die für zwei völlig verschiedene Aufgaben vorgesehen sind.
Der CD-ROM-Bereich kann das ursprünglich vom Hersteller veröffentlichte Material enthalten, während der beschreibbare Bereich weiterhin für Informationen zur Verfügung steht, die im praktischen Einsatz entstehen.
Ein Techniker könnte ein einziges Gerät mit sich führen, das die ursprüngliche Diagnosesoftware und Servicedokumentation enthält, und gleichzeitig einen anderen Bereich desselben Geräts verwenden, um Testergebnisse, Geräteprotokolle oder kundenspezifische Konfigurationsdateien zu speichern.
Die Unterscheidung an dieser Stelle ist wichtig.
Das ist nicht einfach dasselbe, wie einen gewöhnlichen USB-Stick in zwei Partitionen aufzuteilen.
Partitionen teilen die Kapazität eines festplattenähnlichen Speichergeräts auf. Beide Partitionen gehören aber weiterhin grundsätzlich zur gleichen Art von Speicherumgebung.
Ein USB-Controller kann stattdessen mehrere logische Einheiten bereitstellen, die häufig als LUNs bezeichnet werden. Dadurch kann ein einziges physisches Gerät dem Host deutlich unterschiedliche Speicherpersönlichkeiten präsentieren. Für Leser, die noch etwas tiefer in dieses Thema einsteigen möchten, haben wir eine separate Erklärung zu LUNs gegenüber Partitionen und dazu, warum ein USB-Laufwerk als zwei Datenträger erscheinen kann.
CD-ROM-Emulation kann somit das Verhalten und die Identität des logischen Speichergeräts verändern, das dem Host präsentiert wird, anstatt lediglich die Speicherkapazität aufzuteilen.
Es ist der Unterschied zwischen dem Teilen eines Raums durch eine Wand und dem Schaffen zweier Räume, die für völlig unterschiedliche Aufgaben vorgesehen sind.
Es gibt außerdem einen Vorteil bei der Verteilung von Inhalten
CD-ROMs hatten noch eine weitere nützliche Eigenschaft, über die die meisten von uns irgendwann nicht mehr nachgedacht haben, weil optische Medien nun einmal so funktionierten.
Der Herausgeber kontrollierte den ursprünglichen Inhalt.
Vor zwanzig Jahren kauften Sie Software auf CD-ROM und installierten sie auf Ihrem Computer. Die Installation der Software veränderte die CD nicht.
Sie konnten nicht versehentlich Ihre Urlaubsfotos in das Installationsverzeichnis auf der Disc ziehen. Ein Mitarbeiter konnte nicht einfach die Hälfte des Installationsprogramms löschen. Und niemand konnte beschließen, dass er noch 300 MB Speicherplatz braucht, und deshalb die Dokumentation entfernen.
Das Medium war im Grunde ein veröffentlichtes, abgeschlossenes Objekt.
USB-Sticks haben optische Discs in nahezu jeder praktischen Hinsicht verbessert. Sie sind kleiner, schneller, leichter zu transportieren und bieten eine um Größenordnungen höhere Speicherkapazität.
Gewöhnlicher beschreibbarer USB-Speicher hat jedoch auch die klare Trennung zwischen der Person, die Inhalte veröffentlicht, und der Person, die diese Inhalte nutzt, verschwimmen lassen.
Bei Dokumentationen, Softwareverteilung, Servicewerkzeugen, Schulungsmaterial, Wiederherstellungsprogrammen und anderen kontrollierten Inhalten kann genau diese Trennung manchmal sehr nützlich sein.
Ein logischer Bereich im CD-ROM-Stil kann einen Platz für Inhalte bereitstellen, die in ihrem ursprünglich ausgelieferten Zustand erhalten bleiben sollen, während anderer Speicher auf demselben Gerät für Informationen genutzt werden kann, die sich tatsächlich ändern müssen.
Das ist nicht dasselbe wie Sicherheit
Eine wichtige Grenze sollte dabei klar bleiben.
CD-ROM-Emulation sollte nicht automatisch als vollständiges Sicherheitssystem bezeichnet werden.
Wenn sich Speicher wie ein optisches Medium verhält, ersetzt das keine kryptografischen Signaturen, Secure-Boot-Mechanismen, Verschlüsselung, Authentifizierung oder andere Technologien, mit denen festgestellt werden soll, ob Software oder Daten vertrauenswürdig sind.
Diese Technologien lösen andere Probleme.
Der Wert der CD-ROM-Emulation liegt hauptsächlich in Geräteverhalten, Kompatibilität, kontrollierter Verteilung und dem Erhalt veröffentlichter Inhalte.
In manchen Anwendungen ist es ausgesprochen nützlich, normale Änderungen zu verhindern. Doch „für den Benutzer schwer zu verändern“ und „kryptografisch als authentisch nachgewiesen“ sind nicht dasselbe.
Diesen Unterschied zu verstehen ist wichtig, insbesondere wenn solche Geräte in industriellen oder spezialisierten Umgebungen eingesetzt werden.
Manchmal soll sich ein USB-Stick eben nicht wie ein USB-Stick verhalten
Das Verschwinden physischer CD-ROM-Laufwerke bedeutet nicht zwangsläufig, dass damit auch jede nützliche Eigenschaft optischer Speicher verschwunden ist.
Manchmal erwartet ein älterer Computer optische Medien.
Manchmal wurde spezialisierte Software genau dafür entwickelt.
Manchmal ist es wesentlich einfacher, sich an ein Embedded-System anzupassen, als dieses System selbst zu verändern.
Manchmal möchte ein Hersteller ursprüngliche Dokumentationen oder Software klar von dem Speicher trennen, den der Benutzer verändern soll.
Und manchmal besteht die praktischste Lösung eben nicht darin, ein altes System davon zu überzeugen, etwas Neues zu verstehen.
Sondern darin, etwas Neues dazu zu bringen, sich so zu verhalten wie das, was das alte System bereits versteht.
Das ist eine der interessanten Eigenschaften der USB-Technologie, die hinter der scheinbaren Einfachheit verschwindet, einen USB-Stick einfach nur einzustecken.
Was Sie in der Hand halten, enthält vielleicht NAND-Flash-Speicher, doch NAND allein bestimmt nicht, was der Computer tatsächlich sieht.
Der Controller hat bei diesem Gespräch ebenfalls ein Wörtchen mitzureden.
Und mit dem richtigen Controller und der richtigen Konfiguration muss sich ein USB-Stick nicht unbedingt wie ein USB-Stick verhalten.