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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline a.shandov  
#1 Оставлено : 23 декабря 2019 г. 13:18:06(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Добрый день! В приложении на IIS при генерации ключей возникает ошибка "Поставщику не удалось выполнить действие, так как запрошено выполнение в автоматическом контексте."

Request type: POST
User agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36
User IP: ::1
User: NT AUTHORITY\IUSR

Стек вызовов:
в CryptoPro.Sharpei.COMCryptography.CreateCSP(CspParameters param, SafeProvHandleCP& hProv)
в CryptoPro.Sharpei.CPUtils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
в CryptoPro.Sharpei.CPUtils.GetKeyPairHelper(CPCspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandleCP& safeProvHandle, SafeKeyHandleCP&
safeKeyHandle)
в CryptoPro.Sharpei.Gost3410CryptoServiceProvider.GetKeyPair()
в CryptoPro.Sharpei.Gost3410CryptoServiceProvider.ExportParameters(Boolean includePrivateParameters)

Использую демо версию крипто про

Где-то в поисках ответа нашел, что необходимо использовать контейнер без пин кода(пароля), но примеров не нашел, как использовать его.
Offline Максим Коллегин  
#2 Оставлено : 23 декабря 2019 г. 18:57:39(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
А можете описать функционал приложения? Как планируете использовать ключ, созданный пользователем IUSR?
Знания в базе знаний, поддержка в техподдержке
Offline a.shandov  
#3 Оставлено : 24 декабря 2019 г. 9:28:21(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
А можете описать функционал приложения? Как планируете использовать ключ, созданный пользователем IUSR?


Я генерирую объект Gost3410CryptoServiceProvider keys = new Gost3410CryptoServiceProvider(parameters);
из него экспортирую публичный ключ, который ложу в БД, на локале проблем нет, но когда запускаю на IIS, то возникает данная ошибка.
Именно при экспорте параметров (ключа).

Если же создать контейнер с одним именем в локальной версии, после чего запускать экспорт ключа, подпись документа на серверной, то все работает, видимо проблема все же в создании контейнера с сервера.

