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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей *  
#11 Оставлено : 13 октября 2021 г. 9:13:28(UTC)
Андрей *

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

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

Сказал «Спасибо»: 492 раз
Поблагодарили: 2034 раз в 1578 постах
Сделайте добавление сертификата в cms. Забудьте о добавлениях в хранилище, чтобы проверять подпись... Или количество сертификатов настолько мало?
Техническую поддержку оказываем тут
Наша база знаний
Offline Savva  
#12 Оставлено : 13 октября 2021 г. 9:31:45(UTC)
Savva

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Если речь идет об изменении подписи то тут пока сразу переход сделать будет не возможно, из-за того что клиенты уже создают подписи по этим правилам.

Сертификатов в итоге ожидается у нас не более 50. На текущий момент около 15-20.

Насколько плохо, что в хранилище много сертификатов? Как я понимаю проблема кроется именно в поиске подходящего сертификата под подпись. Тогда тут возникает вопрос а можно ли делать указание то что подпись по определенному сертификату по thumbprint? То есть по идее у нас клиент подписывает данные и мы имеем идентификатор клиента и thumbprint сертификата, то есть мы точно знаем по какому сертификату должна проходить проверка.

И другой вопрос, насколько плохо создавать хранилище под клиента? Звучит не очень, но тем не менее, тогда мы зная по какому клиенту идет сообщение будем использовать именно то хранилище в котором будет 1-2 сертификата (по клиенту у нас может быть несколько сертификатов для перехода на свежий когда старый истекает).
Offline Андрей *  
#13 Оставлено : 13 октября 2021 г. 9:38:59(UTC)
Андрей *

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

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

Сказал «Спасибо»: 492 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: Savva Перейти к цитате
Если речь идет об изменении подписи то тут пока сразу переход сделать будет не возможно, из-за того что клиенты уже создают подписи по этим правилам.

Сертификатов в итоге ожидается у нас не более 50. На текущий момент около 15-20.

Насколько плохо, что в хранилище много сертификатов? Как я понимаю проблема кроется именно в поиске подходящего сертификата под подпись. Тогда тут возникает вопрос а можно ли делать указание то что подпись по определенному сертификату по thumbprint? То есть по идее у нас клиент подписывает данные и мы имеем идентификатор клиента и thumbprint сертификата, то есть мы точно знаем по какому сертификату должна проходить проверка.

И другой вопрос, насколько плохо создавать хранилище под клиента? Звучит не очень, но тем не менее, тогда мы зная по какому клиенту идет сообщение будем использовать именно то хранилище в котором будет 1-2 сертификата (по клиенту у нас может быть несколько сертификатов для перехода на свежий когда старый истекает).


Нет, речь про "ручное добавление, слежение за актуальностью сертификатов"...

Для чего эта экономия, не включать сертификат в cms?
А если потребуется проверка во внешней ИС (для суда?), будете искать нужные сертификаты для нужных документов "вручную"?
Чтобы выгрузить все необходимые... Хотя 50 сертификатов, вероятно, не сложно\не займёт много времени... Или все будете выгружать, что есть в хранилище?
Техническую поддержку оказываем тут
Наша база знаний
Offline Savva  
#14 Оставлено : 13 октября 2021 г. 9:45:47(UTC)
Savva

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
В нашем случае это не критично, в том плане, что у нас в системе хранится сохраненный документ с подписью + связь с сертификатом. И соответственно если нужно будет достать информацию она у нас уже хранится в подготовленном виде.

Если проблема только в этом тогда ради этого переделывать не стоит.

А вот если вопрос в производительности например то что в хранилище много сертификатов и проверка проходит дольше тогда тут нужно посмотреть и подумать может и стоит что поменять.
Offline two_oceans  
#15 Оставлено : 13 октября 2021 г. 11:43:01(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Точно ответить по производительности проверки я не смогу. Для подписания и выбора сертификата обычно используется Личные. Многие программы проверяют еще и подключен ли токен допустим для каждого сертификата, поэтому время становится квадратичной зависимостью от числа сертификатов.

Для выбора адресата в чей адрес отправить используется хранилище Aдресная книга (тут уже не фигурируют токены, так что время линейное). В них число сертификатов влияет на время отображения интерфейсов подписания. Если же указана некая информация о сертификате, то поиск от количества сертификатов замедляется не так сильно чем выбор для подписания.

Однако, несомненно, количество играет роль - если в том же КриптоАрм включить квалифицированный режим и подтянутся все сертификаты аккредитованных УЦ, то открытие хранилища УЦ становится весьма заторможенно.

