Чтобы опираться на то, что уже опубликовали другие:
Отказ от ответственности: MS использует терминологию открытого / закрытого ключа с цифровыми подписями, которые меня сильно смущали. У меня только что было «Ага!» момент. Я постараюсь поделиться своими мыслями на случай, если это кому-нибудь поможет.
Введите ППК
Общая схема открытых и закрытых ключей работает путем генерации пары ключей, которые являются асимметричными. Вы не можете получить одно из другого (жизнеспособными средствами). Один из них называется закрытым ключом, а другой - открытым ключом.
Для связи один-ко-многим вы будете держаться за закрытый ключ и делиться открытым ключом. Ваши друзья, которые захотят поделиться с вами документами, подпишут их вашим открытым ключом. Вы расшифруете их своим закрытым ключом. Обратите внимание, что не имеет значения, какой именно ключ вы храните, а какой распространяете. Только не раздавай и то и другое.
Чем отличаются DigSigs?
Цифровые подписи немного странные. Это ситуация много-к-одному. Чтобы продолжить предыдущий пример: подумайте о ситуации, когда вы хотите поделиться документами с друзьями. Вам нужно будет подписать их, то есть зашифровать, и ваши друзья должны иметь возможность расшифровать. Таким образом, вы по-прежнему делитесь своим открытым ключом, но вместо этого подпишите свой открытый ключ и отправите его. У ваших друзей уже есть этот ключ, и они с радостью расшифруют. В этом случае ваш открытый ключ действует как закрытый ключ, а ваш закрытый ключ действует как открытый ключ.
Это то, что MS делает со своими dll.
Проверка на стороне клиента
Теперь для проверки. Сертификат, сгенерированный MS, не годится, пока центр сертификации не скажет, что он хорош. Это касается всех. Если вы хотите безопасно вести бизнес, вы должны получить сертификат от CA. Как только ваш клиент установит ваше приложение, программа проверки операционной системы извлечет ваш сертификат и проверит его, проверив что-то под названием цепочка доверия . Он проверит, кто заверил вашу подпись. Это родительский сертификат. Если система может идентифицировать родителя, они готовы, и вы приняты. Однако, если родитель не может быть проверен, вызывается родитель родителя. И цепочка продолжается, пока не будет найден узел, который можно проверить. Если ни один узел не найден, они сообщат о нем как о неподписанном, небезопасном.
Обратите внимание, что сертификаты могут быть отозваны. Итак, сертификат не означает, что ты хороший. Это еще одна причина, по которой процесс проверки становится важным.