Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline proskurinov  
#1 Оставлено : 12 июля 2024 г. 11:28:20(UTC)
proskurinov

Статус: Новичок

Группы: Участники
Зарегистрирован: 12.07.2024(UTC)
Сообщений: 1
Российская Федерация
Откуда: Обнинск

Добрый день!
Разбираюсь API - хотелось бы получить пояснения

Алгоритм валидации подписи CADES_BES:

На входе имеются данные и detached подпись.

CryptMsgOpenToDecode ( CMSG_DETACHED_FLAG)
CryptMsgUpdate (подпись)
CryptMsgUpdate (данные)
CadesMsgIsType - проверить тип подписи
CryptMsgGetParam -
вытягиваю все параметры которы получается - просто для теста - очевидно, что не все из них нужны
CMSG_SIGNER_COUNT_PARAM,CMSG_CRL_COUNT_PARAM,CMSG_CERT_PARAM,CMSG_COMPUTED_HASH_PARAM,CMSG_ENCRYPTED_DIGEST,CMSG_ENCODED_SIGNER,
CMSG_SIGNER_CERT_INFO_PARAM, CMSG_SIGNER_CERT_ID_PARAM, CMSG_SIGNER_CERT_ID_PARAM,CMSG_SIGNER_HASH_ALGORITHM_PARAM,CMSG_SIGNER_INFO_PARAM,
CRYPT_ATTRIBUTES

CMSG_SIGNER_CERT_INFO_PARAM позволяет вытащить
  • версию сертификата
  • серийный номер
  • кем выдан (issuer)
  • NotAfter и NotBefor - почему-то нулевые
  • CRYPT_ALGORITHM_IDENTIFIER = 0

CERT_ID_ISSUER_SERIAL_NUMBER -
  • серийник
  • кем выдан

CMSG_SIGNER_HASH_ALGORITHM_PARAM
  • алгорим хэширования

CMSG_SIGNER_INFO_PARAM
  • алгоритм хэширования
  • алгоритм шифрования

CMSG_SIGNER_AUTH_ATTR_PARAM -подписанные аттрибуты
  • szOID_PKCS_9_CONTENT_TYPE
  • szOID_RSA_signingTime - время подписи
  • szOID_PKCS_9_MESSAGE_DIGEST - хэш данных
  • szCPOID_RSA_SMIMEaaSigningCertificateV2 - наcколько понял CERT_ID


Пока речь идет о CADES_BES.

мои действия :
  1. CadesMsgGetSigningCertId (CERT_ID) - предплоложительно инфо о сертификате, взятое из подписанных аттрибутов
  2. получаю у CertCreateCertificateContext CERT_INFO
  3. сравниваю сертификат из пункта 1 с полученным из CMSG_CERT_PARAM - есть совпадение
  4. получаю алгоритм подписи = 34.10-2012 (256 бит)
  5. пулучаю public key и отправляю в СryptImportPublicKeyInfo



Проверки:

1. CryptMsgControl (CMSG_CTRL_VERIFY_SIGNATURE...) - возвращает TRUE
2. Сравнение хэша открепленных данных с хэшом из szOID_PKCS_9_MESSAGE_DIGEST = совпадение
3. Сравнение хэшей с помощью CadesVerifyHash = CADES_VERIFY_SUCCESS
3. CryptVerifyDetachedMessageSignature -CryptVerifyDetachedMessageSignature = TRUE

Соответсвенно вопросы (предположения):
1. Чем иммено отличются проверки CryptMsgControl CadesVerifyHash CryptVerifyDetachedMessageSignature
Создается впечатление -что они дублируют друг друга
2. правильно ли я понимаю что вычислить значение CMSG_ENCRYPTED_DIGEST из данных для
проверки без вызова CSP - сложно или невозможно
причем с раскодированием - тоже сложно или невозможно
3. CMSG_COMPUTED_HASH_PARAM - хэш ASN1 предсавления подписанных атрибутов (RFC 3852)
4. CMSG_COMPUTED_HASH_PARAM и CMSG_ENCRYPTED_DIGEST должны проверяться одной (или всеми)
проверками из списка проверок ?
5. Все проверки из списка выше, проверяют только хэши/подписи и для проверки
цепочки сертификатов необходимы дальнейшие дейсвия.

Примеры (С++) есть, почти все работают, но не дают полного понимания картины.
Заранее спасибо.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.