Использование DPAPI для подписи и проверки данных - PullRequest
2 голосов
/ 20 января 2012

В настоящее время я пытаюсь решить, как наилучшим образом реализовать подписывание / проверку в среде .NET 4.0 C #.

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

Для достижения этой цели я пытаюсь использовать сертификаты, однако именно здесь я начинаю бороться.Один из аспектов моей путаницы заключается в том, что мне сообщили, что я могу использовать DPAPI для управления сертификатами, однако, читая документацию DPAPI, он предлагает только способ защиты / снятия защиты произвольных данных для локального хоста / пользователя.Хотя эти данные могут быть закрытым ключом, они не имеют никакого отношения к сертификатам.

Первый вопрос: связана ли DPAPI каким-либо образом с локальным хранилищем сертификатов или другим решением для управления сертификатами?

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

Любые комментарии приветствуются.

1 Ответ

1 голос
/ 20 января 2012

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

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

...