- Как экспортировать Неэкспортируемый ключ Рутокен
- Не теряйте (секретные) ключи от своей крепости!
- Как выгрузить сертификат электронной подписи
- Файл header. key
- Правильная экспортация сертификата
- Как скопировать открытую часть ключа через КриптоПро
- Шаг 1. Вход в систему КриптоПро
- Шаг 2. Открытие ключа
- Шаг 3. Копирование ключа
- Как импортировать закрытый ключ?
- Шаг 1: Получение закрытого ключа
- Шаг 2: Запуск программы
- Шаг 3: Выбор файла
- Шаг 4: Ввод пароля
- Шаг 5: Проверка
- Как скопировать закрытый ключ с Рутокена?
- Шаг 1: Подготовка Рутокена
- Шаг 2: Копирование закрытого ключа
- Файл masks. key
- Читаем закрытый ключ и конвертируем
- Как экспортировать закрытый ключ ЭЦП?
- Как скопировать подпись с Рутокена на Рутокен?
- Выберите ЭЦП для копирования
- Экспортирование подписи в формат PFX
- Импортирование подписи в другой Рутокен
- Как добавить ЭЦП в КриптоПро?
- 1. Установите КриптоПро CSP
- 2. Добавьте сертификаты
- 3. Добавьте открытую часть ключа
- 4. Проверьте работу ЭЦП
- 5. Вывод
- Как установить сертификат электронной подписи с флешки на компьютер
- Шаг 1. Подключение флешки
- Шаг 2. Установка драйверов
- Шаг 3. Выбор программы управления сертификатами
- Шаг 4. Установка сертификата
- Как добавить открытый ключ в КриптоПро
- Шаг 1: Получите файл открытого ключа
- Шаг 2: Откройте КриптоПро
- Шаг 3: Откройте раздел «Сертификаты»
- Шаг 4: Добавьте открытый ключ в БД
- Шаг 5: Проверьте, что ключ был успешно добавлен
- Сборка утилиты конвертирования ключа
- Компиляция OpenSSL библиотеки
- Компиляция privkey.c
- Формирование файла закрытого ключа private.key
- Пользуемся закрытым ключом private.key для подписывания файла file.txt
- Проверяем подпись
- Как сделать копию ключа электронной подписи
- Копирование контейнера закрытого ключа в реестр
- Физически неклонируемые функции (PUF)
- Как вытащить открытую часть ключа из КриптоПро
- Чем отличается флешка от рутокена
- Флешка
- Рутокен
- Аппаратные криптографические модули (HSM)
- Типичные приложения:
- Варианты хранения криптографических ключей
- Установка ключа КриптоПро
- Шаг 1. Получение ключа
- Шаг 2. Установка ключа через интерфейс КриптоПро CSP
- Шаг 3. Проверка установки ключа
- Шаг 4. Защита ключа от несанкционированного использования
- Шаг 5. Резервное копирование ключа
- Установка сертификата открытого ключа
- Файлы. pfx и. jks (хранилища ключей)
- Типичные приложения:
- Как скопировать ЭЦП на другой токен
- Шаг 1: Выберите новый токен
- Шаг 2: Сохраните сертификат с Рутокена
- Шаг 3: Установите сертификат на новый токен
- Шаг 4: Проверьте работоспособность
- Перенос Электронной Подписи на Другой Компьютер
- Перенос с помощью Рутокен
- Перенос без использования Рутокена
- Криптографические токены и смарт-карты
- Типичные приложения:
- Копирование ЭЦП на другую флешку
- Как связать открытый и закрытый ключ
Как экспортировать Неэкспортируемый ключ Рутокен
Рутокен – это криптографический устройство, у которого есть несколько уровней защиты, включая возможность доступа к приватным ключам только изнутри. Это значит, что ключи, созданные на Рутокене, не могут быть экспортированы на другие устройства.
Но что делать, если вы хотите переместить ключ на другой Рутокен или просто сохранить на ПК? Есть несколько способов, как это сделать:
- Создайте новый ключ на другом Рутокене и передайте ему необходимые права доступа. Затем вы можете использовать этот ключ вместо оригинального.
- С помощью утилиты Рутокен можно скопировать закрытый ключ на другой Рутокен. Для этого необходимо создать резервную копию целевого Рутокена, затем загрузить ее и перенести приватный ключ на другой Рутокен.
- Эмулируйте исходный Рутокен на ПК с помощью программы-эмулятора, при этом будет возможно экспортировать ключи и перенести их на другой Рутокен. Но это решение не самое безопасное, поэтому следует использовать осторожно.
Итак, есть несколько способов, как экспортировать неэкспортируемый ключ Рутокен. Выберите подходящий для ваших нужд и оставайтесь в безопасности!
Не теряйте (секретные) ключи от своей крепости!
Хранение закрытого ключа не должно быть чёрной магией. В конечном счёте, правильный вариант зависит от того, кто и для чего использует сертификаты, какие нормы приходится соблюдать, какова цена, текущее окружение и внутренние ресурсы. Надеюсь, эта статья поможет в вашем решении.
АКЦИЯ GLOBALSIGN: Wildcard SSL + 1 ГОД В ПОДАРОК
Защитите все субдомены одним сертификатом!
Экономьте до 30 тысяч рублей при покупке сертификата Wildcard SSL на 2 года!
Промо-код: WC001HRFR
Акция действует для подписчиков блога GlobalSign
до 15 июня 2018 г.
Дополнительную информацию вы можете получить у менеджеров GlobalSign по телефону: +7 (499) 678 2210 либо заполнив форму на сайте
с указанием промо-кода.
Как выгрузить сертификат электронной подписи
Сертификат электронной подписи — это цифровой документ, который удостоверяет личность его владельца и подтверждает подлинность данных, подписанных им. Выгрузить ЭЦП можно в несколько простых шагов:
- Подключите Рутокен
— убедитесь, что ваш Рутокен подключен к компьютеру и драйверы для него установлены. - Откройте КриптоПро
— запустите программу КриптоПро CSP и выберите в меню «Your CSP Name — Копировать сертификат на устройство» (Your CSP Name — название криптопровайдера, используемого в вашей системе). - Выберите сертификат
— в открывшемся окне выберите нужный сертификат для экспорта, указав его пароль, если установлен. - Укажите путь и имя файла для экспорта
— в новом окне введите путь и имя файла, в который будет выгружен сертификат электронной подписи. - Завершите процесс экспорта
— нажмите кнопку «Сохранить», чтобы завершить процесс экспорта. В результате на вашем компьютере будет создан файл с расширением «.cer».
Выгрузив сертификат электронной подписи, вы сможете использовать его на других компьютерах или передать его другому человеку, чтобы он смог проверить подлинность вашей ЭЦП.
Файл header. key
Из этого файла нам потребуется параметры электронной подписи CryptoProParamSet (подчеркнуто красным).
- GostR3410_2001_CryptoPro_A_ParamSet — 1.2.643.2.2.35.1
- GostR3410_2001_CryptoPro_B_ParamSet — 1.2.643.2.2.35.2
- GostR3410_2001_CryptoPro_C_ParamSet — 1.2.643.2.2.35.3
- GostR3410_2001_CryptoPro_XchA_ParamSet — 1.2.643.2.2.36.0
- GostR3410_2001_CryptoPro_XchB_ParamSet — 1.2.643.2.2.36.1
А также первые 8 байт открытого ключа (подчеркнуто) для контроля правильности чтения закрытого.

