Как отдать секретный ключ но уберечь от кражи
Привет.
Говорим про GPG.
Есть такая задача, передать (а потом забрать) секретный ключ человеку, что бы тот расшифровал кое-какие даннные, но при этом нужна уверенность, что секретный ключ не будет украден.
На ум, приходят только варианты:
что расшифровывать будет какая-то служба (скрипт), который недоступен человеку, а он будет только подсовывать зашифрованные данные и забирать расшифрованные.
секретный ключ будет храниться на каком-то внешнем устройстве и расшифровка данных будет возможна когда ключ физически доступен, и в этом же устройстве будет реализована защита от копирования данного ключа.
секретный ключ будет храниться на каком-то внешнем устройстве и расшифровка данных будет возможна когда ключ физически доступен, и в этом же устройстве будет реализована защита от копирования данного ключа.
Такое бывает? хотелось бы реализовать за минимальные деньги.
Заранее спасибо за советы :)
Вариант 1: сохранить ключ на смарт-карте с поддержкой OpenPGP. (Например, эта[link1] модель поддерживает ключи RSA до 3072 бит.) Экспортировать ключ с карты нельзя, все криптооперации производятся в её криптопроцессоре. Однако, всё равно придётся полагаться на честность пользователя, поскольку при должной заинтересованности возможно извлечь ключ техническими методами.
Вариант 2: разместить ключ на подконтрольном Вам сервере, куда пользователь будет удалённо передавать данные для обработки. Сервер будет действовать просто как чёрный ящик. Мне такой вариант нравится больше, реализовать нетрудно в любой *nix-среде, создав аккаунт с минимальными привилегиями и открыв к нему доступ по SSH. Для выполнения операций подойдёт простенький обёрточный скрипт, доступный, скажем, через sudo.
Её уже изобрели? Ну кроме PUF[link2]
Если речь буквально о том, чтобы
то это, разумеется, невозможно.
Предположим, кому-то нужно расшифровать письма или файлы, зашифрованные вашим открытым ключом GPG.
В GPG есть полицейский режим, дающий возможность следственным органам прочитать вашу переписку на случай если ваш адвокат постарается организовать дело так, что у них есть ордер на её чтение, но нет ордера на изъятие вашего gpg-ключа (например в случае выборочного приобщения к делу почты только за определённый период или по определённым адресатам):
Пользователь может как-то отрезать и выслать вам заголовки зашифрованных файлов. Из них вы извлечёте session-key и передадите в зашифрованном виде ему по почте ключи сессий.
Использование этой опции не рекомендуется, потому что нарушает теоретически обоснованную модель безопасности — например пользователь может попытаться намеренно сформировать подложный шифртекст, облегчающий факторизацию вашего закрытого ключа.
А этот "полицейский режим", и тому подобные приколы, принимаются как действенные меры в юридической практике? Или еще небыло прецендентов?
Скорее создавались на будущее во времена первоначальных обсуждений RIPA[link3]. Закон устанавливает режим минимизации раскрываемой информации, так что по идее требование о раскрытии должно налагаться именно на симметричные ключи (если есть техническая возможность их выдачи, как теперь в случае GnuPG), а не на закрытые. Но реальных дел с участием GPG действительно ещё не было.
Я ещё думаю, что в любом случае ключ(или подключ) после завершения такой экспуатации имеет смысл отозвать. На всякий пожарный случай.
[offtopic]
Неужели они наконец-то сделали карты, поддерживающие ключи длиннее килобита...
Кто-нибудь из здесь присутствующих пользовался?
[/offtopic]
По отзывам в списке рассылки GnuPG, ряд багов в программе пока не позволяют использовать большие ключи. В svn уже вроде исправлено.