Вообще, идея такая - в подпись, как правило, включается либо сам сертификат либо информация о подписавшем. Включена ли в Вашем примере, я вручную не смотрел, уже по размеру примерно ясно, что сертификата там нет. На случай, что сертификат очень маленький, я еще перепроверил КриптоАрм и получил ожидаемую ошибку "Нет сертификата".

В случае если сертификат есть в подписи он просто берется из подписи.
В случае если сертификата нет, но есть данные о подписавшем (как минимум Subject сертификата), то производится поиск по хранилищам, есть ли такие сертификаты. Поиск это дополнительный шаг и проверка естественно будет дольше.

Проблема на мой взгляд может быть если сертификат меняется заранее, пока еще действителен другой сертификат этого же клиента, в этом случае при поиске по идее могут найтись оба. Так как законом и приказами регламентирован состав чего мы можем указать в Subject сертификата и так что велик шанс что Subject совпадет у старого и нового сертификата. Допустим, если подписано новым, но нового нет в хранилище при проверке, то попытка проверить скорее всего будет по старому сертификату и выйдет ошибка. Наоборот, если подписано старым, но старого нет - проверится с ошибкой по новому сертификату. Получается если Вы не списываете все документы подписанные старым сертификатом при его окончании, то в перспективе Вам придется хранить в хранилище сертификаты за несколько лет.

Цитата:
У объекта SignedData есть свойства Certificates и Signers но как я понимаю они не изменяемые, то есть просто взять и добавить в них например Signer не получится, как я понимаю именно эти свойства заполняются при проверке подписи.
pycades основан на плагине, плагин на Win работает на COM модели. Свойства с названиями во множественном числе на английском в COM объектах обычно представляют собой коллекции. Сами коллекции почти всегда показывает как для чтения, суть в том что у коллекции есть свойство по умолчанию Item (то есть когда пишем Signers(1) по факту это равносильно вызову функции чтения Signers.Item(1)) и вот свойство Item как раз часто для чтения, так как функция установки свойства Item не определена. Однако есть методы добавления в коллекцию (наследуются от базового класса-коллекции, пустая коллекция никому не интересна, и хотя бы вышестоящему объекту добавление будет разрешено) и элементы возвращенные Item также не обязательно для чтения. Другой вопрос, что в расширении pycades или при сборке плагина в *nix вероятно такие обходы перекрыты.

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

Offline Андрей *  
#16 Оставлено : 13 октября 2021 г. 12:10:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 492 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: two_oceans Перейти к цитате


Для выбора адресата в чей адрес отправить используется хранилище Aдресная книга (тут уже не фигурируют токены, так что время линейное). В них число сертификатов влияет на время отображения интерфейсов подписания. Если же указана некая информация о сертификате, то поиск от количества сертификатов замедляется не так сильно чем выбор для подписания.

Это ... про какое-то приложение? Outlook?

Каким образом подписание (личным сертификатом) связано с другим хранилищем?
или речь про.. шифрование на свой и сертификаты получателей?

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#17 Оставлено : 13 октября 2021 г. 13:05:06(UTC)
Андрей *

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

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

Сказал «Спасибо»: 492 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: two_oceans Перейти к цитате

Проблема на мой взгляд может быть если сертификат меняется заранее, пока еще действителен другой сертификат этого же клиента, в этом случае при поиске по идее могут найтись оба. Так как законом и приказами регламентирован состав чего мы можем указать в Subject сертификата и так что велик шанс что Subject совпадет у старого и нового сертификата. Допустим, если подписано новым, но нового нет в хранилище при проверке, то попытка проверить скорее всего будет по старому сертификату и выйдет ошибка. Наоборот, если подписано старым, но старого нет - проверится с ошибкой по новому сертификату. Получается если Вы не списываете все документы подписанные старым сертификатом при его окончании, то в перспективе Вам придется хранить в хранилище сертификаты за несколько лет.


Запрашивается у каждой вложенной подписи структура:
CryptMsgGetParam ( .. CMSG_SIGNER_INFO_PARAM ... )

далее поиск сертификата
CertFindCertificateInStore

в pvFindPara передаётся:
pSignerInfo.Issuer;
pSignerInfo.SerialNumber

т.е. "уникальная" комбинация по УЦ\серийному номеру...



Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#18 Дата: : 15 октября 2021 г. 6:56:20(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: Андрей * Перейти к цитате
Автор: two_oceans Перейти к цитате


Для выбора адресата в чей адрес отправить используется хранилище Aдресная книга (тут уже не фигурируют токены, так что время линейное). В них число сертификатов влияет на время отображения интерфейсов подписания. Если же указана некая информация о сертификате, то поиск от количества сертификатов замедляется не так сильно чем выбор для подписания.
Это ... про какое-то приложение? Outlook?

