Проверка подписи сертификата SSL

Я пытаюсь проверить сертификат на встроенной плате вручную, потому что она не поддерживает Openssl или другие библиотеки. Однако у него есть библиотеки для хешей MD5 и SHA1 и шифрования RSA.

Насколько я понимаю, для проверки сертификата сначала вычислите хэш SHA1 (или MD5) сертификата; затем декодируйте подпись, используя открытый ключ CA, чтобы получить хешированное значение. Эти два значения хеш-функции должны быть одинаковыми.

Хэш SHA1 дает 20-байтовое значение, а MD5 дает 16-байтовое значение. Однако декодирования подписи RSA нет. Если ключ CA составляет 1024 бита, подпись декодирования будет 80 байтов; если ключ CA составляет 512 бит, декодированная подпись будет иметь размер 40 байт. Поэтому я не могу сравнивать 20-байтовое значение SHA1 с 40- или 80-байтовой декодированной подписью.

Я делаю что-то неправильно? Или мне не хватает шага?


person TSCOconan    schedule 08.10.2011    source источник
comment
К вашему сведению: я пытаюсь использовать встроенную плату для проверки входящих сертификатов. Эти сертификаты будут сгенерированы и подписаны частным ЦС, созданным с помощью Openssl.   -  person TSCOconan    schedule 15.10.2011


Ответы (1)


Недостающий бит - это алгоритм заполнения.

Вы используете RSA с определенным алгоритмом заполнения, и тот же алгоритм также сообщает вам, как получить результат (при расшифровке подписи) и извлечь из него фактические данные (хэш).

person Omri Barel    schedule 08.10.2011
comment
Спасибо за информацию, у меня есть дополнительный вопрос. Когда я использую openssl для подписи сертификатов openssl ca -config ca.cnf -policy policy_anything -out certs / certificate.crt -infiles request.csr Метод заполнения по умолчанию, используемый Openssl, - PKCS # 5? Пожалуйста, поправьте меня, если я ошибаюсь, что нет возможности его изменить? Я считаю, что в файле ca.cnf нет параметров для команды CA или чего-либо еще, что позволяет нам выбрать метод заполнения? - person TSCOconan; 15.10.2011
comment
Я думаю, что сделал ошибку в комментарии выше. Openssl использует PKCS # 1 для заполнения, закрытого / открытого ключа и всего, что связано с сертификатами? И я думаю, что нет способа сообщить нам Openssl 0 Padding, поскольку я не могу найти параметры в команде CA no ca.cnf file. - person TSCOconan; 15.10.2011
comment
Я не думаю, что заполнение можно изменить с помощью инструмента командной строки. Если вы готовы написать код, это возможно. Но вам нужна очень веская причина не заполнять вводимые данные (например, если вы делаете собственное заполнение), иначе вы можете внести в схему слабые места. - person Omri Barel; 15.10.2011