Правильная экспортация сертификата
Экспорт сертификата — необходимый процесс для того, чтобы перенести цифровую подпись с одного устройства на другое. Для того чтобы сертификат был экспортирован правильно, нужно выполнить следующие действия:
- Открыть программу, которая была использована при запросе сертификата;
- Выбрать опцию «Экспорт», или «Экспортировать сертификат»;
- В появившемся окне выбрать опцию «Экспортировать с закрытым ключом»;
- Указать путь для сохранения файла в формате PFX (Personal Information Exchange)
- Задать пароль для защиты ключевого контейнера в файле сертификата.
Важно понимать, что пароль должен быть надежным и никогда не передаваться третьим лицам. После сохранения файла полученный файл PFX может быть использован на других устройствах для работы с подписью.
При экспорте сертификата важно убедиться, что сохраненным файлом можно действительно воспользоваться. Для этого следует проверить его на других устройствах и убедиться в корректности работы подписи. Также важно сохранять копии сертификата в надежном месте, чтобы их можно было использовать в случае утери или повреждения ключей на первоначальном устройстве.
Как скопировать открытую часть ключа через КриптоПро
Иногда встает задача скопировать открытую часть ключа КриптоПро. Это может быть нужно для передачи ключа другому пользователю или для использования на другом компьютере. Следуя простым шагам, можно легко скопировать открытую часть ключа.
Шаг 1. Вход в систему КриптоПро
Шаг 2. Открытие ключа
После входа в систему Криптопро, необходимо найти нужный ключ в списке и дважды кликнуть на нем левой кнопкой мыши.
Шаг 3. Копирование ключа
Когда откроется окно ключа, можно увидеть вкладку «Открытый ключ». Необходимо перейти на эту вкладку и выделить весь текст ключа с помощью мыши. Затем, нажать комбинацию клавиш «Ctrl + C», чтобы скопировать выделенный текст в буфер обмена.
После этого, полученный ключ можно использовать на другом компьютере или передать другому пользователю.
Таким образом, скопировать открытую часть ключа через КриптоПро очень просто и не займет много времени. Главное — следовать инструкциям и не терять внимание.
Как импортировать закрытый ключ?
Шаг 1: Получение закрытого ключа
Прежде чем начать импортировать закрытый ключ, необходимо его получить. Это можно сделать следующими способами:
- Создать новую ЭЦП и сохранить закрытый ключ на жесткий диск компьютера;
- Скопировать закрытый ключ на флеш-накопитель или другой внешний носитель;
- Передать закрытый ключ по сети или по электронной почте;
Необходимо обеспечить безопасность закрытого ключа при его передаче или хранении. Доступ к закрытому ключу должен быть предоставлен только авторизованным пользователям.
Шаг 2: Запуск программы
Для импорта закрытого ключа нужно запустить соответствующую программу. Обычно, это программное обеспечение, поставляемое вместе с устройством Рутокен.
Шаг 3: Выбор файла
При запуске программы необходимо выбрать файл, содержащий закрытый ключ. Для этого нужно указать путь к файлу на жестком диске компьютера или внешнем носителе, включая имя файла и расширение. Перед импортом закрытого ключа, убедитесь, что выбранный файл действительно содержит закрытый ключ.
Шаг 4: Ввод пароля
Для импорта закрытого ключа необходимо ввести пароль, который использовался при создании ключа. Если пароль надежный и не может быть взломан, то никто кроме владельца ключа не сможет импортировать его на другом компьютере.
Шаг 5: Проверка
После успешного импорта закрытого ключа, необходимо проверить его на правильность работы. Для этого можно использовать программное обеспечение, которое обычно поставляется вместе с Рутокеном.
Как скопировать закрытый ключ с Рутокена?
Шаг 1: Подготовка Рутокена
Для того чтобы скопировать закрытый ключ с Рутокена, необходимо подготовить его к этой операции. Для этого подключите Рутокен к компьютеру и запустите программу-утилиту для работы с Рутокеном.
- Выберите соответствующий Рутокен в списке устройств.
- Нажмите на кнопку «Подготовить Рутокен к копированию закрытого ключа».
Шаг 2: Копирование закрытого ключа
После того как Рутокен будет подготовлен к копированию закрытого ключа, можно начать саму операцию копирования. Для этого сделайте следующее:
- Выберите соответствующий Рутокен в списке устройств.
- Нажмите на кнопку «Скопировать закрытый ключ».
- Укажите место, куда вы хотите скопировать закрытый ключ с Рутокена.
- Введите пароль для доступа к закрытому ключу на Рутокене.
- Нажмите на кнопку «OK», чтобы начать операцию копирования.
После того как операция копирования закрытого ключа будет завершена, вы сможете использовать скопированный ключ для работы с цифровой подписью и другими криптографическими операциями.
Файл masks. key
Содержит 32 байта маски ключа в формате Asn1, зашифрованного на ключе хранения pwd_key. Далее 12 байт «затравочной» информации для генерации ключа хранения pwd_key, если криптоконтейнер защищен паролем, то пароль также участвует в генерации ключа хранения.
Далее контрольная сумма (имитозащита) 4 байта. Контрольной информацией для простоты мы пользоваться не будем, общий контроль будет осуществляться путем генерации открытого ключа и сравнения первых 8 байт полученного ключа с соответствующим полем из файла header.key:

