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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline parihaaraka  
#11 Оставлено : 3 августа 2018 г. 18:13:23(UTC)
parihaaraka

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Прошу прощения - проскочил пост от two_oceans. Спасибо, коллега :)
Offline two_oceans  
#12 Оставлено : 6 августа 2018 г. 8:05:04(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Рад что смог немного помочь. Этой же темой я заинтересовался примерно год назад и существование alg_id и оид, 2 видов uri (или скорее urn) вводило в замешательство. Есть очень вероятная догадка о причине существования разных форм указания одного алгоритма: функции Microsoft Crypto API делятся на высокоуровневые и низкоуровневые, получается что в высокоуровневых параметры задаются "получеловекопонятным" оид, в низкоуровневых "машинопонятным" alg_id. Такая вот "понятность для пользователя".

CryptCreateHash, CryptSetHashParam, CryptGetHashParam и т.д. это низкоуровневые функции, с их помощью можно напрямую получить значение хэша с нужным алгоритмом и параметрами и преобразовать в тот формат, который нужен (тот же xmldsig). Параметр hp_oid в оригинале JwaWinCrypt нет, предположу что параметр добавлен уже в заголовках КриптоПро, поэтому несколько не следует философии низкоуровневых функций и работает с оид. Для xmldsig этих функций достаточно (пока не используется расширение xades-T).

Структура CRYPT_SIGN_MESSAGE_PARA используется в высокоуровневых функциях, которые уже ориентированы на формат cades. Они не делают подписание как-то иначе, хоть и принимают входные данные в другой форме(блок данных для подписания вместо хэша и оид вместо alg_id). Упрощенно: внутри они все также переводят из оид в alg_id, затем вызывают низкоуровневые функции (принятые данные переводятся в хэш, подготавливают ключ, потом хэш шифруется ключом, получается значение подписи), затем кодируют полученный результат в блок подписи нужного формата.

Чтобы использовать и функции высокого уровня и функции низкого уровня, получается нужно внести в программу строгое соответствие между alg_id, типом провайдера и оид. А с параметрами алгоритмов можно проводить некий анализ полученных данных. Многие криптопровайдеры прописывают подобное соответствие в реестре, но все же читать оттуда немного рисковано, бывают конфликты между провайдерами. Ввод нового алгоритма часто сопровождается либо новой версией криптопровайдера и/или новым типом провайдера, по аналогии многие разработчики программного обеспечения просто добавляют новый алгоритм в новой версии, даже если старая версия прекрасно видит новый тип провайдера и получает из него доступные alg_id и оид, но "не знает" соответствий.

С сочетаниями алгоритмов ГОСТ хэширования, подписи и шифрования еще проще - большинство сочетаний просто не разрешено для использования (нельзя смешивать с зарубежными и старые алгоритмы гост тоже запрещены). Выбрали схему подписи - алгоритм шифрования и хэширования нужно выбрать из 1 разрешенного варианта для каждого! В тоже время с зарубежными алгоритмами вариантов намного больше и строгое соответствие не подойдет. Поэтому надо бы все же определиться какие алгоритмы Вы хотите охватить. В качестве стартовой точки можно взять список поддерживаемых КриптоПро (в котором есть и популярные зарубежные алгоритмы).
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.