我有一个关于 HSM 会话的问题。
我知道,如果您为要加密/解密的每个文件初始化并最终确定 cryptoki api,则会产生开销。
我的疑问是,
打开和关闭每个文件的单独会话是否有开销,您想要加密/解密。 (C_Initialize/C_Finalize)
在不影响性能的情况下,一个 HSM 最多可以同时有多少个会话?
打开和关闭会话以处理单个文件是最好的方法,还是打开一个会话并处理多个文件然后关闭会话是最好的方法?
谢谢
之所以产生这个问题,是因为我完全迷失了,所以请原谅那些琐碎和无意义的部分。
我有一个 Android 应用程序、一个网络服务、一张 MicroSD 智能卡(移动安全卡)。我需要知道如何使用带有 ssl 的卡来安全地与网络服务进行通信。重建和刷新操作系统不是一个选择。
我知道的:
我不知道的是:
eek-for-android有一个 OpenSC 教程和库,但操作系统需要为此打补丁。有没有办法避免这种情况并仍然使用该解决方案?
我知道我可以通过一些研究进一步深入,但我的截止日期非常接近(几天),所以我需要帮助,很多帮助,而且很快......提前谢谢你!
编辑:
进一步来说:
我有一张 Giesecke & Devrient 的智能卡 SD 卡,带有 Java Card 操作系统以及精美的小程序和开发工具。我还收到了一个 Android 服务,用于通过 APDU 与卡(小程序)进行通信。这是相当低级的,它接受字节码作为命令和数据。
我需要通过 SSL 身份验证调用 Web 服务。现在我知道 SSL 使用(可以使用)具有 PKCS#11 接口的硬件令牌。
有一个名为eek-for-android 的项目,其中包含修补操作系统的指南,并在智能卡上有一个标准的 PKCS#11 接口(我相信这将是 OpenSC)。我无法修补操作系统。
那么问题又来了:
Android 是否支持 Sun PKCS#11 提供程序?或者它可以以某种方式转移到Android?
谢谢你。
软件(如Mozilla Firefox、Thunderbird)可以加载opensc模块(linux上为opensc-pkcs11.so,windows上为opensc-pkcs11.dll)并使用OpenSC支持的所有智能卡进行身份验证、签名和解密。我的问题是我们如何在 android 中做同样的事情(在哪里存储 opensc 模块,如何访问外部令牌等)。例如,应用程序如何使用 opensc 模块通过 nfc 和/或蓝牙接口访问智能卡令牌。
我不喜欢像寻找 android 那样闪烁我的 android。我请求任何建议或示例。提前致谢。
我正在使用 java 9 运行以下命令:
Run Code Online (Sandbox Code Playgroud)keytool -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11conf -list
并得到流动的错误:
keytool 错误:java.lang.Exception:未找到提供程序“sun.security.pkcs11.SunPKCS11”
在 Java 8 中它可以工作。
如何将 keytool 与 SunPKCS11 提供程序一起使用?
我第一次尝试在 tomcat 8 中实现 SSL。
我有 .pem 文件形式的第三方签名 X.509 证书。
但是配置完成后,当我尝试启动 tomcat 时,出现以下错误:
2017 年 11 月 22 日 18:48:01.735 信息 [主要] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["https-jsse-nio-8443"] 2017 年 11 月 22 日 18:48:01.897 严重 [主要] org.apache.coyote.AbstractProtocol.init 无法初始化与 ProtocolHandler ["https-jsse-nio-8443"] java.lang.IllegalArgumentException 关联的端点:java.io.IOException:别名 [null] 不标识密钥条目 于...
以下是我遵循的步骤:
D:\keytest2>keytool -import -alias tomcat -trustcacerts -文件证书.p7b -keystore keystore.kdb
输入密钥库密码:test
重新输入新密码:test
...
...
证书已添加到密钥库
D:\keytest2>keytool -list -v -keystore keystore.kd
这给了我以下输出:
密钥库类型:JKS 密钥库提供商:SUN
您的密钥库包含 1 个条目
别名:tomcat 创建日期:2017 年 11 月 22 日 …
与 Gemalto 网络 HSM 斗争了一段时间,是时候寻求一些专家帮助了。我试图从一个已知的公钥和一个存储在 HSM 上的私钥派生出一个 ECDH1 密钥,并不断将 HSM 发送到某种恐慌模式,这需要我在每次调用派生密钥时它再次开始说话之前重置它功能如下。有人有任何指示吗?
static string PKCSLibraryPath = @"C:\Program Files (x86)\SafeNet\Protect Toolkit 5\Protect Toolkit C SDK\bin\hsm\cryptoki.dll";
static Pkcs11 pkc = new Pkcs11(PKCSLibraryPath, AppType.SingleThreaded);
public string HSM_Interaction(int SlotNumber, string KeyLabel, string Pubkey, string GUID)
{
List<Slot> slots = pkc.GetSlotList(SlotsType.WithTokenPresent);
string pass = "1111";
//convert putblic key to byte array
byte[] data = Get_pub_Key(Pubkey);
//convert password to byte array
byte[] password = Encoding.ASCII.GetBytes(pass);
//select correct HSM slot
Slot S = slots[SlotNumber];
using (Session Sesh = …Run Code Online (Sandbox Code Playgroud) 我正在pkcs12使用命令以以下格式创建密钥库:
> openssl pkcs12 -export -in <cert> -inkey <key> -out mycert.p12 -name <name> -caname <caname>
Run Code Online (Sandbox Code Playgroud)
创建后,我会检查创建的密钥库:
> keytool -list -keystore mycert.p12
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
...
Run Code Online (Sandbox Code Playgroud)
它显示了类型JKS。
当我明确指定密钥库的类型时,输出似乎正确:
> keytool -list -keystore mycert.p12 -storetype pkcs12
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SunJSSE
Run Code Online (Sandbox Code Playgroud)
为什么未指定keytool时会错误地显示密钥库的类型storetype?这种行为对我来说似乎不正确,如果工具无法弄清楚,该命令要么失败,要么不显示密钥库类型。
当我尝试解析编码私钥时
示例私钥
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA4if4vmEnNh2Ijlfrhsb02Exh+LXjkYySOiILtj8rg1ZGWFz1vtPe
DiKbbWLo9xcjDp7UQ2gHnhUZno/gFxcokzTYTkexpb/s4mzU4CH0XaS7IV/xRz1Of1+dwC
2MvsclD0NKceyNu0glocGUu6w2MMsWdevr8YqjPABZYwPmANg5wns61FoI5uQi4e6pcNkr
gGnbf1Sh8DChuM22aLksmOW9UapEKovaUxA4DxEd58zJpmg7UN1ZduUrwCVz1tg1BF+EW5
knMd037olDWdgZtEzMxbmSRlqF6t5dcybnp7LQsdPrbXDubY3mjqgCg25xMk4of3mdDc5b
VcRuNSbDmwAAA+AnwUz5J8FM+QAAAAdzc2gtcnNhAAABAQDiJ/i+YSc2HYiOV+uGxvTYTG
H4teORjJI6Igu2PyuDVkZYXPW+094OIpttYuj3FyMOntRDaAeeFRmej+AXFyiTNNhOR7Gl
v+zibNTgIfRdpLshX/FHPU5/X53ALYy+xyUPQ0px7I27SCWhwZS7rDYwyxZ16+vxiqM8AF
ljA+YA2DnCezrUWgjm5CLh7qlw2SuAadt/VKHwMKG4zbZouSyY5b1RqkQqi9pTEDgPER3n
zMmmaDtQ3Vl25SvAJXPW2DUEX4RbmScx3TfuiUNZ2Bm0TMzFuZJGWoXq3l1zJuenstCx0+
ttcO5tjeaOqAKDbnEyTih/eZ0NzltVxG41JsObAAAAAwEAAQAAAQBUyVuONGo49ZWOmBOq
8cg1l11bmwV4OdVQihcN+lzb3mp9EkzngBLOBddziROCH2B7SLyXkNbaQ1rZgWMoBPynQ7
acknBdjbjHormkVdaBjRLDDm8soCVfx38i33DWzV5tfHLahy8TuZayMBsMySF/5YPELfDF
G47bHd5lKr7+LV3T4kvZ1g1UpDgUGlwpVMpu+ybfhMhCOO2w5Vz/Fl7ptYJQnx8rDARgYu
GDf1yKpRCt7Rx4U+lla5HMnoxh4/g5dXDb8vBDfC/QXj+DPY2/Ju5c3zifryfkB2Cvppq2
EULxDO41iwXgzRpmv9hv6adSp2Qqob72XDu7mWdz/u9BAAAAgFDu2TKaU71igLIMd4sheb
wzjsB2ZW8x5CO+N95OKddkC6lkJiBFrAiF98SVs0AFbqDlw46V3xrBqCVL6ByfW4Zro3Qw
C9GRhjfW/koyuJbplf0uiNaa1ApM7nRoRiOcE5kXkLOObxojPuur29rbI1JGozSn6YhxwA
Q3WthgQipmAAAAgQD7RXYeHQ1P0gpdpWfMXspIbkzODWQDH3VkvQHFFl87+QpsFIWGd8zX
jMMo2bELCgr9cnzRffd8UUCzWJy/mfj+PWjsCr9EaojlnDWYEComa5PYkJKKOxmN+rLg7P
F3Xd/KV4XVBP5wqobTU1sxLnhJkVJMCqHOdDzv9mYr75sXqwAAAIEA5mmDj/4mvkNTNZKw
aaD/8sOz7JjD90jqQCchLETVcwJ1sCgPl5qVAa/S99g9QJXuW3TlXbj4jw01s5APpKq6eY
H91+vJcS8ZmzARXMt4jVB3oWsrhFXw5BEaKYjyKx5gYdSGETbcGz1WxQF4i5E/A43ow73n
RftprflPg+CUU9EAAAAkc3VtaXR0aGFrdXJAU3VtaXRzLU1hY0Jvb2stQWlyLmxvY2FsAQ
IDBAUGBw==
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
x509.ParsePKCS1PrivateKey(block.Bytes)
Run Code Online (Sandbox Code Playgroud)
它会给我错误解释:
case "OPENSSH PRIVATE KEY":
log.Println("Here at OPENSSH Private Key:")
rsa, err := x509.ParsePKCS1PrivateKey(block.Bytes)
log.Println("Rsa and Error:", rsa, err)
if err != nil {
return nil, err
}
rawkey = rsa
Run Code Online (Sandbox Code Playgroud)
钥匙
-----BEGIN OPENSSH PRIVATE KEY-----
key
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
获取错误:
asn1: …Run Code Online (Sandbox Code Playgroud) 我已经在几个兔子洞里寻找答案。
我有一个用 AngularJS 编写的 Web 应用程序,它目前需要 IE11 和 Acrobat 插件才能对 PDF 表单进行数字签名。但是,该插件在 IE11 上是垃圾,不支持现代浏览器(我定义为 Firefox、Chrome 和 Edge。我的公司不支持 Safari。)
因为该应用程序是 AngularJS(而不是在 Node 上运行),所以我需要一个 javascript 解决方案来签署 PDF。不仅如此,签名证书还保存在智能卡上,这意味着我需要一个可以通过某种 PKCS#11 接口访问证书的加密库。在 JavaScript 中。客户目前不接受在 Acrobat 中从外部打开表单。
我查看了多个图书馆,但无法找出一个直接的答案:
这些软件包都没有提供足够的信息让我知道是否进一步研究它们。
任何人都可以向我提供进一步的信息或方向吗?
谢谢,杰森