Есть ли часть секретных данных в учетной записи пользователя Linux? - PullRequest
0 голосов
/ 18 февраля 2010

Я хочу, чтобы мое приложение (PHP, но это не имело значения) сохраняло некоторые данные в общем хранилище (пользовательский кэш APC, но опять-таки не имеет значения). Чтобы пользователи не могли читать данные друг друга, я хотел бы зашифровать их для каждого пользователя.

Я мог бы попросить пользователя указать ключ в своем файле конфигурации для приложения, но я бы лучше сгенерировал его автоматически, чтобы пользователю не пришлось беспокоиться.

Для этого мне понадобится часть данных в системе, которая (почти) никогда не меняется и доступна только для чтения текущему пользователю. Затем я могу хэшировать это или что-то еще, чтобы сгенерировать ключ. Существует ли нечто подобное в учетной записи пользователя по умолчанию в системе Linux?

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

Сохранение ключа в ~/.yourApp будет работать при условии, что вы установили разрешения для файла ключей на 0600 и разрешения для каталога ~/.yourApp на 0700.

Конечно, вы полагаетесь на людей, которые не могут / не хотят использовать root-доступ для доступа к файлам ключей других пользователей. Если это проблема, вам нужно использовать какое-то хранилище ключей, доступ к которому контролируется главной парольной фразой.

РЕДАКТИРОВАТЬ : в ответ на следующие вопросы ОП:

Даже в этом случае главная парольная фраза должна храниться в системе, или пользователям придется вводить ее вручную для каждого запроса (я полагаю, даже хранение ее в памяти небезопасно, если вы не доверяете root).

Это все относительно. Если вы действительно параноик, вы не храните ключ ни на одной машине, которую полностью не контролируете. С другой стороны, большинство людей готовы полагать, что root не был скомпрометирован и (как запасной вариант), что кому-то, имеющему root-доступ, нужно приложить некоторые усилия, чтобы сломать хранилище ключей. Разблокированная копия вашего хранилища ключей в памяти может считаться «достаточно безопасной». Конечно, многие пользовательские программы для хранения ключей, кажется, работают на этом предположении.

Почему каталог должен быть установлен в 0700? Даже если бы это был 0777, файл внутри него с 0600 все равно был бы нечитаемым для других, верно?

Отчасти общая паранойя, отчасти пояс и брекеты, отчасти знак для других пользователей «держать свой нос подальше от моих личных вещей» и отчасти для защиты от кого-либо путем замены файла ключа. Последний пункт может быть критическим ... или нет ... в зависимости от того, как именно ключ используется вашим приложением.

1 голос
/ 18 февраля 2010

В домашнем каталоге есть скрытые папки, просто называемые .appname. Они могут быть прочитаны пользователем.

Как просто сгенерировать случайный ключ и сохранить его в ~ / .yourappname?

...