zur StartseiteWishlist-Startseite

ein USB-Filter in Hardware

Version 1.1, 13.11.2014

Aus zwei Gründen ist die derzeitige Situation, dass man USB-Sticks als gefährlich ansehen muss (siehe auch hier), problematisch:

  1. Datenaustausch mit sicheren Systemen

    Auch mit sicheren Systemen (Offline-Systemen) muss man irgendwie Daten austauschen; CDs / DVDs dafür zu brennen, ist oftmals nicht praktikabel. Wenn man aber schon in dem Moment, in dem man den Datenträger ansteckt, davon ausgehen muss, dass das System kompromittiert ist, dann wird es jedenfalls deutlich aufwendiger, Daten mit dem System auszutauschen, ohne beispielsweise auf dem System genutzte Schlüssel zu kompromittieren.

  2. Nichterkennbarkeit und Nichtbekämpfbarkeit

    Dadurch, dass Virenscanner Malware in Firmware nicht erkennen und nicht beseitigen können, ist ein kompromittierter Stick ein Problem für die Ewigkeit, also auch bei normalen (nicht besonders gesicherten) Rechnern ein viel größeres Problem als ein normaler Malware-Befall.

Ein Großteil des Problems lässt sich darauf zurückführen, dass keine der beteiligten Komponenten

  1. Host-Controller

  2. USB-Treiber

  3. USB-Geräte (v.a. Sticks)

im Hinblick auf Sicherheit (auf diesem Niveau) entwickelt wird. Wenig erstaunlich angesichts der Kosten, die damit verbunden wären, auf der einen Seite und der Irrelevanz dieses Aspekts für die Masse der Käufer (und damit die fehlende Bereitschaft, Mehrkosten zu akzeptieren).

Lösung

Eine gute Lösung für eine Reihe von Problemen wäre eine Open-Hardware-Komponente (natürlich mit Open-Source-Firmware), die man zwischen Rechner und USB-Stick schalten könnte: ein kleines Gerät, das neben dem Anschluss an den Rechner in einfachsten Fall nur eine Typ-A-Buchse hätte, vermutlich aber zwei Buchsen und mehrere Schalter; gewissermaßen ein spezialisierter USB-Hub. Die Firmware würde natürlich in einem (physisch) schreibgeschützten, gesockelten Baustein gespeichert.

Dieser Hardware-Filter ließe (in beide Richtungen) nur diejenigen Operationen zu, die für die Nutzung von USB-Sticks unbedingt benötigt werden. Insbesondere würden (Schreib-)Zugriffe auf den Stick nur dann zugelassen, wenn sie den regulären Speicherbereich betreffen, so dass der Filter auch ein Schutz für die Sticks gegenüber kompromittierten Rechnern wäre. Alle Meta-Informationen, die der Stick übermittelt (Hersteller, Seriennummer usw.), würden einer Plausibilitätskontrolle unterworfen. Denkbar ist auch, alle Informationen bis auf die unverzichtbaren (Kapazität, Seriennummer) durch feste Werte zu ersetzen.

Da es mit Schwierigkeiten verbunden sein dürfte, (zu einem akzeptablen Preis) einen Open-Hardware-Controllerchip zu bekommen, mag es eine passable Alternative sein, unterschiedliche Controllerchips zu kaskadieren. Das würde sinnvollerweise über zwei Geräteserien umgesetzt, so dass diejenigen, denen das wichtig ist, zwei unterschiedliche Hardware-Filter zwischen Rechner und Stick hängen würden.

Grenzen der Schutzwirkung

So ein Gerät könnte nicht verhindern, dass ein Stick für dieselbe Adresse unterschiedliche Daten liefert, ohne dass der Rechner diese Adresse zwischenzeitlich beschrieben hätte. Nachdem ein Virenscanner eine Datei durchgewunken hat, könnte also eine schadhafte geliefert werden. Das mag häufig daran scheitern, dass das Betriebssystem die Datei cacht, wenn der Virenscanner sie einliest, aber das grundsätzliche Problem besteht.

Erweiterungen

Schreibschutz

Gelegentlich ist es wünschenswert, die Gewissheit zu haben, dass ein USB-Stick nicht beschrieben werden kann. Die meisten Sticks haben überhaupt keine Schreibschutzfunktion, und bei denen, die so etwas haben, muss man leider im Sinne der diesem Text zugrundeliegenden Problematik bezweifeln, dass sie verlässlich implementiert ist.

Wenn man das Gerät mit einem zweiten (physisch vom ersten getrennten) Port ausstattet, so dass dort ein zweiter Stick mit (an die ) Konfigurationseinstellungen für den Hardware-Filter eingesteckt werden könnte, dann wäre es auch leicht möglich, Bereiche eines Sticks zu schützen. So könnte man etwa Linux auf dem Stick installieren und die Partition(en) mit der Software (und vitalen Teilen der Konfiguration) schreibschützen und einen anderen Teil des Sticks beschreibbar lassen.

Verschlüsselung

Über einen zweiten Port und Konfigurations-Stick sowie einen weiteren Schalter könnte der Hardware-Filter auch dafür verwendet werden, Daten auf Sticks (symmetrisch) zu verschlüsseln, ohne den Schlüssel dem Rechner bekannt zu machen und ohne Software installieren zu müssen.

Auf dem Konfigurations-Stick könnten für jede Seriennummer eines verwendeten Sticks ein oder mehrere Bereiche und ein zugehöriger Schlüssel definiert werden. Die Bereiche würden unterschiedlichen Sicherheitsstufen zugeordnet. Über den Schalter würde dann festgelegt, bis zu welcher Sicherheitsstufe dem Rechner Zugang gewährt werden soll.

Die entschlüsselten Bereiche könnten als einzelne unpartitionierte USB-Sticks dargestellt werden (oder als etwas größere, mit einer berechneten Partitionstabelle mit genau einer Partition, deren ID auf dem Konfigurations-Stick gespeichert werden könnte). Falls nur ein Stick dargestellt wird, müsste der partitioniert sein. Die nicht freigeschalteten Partitionen würden dann als unformatiert angezeigt (und wären implizit schreibgeschützt).

Es würde ein (nicht besonders kompliziertes) Hilfsprogramm benötigt, um die Daten auf den Konfigurations-Stick zu schreiben.

Die kaskadierte Verwendung zweier Hardware-Filter mit Verschlüsselung (insbesondere in Kombination mit der Schreibschutzfunktion, um das Anlegen temporärer Dateien zu verhindern) würde es Leuten, die nicht besonders IT-affin sind, Daten über das Vier-Augen-Prinzip zu sichern, ohne Angst haben zu müssen, bei der Eingabe von Passwörtern beobachtet zu werden (das Problem des unbemerkten Kopierens bliebe bestehen, könnte aber durch die Aufteilung in viele Bereiche (von denen immer nur einer freigegeben werden muss) verringert werden).

Versionen dieses Dokuments

[Hier ist die Seite zu Ende.]