Как открытый ключ используется для расшифровки в сборках .NET? - PullRequest
4 голосов
/ 22 марта 2009

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

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

Ответы [ 3 ]

6 голосов
/ 22 марта 2009

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

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

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

Подробнее о цифровых подписях можно прочитать в этой статье в Википедии .

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

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

3 голосов
/ 22 марта 2009

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

1 голос
/ 22 марта 2009

Целью подписания сборок является проверка их источника. Если я подпишу свое собрание и отправлю его вам, вы должны быть уверены, что это от меня и не было подделано по пути.

...