Администрирование Lotus Notes 4.1x и Lotus Domino 4.5

Использование сертификатов при проверке электронной подписи


Остается объяснить последний момент, связанный с проверкой электронной подписи - из какого источника станция, проверяющая подпись, получает публичный ключ подписавшего письмо или секцию. Этим источником не может быть общая адресная книга, поскольку в противном случае администратор сервера мог бы подменять в ней публичные ключи пользователей и этим "управлять" процедурой проверки подписи. Дело в том, что поле $Signature или $Sig_SectionName содержит не только зашифрованное личным ключом подписавшего значение контрольной суммы по подписываемым полям, но и все сертификаты, извлеченные из ID-файле подписавшего письмо или секцию. Этим объясняется и размер полей $Signature или $Sig_SectionName - в среднем 500 - 700 байтов. Таким образом, документ с несколькими электронными подписями - "недешевое удовольствие".

Для того чтобы "уверенно" определить публичный ключ подписавшего письмо или секцию, станция проверяющего выполняет процедуру проверки сертификатов подписавшего. Эта процедура подобна той, которая выполняется при установлении подлинности пользователя, устанавливающего контакт с сервером. Предположим, письмо или секцию подписал Nikolay N. Iontsev/InterTrustCorp/SU, а проверяет его подпись станция под ID-файле Vladimir A. Panov/InterTrustCorp/SU. Станция Владимира Панова определяет, что общей частью имен подписавшего и проверяющего является /InterTrustCorp/SU. Это имя сертификатора, который создал иерархический сертификат и для Nikolay N. Iontsev/InterTrustCorp/SU, и для Vladimir A. Panov/InterTrustCorp/SU. Прежде всего необходимо определить публичный ключ сертификатора /InterTrustCorp/SU. Он может быть определен из сертификата-компоненты в ID-файле на станции Владимира Панова. Сертификатам, извлеченным из своего ID-файле, станция Владимира Панова "доверяет". Теперь, "уверенно" зная публичный ключ сертификатора /InterTrustCorp/SU, необходимо проверить содержащийся в поле $Signature или $Sig_SectionName сертификат-компоненту, которую создал сертификатор /InterTrustCorp/SU для Nikolay N. Iontsev/InterTrustCorp/SU. В этом сертификате-компоненте (см. 8.2) имеется значение контрольной суммы по информации сертификата, зашифрованное личным ключом сертификатора. Это значение контрольной суммы дешифрируется публичным ключом сертификатора, а затем сравнивается с вычисленным текущим значением контрольной суммы по информации предоставленного сертификата-компоненты. Если значения контрольных сумм совпали, сертификат-компонента, как говорится, "имеет силу". Тогда из этого сертификата-компоненты можно извлечь публичный ключ Nikolay N. Iontsev/InterTrustCorp/SU и "уверенно" использовать уже при проверке контрольных сумм по подписываемым полям письма или секции.

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



Содержание раздела