Читаем закрытый ключ и конвертируем
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/pem.h>
#include <openssl/cms.h>
#include <openssl/err.h>
#include "gost_lcl.h"
/* Convert little-endian byte array into bignum */
BIGNUM *reverse32bn(char *b, BN_CTX *ctx)
{
BIGNUM *res;
char buf[32];
BUF_reverse(buf, b, 32);
res = BN_bin2bn(buf, 32, BN_CTX_get(ctx));
OPENSSL_cleanse(buf, sizeof(buf));
return res;
}
void xor_material(char *buf36, char *buf5C, char *src)
{
int i;
for(i = 0; i < 32; i++)
{
buf36[i] = src[i] ^ 0x36;
buf5C[i] = src[i] ^ 0x5C;
}
}
int make_pwd_key(char *result_key, char *start12, int start12_len, char *passw)
{
int result;
int i;
char pincode4[1024];
int pin_len;
char current[32];
char material36[32];
char material5C[32];
char hash_result[32];
gost_hash_ctx ctx;
init_gost_hash_ctx(&ctx, &GostR3411_94_CryptoProParamSet);
memset(pincode4, 0, sizeof(pincode4));
pin_len = strlen(passw);
if (pin_len*4 > sizeof(pincode4)) { result = 1; goto err; }
for(i = 0; i < pin_len; i++)
pincode4[i*4] = passw[i];
start_hash(&ctx);
hash_block(&ctx, start12, start12_len);
if (pin_len)
hash_block(&ctx, pincode4, pin_len * 4);
finish_hash(&ctx, hash_result);
memcpy(current, (char*)"DENEFH028.760246785.IUEFHWUIO.EF", 32);
for(i = 0; i < (pin_len?2000:2); i++)
{
xor_material(material36, material5C, current);
start_hash(&ctx);
hash_block(&ctx, material36, 32);
hash_block(&ctx, hash_result, 32);
hash_block(&ctx, material5C, 32);
hash_block(&ctx, hash_result, 32);
finish_hash(&ctx, current);
}
xor_material(material36, material5C, current);
start_hash(&ctx);
hash_block(&ctx, material36, 32);
hash_block(&ctx, start12, start12_len);
hash_block(&ctx, material5C, 32);
if (pin_len)
hash_block(&ctx, pincode4, pin_len * 4);
finish_hash(&ctx, current);
start_hash(&ctx);
hash_block(&ctx, current, 32);
finish_hash(&ctx, result_key);
result = 0; //ok
err:
return result;
}
BIGNUM *decode_primary_key(char *pwd_key, char *primary_key, BN_CTX *bn_ctx)
{
BIGNUM *res;
char buf[32];
gost_ctx ctx;
gost_init(&ctx, gost_cipher_list->sblock);
gost_key(&ctx, pwd_key);
gost_dec(&ctx, primary_key, buf, 4);
res = reverse32bn(buf, bn_ctx);
OPENSSL_cleanse(buf, sizeof(buf));
return res;
}
BIGNUM *remove_mask_and_check_public(char *oid_param_set8, BIGNUM *key_with_mask, BIGNUM *mask, char *public8, BN_CTX *ctx)
{
int result;
EC_KEY *eckey = NULL;
const EC_POINT *pubkey;
const EC_GROUP *group;
BIGNUM *X, *Y, *order, *raw_secret, *mask_inv;
char outbuf[32], public_X[32];
ASN1_OBJECT *obj;
int nid;
order = BN_CTX_get(ctx);
mask_inv = BN_CTX_get(ctx);
raw_secret = BN_CTX_get(ctx);
X = BN_CTX_get(ctx);
Y = BN_CTX_get(ctx);
if (!order || !mask_inv || !raw_secret || !X || !Y) { result = 1; goto err; }
obj = ASN1_OBJECT_create(0, oid_param_set8+1, *oid_param_set8, NULL, NULL);
nid = OBJ_obj2nid(obj);
ASN1_OBJECT_free(obj);
if (!(eckey = EC_KEY_new())) { result = 1; goto err; }
if (!fill_GOST2001_params(eckey, nid)) { result = 1; goto err; }
if (!(group = EC_KEY_get0_group(eckey))) { result = 1; goto err; }
if (!EC_GROUP_get_order(group, order, ctx)) { result = 1; goto err; }
if (!BN_mod_inverse(mask_inv, mask, order, ctx)) { result = 1; goto err; }
if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) { result = 1; goto err; }
if (!EC_KEY_set_private_key(eckey, raw_secret)) { result = 1; goto err; }
if (!gost2001_compute_public(eckey)) { result = 1; goto err; }
if (!(pubkey = EC_KEY_get0_public_key(eckey))) { result = 1; goto err; }
if (!EC_POINT_get_affine_coordinates_GFp(group, pubkey, X, Y, ctx)) { result = 1; goto err; }
store_bignum(X, outbuf, sizeof(outbuf));
BUF_reverse(public_X, outbuf, sizeof(outbuf));
if (memcmp(public_X, public8, 8) != 0) { result = 1; goto err; }
result = 0; //ok
err:
if (eckey) EC_KEY_free(eckey);
if (result == 0) return raw_secret;
return NULL;
}
int file_length(char *fname)
{
int len;
FILE *f = fopen(fname, "rb");
if (f == NULL) return -1;
fseek(f, 0, SEEK_END);
len = ftell(f);
fclose(f);
return len;
}
int read_file(char *fname, int start_pos, char *buf, int len)
{
int read_len;
FILE *f = fopen(fname, "rb");
if (f == NULL) return 1;
if (start_pos) fseek(f, start_pos, SEEK_SET);
read_len = fread(buf, 1, len, f);
fclose(f);
if (read_len != len) return 1;
return 0; //ok
}
int get_asn1_len(unsigned char *buf, int *size_hdr)
{
int n, i, res;
int pos = 0;
if ((buf[pos]&0x80) == 0) {
*size_hdr = 1;
return buf[pos];
}
n = buf[pos++]&0x7f;
res = 0;
for(i = 0; i < n; i++) {
res = res*256 + buf[pos++];
}
*size_hdr = n+1;
return res;
}
#define MAX_HEADER 20000
int read_container(char *fpath, int flag2, char *salt12, char *primary_key, char *masks_key, char *public8, char *oid_param_set8)
{
int result;
char primary_path[1024+30];
char masks_path[1024+30];
char header_path[1024+30];
char header_buf[MAX_HEADER];
int header_len;
int i, len, pos, size_hdr;
if (strlen(fpath)>1024) { result = 1; goto err; }
sprintf(header_path, "%s/header.key", fpath);
if (flag2 == 0)
{
sprintf(primary_path, "%s/primary.key", fpath);
sprintf(masks_path, "%s/masks.key", fpath);
}
else
{
sprintf(primary_path, "%s/primary2.key", fpath);
sprintf(masks_path, "%s/masks2.key", fpath);
}
if (read_file(primary_path, 4, primary_key, 32)) { result = 1; goto err; }
if (read_file(masks_path, 4, masks_key, 32)) { result = 1; goto err; }
if (read_file(masks_path, 0x26, salt12, 12)) { result = 1; goto err; }
header_len = file_length(header_path);
if (header_len < 0x42 || header_len > MAX_HEADER) { result = 1; goto err; }
if (read_file(header_path, 0, header_buf, header_len)) { result = 1; goto err; }
//------------- skip certificate ---------------------------
pos = 0;
for(i = 0; i < 2; i++)
{
get_asn1_len(header_buf+pos+1, &size_hdr);
pos += size_hdr+1;
if (pos > header_len-8) { result = 2; goto err; }
}
//------------------ get oid_param_set8 -----------------------
#define PARAM_SET_POS 34
if (memcmp(header_buf+pos+PARAM_SET_POS, "\x6\x7", 2) != 0) { result = 2; goto err; }
memcpy(oid_param_set8, header_buf+pos+PARAM_SET_POS+1, 8);
//------------------ get public8 -----------------------
result = 2; //not found
pos += 52;
for(i = 0; i < 3; i++)
{
len = get_asn1_len(header_buf+pos+1, &size_hdr);
if (len == 8 && memcmp(header_buf+pos, "\x8a\x8", 2) == 0)
{
memcpy(public8,header_buf+pos+2,8);
result = 0; //ok
break;
}
pos += len+size_hdr+1;
if (pos > header_len-8) { result = 2; goto err; }
}
err:
OPENSSL_cleanse(header_buf, sizeof(header_buf));
return result;
}
#define START_OID 0x12
#define START_KEY 0x28
unsigned char asn1_private_key[72] = {
0x30,0x46,2,1,0,0x30,0x1c,6,6,0x2a,0x85,3,2,2,0x13,0x30,0x12,6,7,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,6,7,0x2a,0x85,3,2,2,0x1e,1,4,0x23,2,0x21,0
};
int main(int argc, char **argv)
{
int result;
char *container_path;
char *passw;
char salt12[12];
char primary_key[32];
char masks_key[32];
char public8[8];
char oid_param_set8[8];
BN_CTX *ctx;
BIGNUM *key_with_mask;
BIGNUM *mask;
BIGNUM *raw_key;
char pwd_key[32];
char outbuf[32];
ctx = BN_CTX_new();
if (argc == 2)
{
container_path = argv[1];
passw = "";
}
else
if (argc == 3)
{
container_path = argv[1];
passw = argv[2];
}
else
{
printf("get_private container_path [passw]\n");
result = 1;
goto err;
}
if (read_container(container_path, 0, salt12, primary_key, masks_key, public8, oid_param_set8) != 0 &&
read_container(container_path, 1, salt12, primary_key, masks_key, public8, oid_param_set8) != 0)
{
printf("can not read container from %s\n", container_path);
result = 2;
goto err;
}
make_pwd_key(pwd_key, salt12, 12, passw);
key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);
OPENSSL_cleanse(pwd_key, sizeof(pwd_key));
mask = reverse32bn(masks_key, ctx);
raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);
if (raw_key)
{
BIO *bio;
store_bignum(raw_key, outbuf, sizeof(outbuf));
memcpy(asn1_private_key+START_OID, oid_param_set8, 8);
memcpy(asn1_private_key+START_KEY, outbuf, 32);
//bio = BIO_new_file("private.key", "w");
bio = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT);
PEM_write_bio(bio, "PRIVATE KEY", "", asn1_private_key, sizeof(asn1_private_key));
BIO_free(bio);
OPENSSL_cleanse(outbuf, sizeof(outbuf));
OPENSSL_cleanse(asn1_private_key, sizeof(asn1_private_key));
result = 0; //ok
}
else
{
printf("Error check public key\n");
result = 3;
}
err:
BN_CTX_free(ctx);
OPENSSL_cleanse(salt12, sizeof(salt12));
OPENSSL_cleanse(primary_key, sizeof(primary_key));
OPENSSL_cleanse(masks_key, sizeof(masks_key));
return result;
}
Основную работу выполняют следующие 3 функции:
1. Создаем ключ хранения исходя из 12-ти байтовой «соли» и пароля.
make_pwd_key(pwd_key, salt12, 12, passw);
2. Расшифровываем основной ключ на ключе хранения.
key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);
3. Делим ключ с маской на маску.
raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);
Но так как в библиотеке OpenSSL операция деления по модулю традиционно отсутствует, пользуемся операцией взятия обратного числа и умножением.
if (!BN_mod_inverse(mask_inv, mask, order, ctx)) { result = 1; goto err; }
if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) { result = 1; goto err; }
Как экспортировать закрытый ключ ЭЦП?
Экспорт закрытого ключа ЭЦП является важной процедурой для его сохранения и использования на другом устройстве. Для экспорта закрытого ключа ЭЦП вам понадобится использовать программу предоставляемую производителем ЭЦП.
В программе для экспорта закрытого ключа ЭЦП вам необходимо выполнить следующие действия:
- Выбрать закрытый ключ, который нужно экспортировать
- Ввести пароль доступа к закрытому ключу
- Выбрать место для сохранения экспортированного файла
Обратите внимание, что пароль доступа к закрытому ключу является секретной информацией и должен быть введен точно так же, как и при создании ключа. Неправильно введенный пароль может привести к невозможности экспорта закрытого ключа.
После того, как экспортирование закончено, сохраните файл в надежном месте, так как он является ключом к вашей ЭЦП. Будьте осторожны с хранением файлов ключей и паролей, так как их компрометация может привести к возможности подделки ваших электронных документов.
Как скопировать подпись с Рутокена на Рутокен?
Выберите ЭЦП для копирования
Для начала, подключите Рутокен к компьютеру и запустите программу управления ЭЦП. Затем, выберите нужную электронную подпись в списке доступных для экспорта. Нажмите на нее мышкой, чтобы выделить и продолжить работу.
Экспортирование подписи в формат PFX
После выделения ЭЦП, нажмите на кнопку «Экспорт», чтобы начать экспортирование подписи в формат PFX. В появившемся диалоговом окне выберите место для сохранения файла и введите имя для файла. Нажмите кнопку «Сохранить», чтобы продолжить.
Импортирование подписи в другой Рутокен
Подключите второй Рутокен к компьютеру и запустите ту же программу управления ЭЦП. В разделе «Импорт» выберите экспортированный ранее файл с подписью (файл формата PFX). Укажите пароль, который был установлен при экспорте подписи, и нажмите кнопку «Импорт».
Теперь подпись успешно скопирована на другой Рутокен и готова к использованию.
Как добавить ЭЦП в КриптоПро?
1. Установите КриптоПро CSP
После установки необходимо запустить утилиту «КриптоПро CSP», которая находится в меню «Пуск».
2. Добавьте сертификаты
Для добавления ЭЦП в КриптоПро необходимо иметь сертификаты ключей. При установке КриптоПро CSP создаются хранилища сертификатов. Сертификаты можно импортировать с помощью утилиты «КриптоПро CSP».
3. Добавьте открытую часть ключа
После добавления сертификата необходимо добавить открытую часть ключа. Для этого нажмите правой кнопкой мыши на сертификате в утилите «КриптоПро CSP» и выберите «Просмотреть/изменить дополнительные свойства». Затем перейдите на вкладку «Открытый ключ» и нажмите «Добавить». Вставьте открытую часть ключа и сохраните изменения.
4. Проверьте работу ЭЦП
После добавления ЭЦП в КриптоПро можно проверить его работу. Для этого необходимо установить подпись на документ и проверить его с помощью утилиты «КриптоПро CSP». Если подпись прошла проверку, ЭЦП успешно добавлена.
5. Вывод
Добавление ЭЦП в КриптоПро не является сложной процедурой. Однако, перед использованием надежнее все проверить, чтобы убедиться в корректной работе.
Как установить сертификат электронной подписи с флешки на компьютер
Для установки сертификата электронной подписи с флешки на компьютер необходимо выполнить несколько простых шагов.
Шаг 1. Подключение флешки
Вставьте флешку с сертификатом в отверстие USB-порта компьютера. Если компьютер не обнаруживает флешку, то проверьте наличие драйверов и корректность работы USB-портов.
Шаг 2. Установка драйверов
Шаг 3. Выбор программы управления сертификатами
Для установки сертификата на компьютер используйте программу управления сертификатами. В Windows это можно сделать через «Компьютер» в меню «Пуск». В Mac OS для этого использовать «Центр управления ключами».
Шаг 4. Установка сертификата
После запуска программы управления сертификатами необходимо выбрать флешку и перейти в раздел, отвечающий за установку и удаление сертификатов. Далее следуйте инструкциям, выбрав необходимый сертификат и ниже указав ваши учетные данные.
После этих действий установка сертификата электронной подписи с флешки на компьютер завершена.
Как добавить открытый ключ в КриптоПро
Шаг 1: Получите файл открытого ключа
Перед добавлением открытого ключа в КриптоПро, убедитесь, что у вас есть файл открытого ключа, который вы хотите добавить. Если у вас еще нет этого файла, запросите его у своего отправителя.
Шаг 2: Откройте КриптоПро
Найдите приложение КриптоПро на вашем компьютере и запустите его.
Шаг 3: Откройте раздел «Сертификаты»
На главном экране КриптоПро найдите раздел «Сертификаты».
Шаг 4: Добавьте открытый ключ в БД
Нажмите «Файл» вверху экрана, а затем выберите «Импорт». В открывшемся окне найдите ваш файл открытого ключа и добавьте его в базу данных КриптоПро.
Шаг 5: Проверьте, что ключ был успешно добавлен
Проверьте, что ваш открытый ключ был успешно добавлен, найдя его в списке сертификатов в разделе «Сертификаты».
Теперь вы можете использовать свой открытый ключ в различных приложениях КриптоПро для безопасной передачи информации.
Сборка утилиты конвертирования ключа
Далее сборка исходников описана для Linux версии.
Компиляция OpenSSL библиотеки
После скачивания
и распаковки исходных текстов openssl в целевой директории выполняем команды:
./config
make
Получаем готовую библиотеку libcrypto.a в текущей директории.
Также потребуются заголовочные файлы из директорий engines/ccgost и include.
Компиляция privkey.c
gcc -o privkey -Iengines/ccgost -Iinclude privkey.c libcrypto.a -pthread -ldl
Формирование файла закрытого ключа private.key
./privkey /mnt/usbflash/lp-9a0fe.000
Тестовый закрытый ключ в криптоконтейнере lp-9a0fe.000, сертификат открытого ключа signer.cer и другие файлы для тестирования можно взять отсюда
Получаем результат работы:
-----BEGIN PRIVATE KEY-----
MEYCAQAwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEEIwIhAKzsrv/l1Uwk
uzph/LQN9mux0Jz0yaW21kOYEFv0Xyut
-----END PRIVATE KEY-----
Cохраняем в private.key
Пользуемся закрытым ключом private.key для подписывания файла file.txt
openssl cms -sign -inkey private.key -in file.txt -CAfile CA.cer -signer signer.cer -engine gost -out test.sign -outform DER -noattr -binary
Проверяем подпись
openssl cms -verify -content file.txt -in test.sign -CAfile CA.cer -signer signer.cer -engine gost -inform DER -noattr -binary
Все работает просто замечательно!
Спасибо за внимание. Это была моя первая статья на хабре.
Как сделать копию ключа электронной подписи
Ключ электронной подписи – это специальный файл, который позволяет подписывать документы в электронном виде. Важно сохранить копию ключа, чтобы в случае утери или повреждения оригинала была возможность восстановить его.
Чтобы сделать копию ключа электронной подписи, нужно:
- Открыть приложение для работы с ключом (например, Рутокен).
- Выбрать опцию «Экспорт ключа».
- Выбрать место, куда будет сохранена копия ключа.
- Введите пароль к ключу (если требуется).
- Нажать «Сохранить».
Важно сохранить копию ключа в надежном месте (например, в защищенной папке), чтобы избежать возможности его кражи или взлома. Не храните копию ключа вместе с оригиналом, чтобы случайно не удалить оба файла.
Теперь вы знаете, как сделать копию ключа электронной подписи. Не забывайте сохранять копию в надежном месте и обеспечивать его защиту.
Копирование контейнера закрытого ключа в реестр