Каким образом подписание (личным сертификатом) связано с другим хранилищем?
или речь про.. шифрование на свой и сертификаты получателей?
Более корректно наверно так: В этих хранилищах (Личные и Адресная книга) число сертификатов влияет на время отображения интерфейсов выбора сертификатов для подписания (или шифрования, соответственно).
Цитата:
CertFindCertificateInStore
В теории, да. На практике, я пытался в свой программе для СМЭВ, но в итоге сдался. Про эту функцию у меня очень мало добрых слов. Потому что она то ищет, то не ищет и непонятно в чем причина ненахождения.

Даже просто по отпечатку, при этом в перечислении по тому же хэндлу хранилища есть сертификат с таким отпечатком. Я бы понял, если не работало вообще - думал может не так параметры передаю, не в том формате. Но ведь нет, то ищет, то не ищет, в зависимости от запуска одного и того же скомпилированного exe из службы или как обычное приложение из проводника. Проверялось и в хранилище пользователя (которое под службой пустое - тут загадки нет) и в хранилище компьютера (с флагом только чтение - которое видно и пользователю и службе, при перечислении абсолютно одинаковое содержимое, при поиске отличие в результате).

По расширенному использованию ключа тупо на все отвечает "не найдено". Разбор идентичен и у моей структуры в разных кусках памяти и у возвращаемого из сертификатов списка оидов в одном куске памяти. Однако на FreePascal / Delphi немного сложно объединять разнородные куски памяти разного размера в один: просто динамически выделить буфер большего размера и приконкатить содержимое другого кусочка памяти проблемы нет, но там во всех структурах указатели друг на друга, и они поменяются при объедининении. Придется делать арифметические операции с указателями, со смещениями было бы проще. С другой стороны, при выделении основного куска памяти для создания структуры я не в курсе сколько памяти прибавлять на оиды, ведь у них разная длина.

Передавал основную структуру в одном куске с указателями на буферы оидов (допущение что известно максимальное число оидов), буферы оидов каждый в отдельном куске, все кусочки протестированы: IsBadReadPtr выдает false. Однако результат "не найдено".

Видимо надо обязательно уместить в одном куске. Как по мне, странно возвращать "не найдено", хотя речь про организацию памяти. "Как есть" вернувшийся список тоже не подходит, мне надо из 6 оидов сертификата искать только по двум (аутентификация клиента и СМЭВ ЭП-ОВ).

В итоге, гораздо надежнее перечислить все сертификаты в хранилище CertEnumCertificatesInStore, получить для каждого нужную характеристику и самому сравнить с искомым, чем разбираться с описаниями форматов параметров на Си++ и потом полагаться на непонятно какую работу CertFindCertificateInStore.
Цитата:
- Запрашивается у каждой вложенной подписи структура: CryptMsgGetParam ( .. CMSG_SIGNER_INFO_PARAM ... )
- далее поиск сертификата CertFindCertificateInStore, в pvFindPara передаётся "уникальная" комбинация по УЦ\серийному номеру...
Ну нашли сертификат. Дальше то собственно что? ТС как раз не разобрался как подтолкнуть конкретный сертификат в функцию проверки VerifyCades либо в SignedData, потому и указывает Store целиком.

Отредактировано пользователем 15 октября 2021 г. 8:04:27(UTC)  | Причина: Не указана

Offline Андрей *  
#19 Оставлено : 15 октября 2021 г. 9:46:44(UTC)
Андрей *

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

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

Сказал «Спасибо»: 492 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: two_oceans Перейти к цитате
Ну нашли сертификат. Дальше то собственно что? ТС как раз не разобрался как подтолкнуть конкретный сертификат в функцию проверки VerifyCades либо в SignedData, потому и указывает Store целиком.


Нашли по серийному номеру, а не Subject...

Вот основная мысль и разница, это к предложению:

Цитата:

Так как законом и приказами регламентирован состав чего мы можем указать в Subject сертификата и так что велик шанс что Subject совпадет у старого и нового сертификата.

Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#20 Оставлено : 15 октября 2021 г. 10:29:35(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Цитата:
Нашли по серийному номеру, а не Subject
Мысль замечательная, для актуального сертификата. Однако посмотрите вот расшифровка подписи приведенной в сообщении выше и там я вижу только E= CN= от некой RDN записи дважды, и рядом есть INTEGER 1. Это точно Issuer и SerialNumber конечного сертификата? Если нет, то и идея найти по серийному номеру не подойдет. Потому как номер 1 обычно у сертификата самого УЦ (если УЦ не выдает длинные номера со случайной частью по новым требованиям закона), меня терзают смутные сомнения.

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

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