| ||||
| ||||
Господа, помогите пожалуйста в такой ситуации. Требуется верифицировать X509-сертификат средствами Cryptoki (pkcs#11). Для этого необходимо знать данные сертификата и сигнатуру. Собственно вопрос: 1. Что понимается под данными сертификата? 2. В каком виде должна быть представлена сигнатура? | ||||
Ответы: | ||||
| ||||
Ну из постановки вопроса явно следует и ответ. У вас есть необходимость проверить сертификат (цепочку сертификатов) используя интерфейс 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 | ||||
| ||||
Я выполнил "разбор" данных 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 без преобразования? Если с преобразованием, то с каким ? | ||||
| ||||
К сожалению как попадает сигнатура в функцию проверки подписи PKCS#11 я сказать не могу, по прочине, что интерфейсом pkcs#11 мы не занимались. Интерфейс Microsoft CSP, это совсем не RSA Cryptoki. Но посмотрев доку, можно скзать, что в функцию _Verify нужно передать: последоватеьность байт tBSCertificate открытый ключ, на чем проверять подпись. значение ЭЦП. Вообще PKCS#11 не особо предназначен для работы с сертификатами (как и CSP). Хотя уровень CSP на это и не претендует. Для этого есть CryptoAPI. A PKCS#11 по аналогии с CSP реализует низкоуровневые криптографические функции, и еше пытается немножко обработать сертификат Х.509. | ||||