Перейдите во вкладку «Сервис» (Рис. 2).

Далее в форме «Контейнер закрытого ключа» нажмите кнопку «Скопировать» (Рис. 3).

Далее используйте один из способов:
Способ 1.
Нажмите кнопку «Обзор» и выберите необходимый для копирования ключевой контейнер и нажмите «Ок» (Рис. 4).

Способ 2.
Можно найти нужный контейнер по сертификату. Для этого нажмите кнопку «По сертификату», в открывшемся окне выберите сертификат для копирования в реестр и нажмите кнопку «Ок» (Рис. 5).

Нажмите кнопку «Далее» (Рис. 6).

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

Если ошибка не возникла, далее введите имя для создаваемого ключевого контейнера и нажмите кнопку «Готово» (Рис. 8).

Откроется окно, в котором нужно выбрать носитель для скопированного контейнера. Чтобы подписывать без USB-носителя, выберите «Реестр» и нажмите кнопку «Ок» (Рис. 9).

Откроется окно для подтверждения, нажмите кнопку «Ок» (Рис. 10).

Далее откроется окно установки пароля на доступ к закрытому ключу. При необходимости введите пароль, подтвердите его, и нажмите кнопку «Ок» (Рис. 11-12).

В окне записи дважды нажмите «Ок» (Рис. 12).

