Wie könnte ein Hardware-Schreibschutz für Flash-Medien implementiert werden?

Ich habe einen Software-Hintergrund, denke aber, dass dies eine Hardware-/Elektronik-Frage ist.

Auf der Suche nach einer Möglichkeit, Flash-Medien mit einem Hardware-Schreibschutz zu versehen, kaufte ich eine SDHC-Karte (mit einem winzigen Schalter mit der Aufschrift „Schloss“) und einen billigen USB-Kartenleser. Ich wollte ein schreibgeschütztes Gerät erstellen, bei dem ich sicher sein kann, dass es nicht modifiziert wird – ohne Rücksicht auf die Software auf den Hosts nehmen zu müssen, mit denen ich es verbinde.

Direkt in mein Dell-Laptop gesteckt, kann die Karte nur im entsperrten Zustand beschrieben werden... Ich nahm an, dass der Schreibschutz von der SD-Karte umgesetzt wird... Als ich die SD-Karte in den USB-Reader stecke, jedoch das Gleiche Laptop erlaubt mir, auf die gesperrte Karte zu schreiben. Ich habe jetzt diese Frage und diese Bestätigung gelesen , dass ich falsch angenommen habe, dass der Sperrschalter einen Hardware-Schreibschutz bieten würde. Ich weiß jetzt, dass die "Sperre" keine isolierte Funktion der Karte ist - und dass die Standardeinstellung "gesperrt" von den Betriebssystemtreibern abhängt (denen ich nicht gezwungen werden möchte, zu vertrauen).

Ich würde gerne wissen: Was wäre eine unkomplizierte, einfache, zuverlässige, ordentliche und kostengünstige Möglichkeit, einen Hardware-Schreibschutzschalter für Flash-Medien zu implementieren? Idealerweise möchte ich auf diese Medien über USB zugreifen. Ich nehme an, dass ich ein Gerät benötige, das die über die serielle Schnittstelle ausgetauschten Datenblöcke entweder auf USB oder auf der SD-Karte abfangen kann?

Ich denke, diese Frage ist hier etwas abseits des Themas, aber ich habe jemanden gesehen, der einen USB-Stick mit einem RO / RW-Schalter hatte.

Antworten (2)

Sie können die SD-Karte als schreibgeschützt oder vorübergehend schreibgeschützt markieren. Sie können den Speicher auch ausblenden oder zum Schreiben mit einem Kennwort schützen.
Wenn Sie Code/Treiber nicht ändern möchten, können Sie einfach eine externe Einheit bauen, um Ihre SDCards schnell schreibgeschützt zu machen.
Siehe hier für eine Implementierung, die einen externen ATTiny85-Mikro als Man-in-the-Middle verwendet.

Sie sollten die vereinfachten Spezifikationen lesen

Eine allgemeine Diskussion finden Sie in Physical Layer 5.0. Sie können einen Speicherbereich dauerhaft und unwiderruflich als Read Only markieren.

4.3.6 Schreibschutzverwaltung
Die SD-Speicherkarte unterstützt drei Schreibschutzmethoden wie folgt:
- Mechanischer Schreibschutzschalter (nur Host verantwortlich)
- Interner Schreibschutz der Karte (Zuständigkeit der Karte)
- Kennwortschutz-Kartensperre.

Password Card Lock scheint die beste Wahl für Sie zu sein.

4.3.7 Karten-Sperr-/Entsperr-Betrieb
Die Passwortschutzfunktion ermöglicht es dem Host, eine Karte zu sperren, während er ein Passwort bereitstellt, das später zum Entsperren der Karte verwendet wird. Das Passwort und seine Größe werden in einem 128-Bit-PWD- bzw. 8-Bit-PWD_LEN-Register gehalten. Diese Register sind nichtflüchtig, so dass ein Einschaltzyklus sie nicht löscht.

