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

Уведомление

Icon
Error

8 Страницы«<34567>»
Опции
К последнему сообщению К первому непрочитанному
Offline dmishin  
#41 Оставлено : 21 ноября 2013 г. 8:21:46(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Сейчас проверил: CryptMsgControl(msgObject, 0, CMSG_CTRL_VERIFY_SIGNATURE, certificateContext->pCertInfo)

Возвращает false, и код ошибки как под win так и под linux: 0x80091007

Возможно сообщение некорректное?
На входе отсоединенная подпись, которая валидируется утилитами.

П.С. Или скорее тут причина в том что не идет "разворот" подписи при проверке через CryptMsgControl

Отредактировано пользователем 21 ноября 2013 г. 8:35:33(UTC)  | Причина: Не указана

Offline Юрий  
#42 Оставлено : 21 ноября 2013 г. 9:24:56(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Сейчас проверил: CryptMsgControl(msgObject, 0, CMSG_CTRL_VERIFY_SIGNATURE, certificateContext->pCertInfo)

Возвращает false, и код ошибки как под win так и под linux: 0x80091007

Возможно сообщение некорректное?
На входе отсоединенная подпись, которая валидируется утилитами.

П.С. Или скорее тут причина в том что не идет "разворот" подписи при проверке через CryptMsgControl

Ошибка то звучит как "Неправильное значение хэша". Значит или не для этого сертификата подпись, или например подпись не перевернули перед проверкой.
С уважением,
Юрий Строжевский
Offline dmishin  
#43 Оставлено : 21 ноября 2013 г. 9:51:43(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Да скорее всего алгоритм проверки "прямой".

Автор: Юрий Перейти к цитате

Тогда как вариант можно вытащить хэш раскодированием ASN.1 сообщения (CryptDecodeObject).


Это из CMSG_ENCRYPTED_DIGEST надо декодировать?

П.С. Разве сам хеш по которому идет проверка подписи присутствует в CMS?

Отредактировано пользователем 21 ноября 2013 г. 10:15:54(UTC)  | Причина: Не указана

Offline Юрий  
#44 Оставлено : 21 ноября 2013 г. 10:18:09(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Да скорее всего алгоритм проверки "прямой".

Автор: Юрий Перейти к цитате

Тогда как вариант можно вытащить хэш раскодированием ASN.1 сообщения (CryptDecodeObject).


Это из CMSG_ENCRYPTED_DIGEST надо декодировать?

П.С. Разве сам хеш по которому идет проверка подписи присутствует в CMS?

Там только подпись. То есть можно декодировать подпись, потом на существующий проверяемый хэш сделать подпись и сверить её с декодированной.
С уважением,
Юрий Строжевский
Offline dmishin  
#45 Оставлено : 21 ноября 2013 г. 10:32:11(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Ок. Если я правильно вас понял:

1. CryptMsgOpenToDecode
2. CryptMsgGetParam(CMSG_ENCRYPTED_DIGEST)
3. CryptDecodeObject(<тип>)

Какой тип использовать на третьем шаге?
Offline Юрий  
#46 Оставлено : 21 ноября 2013 г. 10:38:52(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Ок. Если я правильно вас понял:

1. CryptMsgOpenToDecode
2. CryptMsgGetParam(CMSG_ENCRYPTED_DIGEST)
3. CryptDecodeObject(<тип>)

Какой тип использовать на третьем шаге?

Здесь нужна только "CryptDecodeObject", остальные функции без надобности.
В этом варианте только ASN.1, только хардкор :) Смотрите как описывается ASN.1 структура в соответствующем RFC и соответственно декодируйте данные. В основном, конечно, будут декодироваться структуры типа "SEQUENCE".
С уважением,
Юрий Строжевский
Offline dmishin  
#47 Оставлено : 21 ноября 2013 г. 10:45:21(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Юрий Перейти к цитате
Автор: dmishin Перейти к цитате
Ок. Если я правильно вас понял:

1. CryptMsgOpenToDecode
2. CryptMsgGetParam(CMSG_ENCRYPTED_DIGEST)
3. CryptDecodeObject(<тип>)

Какой тип использовать на третьем шаге?

Здесь нужна только "CryptDecodeObject", остальные функции без надобности.
В этом варианте только ASN.1, только хардкор :) Смотрите как описывается ASN.1 структура в соответствующем RFC и соответственно декодируйте данные. В основном, конечно, будут декодироваться структуры типа "SEQUENCE".


Да но раз самого хеша в структуре нет, то потом еще предполагается его вычисление по подписываемым атрибутам?
Offline Юрий  
#48 Оставлено : 21 ноября 2013 г. 10:54:09(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Автор: Юрий Перейти к цитате
Автор: dmishin Перейти к цитате
Ок. Если я правильно вас понял:

1. CryptMsgOpenToDecode
2. CryptMsgGetParam(CMSG_ENCRYPTED_DIGEST)
3. CryptDecodeObject(<тип>)

Какой тип использовать на третьем шаге?

Здесь нужна только "CryptDecodeObject", остальные функции без надобности.
В этом варианте только ASN.1, только хардкор :) Смотрите как описывается ASN.1 структура в соответствующем RFC и соответственно декодируйте данные. В основном, конечно, будут декодироваться структуры типа "SEQUENCE".


Да но раз самого хеша в структуре нет, то потом еще предполагается его вычисление по подписываемым атрибутам?

Данная тема называется "Проверка подписи не по данным, а по хешу данных". Так что предполагается, что хэш для проверки есть априори (то есть до проверки).
Но если его нет, то его, конечно, надо вычислить перед проверкой :)
С уважением,
Юрий Строжевский
Offline dmishin  
#49 Оставлено : 21 ноября 2013 г. 10:56:46(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Хеш есть только от самого документа. Если бы был хеш по которому проверяется подпись, то вопросов бы уже не осталось. точнее если бы под линуксом все отработало так же как и под win...
Offline Юрий  
#50 Оставлено : 21 ноября 2013 г. 11:07:00(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Хеш есть только от самого документа. Если бы был хеш по которому проверяется подпись, то вопросов бы уже не осталось. точнее если бы под линуксом все отработало так же как и под win...

Linux - постоянный поставщик "умственного секса" на рынке разработки софта (с) Юрий Строжевский :)
С уважением,
Юрий Строжевский
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
8 Страницы«<34567>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.