СКЗИ «КриптоПро CSP» скопирует контейнер закрытого ключа и по завершению отобразит соответствующее сообщение (Рис. 13).

Далее нужно выполнить привязку личного сертификата к закрытому контейнеру, который находится в реестре. Для этого извлеките из ПК USB-накопитель и откройте «КриптоПро CSP» (Рис. 14).

В открывшейся программе перейдите во вкладку «Сервис», затем нажмите «Просмотреть сертификаты в контейнере» (Рис. 15).

В открывшемся окне нажмите кнопку «Обзор» (Рис. 16).

Выберите ключевой контейнер из списка и нажмите кнопку «Ок» (Рис. 17).

В окне «Сертификаты в контейнере закрытого ключа» нажмите кнопку «Далее» (Рис. 18).

Затем нажмите кнопку «Установить» (Рис. 19).


Сертификат установится в хранилище «Личные» текущего пользователя.
Физически неклонируемые функции (PUF)
Технология физически неклонируемых функций (PUF) — это сдвиг парадигмы в защите ключей. Вместо хранения ключей (с вероятностью физической атаки) они генерируются из уникальных физических свойств статической памяти SRAM конкретного чипа и существуют только при включении питания. То есть вместо надёжного хранения закрытого ключа один и тот же ключ восстанавливается снова и снова по требованию (пока устройство не выйдет из строя). Этот ключ гарантированно уникален, потому что при генерации используется присущая неконтролируемая неупорядоченность в кремниевой структуре чипа.
Технология PUF в сочетании с доверенной средой исполнения (TEE) — привлекательное решение, если требуется недорогая, простая в интеграции и ультра-безопасная защита ключа. P UF вместе с PKI составляют исчерпывающее решение для идентификации.
Наш партнёр Intrinsic ID разработал такую систему подготовки ключа на основе SRAM PUF, которая производит уникальные, защищённые от подделки и копирования идентификаторы устройств на аппаратном уровне. Используя наши службы сертификации, мы переводим эти идентификаторы в цифровые удостоверения, добавляя возможности PKI. Таким образом, каждому устройству присваивается уникальная, защищённая от клонирования пара ключей, которая не хранится на устройстве в выключенном состоянии, но устройство способно воссоздать этот ключ по запросу. Это защищает от атаки на выключенное устройство.
Дополнительно о нашем совместном решении для идентификации
устройств Интернета вещей см. недавний вебинар: «Стойкие идентификаторы устройств с сертификатами на основе SRAM PUF»
.
Как вытащить открытую часть ключа из КриптоПро
Для того чтобы извлечь открытую часть ключа из КриптоПро, необходимо выполнить следующие действия:
- Открыть Криптоархив через меню Пуск — Программы — КриптоПро CSP — Криптоархив;
- Выбрать меню «Сертификаты» — «Мои сертификаты»;
- Выбрать соответствующий сертификат и нажать кнопку «Экспорт»;
- В появившемся окне выбрать формат файла «Сертификат X.509 (. CER)» и нажать кнопку «Далее»;
- Выбрать место сохранения файла и нажать кнопку «Сохранить»;
- Перейти в папку, где был сохранен файл, нажать правой кнопкой мыши на файл и выбрать пункт «Открыть с помощью» — «Блокнот»;
- Найти строку «——BEGIN PUBLIC KEY——» и скопировать содержимое до строки «——END PUBLIC KEY——«;
- Сохранить скопированный текст в отдельный файл с расширением «.key».
Таким образом, вы сможете вытащить открытую часть ключа из КриптоПро и использовать ее в других приложениях для шифрования и подписания данных.
Чем отличается флешка от рутокена
Флешка
Флешка — это устройство для хранения и передачи данных. Она может быть куплена в любом магазине электроники и свободно использоваться. Флешку можно использовать как для обычных файлов, так и для более серьезных целей, например, для хранения личных ключей.
Однако, флешки не имеют встроенной системы защиты данных. Кроме того, флешки могут легко потеряться или быть украдены, что может привести к утечке конфиденциальной информации.
Рутокен
Рутокен — это устройство, которое предназначено для хранения и защиты электронных ключей и сертификатов. Рутокен отвечает безопасности ваших данных и защищен от несанкционированного доступа.
Кроме того, Рутокен предоставляет возможность подписывать документы электронной подписью, что делает его необходимым для работы с государственными и банковскими сервисами. Рутокен можно легко экспортировать в удобном формате и перенести на другой компьютер.
- Флешка — простое устройство для хранения данных, Рутокен — специализированный токен для защиты электронных ключей;
- Рутокен обеспечивает безопасность данных и защищен от несанкционированного доступа, флешка нет;
- Рутокен позволяет подписывать документы электронной подписью, что делает его необходимым для работы с государственными и банковскими сервисами;
- Флешка может потеряться или быть украдена, что может привести к утечке конфиденциальной информации, Рутокен не имеет этого недостатка.
Аппаратные криптографические модули (HSM)

