Здравствуйте, люди Хабр! Настало время для очередного руководства по кибербезопасности.

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

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

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

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

А на какой стороне вы, на светлой или на темной? Пишите в комментариях. Давайте, пора всем выйти из сумрака!

В новой публикации я покажу, как разработчику информационных систем со встроенными СКЗИ настроить интеграцию с программно-аппаратным криптографическим модулем КриптоПро HSM. Научимся использовать HSM, как самостоятельный криптографический провайдер с выполнением всей математики на борту или только в качестве надежного хранилища ключевого материала.

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

Пошаговая инструкция

1. Базовая инструкция от КриптоПро:

Настройка КриптоПро HSM Client на Astra Linux 1.5/1.6

2. Для удобства проведения настроек c привилегированным sudo пользователем корректируем подключение WinSCP:

Выбираем File protocol SCP
Выбираем File protocol SCP
Прописываем Shell команду sudo su -
Прописываем Shell команду sudo su -

3. Для преодоление разрыва удаленного соединения с HSM при длительном отсутствии действий и искусственного поддержания активности соединения

в файл /etc/sysctl.conf  добавляем настройку:

net.ipv4.tcp_keepalive_time = 300

Если этого не сделать, то прикладное ПО будет терять соединение с HSM, контекст криптографического провайдера и ключей электронной подписи и шифрования.
После длительного простоя при попытке выполнить криптографическую операцию возникнут ошибки вида:

IOException error! EofException: Closed Caused by: java.io.IOException: Broken
ru.CryptoPro.JCSP.MSCAPI.MSException: MSCAPI ERROR: 0x26at

Настройка через файл позволит сохранить заданную конфигурацию в случае перезагрузки сервера.

Для временного задания настройки можно использовать команду:

sudo sysctl -w net.ipv4.tcp_keepalive_time=300

Для проверки текущего параметра:

cat /proc/sys/net/ipv4/tcp_keepalive_time

4. КриптоПро CSP 5 уже должен быть установлен

Проверим командой:

/opt/cprocsp/bin/amd64/csptest -keyset -fqcn -verifyc

Ответ:

CSP (Type:80) v5.0.10008 KC2 Release Ver:5.0.12000 OS:Linux CPU:AMD64 FastCode:READY:SSSE3. DISABLED:RSA;
AcquireContext: OK. HCRYPTPROV: 21676163
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC2 CSP
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 0.020 sec
[ErrorCode: 0x00000000]

Далее согласно инструкции КриптоПро нужно установить пакеты:

  • cprocsp-stunnel,

  • cprocsp-rdr-pcsc,

  • cprocsp-rdr-rutoken,

  • ifd-rutokens.

Выполняем проверку, какие пакеты уже установлены командой:zypper search cprocsp
Выполняем проверку, какие пакеты уже установлены командой:
zypper search cprocsp

5. Найдём на сервере место, где был распакован ранее архив с пакетами КриптоПро CSP или скопируем эту папку на сервер

Перейдем в папку с CSP и выполним установку нужных пакетов начиная с cprocsp-rdr-pcsc, так как у cprocsp-rdr-rutoken есть зависимости на него.

 sudo zypper install cprocsp-rdr-pcsc-64-5.0.12000-6.x86_64.rpm

Далее устанавливаем:

sudo zypper install cprocsp-rdr-rutoken-64-5.0.12000-6.x86_64.rpm
sudo zypper install ifd-rutokens_1.0.4_1.x86_64.rpm
sudo zypper install cprocsp-stunnel-64-5.0.12000-6.x86_64.rpm

или для RHEL и ROSA:

yum install cprocsp-rdr-pcsc-64-5.0.12999-7.x86_64.rpm
yum install cprocsp-rdr-rutoken-64-5.0.12999-7.x86_64.rpm
yum install ifd-rutokens_1.0.4_1.x86_64.rpm
yum install cprocsp-stunnel-64-5.0.12999-7.x86_64.rpm

Для CSP 5R3:

yum install cprocsp-rdr-pcsc-64-5.0.13000-7.x86_64.rpm
yum install cprocsp-rdr-rutoken-64-5.0.13000-7.x86_64.rpm
yum install ifd-rutokens_1.0.4_1.x86_64.rpm
yum install cprocsp-stunnel-64-5.0.13000-7.x86_64.rpm

