Как открытый ключ используется для расшифровки в сборках .NET?
Вопрос
Подписанные сборки .NET содержат открытый ключ, но открытый ключ используется для шифрования в RSA, тогда как .NET использует открытый ключ для расшифровки подписанных сборок?
Хорошо, подписанные сборки содержат хэш, но хэш зашифрован с использованием закрытого ключа, а не открытого ключа.Итак, почему и как в .NET закрытые ключи используются для шифрования, а открытые ключи — для дешифрования.Я имею в виду, что все программное обеспечение, такое как RSACryptoPad, использует открытый ключ для шифрования, а не для дешифрования.
Решение
Пара открытого и закрытого ключей не используется для шифрования всей сборки.Вместо этого он привык знак Ассамблея.
Немного упрощая, чтобы подписать файл (например, сборку), вы берете хэш файла, а затем шифруете этот хэш своим закрытым ключом.Кто-то, использующий файл, проверяет вашу подпись, самостоятельно создавая хэш файла, а затем расшифровывая ваш зашифрованный хэш с помощью вашего открытого ключа и подтверждая, что эти два хеша совпадают.Это доказывает две вещи:
- Сборка принадлежит тому, кто утверждает, что она принадлежит вам, т. е. вам, поскольку она была создана с использованием вашего закрытого ключа.
- Сборка не была изменена кем-то другим, поскольку хеш, который вы создали при выпуске сборки, такой же, как текущий.Никто не может изменить подписанную сборку, поскольку им также придется внести соответствующие изменения в зашифрованный хэш, для которого требуется ваш закрытый ключ.
Более подробную информацию о цифровых подписях можно найти в эта статья в Википедии.
Самое замечательное в парах открытого и закрытого ключей заключается в том, что они работают в любом случае.Таким образом, что-то, зашифрованное вашим закрытым ключом, может быть расшифровано только вашим открытым ключом, но также и то, что зашифровано вашим открытым ключом, может быть расшифровано вашим закрытым ключом.Последнее использование означает, что если кто-то хочет отправить что-то вам, и только вы сможете зашифровать это с помощью вашего свободно доступного открытого ключа, но они знают, что только вы с вашим закрытым ключом можете это расшифровать.
Поскольку клавиши работают только парой, поэтому шифрование асимметричное - кто-то другой не может просто отменить шифрование, которое он выполнил с помощью открытого ключа, чтобы передать вам сообщение.
Другие советы
Идея состоит в том, что подпись может быть только созданный используя частный ключ, но после этого любой, у кого есть копия общественный ключ может подтвердить подпись. Для подписи не требуется расшифровка--подпись просто добавляется к текстовой сборке.
Целью подписания сборок является проверка их источника.Если я подпишу свою сборку, а затем отправлю ее вам, вы должны быть достаточно уверены, что она исходит от меня и не была подделана в процессе.