Hi All,
Несколько общих вопросов по работе с сертификатами и ЭЦП
Общую теорию по работе с сертификатами и ЭЦП я почитал, но остались
несколько вопросов:
1) Скажем выдает СЦ пользователю сертификат и пару ключей (Private+Public).
У сертификата есть временное ограничение, например 2 года.
Прошли эти 2 года.
1.1) Кто должен следить, что бы сертификат у пользователя был с не истекшим
сроком: сам хозяин сертификате, специалист по безопасности места работы
хозяина сертификата, специалист СЦ ? Есть ли какие то средства
автоматизации этого процесса (напомнить про истекание срока,
сформировать запрос в СЦ для нового сертификата) ?
1,2) Как я понимаю, при выдаче человеку нового сертификата, в нем как
минимум будет новый срок его действия и наверное новый серийный номер
сертификата. А есть ли тут такое понятие как продление действия
сертификата, т.е. когда в сертификате будет изменен только срок его
действия ? Или в этой ситуации, что выдача нового сертификата, что его
продление фактически одно и тоже ?
1.3) Правильно ли я понимаю, что при выдаче нового (продлении
существующего) сертификата, связанные с ним ключи (Private+Public) не
меняются и соответственно те файлы которые человек подписал 2 года назад можно
проверять и с помощью нового сертификата ?
1.4) Ситуация: есть человек с сертификатом и парой ключей, он подписывает
файлы. Через некоторое время этот человек увольняется, его Private Key скорее
всего удаляется, но его сертификат с находящимся внутри Publick Key, как я
понимаю, остается на его старом месте работы и им проверяют подписанные
ранее этим человеком файлы.
Еще через некоторое время заканчивается срок действие его сертификата. Как
теперь быть с его сертификатом, с одной стороны человека уже нет, но ведь
остались его файлы которые у которых все равно будут проверять их подпись ?
Или в этом случае, сразу после его увольнения, на имя такое человека выдадут
бессрочный сертификат ?
1.5) У человека по каким либо причинам отзывают сертификат. Как я понимаю,
в этом случае человеку выдают новый сертификат и к нему новую пару ключей
(Private+Public). Но ведь у человека уже может быть куча файлов (100,
1000, 10000) подписанных старым ключом, как же быть с этими файлами, точнее
говоря с подписями к ним ? Человеку, что придется заново подписать все
файлы или тут делается что то другое ?
2) Есть файлы с данными и с подписью этих данных. Есть сертификат человека,
который подписал эти данные (точнее хеш этих данных).
Сам сертификат подписан его издателем (скорее всего это какой то СЦ).
2.1) Для проверки подписи данных, как я понимаю, сначала проверяем подпись
издателя под сертификатом.
2.1.1) Откуда в этом случае мы берем Public Key самого издателя, из
сертификата самого издателя или она должна у нас быть в виде отдельного
файла ?
2.2) Если подпись издателя под сертификатом человека верна и сам
сертификат не просрочен и не отозван (тут как я понимаю у меня должно быть
некое хранилище отозванных сертификатов), то извлекаем из сертификата Public Key
человека и уже им проверяем подпись под файлом с данными.
2.3) Насколько нужно для большей достоверности правильности подписи под файлом
с данными, проверять сертификат самого издателя (подпись издателя, срок его
действия, отозван он или нет) ?
3) Есть ли у сертификата некие уникальные поля (набор полей), которые бы
гарантированно отличали его от других сертификатов ?
Например как (по каким полям) CertAddCertificateContextToStore определяет,
есть ли такой сертификат в хранилище или нет ?