Проверим, что все нужные пакеты установлены:zypper search cprocsp
Проверим, что все нужные пакеты установлены:
zypper search cprocsp

6. Делаем резервную копию и выполняем настройки CSP в файле /etc/opt/cprocsp/config64.ini 

Нужно добавить в конфигурационный файл /etc/opt/cprocsp/config64.ini секции криптографических провайдеров КриптоПро HSM в соответствующем разделе.

[Defaults\Provider]

[Defaults\Provider\"Crypto-Pro GOST R 34.10-2012 HSM CSP"] 
"Image Path" = "/opt/cprocsp/lib/amd64/
libcspr.so"
"Function Table Name" = "CPSRV_GetFunctionTable"
Type = 80
Channel = ".clientk2"

[Defaults\Provider\"Crypto-Pro GOST R 34.10-2012 Strong HSM CSP"] 
"Image Path" = "/opt/cprocsp/lib/amd64/
libcspr.so"
"Function Table Name" = "CPSRV_GetFunctionTable"
Type = 81
Channel = ".clientk2"

Добавляем только два провайдера ГОСТ 2012 HSM с размерностью ключей 256 и 512 бит, так как RSA криптография и ГОСТ 2001 не требуются.

После раздела [PKCS11] добавляем:

[PKCS11\slot0]
ProvGOST = "Crypto-Pro GOST R 34.10-2012 HSM CSP"
reader = "HSM"
#reader = "HDIMAGE"

Сохраняем файл /etc/opt/cprocsp/config64.ini.

7. Копируем ключи аутентификации перед HSM в формате HDIMAGE в каталог /var/opt/cprocsp/keys/root

Сертификат для аутентификации перед HSM выдает администратор HSM.

Для информационных систем сертификат в HSM надо выпускать с типом Компьютер.

Проверяем, что контейнер доступен и получаем его полное имя командой:

sudo /opt/cprocsp/bin/amd64/csptest -keys -enum -verifyc

Ответ:

CSP (Type:80) v5.0.10013 KC2 Release Ver:5.0.12999 OS:Linux CPU:AMD64 FastCode:READY:AVX,AVX2.
AcquireContext: OK. HCRYPTPROV: 13794195
1c8fc564f-46b4-1ff3-5b77-07218948576
OK.
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 0.020 sec
[ErrorCode: 0x00000000]

Для HSM ключи расположены в контейнере с именем:

1c8fc564f-46b4-1ff3-5b77-07218948576

8. Экспортируем в файл корневой сертификат аутентификации КриптоПро HSM из ключевого контейнера:

sudo /opt/cprocsp/bin/amd64/csptest -keys -cont 1c8fc564f-46b4-1ff3-5b77-07218948576 -saveext /root/test_hsmroot.p7b

CSP (Type:80) v5.0.10008 KC2 Release Ver:5.0.12000 OS:Linux CPU:AMD64 FastCode:READY:SSSE3. DISABLED:RSA;
AcquireContext: OK. HCRYPTPROV: 19237139
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC2 CSP
Container name: "test1006"
Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x1258983
Symmetric key is not available.
UEC key is not available.
Saving extensions...
Extensions:
 OID: 1.2.643.2.2.37.3.10 does not refer to the certificate
  OID: 1.2.643.2.2.37.3.3
Keys in container:
  exchange key
Extensions:
  OID: 1.2.643.2.2.37.3.10
  PrivKey: Not specified - 27.12.2024 14:38:09 (UTC)

  OID: 1.2.643.2.2.37.3.3
  Certificates: 1:
    DName: CN=HSM33-000229
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 0.010 sec
[ErrorCode: 0x00000000]

9. Устанавливаем корневой сертификат КриптоПро HSM в доверенные:

sudo /opt/cprocsp/bin/amd64/certmgr -inst -store root -file /root/prom_hsmroot.p7b

WARNING: Legacy parameter: "-store root"
Certmgr Ver:5.0.12999 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
Installing: 
=============================================================================
1-------
Issuer              : CN=HSM33-000134
Subject             : CN=HSM33-000134
Serial              : 0x22A47A327948582D251F
SHA1 Thumbprint     : 2d2dd22a947c1686950bf1b71469378b8152e1b7
SubjectKeyID        : 9b615f9545480890bdac4af37c2e984ecf1139bf
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before    : 05/06/2023 11:23:37 UTC
Not valid after     : 05/06/2038 11:23:37 UTC
PrivateKey Link     : No                  
Extended Key Usage  : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
                      1.3.6.1.4.1.311.20.2.2 Вход со смарт-картой
                      1.3.6.1.5.5.7.3.1 Проверка подлинности сервера
                      1.2.643.2.2.34.21
                      1.2.643.2.2.34.22
                      1.2.643.2.2.34.28
                      1.2.643.2.2.34.27