HSM — ещё одно аппаратное решение для хранения ключей, особенно если вы не хотите полагаться на отдельные токены либо это кажется слишком обременительным. В то время как токены больше ориентированы на ручной ввод или отдельные приложения (например, подписание небольшого количества документов или кода, аутентификация в VPN или других сетях), то HSM предоставляют API, поддерживают автоматизированные рабочие процессы и автоматизированную сборку. Они также соответствуют требованиям FIPS и обычно обеспечивают более высокий рейтинг, чем токены.
Традиционно HSM — это локальные физические устройства, требующие квалифицированных ресурсов для управления и обеспечения базовых требований и SLA. Обслуживание HSM может оказаться дорогим и ресурсоёмким процессом, что в прошлом препятствовало распространению этой технологии. К счастью, в последние годы появились облачные модули HSM, которые предоставляют многие из преимуществ локальных HSM, не нуждаясь в локальном обслуживании.
Примером может служить знакомый многим сервис Key Vault
в облаке Microsoft Azure, которое хранит криптографические ключи в облачном HSM от Microsoft. Если у вас небольшая организация, которая не позволит себе покупку и управление собственным HSM, то это отличное решение, которое интегрируется с публичными центрами сертификации, включая GlobalSign
.
Если вы рассматриваете вариант с подписью документов, то недавно мы запустили новую службу Digital Signing Service
, где тоже используется облачное хранилище HSM для закрытых ключей. Стоит отметить, что новая служба поддерживает индивидуальные подписи всех сотрудников. В прошлом в большинстве HSM-решений для подписи поддерживались только идентификаторы на уровне отделов или организаций (например, бухгалтерия, маркетинг, финансы), а не отдельных людей (например, Джон Доу). Следовательно, для работы на уровне отдельных сотрудников организациям приходилось разворачивать инфруструктуру токенов, которая, как мы отметили выше, может оказаться обременительной. С помощью этой новой службы цифровые подписи отдельных сотрудников внедряются без необходимости самостоятельно управлять HSM (и без риска потери токенов сотрудниками).
Типичные приложения:
- Подпись документов или кода в большом количестве.
- SSL (в зависимости от конфигурации сервера).
- Инфраструктура ЦС для работы собственного ЦС (корневого ЦС, подчинённого ЦС, сервера меток времени RFC 3161) в офлайне или онлайне (корневой ЦС, как правило, работает в офлайне).
Варианты хранения криптографических ключей

