Откройте и проверьте подписанные документы - PullRequest
2 голосов
/ 19 августа 2010

У меня есть процесс подписания документа. Вам нужен сертификат, выданный центром сертификации. У вас есть открытый и закрытый ключ. С частным лицом, которое вы подписываете, а с общественностью люди открывают ваш подписанный документ. Когда вы подписываете документ, математический алгоритм обрабатывает файл, а затем генерирует хэш, а затем с помощью закрытого ключа этот хэш шифруется. Наконец, мне нужно добавить (concat) этот зашифрованный хэш в документ.

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

Итак ... Вопросы ... Откуда люди получают открытый ключ ??? И как я проверяю, кто подписывает документ ??

Нужно ли мне добавлять сертификат к документу, который я хочу петь? Если это правда Разве это не небезопасно ??? раздать каждому свой сертификат ??

спасибо,

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Вы спрашиваете о криптосистеме с открытым и закрытым ключом .В RSA (одной конкретной такой системе) «открытый» и «закрытый» ключи на самом деле представляют собой просто два числа, которые являются основными факторами большего числа.Из-за того, как работает модульное возведение в степень (я не буду объяснять математику), эффект таков:

  • Все, что зашифровано с помощью «открытого» ключа, может быть расшифровано с помощью «частного» ключа
  • Все, что зашифровано с помощью «закрытого» ключа, может быть расшифровано с помощью «открытого» ключа

Это работает в обоих направлениях.Теперь, после генерации пары, вы оставляете одну из них.Это «частный».К другой половине вы добавляете некоторую идентификационную информацию.В случае X.509 (один конкретный формат сертификата) вы добавляете «общее имя» и некоторую вспомогательную информацию, например дату создания.Это добавляется к «публичной» половине сертификата.Эту половину сертификата, открытого ключа, вы распространяете каким-либо образом.

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

  • Проверка ваших подписей
  • Шифрование сообщений таким образом, что только вы можете их расшифровать

Это непусть люди подделывают сообщения так, чтобы они казались из вас.

0 голосов
/ 19 августа 2010

Хеш не "соединен" с документом. Различные стандарты подписи данных (PKCS # 7, CAdES для общих данных, XMLDSig для XML, спецификация PDF для документов PDF) описывают различные способы включения данных подписи в выходной файл. Все эти форматы позволяют включать открытый ключ (обычно сертификат X.509) вместе с данными для проверки. И цель верификатора также состоит в том, чтобы проверить, является ли сам ключ действительным. В качестве альтернативы пользователь может знать открытый ключ.

...