Czy możliwe jest sterowanie modułem SRAM za pomocą pinów GPIO?


13

Chciałbym dołączyć moduł SRAM do RasPi.

Moim pomysłem jest przechowywanie wrażliwych (zaszyfrowanych) danych na karcie SD, ale zachowanie klucza w module SRAM. Miałby własną baterię zapasową (lub superkondensator ) i przełącznik zapobiegający manipulowaniu, który kasowałby zawartość, gdyby obudowa została otwarta.

Czy jest jakiś sposób na połączenie z SRAM za pomocą tylko 8 dostępnych linii GPIO?

Sam moduł SRAM potrzebowałby pojemności co najmniej 128 bitów (wielkość najmniejszego klucza AES ), ale nawet 1-bitowa pamięć wydaje się wymagać 7 linii adresowych i jednej linii danych plus 2 lub 3 linie kontrolne.

Czy da się to zrobić? Myślę, że można oszukiwać, ponownie wykorzystując linię I / O, która została zaprojektowana do czegoś innego.

Odpowiedzi:


4

Aby zainstalować SRAM, sugerowałbym użycie modułu I2C / SPI ( przykład , zamiast korzystania z linii GPIO. Chociaż potencjalnie wolniejszy, oznacza to, że masz inne linie GPIO do innych rzeczy, a twoja pamięć SRAM może być dość duża.

Korzystanie z SRAM ma jednak dużą wadę. Załóżmy, że przechowujesz naprawdę cenne informacje na temat RPi, a ja naprawdę jestem podły. Załóżmy, że mógłbym włamać się do twojego RPi i uruchomić dowolny kod, a następnie mógłbym pobrać Twój klucz z SRAM, który jest wymagany do odszyfrowania danych. To ryzyko bezpieczeństwa. Alternatywnie możesz użyć koprocesora AVR / PIC, który komunikujesz przez I2C / SPI / UART. Zamiast szyfrowania / deszyfrowania na RPi, wyślesz swoje dane do koprocesora i upewnisz się, że nie ma instrukcji wysłania klucza do twojego RPi. Może jednak istnieć instrukcja generowania nowego klucza i oczywiście możesz mieć kilka kluczy zapisanych w koprocesorze. To może zrobić fajny mały projekt.


Dzięki, ale wrażliwe dane i tak muszą przejść przez procesor (więc jest już zagrożone, jeśli ktoś uzyska dostęp root do Pi.)
finnw

Zgadzam się do pewnego stopnia. Jeśli masz hasło do klucza, nie ma możliwości odszyfrowania danych, które już zapisałeś.
Alex Chamberlain

2
Nie ma sensu. Dane nie będą tam bezpieczniejsze niż w normalnej pamięci. Każdy, kto zrootował system operacyjny, może go zdobyć w dowolnym miejscu. Każdy, kto nie mógł dostać go w żadnym miejscu.
David Schwartz

@David Schwartz: Chodzi o to, że (1) rootowanie systemu operacyjnego wymaga otwarcia skrzynki (2) otwarcie skrzynki otwiera przełącznik, który kasuje pamięć SRAM. Ktokolwiek zrootuje system operacyjny, ma teraz dostęp do (a) danych w pamięci głównej i pamięci flash oraz (b) paczki zer na zewnętrznej pamięci SRAM, więc teraz nie mają klucza do odszyfrowania danych flash. Oczywiście musimy nadal chronić system operacyjny przed
rootowaniem

1
Następnie możesz użyć MCP79410 . Ma dwupinowy interfejs szeregowy (zegar i dane), 64 bajty SRAM i pin do wejścia z zewnętrznej baterii. Tylko upewnij się, że twój sabotaż odcina napięcie akumulatora i zasilania!
David Schwartz

4

Możesz po prostu użyć małego mikrokontrolera do emulacji pamięci RAM przez SPI lub I2C.

Wszystkie mikroskopy oprócz bardzo małych miałyby 128 bitów pamięci RAM do przechowywania klucza

na przykład

MSP430G2001 ma 128 bajtów RAM
PIC12F508 ma 50 bajtów RAM (16 bajtów na klucz, 34 bajty wolne)
PIC10F202 ma 24 bajty RAM (16 bajtów na klucz, 8 bajtów wolnych)

Jeśli naprawdę wolisz seryjną pamięć RAM, one również istnieją

23K640 to 64 kb / 2,7-3,6 V.


2

Zakładasz, że na Pi jest dostępnych tylko 8 linii gpio. W rzeczywistości można mieć do 17.

Nie znam szczegółów dotyczących dostępu do nich, ale więcej informacji znajdziesz tutaj

http://elinux.org/RPi_Low-level_peripherals


1
Właśnie przegłosowałem (wydaje mi się, że powinienem to wyjaśnić), ponieważ właściwie podałeś tylko link, nie wyjaśniłeś. (Nie wiem, czy to docenisz, ale zdecydowanie lubię, kiedy ludzie mówią mi, dlaczego nie głosowali).
ACarter

Pomyślałem, że wiedza, że ​​możesz uzyskać więcej niż 8 linii, jest bardzo przydatna, ale doceniam komentarz
David Sykes,

0

Możesz użyć modułów I 2 C SRAM, takich jak PCF8570P 1,50 £, 256 x 8 bitów SRAM. Działa między 2,5 V a 6,0 V, ma tryb oszczędzania energii, który pobiera zaledwie 50nA i może być układany w stos, aby utworzyć więcej pamięci RAM w razie potrzeby.

Podłącz go bezpośrednio do I2C lub do Master dla wielu urządzeń I2C. Używa tylko 2 GPIO, Power i Negative, z opcją wyłączania pamięci MCU po wyłączeniu pamięci RAM za pomocą małej baterii.

wprowadź opis zdjęcia tutaj

Problem ochrony Alexa Chamberlainsa należy potraktować poważnie, jeśli chcesz chronić klucz prywatny. Być może zastanawiasz się nad stworzeniem pewnego rodzaju izolacji w kodzie, która wymaga eskalacji w celu uzyskania dostępu do SRAM.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.