=============================================================================
CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?
Subject: HSM33-000134
Thumbprint (sha1): 2D2DD22A947C1686950BF1B71469378B8152E1B7
(o)OK, (c)Cancel
o

[ErrorCode: 0x00000000]

10. Устанавливаем сертификат ключа доступа с привязкой к ключевому контейнеру:

sudo /opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov

Match: HDIMAGE\1c8fc564.000\A975
OK.
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 0.010 sec
[ErrorCode: 0x00000000]

11. Экспортируем сертификат ключа доступа в файл:

Если контейнеров с ключами несколько, потребуется выбрать нужный.

sudo /opt/cprocsp/bin/amd64/certmgr -export -dest /root/test1006.cer

Certmgr Ver:5.0.12999 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
Exporting: 
=============================================================================
1-------
Issuer              : CN=HSM33-000134
Subject             : CN=1057.1057
Serial              : 0x190DA4D07948582D2582
SHA1 Thumbprint     : 84b952dd62bf20db797f40e1c6ae172f31d7d972
SubjectKeyID        : 6eff99dd0db4b34666dd1c42d74d535472358b7b
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before    : 20/11/2023 14:42:06 UTC
Not valid after     : 20/02/2025 14:42:06 UTC
PrivateKey Link     : Yes                 
Container           : HDIMAGE\\1c8fc564.000\A975
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC2 CSP
Provider Info       : Provider Type: 80, Key Spec: 1, Flags: 0x0
Extended Key Usage  : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
                      1.3.6.1.4.1.311.20.2.2 Вход со смарт-картой
                      1.2.643.2.2.34.22
=============================================================================
Exporting complete

[ErrorCode: 0x00000000]

12. Результат работы пунктов 8 и 11 это цепочка и сертификат в каталоге /root/

Проверяем наличие цепочки и сертификата
Проверяем наличие цепочки и сертификата

13. Создаем файл /etc/opt/cprocsp/stunnel/stunnel.conf со следующим содержимым:

Файл в папке  /etc/opt/cprocsp/stunnel.conf переименовываем в /etc/opt/cprocsp/DEFAULT_stunnel.conf. В новый файл  /etc/opt/cprocsp/stunnel.conf записываем:

pid = /var/opt/cprocsp/tmp/stunnel-k2.pid
output = /var/log/stunnel-k2.log
socket = r:TCP_NODELAY=1
socket = r:SO_KEEPALIVE=1
debug = 0
for_hsm = yes
verify = 0

[clientk2]
client = yes
connect =  192.168.1.33:1501
accept = /var/opt/cprocsp/tmp/.clientk2
cert = /root/test1006.cer
pincode = ******* - пароль к контейнеру с ключами доступа к HSM

ВАЖНО! Для информационных систем параметр TIMEOUTidle не включаем в свой конфиг, что бы HSM клиент сам не закрывал соединение.

Параметр socket = r:SO_KEEPALIVE=1 служит для тех же целей, что и произведенная в пункте 3 данной инструкции настройка net.ipv4.tcp_keepalive_time = 300 — для исключения разрыва удаленного соединения службы stunnel с HSM при длительном бездействии.

14. Перезапускаем службы смарт карт/токенов и криптографического провайдера

Проверяем статус службы:

sudo service pcscd status

Для новых версий Linux:

sudo systemctl status pcscd

Останавливаем службу:

sudo service pcscd stop

* pcscd.service - PC/SC Smart Card Daemon   Loaded: loaded (/usr/lib/systemd/system/pcscd.service; indirect; vendor preset: disabled)   Active: failed (Result: exit-code) since Fri 2023-10-20 18:47:25 +05; 10s ago  Process: 15276 ExecStart=/usr/sbin/pcscd --foreground --auto-exit $PCSCD_OPTIONS (code=exited, status=1/FAILURE) Main PID: 15276 (code=exited, status=1/FAILURE)