Beachten Sie (aus Ali Chens Diskurs), dass nicht alle SD-Karten, die Sie kaufen, alle Funktionen der Spezifikation implementiert haben. YMMV je nachdem, was Sie kaufen. Wenn Sie gründlich sein wollten, würde ich eine E-Mail an Sandisk oder andere senden und fragen, ob sie diese Funktion unterstützen.

Sehen Sie sich diese beiden Projekte an:

  1. http://www.seanet.com/~karllunt/sdlocker.html Dies zeigt Ihnen, wie Sie PERM_WRITE_PROTECT ....no way back ...permanent schreibgeschützt setzen.
  2. http://www.seanet.com/~karllunt/sdlocker2.html Dies zeigt Ihnen, wie Sie das TMP_Write_Protect-Bit und den Passwortschutz setzen.

Samsung unterstützt definitiv PERM_WRITE_PROTECT, wie in seiner Spezifikation für das CSD-Register gezeigt. Es zeigt es korrekt als (W)1 ...einen einmal beschreibbaren Wert.

Aus diesen sollten Sie in der Lage sein, eine Lösung zu finden, die Ihren Anforderungen entspricht.

Jack, ist es nicht wahr, dass der gesamte interne Kartenschreibschutz in den Spezifikationen "optional" ist, also hat ihn kein Hersteller tatsächlich in Massenprodukten implementiert? Die Samsung-Spezifikationen zeigen dieses PERM_WRITE_PROTECT als "unbenutzt". Wenn Sie irgendwelche SW-Tools posten könnten, um die PERM einzuschalten, werde ich meine "Dissertation" zurückziehen.
@AliChen. Sandisk unterstützt es auf jeden Fall. Tatsächlich haben sie ein Serviceproblem, das gelegentlich für Benutzer eingerichtet wird ... und ihre SD-Karten effektiv blockiert. Die einzige Möglichkeit besteht darin, die SD-Karte zum Austausch an Sandisk zurückzusenden. Ich stimme zu, dass es Lieferanten gibt, die dies nicht unterstützen. Aber das OP kann sicherlich diejenigen finden, die dies tun.
Jack, ich habe dieses Thema vor 5 Jahren gefunden: superuser.com/a/354497/620011 Toshiba implementiert das WP-Management nicht. Ich bin sicher, viele andere folgen. Sie müssen Ihre Antwort also mit SanDisk entsprechend ändern und auf ein Tool verweisen, das dies tun kann. Offensichtlich ist dies kein Standardverfahren, und viele USB-Kartenleser unterstützen einfach keine entsprechenden SD-Befehle.
Ali, wir sind jetzt bei Rev 5.0 der Spezifikation. Und ja, wie gesagt, einige Hersteller unterstützen keine Funktionen ... einige tun dies. Dieser Typ ( seanet.com/~karllunt/sdlocker.html ) zeigte die Lebensfähigkeit vor einigen Jahren. Alles, was das OP tun muss, ist, eine Karte zu bekommen, die PERM_WRITE_PROTECT unterstützt, und er kann loslegen ... auch wenn er ein kleines Tool bauen muss, um das Bit in CSD zu setzen. Ich habe keine Toolsets für MAC/Windows/Linux gesehen, aber sicherlich hat ChibiOS Code zur Unterstützung der Funktionen: chibios.sourceforge.net/docs3/hal/group___m_m_c_s_d.html ...es gibt auch Code auf dem TI MSP430 dafür Das.
Jack, sogar bei Rev.5 sagt der Hauptabschnitt 4.3.6, dass "Internal Write Protection" optional ist. Ich verstehe Ihre Zurückhaltung nicht, Ihre Antwort zu verbessern und zu erweitern, dass nicht alle SD-Karten über diese Funktion verfügen. Es soll noch ein nettes Feature geben, FORCE_ERASE mit Aufhebung des permanenten Schreibschutzes, damit der Flash weiterverwendet werden kann. Wo ist es? Der SD_locker-Typ verwendet TMP_WRITE_PROTECT, das überall implementiert ist, um zu LOCKEN und UNLOCKEN, was nicht das ist, was OP fragt.
Du hast mich nicht gebeten, meine Antwort zu ändern, Ali! Ich freue mich darüber. Das permanente Schreibschutzbit befindet sich in CSD ... die Software zum Schreiben / Aktualisieren von CSD ist trivial. Ich bin mir nicht sicher, ob ich verstehe, was Ihr Problem ist?
ok, meine schlechte Interpretation von "W(1)", was "einmal beschreibbar" bedeutet. Du hast Recht. Dann unterstützt die ATP „industrial grade microSD“ dies auch. Aus irgendeinem Grund ist die WP-Option sehr ungewöhnlich, und da ich fast ein Jahrzehnt lang mit USB-Medienbrücken gearbeitet habe, erinnere ich mich nie an diese Frage. Es scheint, dass das Windows-Dienstprogramm "diskpart" das SD-Volume einfach als "WP" festlegen kann, siehe tenforums.com/tutorials/… Ich lösche meine überkomplizierte Antwort.
Danke für diese spannende Antwort. Es ist ein elegant einfacher Ansatz. Der einzige Nachteil, den ich sehen kann, ist, dass ich Medien nicht wiederverwenden kann, wenn diese Sperre irreversibel (permanent?) ist. Wenn es umkehrbar (vorübergehend?) ist, müsste ich sicher sein, dass die Geräte, an die ich die Karte anschließe, die Einstellung nicht umkehren können. Wäre ein „Brücken“-Ansatz unerschwinglich komplex/teuer/schwierig?
Die einzige Möglichkeit, wie ich mir vorstellen könnte, dass Sie eine vorübergehende, aber umkehrbare Lösung erreichen könnten, besteht darin, das Kennwort zum Kennwortschutz der SD-Karte in Ihren Bootloader (in den Bootpfad Ihres eingebetteten Systems) aufzunehmen. Ihr System bootet dann, entdeckt gesperrte Medien und gibt dann das Passwort zum Entsperren an .... dann setzt es TMP_WRITE_PROTECT (obwohl dies weich ist), damit diese Sitzung jetzt schreibgeschützt ist. Wenn Sie das Medium vom Stromnetz trennen, ist es beim erneuten Einschalten passwortgeschützt. Ein bisschen kompliziert, ich weiß, aber erlaubt es Ihnen, das Boot-Passwort als Geheimnis zu besitzen.
Da Ihnen der Treiber für das Medium gehört, besitzen Sie die Berechtigung, den temporären Nur-Lesen-Status festzulegen oder zu löschen. Wenn Sie ungeschützte Fahrer in Ihrem System zulassen, ist natürlich alles ausgeschlossen.
Meine tatsächliche Situation ist etwas komplizierter: Ich möchte sicher sein, dass mein Flash-Medium unverändert bleibt, wenn ich es an Geräte anschließe, die ich nicht besitze/kontrolliere - egal, welches Betriebssystem/Treiber/Software darauf läuft.
Dann scheint PERM_WRITE_PROTECT die richtige Strategie zu sein.

Die einfachste Antwort ist, einen anderen USB-Kartenleser zu finden, der die Sperre ordnungsgemäß implementiert.

Es hört sich so an, als würden Sie USB-Kartenleser als einfache Pass-Through-Geräte betrachten. Sie sind es nicht – das USB-Protokoll unterscheidet sich vollständig von den SD-Kartenprotokollen. Es gibt also bereits einen Mikrocontroller, der die Datenblöcke kontinuierlich abfängt. Sie müssen nur einen besseren finden, der auch das Sperrbit überprüft.

Vielleicht - obwohl ich die Antwort auf Melabs Frage so verstanden habe, dass die Betriebssystemtreiber den Schreibschutz implementieren. Wenn der Mikrocontroller des USB-Kartenlesers den Schreibschutz implementieren würde, würde das funktionieren. Wie kann ich feststellen, ob der Mikrocontroller selbst und nicht der Betriebssystemtreiber die Schreibschutzfunktion tatsächlich implementiert?