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

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline Анатолий Колкочев  
#1 Оставлено : 29 декабря 2020 г. 12:26:43(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Попробовал сделать следующим образом:
Подпись файла:
Код:
cryptcp.exe -signf -detached -dir ./ -cert -der -strict -nostampcert -cadesbes -hashalg 1.2.643.7.1.1.2.2 -display -fext .sign -dn "CN=COMSIB RA DSS Admin" Example1.docx


Проверка подписи с использованием библиотеки bouncy castle:
Код:
(gci "./test files/Example1.docx" | % {[System.IO.File]::ReadAllBytes($_)}) -as [byte[]] | sv -Name "DataFileRawBytes"
(gci "./test files/Example1.docx.sign" | % {[System.IO.File]::ReadAllBytes($_)}) -as [byte[]] | sv -Name "SignatureFileRawBytes"
$signedContent = [Org.BouncyCastle.Cms.CmsProcessableByteArray]::new($DataFileRawBytes)
[Org.BouncyCastle.Cms.CmsSignedData] $signedData = [Org.BouncyCastle.Cms.CmsSignedData]::new($signedContent, $SignatureFileRawBytes)
$certStoreInSig = $signedData.GetCertificates("collection")
$signers = $signedData.GetSignerInfos().GetSigners()
0..($signers.Count-1) | % {
    $cert = $certStoreInSig.GetMatches($signers[$_].SignerID)
    $signers[$_].verify($cert[0])
}


Возвращает $true, проверка проходит успешно.
Вытаскиваю contentDigest и Signature

Код:
[System.IO.File]::WriteAllBytes(".\1.sig",$signers[0].GetSignature())
[System.IO.File]::WriteAllBytes(".\1.hash",$signers[0].GetContentDigest())


Начинаю проверку с использованием утилиты csptest:
Код:
csptest -keyset -verify GOST12_256 -in .\1.hash -signature .\1.sig -cert .\1.cer


csptest возвращает ошибку:
Код:
CSP (Type:80) v5.0.10003 KC1 Release Ver:5.0.11455 OS:Windows CPU:IA32 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 17644712
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Public key imported from cert file: .\1.cer
Hash object created with alg: GOST12_256 0x8021
The data buffer has been hashed.
An error occurred in running the program.
ctkey.c:4039:Bad Signature.
Error number 0x80090006 (-2146893818).
Неправильная подпись.


Подскажите пожалуйста, что я делаю не так?
Offline Андрей *  
#2 Оставлено : 29 декабря 2020 г. 12:34:14(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Здравствуйте.


Приложите в архиве то, что передаёте в утилиту при проверке.
Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#3 Оставлено : 29 декабря 2020 г. 12:37:27(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Example.zip (12kb) загружен 5 раз(а).
Offline Андрей *  
#4 Оставлено : 29 декабря 2020 г. 12:52:10(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
а .GetSignature() что делает?

в 1.sig не значение подписи из cms...

Snimok ehkrana ot 2020-12-29 13-47-56.png (37kb) загружен 7 раз(а).


в 1.sig:
3F7F3F3F543F5C4A470B3F1C3F3F3F663F3F3F3F3F703F3F3F1E4D53526F3F113A3F3F3F1A037C3F43393F3F3F62003F3F7F3F3F3F633F073F2D5E3F3F763F77

в Example1.docx.sign:
9E7FC181549A5C4A470BA51CA4CA8B66E8DDD2DFEA70E9B4F81E4D53526F81113AD8BAB11A037C974339D7C5ED6200BF917F8783B363FE07AC2D5EF4D576BF77

Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#5 Оставлено : 29 декабря 2020 г. 12:56:00(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
1.png (227kb) загружен 5 раз(а).

Он выдает массив байт подписи
Возсожно WriteAllBytes некорректно отрабатывает ...

