Защита данных на SD-карте Raspberry Pi

Мне нужно хранить конфиденциальные данные на Raspberry, чтобы программное обеспечение, работающее на Raspberry, могло их использовать, но никто другой не мог. Я могу установить жесткий пароль, отключить tty и т. д., но легко извлечь SD-карту и проверить ее на ПК.

Моя первая попытка - eCryptFS. Вроде все хорошо, но есть проблема. Как сохранить кодовую фразу и использовать ее для монтирования зашифрованной файловой системы? eCryptFS может считывать фразу-пароль из файла или использовать ее в качестве аргумента монтирования. Очевидно, я не могу использовать файл, так как он хранится небезопасно. Также я могу написать программу, которая будет передавать жестко закодированную (и запутанную) фразу-пароль в mount.ecryptfs либо в качестве параметра cli, либо из стандартного ввода. Но в этом случае также можно запустить эту программу и увидеть всю командную строку с кодовой фразой в списке процессов.

Теперь я подумываю о жестком кодировании моей парольной фразы в самом ecryptfs (или даже о чтении ее из защищенного eeprom), чтобы она работала только на моем устройстве. Или я могу использовать другие системы шифрования, но все они должны где-то принимать форму ключа. Так что единственный способ сделать это, как я вижу, это eeprom или жесткое кодирование.

Существуют ли более эффективные способы безопасного хранения конфиденциальных данных на SD-карте Raspberry?


person Oleg Antonyan    schedule 01.01.2015    source источник
comment
Я не пробовал eCryptFS, но я думаю, что вы ищете то, что называется 'зашифрованный корень'. Используйте dm-crypt.   -  person Steve    schedule 01.01.2015
comment
С dm-crypt все та же проблема: как хранить ключ/парафраз? Если у вас нет физического доступа к устройству хранения, можно поместить его в /root/где-то с разрешениями 400. Но любой может вытащить SD-карту и легко использовать ее для монтирования зашифрованного раздела.   -  person Oleg Antonyan    schedule 02.01.2015
comment
Для некорневых разделов, таких как home и swap, поместите свои ключи LUKS в /etc (т.е. под root). Для корневого раздела вам по-прежнему нужен какой-то способ ручного ввода корневой фразы-пароля. Если у вас нет физического доступа к вашему RPi, вы можете использовать dropbear SSH (ранний SSH), который предоставляет простой хук initramfs.   -  person Steve    schedule 03.01.2015


Ответы (2)


Вы можете использовать уникальный серийный номер RaspberryPi.

Вы можете получить его из /proc/cpuinfo

~# cat /proc/cpuinfo 
[...]
Hardware    : BCM2709
Revision    : a01041
Serial      : 00000000407xxxxx

Прямая команда bash:

~# ID=$(cat /proc/cpuinfo | grep ^Serial | cut -d":" -f2)
~# echo $ID
00000000407xxxxx

Если вам нужно периодически менять пароль шифрования, используйте серийный номер Rpi в качестве ключа дешифрования для статического файла, который возвращает пароль шифрования ecryptfs. OpenSSL — твой друг :D

Надеюсь, поможет.

person Marcolino    schedule 26.04.2015
comment
Мне нравится ваше предложение! Я искал способ «привязать» SD-карту к малине, ничего особенного в плане безопасности, но просто чтобы данные не были слишком открытыми на карте. - person THX; 11.12.2015
comment
Вы можете использовать команду blkid, которая извлекает UUID, который является уникальным идентификатором раздела. - person Marcolino; 12.12.2015
comment
Но серийный номер может быть у каждого. Просто вставьте другую незашифрованную SD-карту и выполните команду «cat /proc/cpuinfo». После используйте его для расшифровки зашифрованной SD-карты. - person doom; 27.10.2017

Вы можете установить пароль как eth0 hw ether mac address. Однако его нельзя использовать для шифрования корневого раздела.

person Vladimir Kunschikov    schedule 02.01.2015
comment
Это не очень хороший пароль, поскольку он фиксированный, и другие компьютеры в той же подсети могут его разрешить с помощью ARP. - person Marcin; 02.01.2015
comment
Согласитесь, плохая идея, если подумать. - person Vladimir Kunschikov; 02.01.2015