Продолжает расти популярность решений на основе PKI — всё больше сайтов переходят на HTTPS, предприятия внедряют цифровые сертификаты для аутентификации пользователей и компьютеров, S/MIME доказывает свою состоятельность и для шифрования электронной почты, и как способ проверки источника сообщений для противодействия фишингу. Но шифрование и аутентификация в этих приложениях практически бессмысленны без правильного управления ключами.
Во многих случаях секретные ключи — личные удостоверения ваших сотрудников (и, следовательно, часть персональных данных организации), так что их защита приравнивается к защите отпечатков пальцев при использовании биометрических учётных данных. Вы же не позволите хакеру добыть отпечаток своего пальца? То же самое и с секретными ключами.
В этой статье мы обсудим варианты защиты и хранения закрытых ключей. Как вы увидите, эти варианты могут незначительно отличаться в зависимости от типа сертификата(ов) и от того, как вы его используете (например, рекомендации для сертификатов SSL/TLS отличаются от рекомендаций для сертификатов конечных пользователей).
Установка ключа КриптоПро
Шаг 1. Получение ключа
Перед установкой ключа КриптоПро необходимо его приобрести или получить от своего руководителя. Обычно ключи предоставляются в виде файла с расширением .cer, .crt или .pem.
Шаг 2. Установка ключа через интерфейс КриптоПро CSP
Для установки ключа через интерфейс КриптоПро CSP выполните следующие действия:
- Запустите программу КриптоПро CSP.
- Выберите вкладку «Сертификаты» и нажмите кнопку «Импорт».
- Выберите файл с ключом и откройте его.
- Введите пароль, если он требуется. Если пароль не был задан, оставьте поле пустым.
- Нажмите кнопку «OK» и дождитесь завершения установки ключа.
Шаг 3. Проверка установки ключа
Для проверки установки ключа выполните следующие действия:
- Запустите программу, которая будет использовать ключ.
- Выберите соответствующий сертификат из списка сертификатов в настройках программы.
- Проверьте, что программа работает корректно с использованием ключа.
Шаг 4. Защита ключа от несанкционированного использования
Для защиты ключа от несанкционированного использования рекомендуется задать пароль на ключ. Пароль можно задать при установке ключа через интерфейс КриптоПро CSP или позднее в настройках программы, использующей ключ.
Шаг 5. Резервное копирование ключа
Для обеспечения безопасности рекомендуется создать резервную копию ключа и хранить ее в безопасном месте. Резервную копию можно создать при установке ключа через интерфейс КриптоПро CSP или позднее в настройках программы, использующей ключ.
Установка сертификата открытого ключа
В настоящее время сертификат открытого ключа является необходимым инструментом для электронной подписи документов, отправки защищенных сообщений и проведения других операций, связанных с обеспечением безопасности информации. Для установки сертификата открытого ключа необходимо выполнить несколько простых шагов.
Шаг 2.
Откройте приложение, которое предназначено для установки сертификатов. Например, если у вас установлена программа КриптоПро, то необходимо запустить утилиту «Управление сертификатами».
Шаг 3.
В окне «Управление сертификатами» выберите вкладку «Сертификаты». Нажмите «Добавить» и выберите опцию «Импорт сертификата».
Шаг 4.
Укажите путь к файлу с сертификатом открытого ключа. Введите пароль, если он был установлен при экспорте сертификата. Нажмите «ОК».
Шаг 5.
Проверьте наличие сертификата в списке установленных сертификатов. Если всё прошло успешно, то вы можете использовать сертификат для электронной подписи документов и других операций, связанных с безопасностью информации.
Файлы. pfx и. jks (хранилища ключей)
Файлы PKCS#12 (.pfx или .p12) и .jks* (созданные инструментом Java Keytool) содержат ваши закрытый и открытый ключи. В отличие от локальных хранилищ для ОС и браузеров, эти файлы могут размещаться практически в любом месте, включая удалённые серверы, и всегда защищены паролем (то есть каждый раз при использовании своего секретного ключа нужно ввести пароль). Другая привлекательная особенность: поскольку это просто файлы, то несложно разослать копии для нескольких человек, которым нужно использовать сертификат.
Если решите сохранить файл на удалённом сервере, то следует особенно позаботиться об ограничении доступа к нему. Если кто-то получит доступ, то сможет использовать ваш сертификат. Аналогично, следует быть особенно осторожным с лёгким копированием и распространением этих файлов. Хотя это и большое удобство для вас, но одновременно и злоумышленнику будет просто сделать копию, если он получит доступ к вашему хранилищу ключей. Пароль закрытого ключа по-прежнему необходим для эффективного использования скопированного файла. Это еще одна причина, чтобы использовать надёжные пароли из 15-ти и больше символов, содержащие заглавные буквы, цифры и специальные символы. С этим вариантом хранения нужно учитывать ещё одну вещь: на конечного пользователя накладывается больше ответственности с точки зрения того, где находится файл и правильно ли он хранится.
Если вы не можете использовать криптографическое оборудование или хранилище ключей Windows (описано выше), но всё же хотите повысить безопасность (вместо того, чтобы просто разместить файл хранилища ключей на компьютере), то можно записать этот файл на флэшку, которая будет лежать в безопасном месте. Конечно, здесь теряется некоторое удобство, так что если нужно часто использовать подпись, то вы скорее захотите хранить файл локально для облегчения доступа.
Типичные приложения:
- Подписание кода Windows или Java.
- FDA ESG
и IRS IDES
используют .pfx для безопасной связи с американскими госслужбами. - Некоторые веб-серверы (например, Apache Tomcat или Jboss).
* Примечание: Java недавно перешла
с JKS на PKCS#12 в качестве типа хранилища ключей по умолчанию.
Как скопировать ЭЦП на другой токен
Шаг 1: Выберите новый токен
Первым шагом необходимо выбрать новый токен, на который нужно скопировать ЭЦП. Убедитесь, что он совместим с вашей системой и имеет необходимое количество памяти для хранения сертификатов.
Шаг 2: Сохраните сертификат с Рутокена
Для переноса ЭЦП на новый токен необходимо сохранить сертификат, который был получен при установке Рутокена. Сделать это можно в приложении «Рутокен Менеджер». Найдите нужный сертификат и выберите опцию «Экспорт». Сохраните файл на компьютер.
Шаг 3: Установите сертификат на новый токен
Подключите новый токен к компьютеру и установите необходимые драйверы. Затем запустите приложение «Рутокен Менеджер» и выберите опцию «Импорт». Выберите сохраненный на предыдущем шаге файл и следуйте инструкциям на экране. Полученный сертификат будет установлен на новый токен.
Шаг 4: Проверьте работоспособность
После завершения шагов 1-3 убедитесь, что электронная подпись работает корректно на новом токене. Для этого подключите его к компьютеру и проверьте, что он распознается программами, которые используют ЭЦП. Также необходимо проверить, что подписанные документы отображаются корректно и не содержат ошибок.
Перенос Электронной Подписи на Другой Компьютер
Перенос с помощью Рутокен
Для переноса электронной подписи с одного компьютера на другой можно использовать устройство Рутокен. Для этого необходимо установить драйвера и программное обеспечение на новом компьютере, подключить Рутокен и скопировать необходимые ключи и сертификаты.
Важно:
не забудьте экспортировать закрытый ключ, который необходим для подписи документов.
Перенос без использования Рутокена
Если у вас нет Рутокена или вы не хотите его использовать, можно перенести электронную подпись с помощью экспорта и импорта сертификата и закрытого ключа. Для этого необходимо установить на новом компьютере программу, которую вы использовали для создания электронной подписи.
- Откройте программу и найдите в меню «Настройки» пункт «Экспорт ключа».
- Выберите нужный сертификат и закрытый ключ и сохраните файл в удобное для вас место.
- Скопируйте файл на новый компьютер.
- Откройте программу на новом компьютере и найдите в меню «Настройки» пункт «Импорт ключа».
- Выберите файл с сохраненным сертификатом и закрытым ключом и импортируйте их.
Важно:
сохраните файл с закрытым ключом в надежном месте и не передавайте его третьим лицам.
Криптографические токены и смарт-карты