Вывод GetSignature():
Код:
158, 127, 193, 129, 84, 154, 92, 74, 71, 11, 165, 28, 164, 202, 139, 102, 232, 221, 210, 223, 234, 112, 233, 180, 248, 30, 77, 83, 82, 111, 129, 17, 58, 216, 186, 177, 26, 3, 124, 151, 67, 57, 215, 197, 237, 98, 0, 191, 145, 127, 135, 131, 179, 99, 254, 7, 172, 45, 94, 244, 213, 118, 191, 119


Offline Анатолий Колкочев  
#6 Оставлено : 29 декабря 2020 г. 13:13:06(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Код:
0..63 | % {
     [System.Text.Encoding]::Default.GetBytes((gc .\1.sig))[$_] -eq $signers[0].GetSignature()[$_]
}


Выдает везде $true

Изменил код записи данных в файл:
Код:
[System.IO.File]::WriteAllBytes((gci .\1.sig),$signers[0].GetSignature())


Заливаю новые файлы. Example.docx.zip (12kb) загружен 1 раз(а).

Отредактировано пользователем 29 декабря 2020 г. 13:15:30(UTC)  | Причина: Не указана

Offline Андрей *  
#7 Оставлено : 29 декабря 2020 г. 13:18:22(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: Анатолий Колкочев Перейти к цитате
1.png (227kb) загружен 5 раз(а).

Он выдает массив байт подписи
Возсожно WriteAllBytes некорректно отрабатывает ...

Вывод GetSignature():
Код:
158, 127, 193, 129, 84, 154, 92, 74, 71, 11, 165, 28, 164, 202, 139, 102, 232, 221, 210, 223, 234, 112, 233, 180, 248, 30, 77, 83, 82, 111, 129, 17, 58, 216, 186, 177, 26, 3, 124, 151, 67, 57, 215, 197, 237, 98, 0, 191, 145, 127, 135, 131, 179, 99, 254, 7, 172, 45, 94, 244, 213, 118, 191, 119




но хеш же в 1.hash правильные байты записаны, так что WriteAllBytes - правильно записывает.

Snimok ehkrana ot 2020-12-29 14-17-51.png (36kb) загружен 2 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#8 Оставлено : 29 декабря 2020 г. 13:25:36(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: Андрей * Перейти к цитате
Автор: Анатолий Колкочев Перейти к цитате
1.png (227kb) загружен 5 раз(а).

Он выдает массив байт подписи
Возсожно WriteAllBytes некорректно отрабатывает ...

Вывод GetSignature():
Код:
158, 127, 193, 129, 84, 154, 92, 74, 71, 11, 165, 28, 164, 202, 139, 102, 232, 221, 210, 223, 234, 112, 233, 180, 248, 30, 77, 83, 82, 111, 129, 17, 58, 216, 186, 177, 26, 3, 124, 151, 67, 57, 215, 197, 237, 98, 0, 191, 145, 127, 135, 131, 179, 99, 254, 7, 172, 45, 94, 244, 213, 118, 191, 119




но хеш же в 1.hash правильные байты записаны, так что WriteAllBytes - правильно записывает.

Snimok ehkrana ot 2020-12-29 14-17-51.png (36kb) загружен 2 раз(а).


Да вроде все правильно записывается, только csptest опять ругается ...
2.png (311kb) загружен 2 раз(а).
Offline Анатолий Колкочев  
#9 Оставлено : 29 декабря 2020 г. 13:55:54(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Как бы ни пробовал - не работает ...
Если подписывать через csptest -keyset -sign, то проверка работает:
Код:
csptest -keys -cont "\\.\REGISTRY\CRDA" -sign GOST12_256 -keytype exchange -in .\1.hash -out .\1.sig

Отредактировано пользователем 29 декабря 2020 г. 13:56:43(UTC)  | Причина: Не указана

Offline Андрей *  
#10 Оставлено : 29 декабря 2020 г. 14:12:31(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
в RFC нужно посмотреть..
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
4 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.