Проверяем статус службы:

sudo /etc/init.d/cprocsp status

Останавливаем службу:

sudo /etc/init.d/cprocsp stop

cryptsrv is stoppedБ≈▐ cprocsp.service - LSB: Start and stop CSP servers   Loaded: loaded (/etc/init.d/cprocsp; bad; vendor preset: disabled)   Active: inactive (dead) since Fri 2023-10-20 18:48:41 +05; 4s ago     Docs: man:systemd-sysv-generator(8)  Process: 4656 ExecStop=/etc/init.d/cprocsp stop (code=exited, status=0/SUCCESS)  Process: 1437 ExecStart=/etc/init.d/cprocsp start (code=exited, status=0/SUCCESS)

Запускаем службы (после запуска, смотрим их статус):

sudo service pcscd start

* pcscd.service - PC/SC Smart Card Daemon
   Loaded: loaded (/usr/lib/systemd/system/pcscd.service; indirect; vendor preset: disabled)
   Active: active (running) since Fri 2023-10-20 18:49:40 +05; 4s ago
 Main PID: 4809 (pcscd)
    Tasks: 1 (limit: 20000)
   CGroup: /system.slice/pcscd.service
           `-4809 /usr/sbin/pcscd --foreground --auto-exit

Oct 20 18:49:40 s06-trust systemd[1]: Started PC/SC Smart Card Daemon

sudo /etc/init.d/cprocsp start

cryptsrv is running (pid 5150)
Б?¦ cprocsp.service - LSB: Start and stop CSP servers
Loaded: loaded (/etc/init.d/cprocsp; bad; vendor preset: disabled)
Active: active (running) since Fri 2023-10-20 18:51:57 +05; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 4656 ExecStop=/etc/init.d/cprocsp stop (code=exited, status=0/SUCCESS)
Process: 4856 ExecStart=/etc/init.d/cprocsp start (code=exited, status=0/SUCCESS)
Tasks: 3 (limit: 20000)
CGroup: /system.slice/cprocsp.service
Б¦¦Б¦-5150 /opt/cprocsp/sbin/amd64/cryptsrv

15. Запускаем процесс stunnel_fork:

sudo /opt/cprocsp/sbin/amd64/stunnel_fork

для остановки процесса команда:

sudo killall stunnel_fork

16. Проверяем доступность и работу криптографических провайдеров HSM командами:

/opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro GOST R 34.10-2012 HSM CSP" -provtype 80 -info

CSP (Type:80) v5.0.10010 KB2 Release Ver:5.0.10010 OS:Linux CPU:AMD64 FastCode:READY:AVX. DISABLED:RSA;
CryptAcquireContext succeeded.HCRYPTPROV: 8971715
GetProvParam(...PP_ENUMALGS...) until it returns false
Algid Bits Type NameLen AlgName

0000661eh 256 Encrypt 14 GOST 28147-89
00008021h 256 Hash 18 GR 34.11-2012 256
00002e49h 512 Signature 18 GR 34.10-2012 256
0000aa46h 512 Exchange 18 DH 34.10-2012 256
0000aa47h 512 Exchange 18 DH 34.10-2012 256
0000801fh 32 Hash 18 GOST 28147-89 MAC
00006630h 256 Encrypt 14 GR 34.12-15 M
00006631h 256 Encrypt 14 GR 34.12-15 K
0000803ch 64 Hash 18 GR 34.13-15 M MAC
0000803dh 128 Hash 18 GR 34.13-15 K MAC
00008034h 256 Hash 20 GR34.11-12 256 HMAC
Cycle exit when getting data. 11 items found. Level completed without problems.
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 1.470 sec
[ErrorCode: 0x00000000]

/opt/cprocsp/bin/amd64/csptest -enum -provider "Crypto-Pro GOST R 34.10-2012 Strong HSM CSP" -provtype 81 -info

CSP (Type:81) v5.0.10010 KB2 Release Ver:5.0.10010 OS:Linux CPU:AMD64 FastCode:READY:AVX. DISABLED:RSA;
CryptAcquireContext succeeded.HCRYPTPROV: 15522611
GetProvParam(...PP_ENUMALGS...) until it returns false
Algid Bits Type NameLen AlgName

0000661eh 256 Encrypt 14 GOST 28147-89
00008022h 512 Hash 18 GR 34.11-2012 512
00002e3dh 1024 Signature 18 GR 34.10-2012 512
0000aa42h 1024 Exchange 18 DH 34.10-2012 512
0000aa43h 1024 Exchange 18 DH 34.10-2012 512
0000801fh 32 Hash 18 GOST 28147-89 MAC
00006630h 256 Encrypt 14 GR 34.12-15 M
00006631h 256 Encrypt 14 GR 34.12-15 K
0000803ch 64 Hash 18 GR 34.13-15 M MAC
0000803dh 128 Hash 18 GR 34.13-15 K MAC
00008035h 512 Hash 20 GR34.11-12 512 HMAC
Cycle exit when getting data. 11 items found. Level completed without problems.
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 1.460 sec
[ErrorCode: 0x00000000]

17. Для настройки автозапуска процесса stunnel_fork

в SLES необходимо добавить в файл /etc/init.d/boot.local строку:

/opt/cprocsp/sbin/amd64/stunnel_fork

для RHEL/ROSA:

  • зайти с супер пользователем root в /etc/rc.d

  • там лежит файл rc.local

  • в нем нужно добавить команду запуска stunnel_fork

  • выполнить команду chmod +x stunnel_fork

18. Запускаем контрольную панель КриптоПро JavaCSP.

Требуется наличие программы Xming — порт сервера X Window System для операционной системы, обеспечивающей шифрованную передачу сессии X11 с Unix для безопасной работы с графическими приложениями удаленного компьютера.

Для Java 1.8 выполняем команду

/.../jdk1.8.0_xxx/jre/bin/java ru.CryptoPro.JCP.ControlPane.MainControlPane

Убеждаемся, что рядом с HDIMAGE появилось хранилище HSMDB и ключи в нем, при условии их наличия открываются

19. Настройка работы криптографических провайдеров.

На вкладке JCSP Setting можно увидеть, что основным провайдером для ГОСТ 2012 стал HSM

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

Чтобы перенести криптографические вычислительные процедуры в локальный контекст, разгрузить HSM и задействовать мощности нашего Linux сервера, необходимо заменить HSM обратно на CSP. 

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

Чтобы эти параметры изменить, нужно запустить MainControlPane под root. Просто sudo работать не будет. Нужно настроить X11 forwarding for sudo users специфическим образом.

Причина в том, что X аутентификация базируется на cookies и их нужно определить для пользователя, который инициирует подключение. Требуется выполнить следующие команды.

Отобразить список cookies:

xauth list $DISPLAY

s06-trust/unix:10  MIT-MAGIC-COOKIE-1  66f485ed32ceefc6a767984fb0c20a65

Переключиться на root пользователя используя sudo:

sudo su - root

Добавить для root данную cookie:

xauth add s06-trust/unix:10  MIT-MAGIC-COOKIE-1  66f485ed32ceefc6a767984fb0c20a65

Экспортировать дисплей:

export DISPLAY=localhost:10.0

Теперь можно запустить контрольную панель под root:

/.../jdk1.8.0_xxx/jre/bin/java ru.CryptoPro.JCP.ControlPane.MainControlPane

Настроить и применить CSP провайдер:

Зайдя под пользователем, под которым работает прикладное ПО, убеждаемся, что провайдер выставлен верно — CSP:

20. Рекомендация от КриптоПро: отключить проверку handle_check на HSM через Web Admin панель (выполняет администратор HSM)

Внимание: После настройки нужен рестарт HSM.

Выставляем handle_check = 0 для настройки оптимальной работы HSM в режиме, когда криптографические вычиcлительные процедуры производятся в локальном контексте на сервере прикладного ПО.

Для отключения нужно войти в веб-интерфейс HSM, вписать в адресную строку браузера следующее:

https://<ip HSM>/registry/putlong/config/parameters?handle_check=0

Затем перезагрузить HSM (перевести в Inactive, а потом в Full active).

Проверить, что значение изменилось можно также через браузер:

https://<ip HSM>/registry/getlong/config/parameters?handle_check

21. Добавление JVM опции для процесса прикладного ПО

 В sh скрипт запуска прикладного ПО для JVM необходимо добавить опцию:

" -Duse_local_hash_context=true"\

Это вариант более общий и предполагает использование контекста локального провайдера во всех создаваемых объектах класса Signature.

Эквивалент точечного программного подхода в коде:

 Signature signature = Signature.getInstance(algorithm, "JCSP");
 signature.initSign(privateKey);
 signature.setParameter(new LocalContextSpec()); // сообщаем, что требуется вычислять хэш в контексте локального провайдера
 ...
 byte[] sign = signature.sign();
 ...

В этом случае для вычисления хэша в signature с LocalContextSpec будет использоваться контекст локального провайдера.

22. Перенос симметричного секретного ключа дешифрования в локальный контекст для оптимизации производительности.

Для своего прикладного ПО можно добавить настройку, например:

is.digest.local.context=true

Далее ее использовать в коде в нужных методах подписи и дешифрования для задействования контекста локального провайдера.

Аналогично действует настройка опции для всего процесса в JVM —Duse_local_hash_context=true — более общий вариант и предполагает использование контекста локального провайдера во всех Signature.

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

     private static final String LOCAL_CONTEXT = "LOCAL_CONTEXT";

          ...
     
     // Выработка ключа согласования получателем и
     // расшифрование симметричного ключа.
            
            SecretKey symmetricKey = unwrap(wrapKey, privateKey);
            
            SecretKey localSymmetricKey;
            
            if ((isDigestLocalContext) && (isKeyInHSM)) {
                SecretKeyFactory factory = SecretKeyFactory.getInstance(LOCAL_CONTEXT, cryptoProviderName);
                localSymmetricKey = factory.translateKey(symmetricKey); // делаем копию в локальном провайдере
                symmetricKey.destroy();
            } else {
                localSymmetricKey = symmetricKey;
            }

           ...

            Cipher cipher = Cipher.getInstance(CIPHER_MODE_3412_OMAC_CTR, encryptProviderName);
            cipher.init(Cipher.DECRYPT_MODE, localSymmetricKey, spec, null);

23. Версия сборки КриптоПро JavaCSP и прошивки HSM

Важно! Тонкие настройки производительности с выполнением криптографических вычислений в контексте локального провайдера, описание которых приведено в пунктах 19-22 будут работать со сборкой КриптоПро JavaCSP начиная с версии java-csp-5.0.44463 и выше:

На данный момент максимальную производительность и стабильность работы показывала прошивка HSM:
Версия сборки ПАКМ:  12901
Build Date:  Jul 3 2024 14:33:17
SVN Revision:  2024-07-01 13:21:10 +0300

24. Ошибки, которые позволяет обойти данное руководство

Заключение

Криптографии и ПАКМ КриптоПро HSM, в частности, отводится одна из ключевых ролей в текущих глобальных ИТ процессах и проектах на государственном уровне. Данные инструменты внедряются повсеместно для защиты электронного документооборота между людьми, организациями и госорганами.

Отдельно можно выделить такие масштабные проекты — Портал государственных услуг, где в Единой системе идентификации и аутентификации ЕСИА, осуществляется сбор, обработка и хранение биометрических персональных данных и Цифровой рубль.

В заключении хотелось бы еще раз заострить внимание на гуманной и морально-нравственной стороне вопроса. Я полностью разделяю мнение и согласен с точкой зрения Натальи Касперской, например, в одном из своих выступлений на РИА Новости она сказала:

«То есть любое принятие решений системой искусственного интеллекта в отношении человека должно быть просто прямо запрещено, потому что в противном случае мы придем к тому, что у нас система искусственного интеллекта будет управлять людьми — такой, значит, концлагерь электронный»

Это не значит, что мы не должны развивать и внедрять новые технологии.

Просто у человека всегда должна быть альтернатива, должен оставаться выбор:

  • пользоваться ими или нет;

  • получить бумажную справку или электронную;

  • отдать свои персональные данные, в том числе биометрические и медицинские, на хранение и обработку в информационную систему или не отдавать;

  • пользоваться цифровым рублем или предпочесть другие варианты расчетов;

  • общаться с роботом (ИИ) или доверить свою ситуацию другому живому человеку.

Принцип свободной воли не может быть нарушен.

Каким будет мир, зависит от каждого из нас.

И пусть ИТ приносят только благо. Всем добра!

Подписывайтесь на Телеграм-канал Alfa Digital — там мы постим новости, опросы, видео с митапов, краткие выжимки из статей, иногда шутим.

Комментарии (0)