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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей Писарев  
#11 Оставлено : 11 ноября 2019 г. 22:35:06(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: Lenadmin Перейти к цитате

Пока я попытаюсь найти возможность сделать все в одном цикле.


Программно, да, можно.

Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#12 Оставлено : 12 ноября 2019 г. 6:40:33(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: Андрей Писарев Перейти к цитате
Автор: Lenadmin Перейти к цитате
Автор: Андрей Писарев Перейти к цитате
Перед запуском установки - отключите внешний носитель с контейнерами.
Следующий контейнер в цикле ищется снова по сертификату, а носитель будет отключен )
Пока я попытаюсь найти возможность сделать все в одном цикле.
Вы не желаете устанавливать ссылку на контейнер, который есть на флешке и который, возможно, находится в первую очередь при перечислении, так?
Но и отключать не желаете флешку при этом.
Чтобы избежать квадратичного увеличения времени, можно воспользоваться тем фактом что криптопровайдер перечисляет только контейнеры в корне диска, но не во вложенных папках. Тогда одно из двух: 1) сначала скопировать одним циклом все контейнеры, потом их перенести в папку допустим "ok", не отключая носителя - будут доступны только копии контейнеров из реестра, можно запускать второй цикл установки;

2) если хотите копировать не все, а только конкретные контейнеры, то можете провести дополнительный шаг - считать из name.key в каждом контейнере имя контейнера и где-то запомнить чтобы сто раз не читать. Допустим, скопировали, на флешке имя контейнера "A", в реестре "A_copy" (копия от оригинала отличается "хвостиком"), запустили автоустановку, получили информацию об установленной в хранилище связи "A" или "A_copy", заменили хвостик (получили "A" и знаем что автоустановка соотнесла А с нашим сертификатом), передвинули контейнер с именем "A" на флешке в папку "ok". Если связь установилась с передвинутым контейнером "A", то запускаем автоустановку еще раз (теперь уже на флешке не найдется). Пока не додумал как сделать выделенное жирным в батнике (из API делается поиском установленного сертификата в хранилище и запросом его свойства привязки), но думаю схема рабочая.

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

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

thanks 1 пользователь поблагодарил two_oceans за этот пост.
Lenadmin оставлено 12.11.2019(UTC)
Offline Lenadmin  
#13 Оставлено : 12 ноября 2019 г. 10:23:13(UTC)
Lenadmin

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: two_oceans Перейти к цитате
Тогда одно из двух: 1) сначала скопировать одним циклом все контейнеры, потом их перенести в папку допустим "ok", не отключая носителя - будут доступны только копии контейнеров из реестра, можно запускать второй цикл установки;

2) если хотите копировать не все, а только конкретные контейнеры, то можете провести дополнительный шаг - считать из name.key в каждом контейнере имя контейнера и где-то запомнить чтобы сто раз не читать. Допустим, скопировали, на флешке имя контейнера "A", в реестре "A_copy" (копия от оригинала отличается "хвостиком"), запустили автоустановку, получили информацию об установленной в хранилище связи "A" или "A_copy", заменили хвостик (получили "A" и знаем что автоустановка соотнесла А с нашим сертификатом), передвинули контейнер с именем "A" на флешке в папку "ok". Если связь установилась с передвинутым контейнером "A", то запускаем автоустановку еще раз (теперь уже на флешке не найдется). Пока не додумал как сделать выделенное жирным в батнике (из API делается поиском установленного сертификата в хранилище и запросом его свойства привязки), но думаю схема рабочая.

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


Да, есть в этом неплохие идеи, спасибо.
Хотя вроде бы, задача типичная, и удивило, что нет простой функции проверки соответствия.
Парадокс: мы не знаем, какой копировать контейнер, пока его не установим через автопоиск :)

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

Логичнее было бы произвести поиск подходящего контейнера ДО того, как он копирован, и ДО того, как установлен в связке с открытым ключом. Но я пока не знаю такой функции.

В контейнере закрытого ключа есть реквизиты - Имя, уникальное имя, FQCN, срок действия и все? Можно искать по ним, если контейнеры аккуратно названы.
Но это неоднозначно. Придется, видимо, манипулировать контейнерами и извлекать информацию о привязке после автопоиска.

Просто я надеялся, что функция проверки соответствия существует, но если нет - буду искать в других направлениях.
Offline two_oceans  
#14 Оставлено : 14 ноября 2019 г. 13:08:54(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: Lenadmin Перейти к цитате
Логичнее было бы произвести поиск подходящего контейнера ДО того, как он копирован, и ДО того, как установлен в связке с открытым ключом. Но я пока не знаю такой функции.
Другими словами, сытимитировать автопоиск по открытому ключу или идентификатору ключа субъекта. Простой функции тоже логично что нет - Crypto Api не регламентирует формат и место хранения ключа, даже автопоиск по сертификату не обязателен. Просто криптопровайдер должен знать как его найти по строке связи.
Автор: Lenadmin Перейти к цитате
В контейнере закрытого ключа есть реквизиты - Имя, уникальное имя, FQCN, срок действия и все? Можно искать по ним, если контейнеры аккуратно названы.
В контейнере хранится срок действия контейнера (не совпадающий со сроком сертификата для некоторых УЦ) и имя. Но это необязательно, контейнер не разрушится если удалить имя (файл name.key), срок также можно стереть утилитой. Может присутствовать сертификат в контейнере, а может и нет. Уникальное имя, FQCN зависят в том числе от места расположения контейнера, то есть в самом контейнере не хранятся, хотя (в полной форме) там фигурирует и контрольная сумма от имени/содержимого. То есть искать 100% можно только по открытому ключу, все остальное - частное решение и тупик.

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

