在Linux中使用加密信息保护和硬件密钥载体


将令牌存储在令牌和智能卡上可提供针对外部和内部入侵者的额外保护,其中包括对信息系统和设备具有一定访问权限的那些入侵者。

今天,我将告诉您我们如何保护信息系统中的加密密钥和电子签名,并且将在详细,说明充分的指南中进行此操作,以设置SUSE Linux Enterprise Server 12 SP3以与Aladdin JaCarta PKI令牌和CryptoPro CSP KC2 4.0.9944一起使用。

发布本指南的原因有很多:

原因1


有关Aladdin-RD JaCarta的官方文档更适用于Astra Linux和ALT Linux操作系统,并获得了国防部,FSTEC和FSB的认证,可以作为保护信息的手段。

原因2


找到的关于在Linux中配置与硬件媒体交互的最佳说明,也来自wiki.astralinux.ru-使用CryptoPro CSP

原因3


UPD 04/16/2019:在设置环境和设备的过程中,事实证明,与预期的一样,最早可用的载体根本不是JaCarta PKI Nano,而是在SafeNet Authentication Client eToken PRO模式下运行的设备。

UPD 04/16/2019:一旦银行需要一种可以在与eToken PRO(Java)相同的基础架构中运行的设备。 作为这种设备,“ ZAO Aladdin R.D.”公司 提供了由银行选择的JaCarta PRO令牌。 但是,在形成商品和运输单据的阶段,公司的一名员工犯了一个错误。 代替JaCarta PRO模型,JaCarta PKI意外地输入到商品和运输文件中。

UPD 04/16/2019:我感谢Aladdin R.D.公司帮助我们弄清并确立了真相。

此错误没有任何政治和隐藏的含义,只有员工在准备文档时的技术错误。 Token JaCarta PRO是Aladdin R.D.公司的产品。 执行功能部分的小程序由“ ZAO Aladdin R.D.”公司开发。


该eToken PRO适用于2017年12月1日之前发布的聚会。
此日期之后,公司为“ Aladdin R.D.” 停止销售eToken PRO(Java)设备。

向前走一点,我必须说与他的合作是通过适当的驱动程序-SafenetAuthenticationClient-10.0.32-0.x86_64配置的 ,只有在支持Aladdin R.D的情况下才能获得。 在单独的在线应用程序上。

在CryptoPro CSP中,要使用此令牌,需要安装cprocsp-rdr-emv-64软件包| EMV / Gemalto支持模块

该令牌已确定并得到响应。 使用SafenetAuthenticationClient软件包中的SACTools实用程序,可以对其进行初始化。 但是,在使用密码信息保护时,他的行为极其奇怪且不可预测。

在命令上显示如下:

csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (205D325E5842) 00 00\alfa_shark' -check 

答案是一切都很好:

 [ErrorCode: 0x00000000] 

但是在尝试以编程方式读取密钥之后,相同的检查立即开始产生错误:

 [ErrorCode: 0x8009001a] 

根据Microsoft COM错误代码(安全性和安装程序)的组件的对象模型的错误代码列表

 NTE_KEYSET_ENTRY_BAD 0x8009001A Keyset as registered is invalid. 

“无效的密钥集”-产生此消息的原因可能是由于旧的Gemalto芯片,固件和小程序,或者是其操作系统的驱动程序不支持新的ES生成标准和哈希函数GOST R 34.10-2012和GOST R 34.11- 2012。

在这种状态下,令牌被阻止。 密码信息保护指数开始显示读取器和密钥容器的无关状态。 重新启动cprocspractor提供程序cprocsp服务, pcscd令牌和智能卡服务以及整个操作系统都没有帮助,仅重新初始化即可。

公平地说,应该注意的是,SafeNet eToken PRO在Windows 7和10 OS中与GOST R 34.10-2001密钥一起正常工作。

您可以尝试安装CryptoPro CSP 4.0 FCN(Gemalto) ,但是目标是使用支持新标准的JaCarta系列认证的FSB和FSTEC产品保护我们的ES和加密密钥。

通过在(XL)常规外壳中使用真正的JaCarta PKI令牌解决了该问题。

但是花了很多时间试图使Safenet eToken PRO正常工作。 我想提请大家注意,也许可以保护某人免受此侵害。

原因4


有时您自己需要返回到旧文章和说明。 当信息放置在外部源中时,这很方便。 因此,感谢Habr的机会。

设定指南


在服务器的USB端口中安装JaCarta PKI令牌并启动系统后,我们验证是否检测到新设备并出现在列表中:

lsusb



在本例中,它是总线004设备003:ID 24dc:0101

要诊断读者,可以使用安全性:Chipcard项目(software.opensuse.org)中pcsc-tools实用程序。

它由以下命令启动:

pcsc_scan



在安装所有必需的软件包之前,将不会显示有关令牌的信息。

安装驱动程序和软件以使用JaCarta PKI


在网站“ Aladdin R.D.”的“支持”页面上 我们下载的文档和软件仅适用于JaCarta PKI

