как узнать имя ключевого контейнера сертификата
Имя контейнера
Имя контейнера является строкой, заканчивающейся нулем, идентифицирующей носитель ключевой информации.
Может состоять из следующих частей:
Возможные значения имени контейнера:
Значение | Описание |
---|---|
NULL | Контейнер по умолчанию. Если конфигурация «КриптоПро CSP» настроена на хранение ключей на диске, то именем контейнера по умолчанию является имя пользователя ОС, вызвавшего CSP. |
CONTAINER | Имя контейнера. |
MEDIA\UNIQUE | Контейнер по умолчанию на носителе (MEDIA\UNIQUE). |
MEDIA\UNIQUE\CONTAINER | Контейнер на заданном носителе (MEDIA\UNIQUE). Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ \ опускать в этом случае нельзя. Если носитель поддерживает длинные имена (например, реестр), то имя контейнера в этом случае совпадает FOLDER. |
MEDIA\UNIQUE\FOLDER\CRC | Контейнер на заданном носителе (MEDIA\UNIQUE) в папке FOLDER с именем CRC16 которого в нижнем регистре в кодировке UTF8 совпадает с CRC. Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ \ опускать в этом случае нельзя. Данный формат не может использоваться для создания контейнеров. |
\\.\READER\MEDIA\UNIQUE | Контейнер по умолчанию на носителе (MEDIA\UNIQUE), с заданным именем считывателя. |
\\.\READER\MEDIA\UNIQUE\CONTAINER | Контейнер на заданном носителе (MEDIA\UNIQUE), с заданным именем считывателя. Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ \ опускать в этом случае нельзя. |
\\.\READER\MEDIA\UNIQUE\FOLDER\CRC | Контейнер на заданном носителе (MEDIA\UNIQUE) в папке FOLDER, с заданным именем считывателя и CRC16 имени контейнера в нижнем регистре в кодировке UTF8 совпадает с CRC. Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ \ опускать в этом случае нельзя. Если носитель поддерживает длинные имена (например, реестр), то имя контейнера в этом случае совпадает с FOLDER. Данный формат не может использоваться для создания контейнеров. |
\\.\READER\CONTAINER | Имя контейнера на заданном считывателе. |
\\.\READER | Контейнер по умолчанию на заданном считывателе. |
Во всех перечисленных выше формах (кроме NULL), оконечный символ \ не влияет на смысл контейнера.
Полный список поддерживаемых считывателей и типов носителей можно найти в Формуляре к конкретной версии «КриптоПро CSP»
Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL
Речь пойдет о файлах primary.key, masks.key и header.key, которые лежат в директории ххххх.000 на флешке. Данные файлы входят в состав криптоконтейнера закрытого ключа электронной подписи криптопровайдера КриптоПро, формат которого нигде не опубликован. Целью данной статьи является чтение контейнера и преобразование закрытого ключа в формат, который может быть прочитан в библиотеке OpenSSL. Долгое время было распространено ошибочное суждение, что достаточно сделать нечто вида (primary_key XOR masks_key) и мы получим закрытый ключ в чистом (raw) виде, однако забегая вперед, можно утверждать, что в КриптоПро было применено более сложное преобразование, в худшем случае состоящее из более чем 2000 (двух тысяч) операций хеширования.
Файл primary.key
Содержит 32 байта ключа в формате Asn1. Это только половина ключа, полный ключ получается при делении этого числа по модулю Q на маску. Поле, хранящее модуль Q в библиотеке OpenSSL имеет название order. Маска лежит в файле masks.key:
Файл masks.key
Содержит 32 байта маски ключа в формате Asn1, зашифрованного на ключе хранения pwd_key. Далее 12 байт «затравочной» информации для генерации ключа хранения pwd_key, если криптоконтейнер защищен паролем, то пароль также участвует в генерации ключа хранения.
Далее контрольная сумма (имитозащита) 4 байта. Контрольной информацией для простоты мы пользоваться не будем, общий контроль будет осуществляться путем генерации открытого ключа и сравнения первых 8 байт полученного ключа с соответствующим полем из файла header.key:
Файл header.key
Читаем закрытый ключ и конвертируем
Основную работу выполняют следующие 3 функции:
1. Создаем ключ хранения исходя из 12-ти байтовой «соли» и пароля.
2. Расшифровываем основной ключ на ключе хранения.
3. Делим ключ с маской на маску.
Но так как в библиотеке OpenSLL операция деления по модулю традиционно отсутствует, пользуемся операцией взятия обратного числа и умножением.
Сборка утилиты конвертирования ключа
Далее сборка исходников описана для Linux версии.
Версию для Windows можно скачать отсюда там же есть сертификаты и закрытый ключ для тестирования, для сборки потребуется бесплатный компилятор Borland C++ 5.5
Компиляция OpenSSL библиотеки
После скачивания и распаковки исходных текстов openssl в целевой директории выполняем команды:
Получаем готовую библиотеку libcrypto.a в текущей директории.
Также потребуются заголовочные файлы из директорий engines/ccgost и include.
Компиляция privkey.c
Формирование файла закрытого ключа private.key
Тестовый закрытый ключ в криптоконтейнере lp-9a0fe.000, сертификат открытого ключа signer.cer и другие файлы для тестирования можно взять отсюда
Получаем результат работы:
Cохраняем в private.key
Пользуемся закрытым ключом private.key для подписывания файла file.txt
Проверяем подпись
Все работает просто замечательно!
Спасибо за внимание. Это была моя первая статья на хабре.
КриптоПро CSP Окно «Выбор ключевого контейнера» пустое либо в нем не отображается нужный контейнер
ОСНОВНЫЕ ПОНЯТИЯ (если есть аббревиатуры, понятия и т.д.)
Ключевой носитель (Электронный идентификатор) — это компактное устройство в виде USB-брелка, которое служит для авторизации пользователя в сети или на локальном компьютере, защиты электронной переписки, безопасного удаленного доступа к информационным ресурсам, а также надежного хранения персональных данных.
Защищенный носитель — это компактное устройство, предназначенное для безопасного хранения электронной подписи. Представляет собой устройство в виде USB-флешки с защищенной паролем картой памяти, на которой хранится информация для создания электронной подписи. Обеспечивает двухфакторную аутентификацию пользователя: для работы необходимо вставить токен в USB-разъем компьютера и ввести пароль.
Рекомендации по решению проблемы зависят от типа ключевого носителя, на котором расположен контейнер:
Flash-накопитель
Если в качестве ключевого носителя используется flash-накопитель, необходимо выполнить следующие шаги:
1. Убедиться, что в что в корне носителя находится папка, содержащая файлы: header, masks, masks2, name, primary, primary2. Файлы должны иметь расширение.key, а формат названия папки должен быть следующим: xxxxxx.000
Если каких-либо файлов не хватает или их формат неверен, то, возможно, контейнер закрытого ключа был поврежден или удален.
Rutoken
Если в качестве ключевого носителя используется защищённый носитель Rutoken, необходимо выполнить следующие шаги:
1. Убедиться, что на рутокене горит лампочка. Если лампочка не горит, то следует воспользоваться следующими рекомендациями.
2. Обновить драйвер Rutoken (см. Как обновить драйвер Rutoken?).
3. Следует убедиться, что на Rutoken содержатся ключевые контейнеры. Для этого необходимо проверить количество свободной памяти на носителе, выполнив следующие шаги:
Если рутокен не виден в пункте «Считыватели» или при нажатии на кнопку «Информация» появляется сообщение «Состояние памяти ruToken не изменилось», значит, носитель был поврежден, необходимо обратиться к вашему менеджеру
В качестве ключевого носителя в сервисных центрах выдаются рутокены объемом памяти около 30000 байт. Один контейнер занимает объем порядка 4 Кб. Объем свободной памяти рутокена, содержащего один контейнер, составляет порядка 26 000 байт, двух контейнеров — 22 000 байт и т д.
Если объем свободной памяти рутокена составляет более 29-30 000 байт, то ключевые контейнеры на нем отсутствуют.
Реестр
Если в качестве ключевого носителя используется считыватель Реестр, необходимо выполнить следующие действия:
Убедиться, что в КриптоПро CSP настроен считыватель «Реестр». Для этого:
Если считыватель отсутствует, его необходимо добавить.
В качестве считывателей (устройств — носителей ключевой информации) могут использоваться flash-накопители, реестр, смарт-карты
Иногда некоторые считыватели могут быть отключены в КриптоПро CSP. Чтобы работать с такими носителями, нужно добавить соответствующие считыватели.
Чтобы добавить считыватели:
1. Запустите КриптоПро CSP от имени администратора.
2. На вкладке «Оборудование» нажмите кнопку «Настроить считыватели».
3. В появившемся окне нажмите «Добавить».
4. В Мастере установки считывателей выберите, какой считыватель добавить: «Все съемные диски», «Реестр», «Все считыватели смарт-карт».
5. Нажмите «Далее», задайте имя считывателя при необходимости, нажмите «Готово».
В некоторых случаях для корректной работы добавленного считывателя потребуется перезагрузка.
Если ни одно из предложенных выше решений не поможет устранить проблему, возможно, ключевой носитель был поврежден, вам необходимо будет обратиться к вашему менеджеру. Восстановить данные с поврежденного защищенного носителя или реестра невозможно.
Остались вопросы?
Отдел технической поддержки
Поддержка и помощь
Спасибо!
Наш менеджер уже увидел Ваше обращение и спешит помочь Вам как можно скорее!
В рабочее время (пн – пт с 9:00 до 18:00) наши менеджеры очень активны и общительны и с радостью ответят Вам в течение дня.
В остальное время – дожидайтесь ответа на следующий рабочий день.
А пока предлагаем вам:
Заказ обратного звонка
Как скопировать контейнер закрытого ключа в КриптоПро?
Копирование контейнера закрытого ключа – обязательное действие при переустановке СБиС на другой компьютер. Вы также можете скопировать сертификат, если хотите создать запасной ключ электронной подписи.
КриптоПро: копирование сертификата
Шаг 1. Открытие программы КриптоПро
Чтобы открыть программу проделайте следующий путь:
Нажмите меню Пуск, затем перейдите в Программы ⇒ КриптоПро ⇒ КриптоПро CSP и включите вкладку Сервис.
В открытом окне Сервис нажмите кнопку Скопировать контейнер.
Шаг 2. Копирование контейнера закрытого ключа
После нажатия кнопки Скопировать контейнер, система отобразит окно Копирование контейнера закрытого ключа.
В открытом окне необходимо заполнить поле Имя ключевого контейнера.
Шаг 3. Ввод ключевого контейнера
Существует 3 способа, как заполнить поле Имя ключевого контейнера:
Выбрать из списка посредством нажатия кнопки Обзор
Поиск по сертификату ЭЦП
Кроме заполнения поля Имя ключевого контейнера, необходимо заполнить оставшиеся опции поиска:
После того, как все поля заполнены, нажмите кнопку Далее.
Если на доступ к закрытому ключу установлен пароль, то система попросит ввести его. Введите пароль и нажмите кнопку ОК.
Шаг 4. Ввод нового ключевого контейнера
Система вновь отобразит окно Копирование контейнера закрытого ключа, в котором необходимо ввести имя нового ключевого контейнера и установить переключатель Введенное имя задает ключевой контейнер в положение Пользователь или Компьютер, в зависимости от того, в каком хранилище требуется разместить скопированный контейнер.
После ввода нажмите кнопку Готово.
Шаг 5. Выбор носителя для скопированного контейнера
На Вашем экране появится окно, в котором необходимо выбрать носитель для скопированного контейнера.
Вставьте носитель (токен, флешка, дискета) в считыватель и нажмите кнопку ОК.
Шаг 6. Установка пароля
Система отобразит окно установки пароля на доступ к закрытому ключу.
Введите пароль, подтвердите его, при необходимости установите флажок Запомнить пароль.
Если данный флажок будет установлен, то пароль сохранится в специальном хранилище на локальном компьютере, и при обращении к закрытому ключу пароль будет автоматически считываться из этого хранилища, а не вводиться пользователем.
После ввода необходимых данных нажмите кнопку ОК. Средство криптозащиты информации «КриптоПро CSP» скопирует контейнер закрытого ключа.
Если у Вас остались вопросы, Вы можете заказать консультацию специалиста.
Как найти сертификат ключа ЭЦП на компьютере
Если электронную подпись нужно использовать на нескольких компьютерах или скопировать сертификат на запасной носитель, то необходимо знать, где ее искать. Обычно сертификаты хранятся в одном месте, но в зависимости от типа используемой операционной системы путь к хранилищу может быть разным.
Где хранится ЭЦП на компьютере
Найти сертификат ключа электронной подписи на ОС Windows Vista и выше можно по адресу: C:Users/ПОЛЬЗОВАТЕЛЬ/App/Data/Roaming/MicrosoftSystem/Certificates. Где «Пользователь» — это название учетной записи ПК. В целях безопасности система сохраняет в данной папке только открытый, т.е. доступный всем, ключ ЭЦП. Закрытый ключ не копируется на жесткий диск и хранится на токене. Используется он для генерации открытых ключей.
Для программного пользования открытый ключ хранится в папке Windows в зашифрованном виде. Скопировать этот файл не получится, т.к. система не дает права доступа к нему. Просмотр установленных сертификатов возможен только администратор ПК.
Как посмотреть сертификат ЭЦП
Посмотреть установленные сертификаты можно при помощи Internet Explorer, Certmgr, консоль управления или КриптоПро. Пользоваться другими компьютерными программами не рекомендуется: они могут иметь встроенную команду отправки ключа ЭЦП на сторонний сервер, что приведет к компрометации подписи и невозможности ее использования.
Через КриптоПро
Как найти сертификат ЭЦП на компьютере при помощи КриптоПро:
Этим способом могут воспользоваться пользователи или администраторы ПК (если пользователю будет отказано в доступе, необходимо дополнительно запросить права администратора). В открывшемся окне будет список всех сертификатов, установленных на данном ПК. В содержащем сертификаты хранилище, можно посмотреть информацию по каждому, скопировать контейнер закрытых ключей КриптоПро на другой компьютер, внешний носитель или удалить недействительный ключ ЭЦП.
Через Certmgr
Найти файл сертификата можно и при помощи встроенного менеджера, который присутствует во всех ОС Windows. Через него можно не только посмотреть все личные сертификаты, но и сертификаты УЦ и партнеров Microsoft.
Метод может использоваться только администратором ПК. Для просмотра нужно:
С шифрованными сертификатами приложение работает ограниченно и не всегда корректно отражает все электронные подписи, установленные пользователем.
Через Internet Explorer
Интернет-браузер IE входит в комплектацию всех ОС семейства Windows XP и выше и позволяет также найти сертификаты ЭЦП на компьютере. Для просмотра нужно:
Далее откроется окно с перечнем всех сертификатов, установленных пользователем и сторонними поставщиками ПО. В данном меню возможен перенос ключей и сертификатов на внешний носитель, удаление открытых ключей. Удаление корневых сертификатов УЦ через меню IE невозможно.
Через консоль управления
Просмотр сертификатов в ОС Windows через консоль управления запускается в несколько этапов:
Дополнительно можно просмотреть ключи ЭЦП по конкретной учетной записи. Способ также доступен только пользователям с правами администратора ПК. Через консоль можно не только просматривать информация, но и удалять, копировать, добавлять контейнеры с ключами ЭЦП. Неудобство метода в том, что все команды необходимо вводить вручную. Обычны работа через консоль осуществляется на windows server для настройки прав доступа всех пользователей.
Где в реестре хранится ЭЦП
Иногда реестр используется как ключевой носитель, т.е. он подходит для импорта и экспорта сертификатов. Где находится сертификат ЭЦП зависит от битности системы:
SID — это идентификатор пользователя, который идентифицирует данную учетную запись. Узнать его можно через командную строку и команду WHOAMI/USER.
Где хранится сертификат ЭЦП в ОС Windows XP
К базовым компонентам ОС Windows XP относятся службы сертификации, а XP Professional уже поддерживает многоуровневые иерархии центра сертификации (ЦС) как с изолированными и интерактивными ЦС, так и сети ЦС с доверительными перекрестными отношениями.
Открытые ключи ЭЦП Windows XP хранит в личном хранилище, а т.к. они представляют собой общедоступную информацию, то хранятся в виде открытого текста. Сертификаты пользователя находятся по адресу:
Documents and Settings\ \ApplicationData\Microsoft\ SystemCertificates\My\Certificates. Они автоматически вносятся в локальный реестр при каждом входе в систему. Если профиль перемещаемый, то открытые ключи хранятся обычно не на ПК, а следуют за пользователем при каждом входе в систему с внешнего носителя.
Такие поставщики услуг криптографии, как Enchanced CSP и Base CSP хранят закрытые ключи электронной подписи в папке %SystemRoot%\Documents and Settings\ \ Application Data\Microsoft\Crypto\RSA. Если профиль перемещаемый, то они расположены в папке RSA на контроллере домена. В этом случае на ПК они загружаются только на время работы профиля. Все файлы в данной папке шифруются случайным симметричным ключом автоматически. Основной ключ пользователя имеет длину в 64 символа и создается проверенным генератором случайных чисел.
Где хранится ЭЦП в системах Linux
Закрытые ключи хранятся в хранилище HDImageStore на жестком диске, и доступны они и для CSP, и для JCP.