id: Гость   вход   регистрация
текущее время 20:13 29/05/2020
создать
просмотр
ссылки

Агент-прослойка для безопасной работы с ключами в UNIX


Есть желание настроить некую прослойку между конечными программами (к которым мало доверия, например jabber-клиент) и теми, которые работают с криптографическими ключами. В случае с gpg и gpgme это могло бы выглядеть, как их прозрачная замена на соответствующие ограниченные программы/библиотеки, которые позволяют лишь ограниченную манипуляцию с ключами (только расшифровывать, зашифровывать и подписывать). Цель: добиться того, чтобы в случае уязвимости в конечных программах они всё равно не могли слить ключ злоумышленнику. Предполагается, что такие программы-прослойки могли бы работать как некий "сервер ключей", дилегирующий ограниченные полномочия авторизованным программам.


Первый костыль, который приходит в голову – это написание обвязки к gpg, которая называется так же, но позволяет лишь ограниченный список манипуляций с ключом. К этой обвязке выставляются соответствующие права доступа (как к файлу на ФС) и владелец файла. Минусы подхода в том, что код прийдётся писать самому и в том, что часть программ работают не непосредственно с gpg, а с gpgme.


Для ssh-ключей подобное может быть реализовано такой последовательностью действий: выставить право на доступ к ключам из ~/.ssh только из-под рута. После загрузки ОС, зайти под рутом, дать временно права на чтение каталога пользователем, который будет работать с этими ключами, и из-под него запустить keychain ~/.ssh/*.ssh. Затем права на доступ к ключам опять закрываются сменой владельца на рута. Поскольку ключи уже загружены в память, ими можно далее пользоваться, хоть и нет доступа к файлам ключей на диске. В то же время, извлечь из памяти ключи из-под интерфейса keychain/ssh вроде бы нельзя (ошибаюсь?). Собственно, выглядит тоже как костыль, но вполне рабочий.


Прошу высказаться по поводу реализации решения для такой задачи.


PS: Linux-специфичные решения пока не сильно интересуют, так как у меня *BSD. Желательно, чтобы подобное делалось программи, портированными под основной парк UNIX'ов.


 
Комментарии
— SATtva (10/04/2009 17:02)   профиль/связь   <#>
комментариев: 11545   документов: 1036   редакций: 4094
Первый костыль, который приходит в голову – это написание обвязки к gpg, которая называется так же, но позволяет лишь ограниченный список манипуляций с ключом.

Элементарно реализуется как bash-, python-, какой-угодно-скрипт. Берёте из ввода только разрешённые команды и передаёте их реальному бинарнику gpg. С gpgme действительно сложнее, прокладку придётся писать на Си.
— Гость (10/04/2009 19:18)   <#>
Элементарно реализуется как bash-, python-, какой-угодно-скрипт.

Допустим, полноценный gpg куда-то установлен, а реальный gpg заменяет обвязка. Что помешает программе выполнить оригинальный gpg, а не обвязку? Чтобы осуществить желаемое, допуск к запуску оригинального gpg должен быть доступен только руту (или другому пользователю с соответствующмим правами). Т.о. обвязка должна при запуске оригинала получать права другого пользователя, т.е. быть суидной. Мало кто знает, но скрипты суидными быть не могут, а потому и здесь – единственный вариант – это писать обвязку на Си. Ранее, решая более простую проблему (дать обычным пользовтелям выполнять ряд команд с правами рута), как раз столкнулся с проблемой суидности – пришлось просить спецов написать код на сях (сам не знаю Си). Может быть, что-то такое умеет sudo (правда, я скептически отношусь к его безопасности)? Как подобные задачи (разраничение доступа к ключам) обычно решаются в UNIX? До сих пор нет стандартного решения? А коммерческий PGP под Win таким функционалом тоже не обладает?

Ещё можно взять код gpg, и вырезать оттуда всё "ненужное", впоследствии навесив на него суидность, и можно использовать.
— SATtva (10/04/2009 19:27)   профиль/связь   <#>
комментариев: 11545   документов: 1036   редакций: 4094
Мало кто знает, но скрипты суидными быть не могут, а потому и здесь – единственный вариант – это писать обвязку на Си.

sudo

Может быть, что-то такое умеет sudo (правда, я скептически отношусь к его безопасности)?

Скепсис должен быть чем-то подкреплён. sudo нужно аккуратно настраивать, что мало кто делает: обычно тупо дают рутовые права обычному юзеру с аутентификацией по его, юзера, паролю.

А коммерческий PGP под Win таким функционалом тоже не обладает?

Нет.

Ещё можно взять код gpg, и вырезать оттуда всё "ненужное", впоследствии навесив на него суидность, и можно использовать.

И в этом случае, разумеется, отношение к безопасности такого мутанта будет выше, чем к sudo.
— Гость (10/04/2009 19:53)   <#>
Скепсис должен быть чем-то подкреплён.

sudo менее безопасно чем su, но безопасность su сверху сильно ограничена там фактом, что злоумышленник, потенциально, заполучив права пользователя группы wheel, выполняющего время от времени su, можно получить и права рута. Не силён в технической стороне дела, но это делается (даже если опустить тривиальный случай открытого рут-шелла в screen).

И в этом случае, разумеется, отношение к безопасности такого мутанта будет выше, чем к sudo.

Да нет, просто сказал в порядке "идеи". Если бы подобный кастрат gpg мутант породили разработчики gpg, было бы очень кстати. Как вы думаете, стоит ли им предложить? Имхо, востребованность какая-никакая была б сообществе (да и сделать такое человеку, хорошо знающему код, легко – надо только отсечь всё лишнее).
— Гость (10/04/2009 20:51)   <#>
Кто-то из великих скульпторов говорил: "Я просто беру кусок гранита и отсекаю от него всё лишнее" :)
— Гость (10/04/2009 20:59)   <#>
Да, у меня в мозгах крутилась эта цитата когда писал свой пост, но там-то ирония... а здесь-то реально просто отсечь.
— unknown (12/04/2009 17:09)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
restricted shell ?
— Гость (12/04/2009 18:28)   <#>
Интересная штука для безопасности, но как она решит поставленную задачу? Там вроде бы только список программ разрешённых для выполнения можно ограничить, но не список опций к этим программам. К тому же настроить его безопасно довольно трудно... особенно когда допускается использование кучи программ типа браузеров.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3