Как вскользь упомянуто выше, можно повысить безопасность, если хранить секретный ключ на отдельном оборудовании. Но есть большая разница между использованием криптографических токенов или смарт-карт и стандартных флэш-накопителей. С криптографическим оборудованием ключ генерируется на самом оборудовании и не экспортируется. Закрытый ключ никогда не покидает устройство, что сильно затрудняет постороннему получение доступа и компрометацию.
Примечание: если вы хотите дополнительно обезопасить закрытый ключ, который уже сгенерирован ранее (т. е. не на самом токене), то можно импортировать .pfx-файл на токен, а затем удалить оригинальный .pfx.
С токеном каждый раз при использовании сертификата нужно вводить пароль. Это значит, что даже если кто-то получит ваш токен, ему всё равно понадобится пароль. Хранение ключа в токене означает, что вы можете безопасно использовать один и тот же сертификат на нескольких компьютерах без необходимости создания нескольких копий и прохождения процесса экспорта/импорта. Криптографическое оборудование соответствует FIPS
, что требуется для некоторых отраслевых и государственных регламентов.
Конечно, есть некоторые другие соображения, которые следует иметь в виду, если вы решите выбрать такой вариант. Кроме дополнительных сложностей управления токенами, такой вариант может не работать с автоматическими сборками из-за требования ввести пароль при каждом использовании сертификата. Также нет никакого способа создать резервную копию сертификата, поскольку закрытый ключ не экспортируется (недостаток дополнительной безопасности). Наконец, в некоторых сценариях такой вариант хранения просто невозможен. Например, если специализированные устройства не поддерживают токены или смарт-карты. Или в ситуациях, когда сотрудники не имеют физического доступа к компьютеру, а работают с удалённых терминалов.
Типичные приложения:
Как правило, все варианты использования, перечисленные для хранилищ в ОС/браузере (подпись документов и кода, аутентификация клиента, Windows IIS), поддерживают крипто-токены или смарт-карты — если есть соответствующие драйверы. Однако это не всегда практично (например, в веб-серверах или автоматизированных системах сборки для подписи кода, которые будут требовать ввод пароля каждый раз при применении подписи).
Соответствие нормативным требованиям — одна из основных причин использования криптографических токенов.
- Обязательно для подписания кода расширенной проверки (EV) в соответствии с рекомендациями форума CA/Browser
. - Рекомендуется для стандартной подписи кода в соответствии с минимальными требованиями CA Security Council
. Центры сертификации обязаны рекомендовать криптографическое оборудование в качестве основного варианта выдачи сертификатов. Если криптографическое оборудование не выдаётся, клиент должен подписать соглашение, что будет хранить закрытый ключ на каком-то съёмном оборудовании (которое вынимается после подписания). - Требуется для цифровой подписи и получения доверенного статуса в программах Adobe, в соответствии с требованиями Adobe Approved Trust List (AATL)
. - Отраслевые правила, такие как CFR 21 часть 11 от FDA и требования к цифровой подписи в отдельных странах часто говорят о секретном ключе, который находится в единоличном владении собственника. Хранение на криптографическом оборудовании отвечает этим требованиям.
Копирование ЭЦП на другую флешку
Как правило, ЭЦП хранится на устройстве, которое выдало сертификат, например, на Рутокене. Однако возникают ситуации, когда необходимо перенести ЭЦП на другое устройство, например, на другую флешку.
Можно ли скопировать ЭЦП на другую флешку? Все зависит от условий использования ЭЦП и правил, установленных организацией, выдавшей сертификат. Если условия позволяют, то можно скопировать ЭЦП на другую флешку. Однако необходимо убедиться, что на новом устройстве установлены все необходимые драйверы и программное обеспечение.
При копировании ЭЦП на другое устройство объекты цифровой подписи должны быть скопированы вместе с закрытым ключом. Также нужно учесть, что копирование ЭЦП может нарушить приватность и безопасность. Поэтому, перед тем как скопировать ЭЦП на другую флешку, следует проконсультироваться со специалистом и убедиться, что это безопасно и соответствует правилам использования ЭЦП.
При экспортировании ЭЦП с Рутокена на другую флешку следует использовать специальное программное обеспечение, которое позволяет экспортировать объекты цифровой подписи в файл. Затем этот файл можно перенести на другое устройство и импортировать объекты цифровой подписи обратно в Рутокен или другое устройство.
Как связать открытый и закрытый ключ
Открытый и закрытый ключи
– это две части одного целого в системе шифрования данных. Открытый ключ используется для шифрования информации, а закрытый – для ее расшифровки. Эти ключи должны быть связаны между собой, чтобы система работала корректно.
Для связывания открытого и закрытого ключей необходимо выполнить следующие действия:
- Сгенерировать открытый и закрытый ключи.
- Сохранить открытый ключ в одном месте, а закрытый – в другом.
- При шифровании информации использовать открытый ключ.
- При расшифровке информации использовать соответствующий открытому ключу закрытый ключ.
Пример связывания открытого и закрытого ключей:
При шифровании информации с использованием открытого ключа полученный шифртекст будет выглядеть так:
- Исходный текст: «Секретные данные».
- Шифртекст: «f92fa7c82f556342bb824d48daa38c7e78705e7c8deafd986d670a78f4ecf5c».
Для расшифровки данного шифртекста необходимо использовать соответствующий открытому ключу закрытый ключ:
- Шифртекст: «f92fa7c82f556342bb824d48daa38c7e78705e7c8deafd986d670a78f4ecf5c».
- Расшифрованный текст: «Секретные данные».
