Можно ли управлять модулем SRAM через контакты GPIO?

13

Я хотел бы прикрепить модуль SRAM к RasPi.

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

Есть ли способ сопряжения с SRAM только с 8 доступными линиями GPIO?

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

Это можно сделать? Я думаю, что можно обмануть, повторно используя линию ввода / вывода, которая была разработана для чего-то другого.

finnw
источник

Ответы:

4

Чтобы установить SRAM, я бы предложил использовать модуль I2C / SPI ( например , вместо использования линий GPIO. Хотя это потенциально медленнее, это означает, что у вас есть другие линии GPIO для других целей, и ваша SRAM может быть довольно большой.

Однако использование SRAM имеет большой недостаток. Предположим, вы храните действительно ценную информацию на вашем RPi, и я действительно имею в виду. Предположим, я могу взломать ваш RPi и запустить произвольный код, а затем получить ключ из SRAM, который необходим для расшифровки данных. Это угроза безопасности. В качестве альтернативы вы можете использовать сопроцессор AVR / PIC, который вы передаете через I2C / SPI / UART. Вместо того, чтобы выполнять шифрование / дешифрование на RPi, вы отправляете свои данные в сопроцессор и гарантируете, что нет инструкции для отправки ключа на ваш RPi. Однако может быть инструкция для генерации нового ключа, и, конечно, вы можете сохранить несколько ключей в сопроцессоре. Это может сделать крутой маленький проект.

Алекс Чемберлен
источник
Спасибо, но конфиденциальные данные в любом случае должны проходить через ЦП (поэтому они уже скомпрометированы, если кто-то получит root-доступ к Pi.)
finnw
Я согласен в определенной степени. Если у вас есть пароль на ключ, то нет никакого способа расшифровать данные, которые вы уже сохранили.
Алекс Чемберлен
2
Нет никакого смысла. Данные не будут более безопасными, чем в обычной памяти. Любой, кто рутировал ОС, мог получить ее в любом месте. Любой, кто не мог получить это ни в одном месте.
Дэвид Шварц
@ Дэвид Шварц: Дело в том, что (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 линий gpio. На самом деле можно иметь до 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 В, имеет режим энергосбережения, потребляющий всего 50 нА, и может быть сложен для создания дополнительной оперативной памяти, если это необходимо.

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

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

Алекс Чамберлейнс К вопросу безопасности следует отнестись серьезно, если вы хотите защитить закрытый ключ. Возможно, подумайте о создании какой-то изоляции в вашем коде, которая требует расширения доступа к SRAM.

Петр Кула
источник