Шифрование RSA: возможно ли аннулировать пару открытый / закрытый ключ в одноранговой сети? - PullRequest
2 голосов
/ 04 июля 2011

Я создаю приложение (C #), которое будет отправлять некоторые сообщения по сети. Исходящие сообщения будут подписаны закрытым ключом, входящие сообщения расшифрованы закрытым ключом.

В случае, если кто-то украл закрытый ключ, я хочу иметь возможность отозвать его (отправить сообщение об аннулировании всем остальным клиентам). Поскольку я являюсь владельцем украденного закрытого ключа, только я должен иметь возможность отозвать его.

Мой вопрос: возможно ли создать пару открытый / закрытый ключ, в зависимости от так называемой «Мастер пары открытых / секретных ключей», которую я создал ранее, для использования в моем приложении и, если закрытый ключ в приложении украли, я могу отозвать его, потому что с помощью мастер-ключа я могу доказать, что я владелец?

Надеюсь, кто-то понимает, о чем я; -)

Mike

Обновление 1:

  • Я разрабатываю одноранговое приложение, поэтому не будет центрального сервера / CA
  • Я генерирую открытый / закрытый ключи с помощью класса RSACryptoServiceProvider в C #

Ответы [ 3 ]

3 голосов
/ 04 июля 2011

Вы хотите заключить ключи в сертификат X.509. Сертификаты должны иметь центр отзыва, который поддерживает OCSP (протокол статуса сертификата в сети). см http://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol

2 голосов
/ 15 июля 2011

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

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

2 голосов
/ 04 июля 2011

По сути, вы спроектируете систему, в которой каждый клиент может получать сообщения, подписанные двумя закрытыми ключами: если он получает сообщение со второго закрытого ключа, он отбрасывает все, что получено, подписанный первым ключом.

Кажется, просто ...

Итак, я думаю, что вы имели в виду, что вы хотите «отозвать» первый открытый / закрытый ключ таким образом, чтобы ваша система считала эту пару недействительной независимо от той же обработки, я имею в виду, даже если кто-то взломает клиент, он не сможет принять первую скомпрометированную пару ключей, потому что каким-то образом они отозваны второй парой ключей.

Это так?

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

...