Чи можна керувати модулем SRAM за допомогою штифтів GPIO?


13

Я хотів би приєднати модуль SRAM до RasPi.

Моя ідея - зберігати чутливі (зашифровані) дані на SD-картці, але зберігати ключ на модулі SRAM. Він матиме власний резервний акумулятор (або суперконденсатор ) та антиперешкодний перемикач, який би стирав вміст, якщо корпус був відкритий.

Чи є спосіб взаємодіяти з SRAM лише з 8 доступних ліній GPIO?

Сам модуль SRAM потребує місткості щонайменше 128 біт (розмір найменшої клавіші AES ), але навіть 1-бітна пам'ять потребує 7 адресних рядків і однієї лінії даних плюс 2 або 3 контрольних рядка.

Чи можна це зробити? Я думаю, що це може бути обманом, використовуючи лінію вводу / виводу, яка була розроблена для чогось іншого.

Відповіді:


4

Щоб встановити SRAM, я б запропонував використовувати модуль I2C / SPI ( наприклад , замість використання ліній GPIO. Хоча це можливо повільніше, це означає, що у вас є інші лінії GPIO для інших речей, і ваша SRAM може бути досить великою.

Однак використання SRAM є великим недоліком. Припустимо, ви зберігаєте якусь дійсно цінну інформацію про свій RPI, і я справді маю на увазі. Припустимо, я міг би зламати ваш RPi та запустити довільний код, тоді я міг отримати ваш ключ із SRAM, який необхідний для розшифрування даних. Це ризик для безпеки. Крім того, ви можете використовувати копроцесор AVR / PIC, який ви передаєте через I2C / SPI / UART. Замість того, щоб робити шифрування / розшифровку на RPi, ви надішлите свої дані співпроцесору і переконайтеся, що немає інструкції щодо надсилання ключа на ваш RPi. Однак може бути інструкція для створення нового ключа, і, звичайно, у вас може бути кілька ключів, збережених на співпроцесорі. Це може зробити маленький класний проект.


Дякую, але конфіденційні дані в будь-якому випадку повинні проходити через центральний процесор (тому це вже
порушено,

Я згоден у такій мірі. Якщо у вас є ключ на ключ, то немає можливості розшифрувати вже збережені вами дані.
Алекс Чемберлен

2
Немає сенсу. Дані там не будуть більш безпечними, ніж у звичайній пам'яті. Кожен, хто вкоренив ОС, міг отримати її в будь-якому місці. Той, хто не зміг її дістати ні в одному місці.
Девід Шварц

@David Schwartz: Справа в тому, що (1) вкорінення ОС вимагає від вас відкрити корпус (2) Відкриття корпусу відкриває комутатор, який стирає SRAM. Кожен, хто кореняється в ОС, тепер має доступ до (а) даних у головній пам'яті та спалаху та (б) до нуля на зовнішньому SRAM, тож тепер у них немає ключа для розшифровки даних флеш. Очевидно, що ми все одно повинні захищати ОС від вкорінення через мережу (як ми це робимо.)
finnw

1
Тоді ви можете використовувати MCP79410 . Він має двоконтактний послідовний інтерфейс (тактовий час та дані), 64 байти SRAM та штифт для входу із зовнішнього акумулятора. Просто переконайтесь, що ваш вимикач несанкціонованого живлення містить акумулятор і напругу живлення!
Девід Шварц

4

Ви можете просто використовувати невеликий мікроконтролер для емуляції ОЗУ через SPI або I2C.

У всіх, крім самих маленьких мікросхем, було б 128 біт оперативної пам’яті для зберігання ключа

напр

MSP430G2001 має 128 байт оперативної пам’яті
PIC12F508 має 50 байт оперативної пам’яті (16 байт для ключа, 34 байти безкоштовно)
PIC10F202 має 24 байти оперативної пам’яті (16 байт для ключа, 8 байтів безкоштовно)

Якщо ви дійсно віддаєте перевагу послідовній оперативній пам’яті, вони також існують

23K640 - 64 кбіт / 2,7-3,6 В


2

Ви припускаєте, що на Pi є лише 8 гпіо ліній. Насправді це може бути до 17.

Я не знаю деталей, як отримати доступ до них, але ви можете знайти більше інформації тут

http://elinux.org/RPi_Low-level_peripherals


1
Я просто заперечував (я вважаю, що повинен пояснити), тому що ви майже просто дали посилання, не пояснили. (Я не знаю, чи оціните ви це, але я напевно люблю, щоб люди розповідали, чому вони відмовились.)
ACarter

Я думав, що знати, що ти можеш отримати більше 8 ліній іо, є дуже корисним, але я ціную коментар
Девід Сайкс

0

Ви можете використовувати I 2 модулів C SRAM, як PCF8570P £ 1.50ish 256x8Bit SRAM. Він працює між 2,5 В і 6,0 В, має режим енергозбереження, який залучає до 50nA, і при необхідності можна скласти для створення більшої кількості оперативної пам'яті.

Підключіть його безпосередньо до I2C або до майстра для декількох пристроїв I2C. Використовує лише 2 GPIO, Power та Negative, з можливістю вимкнення живлення ОЗУ MCU, використовуючи невеликий акумулятор.

введіть тут опис зображення

Алекса Чемберлена варто поставитися до безпеки, якщо ви хочете захистити приватний ключ. Можливо, думаєте над створенням свого коду в коді, який вимагає ескалації для доступу до SRAM.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.