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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline pejexudi  
#1 Оставлено : 15 декабря 2017 г. 14:13:40(UTC)
pejexudi

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

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

Добрый день.

По долгу службы необходимо найти способ получения сертификата со смарт карты (USB токена) и подписывания некоторых данных приватным ключом с этого токена.
Удалось это сделать при помощи криптопро .NET SDK, за счет Gost3410CryptoServiceProvider (на карте сертификат с алгоритмом подписи ГОСТ Р 34.11/34.10-2001).
Возник вопрос, существует ли способ сделать то же самое без .NET SDK? И есть ли аналог для C++?

Спасибо
Offline Агафьин Сергей  
#2 Оставлено : 15 декабря 2017 г. 14:53:54(UTC)
Grey

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 215 раз в 174 постах
Автор: pejexudi Перейти к цитате
Добрый день.

По долгу службы необходимо найти способ получения сертификата со смарт карты (USB токена) и подписывания некоторых данных приватным ключом с этого токена.
Удалось это сделать при помощи криптопро .NET SDK, за счет Gost3410CryptoServiceProvider (на карте сертификат с алгоритмом подписи ГОСТ Р 34.11/34.10-2001).
Возник вопрос, существует ли способ сделать то же самое без .NET SDK? И есть ли аналог для C++?

Спасибо


Добрый день.
На С++ данные операции можно выполнить с использованием вызовов MS CryptoAPI, обращающихся к нашему провайдеру КриптоПро CSP.
Подробнее можно о них почитать на MSDN или cpdn.cryptopro.ru.
Примеры есть в SDK для CSP.
С уважением,
Сергей
Техническую поддержку оказываем здесь.
Наша база знаний.
Offline pejexudi  
#3 Оставлено : 15 декабря 2017 г. 16:26:52(UTC)
pejexudi

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

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

Сергей, спасибо за ответ.

Можете подсказать, где найти набор библиотек CryptoPro для C++?
Судя по первой попавшейся ссылке, мне нужен некий wincsp.h, чтобы использовать CPAcquireContext и прочие функции.
Даже для нативных виндовых, вроде CryptAcquireContext, нужны специфические параметры, например PROV_GOST_2012_256, которых нет в стандартных либах.
Offline Максим Коллегин  
#4 Оставлено : 15 декабря 2017 г. 17:04:37(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
wincsp.h скоее всего не понадобится. Но WincryptEx.h нужен - входит в sdk, доступное для загрузке на странице с CSP.
Знания в базе знаний, поддержка в техподдержке
Offline pejexudi  
#5 Оставлено : 18 декабря 2017 г. 15:17:42(UTC)
pejexudi

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

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

Возник новый вопрос по теме. Вот часть кода на C#, с помощью которого можно подписать некие данные, используя приватный ключ со смарткарты:

var params = new CspParameters();
params.ProviderType = 75;
params.Flags = CspProviderFlags.UseDefaultKeyContainer;

var provider = new Gost3410CryptoServiceProvider(params);
var alg = new Gost3411CryptoServiceProvider();

var result = provider.SignData(data, alg);

От data вычисляется хеш, подписывается, но при этом не запрашивается PIN код от смарткарты. Может быть я что-то упустил?
Пробовал аналогичные действия с примером из SDK "Gost3410CSPSample.cs" - результат аналогичный.
Есть подозрение, что раз PIN код не запрашивается, то и к приватному ключу обращения не происходит..
Offline Максим Коллегин  
#6 Оставлено : 19 декабря 2017 г. 9:40:02(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Зачем default container? Скорее всего используется ключ не со смарткарты.
Знания в базе знаний, поддержка в техподдержке
Offline pejexudi  
#7 Оставлено : 19 декабря 2017 г. 10:08:51(UTC)
pejexudi

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

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

Автор: maxdm Перейти к цитате
Зачем default container? Скорее всего используется ключ не со смарткарты.


К сожалению нету должной экспертизы в этой области. Если запустить приложенный код без смарткарты, то появится окно с Крипто Про CSP с просьбой вставить и выбрать карту. После этого в ContainerCertificate будт лежать тот самый сертификат, который я вижу через Панель управления РуТокен. У этого объекта есть поле PrivateKey, с этой точки зрения все похоже на правду.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.