Отредактировано пользователем 24 декабря 2019 г. 11:33:22(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#4 Оставлено : 24 декабря 2019 г. 11:57:33(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
Несколько вариантов:
- контейнер не доступен пользователю IUSR
- на контейнер установлен пин и в нём отсутствует сертификат
Знания в базе знаний, поддержка в техподдержке
Offline a.shandov  
#5 Оставлено : 24 декабря 2019 г. 11:59:44(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
Несколько вариантов:
- контейнер не доступен пользователю IUSR
- на контейнер установлен пин и в нём отсутствует сертификат


Видимо проблема с созданием контейнера с сервера, есть ли какие то особенности при вызове окна генерации контейнера на сервере?
Использую подпись без сертификатов
Offline Максим Коллегин  
#6 Оставлено : 24 декабря 2019 г. 12:01:17(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
Чтобы создать контейнер на сервере, как минимум нужен ДСЧ, рабоающий в silent - Соболь или подобный.
Знания в базе знаний, поддержка в техподдержке
Offline a.shandov  
#7 Оставлено : 24 декабря 2019 г. 12:03:46(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
Чтобы создать контейнер на сервере, как минимум нужен ДСЧ, рабоающий в silent - Соболь или подобный.


Т.е. использовать криптопрошный ДСЧ, который описан в .NET примерах не получиться на сервере?
Offline a.shandov  
#8 Оставлено : 24 декабря 2019 г. 12:04:25(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
Чтобы создать контейнер на сервере, как минимум нужен ДСЧ, рабоающий в silent - Соболь или подобный.


Т.е. использовать криптопрошный ДСЧ, который описан в .NET примерах не получиться на сервере?
Это не проблема настроек пользователей IUSR?

Отредактировано пользователем 24 декабря 2019 г. 12:05:32(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#9 Оставлено : 24 декабря 2019 г. 12:08:11(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
Если речь о БИО-ДСЧ - а кто будет перемещать мышь?
Возвращаюсь к первому вопросу - какую задачу решаете? Зачем создавать контейнер на сервере?
Знания в базе знаний, поддержка в техподдержке
Offline a.shandov  
#10 Оставлено : 24 декабря 2019 г. 12:11:31(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
Если речь о БИО-ДСЧ - а кто будет перемещать мышь?
Возвращаюсь к первому вопросу - какую задачу решаете? Зачем создавать контейнер на сервере?


Тогда начну сначала)
Есть веб приложение с документооборотом для которого я создаю механизм ЭЦП.
Пользователь системы, для себя генерирует контейнер закрытого ключа на съемном носителе, после генерации, публичный ключ экспоритруется в БД и присваивается для текущего пользователя.
Пользователь в дальнейшем использует контейнер для подписи документа.
Offline Максим Коллегин  
#11 Оставлено : 24 декабря 2019 г. 12:16:06(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
Так всё таки закрытый ключ создаётся не на сервере?
Обычно ЭП подразумевает использование сертификатов, у вас они планируются?
Знания в базе знаний, поддержка в техподдержке
Offline a.shandov  
#12 Оставлено : 24 декабря 2019 г. 12:19:42(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
Так всё таки закрытый ключ создаётся не на сервере?

Не на сервере, на локале, но на приложение развернутое на IIS сервере не создает локальный контейнер для пользователя.

Автор: Максим Коллегин Перейти к цитате
Обычно ЭП подразумевает использование сертификатов, у вас они планируются?

"Данный пример демонстрирует использование методов класса SignedXml без использования сертификатов."
В примерах SDK есть подпись без использования сертификатов, поэтому не планируются.

Offline a.shandov  
#13 Оставлено : 25 декабря 2019 г. 18:04:56(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Могу ли я с помощью библиотек крипто про, не используя сторонних кроме Microsft библиотек сделать создание контейнера в режиме Silent?
Чтобы контейнер у меня создавался по указанному пути и в него ложился ключ. Без использования сертификатов и без появления всплывающих окон?
Меня интересует позволяют ли библиотеки Sharpei задавать путь для создания (Не поиска) контейнера?
И возможно ли передать из вне случайное число сгенерированное с помощью алгоритма гамма распределения объекту Gost3410CryptoServiceProvider для создания приватного ключа?
Offline Александр Лавник  
#14 Оставлено : 25 декабря 2019 г. 18:12:01(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 48 раз
Поблагодарили: 624 раз в 587 постах
Автор: a.shandov Перейти к цитате
Могу ли я с помощью библиотек крипто про, не используя сторонних кроме Microsft библиотек сделать создание контейнера в режиме Silent?
Чтобы контейнер у меня создавался по указанному пути и в него ложился ключ. Без использования сертификатов и без появления всплывающих окон?
Меня интересует позволяют ли библиотеки Sharpei задавать путь для создания (Не поиска) контейнера?
И возможно ли передать из вне случайное число сгенерированное с помощью алгоритма гамма распределения объекту Gost3410CryptoServiceProvider для создания приватного ключа?

Здравствуйте.

Для создания ключей без использование биологического датчика случайных чисел необходимо использовать аппаратный датчик случайных чисел или внешнюю гамму (см. документ АРМ выработки внешней гаммы из состава дистрибутива КриптоПро CSP).

Используемый датчик случайных чисел должен быть настроен через

панель КриптоПро CSP
вкладка Оборудование
кнопка Настроить ДСЧ...
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#15 Оставлено : 10 января 2020 г. 6:42:58(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 95 раз
Поблагодарили: 342 раз в 322 постах
Как мне кажется, проще генерацию контейнера и экспорт открытого ключа будет делать на клиенте и пересылать на сервер открытый ключ кодированный в base64. Не уловил зачем на сервере временный контейнер, если реальный контейнер у пользователя.

Подписание можно сделать плагином на страничке, открытой на рабочем месте пользователя, а для проверки достаточно открыть криптопровайдер в VERIFY режиме и импортировать открытый ключ. Если говорить дальше, то в принципе открытый ключ должен быть включен в подпись и наличие открытого ключа в БД нужно только для идентификации чья подпись.

Тут 2 варианта хранения для идентификации: хранить сам открытый ключ вообще не нужно ключ грузить в криптопровайдер если в БД будет хранится именно в том виде в каком присутствует в подписи - просто двоичное сравнение сделать. Однако ключ большой, может быть разного размера и индексация будет не очень эффективна.

Другой вариант хранить в БД идентификатор ключа пользователя - другими словами, хэш открытого ключа. Хэш смотря какой выберите, но он короче самого ключа и уже постоянной длины. Тут можно эффективнее использовать индексацию, если например поделить хэш на кусочки по 4 байта и использовать несколько 4-байтовых полей с индексами. То есть посчитали хэш открытого ключа из подписи в документе, нашли хэш в БД по индексам, вывели какому пользователю он соответствует.

Отредактировано пользователем 10 января 2020 г. 6:47:37(UTC)  | Причина: Не указана

Offline a.shandov  
#16 Оставлено : 10 января 2020 г. 10:36:19(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: two_oceans Перейти к цитате
Как мне кажется, проще генерацию контейнера и экспорт открытого ключа будет делать на клиенте и пересылать на сервер открытый ключ кодированный в base64. Не уловил зачем на сервере временный контейнер, если реальный контейнер у пользователя.

Подписание можно сделать плагином на страничке, открытой на рабочем месте пользователя, а для проверки достаточно открыть криптопровайдер в VERIFY режиме и импортировать открытый ключ. Если говорить дальше, то в принципе открытый ключ должен быть включен в подпись и наличие открытого ключа в БД нужно только для идентификации чья подпись.

Тут 2 варианта хранения для идентификации: хранить сам открытый ключ вообще не нужно ключ грузить в криптопровайдер если в БД будет хранится именно в том виде в каком присутствует в подписи - просто двоичное сравнение сделать. Однако ключ большой, может быть разного размера и индексация будет не очень эффективна.

Другой вариант хранить в БД идентификатор ключа пользователя - другими словами, хэш открытого ключа. Хэш смотря какой выберите, но он короче самого ключа и уже постоянной длины. Тут можно эффективнее использовать индексацию, если например поделить хэш на кусочки по 4 байта и использовать несколько 4-байтовых полей с индексами. То есть посчитали хэш открытого ключа из подписи в документе, нашли хэш в БД по индексам, вывели какому пользователю он соответствует.


Да все, верно, я не так выразился, генерация и экспорт будет на клиенте происходить.

Механизм подписания я реализовал, проблема сейчас в использовании гаммы для генерации контейнера.Я хочу генерировать контейнер и ключи без всплывающих окон. Но не могу найти информацию по использованию КПИМ в качестве ДСЧ. Я видел, что используют bash для вызова утилиты genkpim.exe криптопро для генерации гаммы, но я не знаю где взять или как правильно создать папки db для добавления КПИМ в качестве ДСЧ.

И проблема так же, что данную утилиту придется запускать на каждом клиенте, а их может быть тысяча.

Хранить ключ в открытом виде не получится, я храню в бд тот хэш которым он зашифрован уже в криптопро.
Offline two_oceans  
#17 Оставлено : 13 января 2020 г. 14:52:13(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 95 раз
Поблагодарили: 342 раз в 322 постах
Не до конца понятно что хотите сделать:
соображение 1) если генерацию на клиенте запускает пользователь то ему не сложно мышкой поводить на био-дсч.
соображение 2) если генерацию на клиенте запускает программа - то тут проблема да, нужна или гамма или аппаратный дсч. Но чтобы набрать гамму опять же нужен дсч (био или аппаратный). То есть гамма не решает проблему всплывающих окон просто меняет распределение по времени когда и кто мышкой водил.

Как по мне наверно раз в год пользователь (или сисадмин компьютера если техсертификат компьютера) может и мышкой поводить, не перетрудится. Есть код автономной страницы генерации запроса для криптопро УЦ, можно генерировать подобной страничкой (без гаммы о всплывающим окном).
соображение 3) если вырабатывать гамму на неком сервере и загружать на клиенты - то так скорее всего будут нарушены требования безопасности (нежелательно все же по каналам связи передавать, да и уже будут сомнения в надежности). Однако имеет смысл попробовать при условии что на сервере аппаратный дсч.
Цитата:
Хранить ключ в открытом виде не получится, я храню в бд тот хэш которым он зашифрован уже в криптопро.
Непонятно, опять в терминах путаница.

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

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