Вы спрашиваете о криптосистеме с открытым и закрытым ключом .В RSA (одной конкретной такой системе) «открытый» и «закрытый» ключи на самом деле представляют собой просто два числа, которые являются основными факторами большего числа.Из-за того, как работает модульное возведение в степень (я не буду объяснять математику), эффект таков:
- Все, что зашифровано с помощью «открытого» ключа, может быть расшифровано с помощью «частного» ключа
- Все, что зашифровано с помощью «закрытого» ключа, может быть расшифровано с помощью «открытого» ключа
Это работает в обоих направлениях.Теперь, после генерации пары, вы оставляете одну из них.Это «частный».К другой половине вы добавляете некоторую идентификационную информацию.В случае X.509 (один конкретный формат сертификата) вы добавляете «общее имя» и некоторую вспомогательную информацию, например дату создания.Это добавляется к «публичной» половине сертификата.Эту половину сертификата, открытого ключа, вы распространяете каким-либо образом.
В случае подписания документа, метод распространения обычно заключается в том, что вы присоединяете открытый ключ.«Кто подписал документ» - это поле «общее имя» сертификата X.509.Это будет выглядеть примерно так: «cn = Joe Blow, o = Widgets Inc, l = Вашингтон, st = DC, c = US».Вы не даете «сертификат» всем - просто публичная часть .Все, что позволяет людям, это:
- Проверка ваших подписей
- Шифрование сообщений таким образом, что только вы можете их расшифровать
Это непусть люди подделывают сообщения так, чтобы они казались из вас.