Ist es möglich, ein SRAM-Modul über die GPIO-Pins zu steuern?


13

Ich möchte ein SRAM-Modul an das RasPi anschließen.

Meine Idee ist es, sensible (verschlüsselte) Daten auf der SD-Karte zu speichern, aber den Schlüssel auf einem SRAM-Modul zu belassen. Es verfügt über eine eigene Pufferbatterie (oder einen Superkondensator ) und einen Manipulationsschutzschalter, der den Inhalt löscht, wenn das Gehäuse geöffnet wird.

Gibt es eine Möglichkeit, mit nur den 8 verfügbaren GPIO-Leitungen eine Schnittstelle zum SRAM herzustellen?

Das SRAM-Modul selbst würde eine Kapazität von mindestens 128 Bit (die Größe des kleinsten AES- Schlüssels) benötigen, aber selbst ein 1 Bit breiter Speicher würde anscheinend 7 Adressleitungen und eine Datenleitung plus 2 oder 3 Steuerleitungen erfordern.

Kann es gemacht werden? Ich denke, es könnte möglich sein, durch die Wiederverwendung einer E / A-Leitung zu betrügen, die für etwas anderes entwickelt wurde.

Antworten:


4

Um SRAM zu installieren, würde ich empfehlen, ein I2C / SPI-Modul zu verwenden ( Beispiel anstelle der GPIO-Leitungen. Obwohl dies möglicherweise langsamer ist, bedeutet dies, dass Sie die anderen GPIO-Leitungen für andere Dinge haben und Ihr SRAM kann ziemlich groß sein.

Es gibt jedoch einen großen Nachteil bei der Verwendung von SRAM. Angenommen, Sie speichern einige wirklich wertvolle Informationen zu Ihrem RPi und ich bin wirklich gemein. Angenommen, ich könnte mich in Ihr RPi hacken und beliebigen Code ausführen und dann Ihren Schlüssel aus dem SRAM abrufen, der zum Entschlüsseln der Daten erforderlich ist. Dies ist ein Sicherheitsrisiko. Alternativ können Sie einen AVR / PIC-Coprozessor verwenden, den Sie über I2C / SPI / UART kommunizieren. Anstatt die Verschlüsselung / Entschlüsselung des RPi durchzuführen, würden Sie Ihre Daten an den Coprozessor senden und sicherstellen, dass keine Anweisung zum Senden des Schlüssels an Ihr RPi vorhanden ist. Es kann jedoch eine Anweisung zum Erzeugen eines neuen Schlüssels geben, und natürlich können mehrere Schlüssel auf dem Coprozessor gespeichert sein. Dies könnte ein cooles kleines Projekt machen.


Danke, aber die sensiblen Daten müssen trotzdem die CPU passieren (so ist es bereits gefährdet, wenn jemand Root-Zugriff auf den Pi bekommt.)
finnw

Ich stimme in gewissem Umfang zu. Wenn Sie ein Kennwort für den Schlüssel haben, können Sie die bereits gespeicherten Daten nicht entschlüsseln.
Alex Chamberlain

2
Es hat keinen Sinn. Dort sind die Daten nicht sicherer als im normalen Speicher. Jeder, der das Betriebssystem verwurzelt hat, kann es an beiden Stellen bekommen. Jeder, der es nicht konnte, bekam es an keiner Stelle.
David Schwartz

@ David Schwartz: Der Punkt ist, dass (1) Sie das Betriebssystem rooten müssen, um das Gehäuse zu öffnen. (2) Wenn Sie das Gehäuse öffnen, wird ein Schalter geöffnet, der den SRAM löscht. Wer auch immer das Betriebssystem rootet, hat jetzt Zugriff auf (a) die Daten im Hauptspeicher und im Flash und (b) eine Reihe von Nullen im externen SRAM, sodass er jetzt nicht über den Schlüssel verfügt, um die Flash-Daten zu entschlüsseln. Offensichtlich müssen wir noch das Betriebssystem schützen , über das Netzwerk verwurzelt (wie wir bereits.)
finnw

1
Dann könntest du den MCP79410 verwenden . Es verfügt über eine zweipolige serielle Schnittstelle (Clock und Daten), 64 Byte SRAM und einen Pin für die Eingabe von einer externen Batterie. Stellen Sie einfach sicher, dass Ihr Sabotageschalter sowohl die Batterie- als auch die Versorgungsspannung trennt!
David Schwartz

4

Sie könnten einfach einen kleinen Mikrocontroller verwenden, um den RAM über SPI oder I2C zu emulieren .

Bis auf die kleinsten Mikros hätten alle 128 Bit RAM, um den Schlüssel zu speichern

z.B

MSP430G2001 hat 128 Bytes RAM
PIC12F508 hat 50 Bytes RAM (16 Bytes für Schlüssel, 34 Bytes frei)
PIC10F202 hat 24 Bytes RAM (16 Bytes für Schlüssel, 8 Bytes frei)

Wenn Sie den seriellen Arbeitsspeicher wirklich bevorzugen, gibt es ihn auch

23K640 ist 64 kbit / 2,7-3,6 V


2

Sie gehen davon aus, dass auf dem Pi nur 8 GPIO-Leitungen verfügbar sind. In der Tat ist es möglich, bis zu 17 zu haben.

Ich weiß nicht, wie ich darauf zugreifen soll, aber hier finden Sie weitere Informationen

http://elinux.org/RPi_Low-level_peripherals


1
Ich habe nur herabgestimmt (ich denke, ich sollte es erklären), weil du so ziemlich nur einen Link gegeben hast, nicht erklärt. (Ich weiß nicht, ob Sie das zu schätzen wissen, aber ich mag es, wenn Leute sagen, warum sie abgelehnt haben.)
ACarter

Ich dachte, dass es ziemlich nützlich ist, zu wissen, dass man mehr als 8 io Zeilen bekommen kann, aber ich schätze den Kommentar
David Sykes

0

Sie können I 2 C-SRAM-Module wie den PCF8570P £ 1.50ish 256x8Bit-SRAM verwenden. Es arbeitet zwischen 2,5 V und 6,0 ​​V, hat einen Stromsparmodus, der nur 50 nA benötigt, und kann gestapelt werden, um bei Bedarf mehr RAM zu erzeugen.

Schließen Sie es direkt an I2C oder an einen Master für mehrere I2C-Geräte an. Verwendet nur 2 GPIOs, Power und Negative, mit der Option, die RAM-Speicherung mit einer kleinen Batterie auszuschalten.

Bildbeschreibung hier eingeben

Alex Chamberlains Sicherheitsbedenken sollten ernst genommen werden, wenn Sie den privaten Schlüssel schützen möchten. Denken Sie möglicherweise darüber nach, eine Art Isolation in Ihrem Code zu erstellen, die eine Eskalation erfordert, um auf den SRAM zuzugreifen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.