Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Pygost, парсинг открытого ключа из сертификата. Неправильный ключ?
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.07.2019(UTC) Сообщений: 31
Сказал(а) «Спасибо»: 7 раз
|
sertif.png (40kb) загружен 13 раз(а).Я могу пропарсить сертификат и извлечь оттуда открытый ключ. Но попытки проверить подпись, сделанную этим сертификатом, дают отрицательный результат - значения не совпадают. pitonvyvod.png (54kb) загружен 12 раз(а).Я полагаю, что это может происходить из-за: - Неправильно извлечен ключ
- Неправильно выбраны параметры эпилептической кривой (Прогнал все возможные варианты, вряд ли оно)
- Неправильно извлечена подпись
Соответственно несколько вопросов: - Что это за избыточные байты 04 40? Они есть во всех сертификатах, но остальные части открытых ключей разные. Нужно ли их учитывать и нужно ли дополнительно преобразовывать ключ, если он после парсинга имеет тот же вид, что и в окне на изображении:b'\x80\x8b\x73...' (без учета байтов 04 40)
- Длина ключа без них 64 байта, с ними - 66. В программе проверки подписи pygost ключ разбивается на 2 части, т.е. на 2 по 256 байт (в моем случае вариант ГОСТ Р 34.10-2012 256)
- Если открыть .sig файл, то самые последние его 64 байта (512 бит) и есть подпись, по идее ошибки в этом нет
notepade.png (239kb) загружен 14 раз(а).
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 394 раз в 366 постах
|
Добрый день. 04 40 это ASN структура "обертка" в которой лежит 64 байта собственно ключа. В случае более длинного ключа 128 байт эта обертка может выглядеть как 04 81 80. Не видя программу сложно сказать точно, но попробую предположить "скользкие" места.
1. Если ключ делится пополам, то скорее всего 04 40 надо убрать до деления пополам. Если у Вас в процессе обработки 04 40 уже отброшены перед делением, то наверно уже все нормально. 2. Параметры кривой в сертификате напрямую не указаны, но есть оиды наборов параметров (при просмотре сертификата стандартным средство виндоуз как на первом скриншоте их не видно, так как они необязательные и разные в разных алгоритмах. Однако они есть между видимым алгоритмом открытого ключа и видимым значением ключа, при генерации ключа в КриптоПро. При генерации в Континенте, например, оидов параметров нет). Если хотите точно убедиться в параметрах, то нужно также распарсить оиды и посмотреть сами значения из наборов параметров по оиду (смотреть в стандартах гост). Ну и сам оид алгоритма открытого ключа наверно тоже понадобится. 3. Подпись может быть разная, например, могли быть подписаны не сами данные, а их атрибуты внутри подписи (в числе подписанных атрибутов может быть хэш от самих данных). Если такую подпись пытаться проверить по самим данным, то значения конечно не сойдутся и нужно использовать более сложный алгоритм проверки - сначала проверить подпись атрибутов, потом совпадение хэша данных со значением в атрибуте. 4. Открывая двоичный файл (как подпись на третьем снимке) в текстовом редакторе ее можно повредить, случайным нажатием сохранить или автосохранением, так как текстовые редакторы обычно меняют переводы строк (символы с кодами 10 13) автоматически, а в двоичном файле их менять не нужно. Рекомендуется открывать такие файлы даже на просмотр в редакторах двоичных данных, самый распространенный Far manager.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.07.2019(UTC) Сообщений: 31
Сказал(а) «Спасибо»: 7 раз
|
Автор: two_oceans Добрый день. 04 40 это ASN структура "обертка" в которой лежит 64 байта собственно ключа. В случае более длинного ключа 128 байт эта обертка может выглядеть как 04 81 80. Не видя программу сложно сказать точно, но попробую предположить "скользкие" места.
1. Если ключ делится пополам, то скорее всего 04 40 надо убрать до деления пополам. Если у Вас в процессе обработки 04 40 уже отброшены перед делением, то наверно уже все нормально. 2. Параметры кривой в сертификате напрямую не указаны, но есть оиды наборов параметров (при просмотре сертификата стандартным средство виндоуз как на первом скриншоте их не видно, так как они необязательные и разные в разных алгоритмах. Однако они есть между видимым алгоритмом открытого ключа и видимым значением ключа, при генерации ключа в КриптоПро. При генерации в Континенте, например, оидов параметров нет). Если хотите точно убедиться в параметрах, то нужно также распарсить оиды и посмотреть сами значения из наборов параметров по оиду (смотреть в стандартах гост). Ну и сам оид алгоритма открытого ключа наверно тоже понадобится. 3. Подпись может быть разная, например, могли быть подписаны не сами данные, а их атрибуты внутри подписи (в числе подписанных атрибутов может быть хэш от самих данных). Если такую подпись пытаться проверить по самим данным, то значения конечно не сойдутся и нужно использовать более сложный алгоритм проверки - сначала проверить подпись атрибутов, потом совпадение хэша данных со значением в атрибуте. 4. Открывая двоичный файл (как подпись на третьем снимке) в текстовом редакторе ее можно повредить, случайным нажатием сохранить или автосохранением, так как текстовые редакторы обычно меняют переводы строк (символы с кодами 10 13) автоматически, а в двоичном файле их менять не нужно. Рекомендуется открывать такие файлы даже на просмотр в редакторах двоичных данных, самый распространенный Far manager. 1. 04 40 убираю; 2. попробую пропарсить, мб дело как раз в этом; 3. я проверял, подписываются данные целиком, точнее сказать хэш, который рассчитывается по ГОСТ 34.11-2012, я проверял; 4. если бы что-то похожее происходило, то я не смог бы без ошибок пропарсить сертификат, подпись и т.д., потому что я аккуратно слежу за этим. Отредактировано пользователем 5 июля 2019 г. 14:50:07(UTC)
| Причина: Не указана
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Pygost, парсинг открытого ключа из сертификата. Неправильный ключ?
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close