根据《 JaCarta for Linux实施指南》第4.2节,第一步是安装pcsc-liteccidlibusb
为了使JaCarta管理实用程序正常工作,必须安装以下组件:

  • PC / SC Lite-中间层,用于根据PC / SC标准pcsc-lite软件包提供对智能卡的访问。
  • Ccid和libusb库,用于使用USB密钥,智能卡和智能卡读取器。
我们检查这些软件包的可用性并安装:

zypper search pcsc-lite



zypper search libusb



zypper install pcsc-lite





zypper search CCID



zypper install pcsc-ccid



zypper search CCID



zypper install libusb



结果,更新了pcsc-lite软件包,安装了CCID,无需执行libusb。

以下两个命令可直接使用JaCarta PKI安装带有驱动程序和软件的软件包:

zypper install idprotectclientlib-637.03-0.x86_64.rpm



zypper install idprotectclient-637.03-0.x86_64.rpm



检查是否已安装JaCarta PKI的驱动程序和软件:

zypper search idprotectclient



当尝试使SafeNet eToken PRO正常工作时,我发现以下信息:SLES中预装的openct-智能卡读卡器程序包可能与pcsc-lite-PCSC智能卡程序库冲突,该程序的安装需要AladdinR.D。

zypper search openct



因此,我们删除了openct软件包:

rpm -e openct

现在,已安装了使用令牌的所有必需驱动程序和软件。

我们使用pcsc-tools实用程序执行诊断,并确保在操作系统中检测到JaCarta:

pcsc_scan



安装CryptoPro CSP软件包


默认情况下安装CryptoPro CSP时,缺少用于令牌和智能卡的必要软件包。

zypper search cprocsp



CSP中安装用于CryptoPro CSP支持组件JaCarta组件

zypper install cprocsp-rdr-jacarta-64-3.6.408.683-4.x86_64.rpm



一些组件具有依赖性。 因此,例如,如果您尝试安装SafeNet eToken PRO支持包cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm-EMV / Gemalto支持模块 ,我们将收到一条消息,提示您需要首先安装CSP阅读器支持cprocsp的基本组件-rdr-pcsc-64-4.0.9944-5.x86_64.rpm-用于CryptoPro CSP读取器的PC / SC组件

 zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm Loading repository data... Reading installed packages... Resolving package dependencies... Problem: nothing provides cprocsp-rdr-pcsc-64 >= 4.0 needed by cprocsp-rdr-emv-64-4.0.9944-5.x86_64 Solution 1: do not install cprocsp-rdr-emv-64-4.0.9944-5.x86_64 Solution 2: break cprocsp-rdr-emv-64-4.0.9944-5.x86_64 by ignoring some of its dependencies Choose from above solutions by number or cancel [1/2/c] (c): c 

为读者和关键媒体安装基本支持包:

zypper install cprocsp-rdr-pcsc-64-4.0.9944-5.x86_64.rpm



zypper install lsb-cprocsp-pkcs11-64-4.0.9944-5.x86_64.rpm

现在,您可以安装用于与其他类型的媒体和GUI组件一起使用的模块:

zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm



 zypper install cprocsp-rdr-novacard-64-4.0.9944-5.x86_64.rpm zypper install cprocsp-rdr-mskey-64-4.0.9944-5.x86_64.rpm zypper install cprocsp-rdr-gui-gtk-64-4.0.9944-5.x86_64.rpm 



检查CryptoPro CSP的最终配置:

 zypper search cprocsp Loading repository data... Reading installed packages... 


S | Name | Summary | Type
---+-----------------------------+----------------------------------------------------+--------
i+ | cprocsp-curl-64 | CryptoPro Curl shared library and binaris. Build 9944. | package
i+ | cprocsp-rdr-emv-64 | EMV/Gemalto support module | package
i+ | cprocsp-rdr-gui-gtk-64 | GUI components for CryptoPro CSP readers. Build 9944. | package
i+ | cprocsp-rdr-jacarta-64 | JaCarta components for CryptoPro CSP. Build 683. | package
i+ | cprocsp-rdr-mskey-64 | Mskey support module | package
i+ | cprocsp-rdr-novacard-64 | Novacard support module | package
i+ | cprocsp-rdr-pcsc-64 | PC/SC components for CryptoPro CSP readers. Build 9944.| package
i+ | lsb-cprocsp-base | CryptoPro CSP directories and scripts. Build 9944. | package
i+ | lsb-cprocsp-ca-certs | CA certificates. Build 9944. | package
i+ | lsb-cprocsp-capilite-64 | CryptoAPI lite. Build 9944. | package
i+ | lsb-cprocsp-kc2-64 | CryptoPro CSP KC2. Build 9944. | package
i+ | lsb-cprocsp-pkcs11-64 | CryptoPro PKCS11. Build 9944. | package
i+ | lsb-cprocsp-rdr-64 | CryptoPro CSP readers. Build 9944. | package




要应用更改,我们重新启动加密提供程序服务并检查其状态:

 /etc/init.d/cprocsp restart /etc/init.d/cprocsp status 



CryptoPro CSP设置和诊断


使用以下命令检查密码提供程序是否看到我们的令牌和其他可用媒体类型:

/opt/cprocsp/bin/amd64/csptest -card -enum -v –v



/opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251



/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view -f cp1251



阿拉丁RD JaCarta [SCR接口](000000000000)00 00是我们的媒介。

遵循CryptoPro CSP for Linux的说明。 配置 ,在密码提供者中执行其注册:

 /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add "Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00" 



由于在配置文件/etc/opt/cprocsp/config64.ini中执行
条目将添加到[KeyDevices \ PCSC]部分:

[KeyDevices\PCSC\"Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00"\Default]


为了符合CryptoPro CSP表格的要求,《使用条款和安全性管理员指南》:
禁止在关闭了增强密钥控制模式的情况下使用CryptoPro CSP CIP版本4.0。 ZHTYA.00087-01 91 02.安全管理员指南中介绍了此模式的包含。
有必要启用对密钥用法的增强控制:

 /opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long StrengthenedKeyUsageControl 1 

检查是否启用了该模式:

cat /etc/opt/cprocsp/config64.ini | grep StrengthenedKeyUsageControl



我们重新启动加密提供程序服务:

 /etc/init.d/cprocsp restart /etc/init.d/cprocsp status 

重新启动后,我们检查提供商与主要承运人的合作中是否没有错误:

/opt/cprocsp/bin/amd64/csptest -keyset –verifycontext



/opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum –unique

 CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:REA AcquireContext: OK. HCRYPTPROV: 16052291 alfa_shark1 |SCARD\JACARTA_4E3900154029304C\CC00\E9F6 OK. Total: SYS: 0.000 sec USR: 0.000 sec UTC: 4.560 sec [ErrorCode: 0x00000000] 

使用JaCarta PKI令牌


让我们在工作站上运行Xming(X11转发)程序,以便我们可以通过SSH打开并使用必要实用程序的图形界面。



安装IDProtectClient-用于JaCarta PKI的软件后,服务器上的/ usr / share / applications文件夹中出现了两个文件:

雅典娜IDProtectClient.desktop
雅典娜IDProtectManager.desktop

这些是可以查看实用程序Exec = / usr / bin / SACTools的启动选项的快捷方式

运行IDProtectPINTool实用程序。

使用它,可以设置和更改令牌的PIN访问代码。

/usr/bin/IDProtectPINTool



首次初始化令牌时, 默认情况下包含密钥载体的PIN码(密码)的链接将非常有用

IDProtect_Manager程序允许查看有关带有​​密钥和证书的令牌和容器的信息:

/usr/bin/IDProtect_Manager



要使用密钥访问容器,您需要输入密码:





要使用SafeNet身份验证客户端eToken PRO ,可以使用类似的程序-SafeNet身份验证客户端监视器SafeNet身份验证客户端工具 ,其运行方式如下:

 /usr/bin/SACMonitor /usr/bin/SACTools 



在密码提供程序CryptoPro JavaCSP的接口中直接使用密钥容器执行操作更加方便:

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




要使用键显示有关容器内容的信息,可以运行以下命令:

 /opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark1' -info 

要诊断容器,请使用与–check开关相同的命令

 /opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark' –check 

您将需要输入容器的密码:





软件密钥检索


通常,使用CryptoPro Java CSP从令牌上的容器中检索私钥和公钥证书的示例如下:

 import ru.CryptoPro.JCP.KeyStore.JCPPrivateKeyEntry; import ru.CryptoPro.JCP.params.JCPProtectionParameter; KeyStore keyStore = KeyStore.getInstance("Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00", "JCSP"); keyStore.load(null, null); JCPPrivateKeyEntry entry = null; X509Certificate certificate = null; PrivateKey privateKey = null; try { entry = (JCPPrivateKeyEntry) keyStore.getEntry(keyAlias, new JCPProtectionParameter(pwd)); certificate = (X509Certificate) entry.getCertificate(); privateKey = entry.getPrivateKey(); } catch (UnrecoverableEntryException | NullPointerException e) { LOGGER.log(Level.WARNING, PRIVATE_KEY_NOT_FOUND + keyAlias + ExceptionUtils.getFullStackTrace(e)); } 


如果您这样操作:

 Key key = keyStore.getKey(keyAlias, pwd); 

然后密码提供者将尝试显示请求,以通过控制台或GUI窗口向容器输入密码。

结果


令牌密钥载体令牌已安装在服务器的内部USB端口中。

服务器硬件本身被密封并放置在访问受限的房间中。

这样的措施可以提高我们的信息系统的保护水平,以防在网络上和物理上被盗和破坏电子签名或加密密钥。

有用的链接


  1. Aladdin-RD JaCarta文档
  2. wiki.astralinux.ru-使用CryptoPro CSP
  3. Microsoft COM错误代码(安全性和安装程序)的组件的对象模型的错误代码列表
  4. CryptoPro CSP 4.0 CSP 4.0 FCN(金雅拓)
  5. 来自安全性的PCSC工具读取器诊断实用程序:芯片卡项目(software.opensuse.org)
  6. 适用于Linux的CryptoPro CSP。 定制化。
  7. Aladdin-RD默认密钥载体PIN(密码)

Source: https://habr.com/ru/post/zh-CN441212/


All Articles