thanks 1 пользователь поблагодарил two_oceans за этот пост.
Lenadmin оставлено 16.11.2019(UTC)
Offline Lenadmin  
#15 Оставлено : 16 ноября 2019 г. 19:15:14(UTC)
Lenadmin

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: two_oceans Перейти к цитате



Спасибо за идеи.

Интересно. УЦ, вроде бы, "выдает" открытые ключи после генерации закрытого ключа. На основе некоего запроса сертификата.
Или просто регистрирует у себя открытый ключ, родившийся в паре с закрытым, формирует цепочку сертификатов до доверенного корневого ? )
Т.е. правильно ли я понял, что теоретически, открытый ключ генерируется вместе с закрытым один раз, и является таким же уникальным?
И не вычисляется заново каждый раз далее, а просто сравнивается?

Просто я видел на другом форуме, по-моему, предлагали идею
Цитата:
Проверяется соответствие двух ключей одной паре тоже просто - сначала исходный блок данных шифруется одним ключом, потом расшифровывается вторым. Если расшифрованные данные равны исходному блоку, то ключи могут использоваться как одна пара.


И я уже подумывал спросить как зашифровать и расшифровать средствами командной строки и csptest.
Но если произвести сравнение, разобравшись в ASN.1 - то это теоретически, проще.
Offline two_oceans  
#16 Оставлено : 18 ноября 2019 г. 8:07:18(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: Lenadmin Перейти к цитате
Интересно. УЦ, вроде бы, "выдает" открытые ключи после генерации закрытого ключа. На основе некоего запроса сертификата.
Или просто регистрирует у себя открытый ключ, родившийся в паре с закрытым, формирует цепочку сертификатов до доверенного корневого ? )
Т.е. правильно ли я понял, что теоретически, открытый ключ генерируется вместе с закрытым один раз, и является таким же уникальным?
И не вычисляется заново каждый раз далее, а просто сравнивается?
Как Вы уже поняли в сертификате содержится открытый ключ. Более того, запрос на сертификат по формату это почти тоже самое что и сертификат (без информации вносимой УЦ, подписи УЦ и подписанный закрытым ключом, соответствующим открытому ключу в запросе - так УЦ "проверяет", что у клиента есть закрытый ключ; иногда добавляются дополнительные подписи агента УЦ). Поэтому открытый ключ содержится в запросе на сертификат (практический пример: можно извлечь его с помощью openssl как из запроса на сертификат, так и из сертификата). Поэтому в общем случае открытый ключ действительно "рождается" вместе с закрытым, а УЦ заверяет принадлежность открытого ключа (ключевой пары) конкретному пользователю.

Насчет уникальности все сложно - теоретически по обобщенному алгоритму открытый ключ не уникален. Однако в нормативах практической реализации, например, в rfc или госте закреплены такие огранения и параметры, что ключ становится уникальным или около того. Вероятность совпадения исчезающе мала.
Автор: Lenadmin Перейти к цитате
Просто я видел на другом форуме, по-моему, предлагали идею
Цитата:
Проверяется соответствие двух ключей одной паре тоже просто - сначала исходный блок данных шифруется одним ключом, потом расшифровывается вторым. Если расшифрованные данные равны исходному блоку, то ключи могут использоваться как одна пара.
И я уже подумывал спросить как зашифровать и расшифровать средствами командной строки и csptest.
Это хрестоматийный пример определения пары ключей. ТОчнее тут проверяются не ключи, а само преобразование одного значения блока в другое значение, поэтому таким способом возможны и ложноположительные срабатывания (ключи другой длины или других алгоритмов могут случайно преобразовать конкретное значение блока правильно), после успеха на одном блоке надо проверить еще несколько значений блока. Особенно это актуально для гост, так как ключ шифрования симметричный, вырабатывается из ассиметричных ключей. То есть теоретически возможна ключевая пара гост-2001 дающая в точности тот же ключ шифрования (с поправкой на другие узлы замены), что и пара гост-2012.
Автор: Lenadmin Перейти к цитате
Но если произвести сравнение, разобравшись в ASN.1 - то это теоретически, проще.
Да, но при таком сравнении мы не вникаем в специфику алгоритма и ключа, можно найти только ключи соответствующие стандарту одного алгоритма, что собственно и требуется при установке сертификатов. В предыдущем сообщении я специально писал об обертке (блобе) открытого ключа, в котором кроме самого значения открытого ключа указаны еще и оиды параметров алгоритма, а не о "голом" значении ключа (64 байта в гост-2001/2012 256), так сравнение не примет за одинаковые ключи, когда ключи разных алгоритмов (например, точка открытого ключа гост та же, но выбрана по другим параметрам).
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.