05.06.2001 23:13:39Верификация сертификата Ответов: 3
Александр
Господа, помогите пожалуйста в такой ситуации.
Требуется верифицировать X509-сертификат средствами Cryptoki (pkcs#11). Для этого необходимо знать данные сертификата и сигнатуру.

Собственно вопрос:
1. Что понимается под данными сертификата?
2. В каком виде должна быть представлена сигнатура?

 
Ответы:
06.06.2001 10:01:10Игорь Курепкин
Ну из постановки вопроса явно следует и ответ.
У вас есть необходимость проверить сертификат (цепочку сертификатов) используя интерфейс cryptoki.
1. Скачиваем описание стандарта PKCS#11 http://www.rsasecurity.com/rsalabs/pkcs/
2.Смотрим состав функций.
3. Убеждаемся, что используя эти функции не так то просто будет произвести верификацию цепочки сертифиактов, как этоописано в рекомендациях RFC 2459 или X.509.

А что такое Х.509 можно посмотреть на нашем сервере в разделе http://www.cryptopro.ru/CryptoPro/pki/dig_cert.asp#17
Популярное описание процесса верификации цепочки приведено в разделе http://www.cryptopro.ru/CryptoPro/pki/dig_cert.asp#5
06.06.2001 10:43:48Александр
Я выполнил "разбор" данных X509-сертификата.
Получил значения полей: Serial Num, Issuer, ...
В конце бинарного файла сертификата находится сигнатура (BIT_STRING).

Для выполнения верификации средствами Cryptoki необходимо вызвать функцию Verify, которая получает на вход данные и сигнатуру.

Вопросы:
1.Под данными в Verify понимается вся информация находящаяся в поле TTBSCertificate ::=
SEQUENCE {
version,
serialNumber,
signature,
issuer,
validity,
subject,
subjectPublicKeyInfo,
issuerUniqueID OPTIONAL,
subjectUniqueID OPTIONAL,
extensions OPTIONAL
}

2. Сигнатура, прочитанная в виде BIT_STRING попадает в Verify без преобразования? Если с преобразованием, то с каким ?
06.06.2001 11:13:30Игорь Курепкин
К сожалению как попадает сигнатура в функцию проверки подписи PKCS#11 я сказать не могу, по прочине, что интерфейсом pkcs#11 мы не занимались. Интерфейс Microsoft CSP, это совсем не RSA Cryptoki.

Но посмотрев доку, можно скзать, что в функцию _Verify нужно передать:
последоватеьность байт tBSCertificate
открытый ключ, на чем проверять подпись.
значение ЭЦП.

Вообще PKCS#11 не особо предназначен для работы с сертификатами (как и CSP). Хотя уровень CSP на это и не претендует. Для этого есть CryptoAPI. A PKCS#11 по аналогии с CSP реализует низкоуровневые криптографические функции, и еше пытается немножко обработать сертификат Х.509.