问题标签 [hsm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8626 浏览

c# - 如何在 .Net 中与 PKCS #11 兼容的 HSM 设备交互?

我应该用 C# 编写一个与Thales WebSentry通信的客户端应用程序,我需要一些关于如何开始的提示。

设备附带 Java SDK,但我需要在 .NET 中进行编程。.NET 中是否有我可以使用的库,或者我必须全部在低级(直接到套接字)中完成。关于如何以及从哪里开始的任何提示或指示?

谢谢!

0 投票
5 回答
7501 浏览

.net - 在 HSM 上使用私钥的 SSL

我的应用程序中有一个使用 SSL 的客户端-服务器架构。目前,私钥存储在 CAPI 的密钥存储位置。出于安全原因,我想将密钥存储在更安全的地方,最好是为此目的而构建的硬件签名模块 (HSM)。不幸的是,由于私钥存储在这样的设备上,我无法弄清楚如何在我的应用程序中使用它。

在服务器上,我只是使用SslStream类和AuthenticateAsServer(...)调用。此方法采用X509Certificate已加载其私钥的对象,但由于私钥存储在 HSM 上的安全(例如不可导出)位置,我不知道如何执行此操作。

在客户端,我正在使用一个HttpWebRequest对象,然后使用该ClientCertificates属性添加我的客户端身份验证证书,但我在这里遇到了同样的问题:如何获取私钥?

我知道有一些 HSM 充当 SSL 加速器,但我并不真的需要加速器。此外,这些产品往往与我没有使用的 IIS 和 Apache 等 Web 服务器进行特殊集成。

有任何想法吗?我唯一能想到的就是编写我自己的 SSL 库,它允许我将交易的签名部分交给 HSM,但这似乎是一项巨大的工作。

0 投票
5 回答
13732 浏览

security - 软件安全模块/工具包替代 HSM 以开发加密功能

我工作并完成了一个 PKI 项目,该项目使用 HSM 生成 - 存储密钥和执行加密功能。我使用 PKCS#11 与我们的应用程序交互以进行签名/验证和加密/解密。我们的平台是windows。

现在,我们正在寻求通过将 HSM 替换为软件安全模块来提供低成本的替代解决方案。我必须在这里指出,我知道不使用 HSM 的缺点。它是安全与成本之间的权衡。

我发现微软提供了下一代 CryptoAPI (CNG)、密钥库和证书服务。我的高级管理层不倾向于使用开源软件。我还发现了 RSA 和密码学提供工具包来执行基于软件的解决方案。

有没有人遇到过任何商业软件安全模块工具包来执行密钥生成、密钥存储和加密功能?

编程语言 - c/c++

谢谢

拉吉

0 投票
3 回答
1426 浏览

optimization - 从嵌套状态转换到嵌套状态的最佳实践(见图)

我正试图围绕以单线程编程语言(Actionscript)实现嵌套状态转换的最佳方法。假设我有这样的行为树结构:行为树

现在假设每个叶子节点是网站上的一个目标点,就像画廊中的图像,或者嵌套在页面视图中的帖子视图中的评论......目标是能够从叶子运行动画过渡节点到叶节点,通过动画出前一棵树(从下到上),并在当前树中动画化(从上到下)。

所以,如果我们在最左下角的叶子节点,并且我们想去最右下角的叶子节点,我们必须:

  • 转出左下节点
  • 完成时(比如在一秒钟的动画之后),过渡到它的父级,
  • 完成后,转出它的父级
  • 完成后,过渡到最右边的父级
  • 完成后,最右边的过渡
  • 完成时,叶中的过渡

我的问题是:

如果您将这些节点中的每一个想象成 HTML 视图(叶子是“部分”,借用 rails 的术语)或 MXML 视图,您在其中嵌套子组件,并且您不一定知道嵌套级别应用程序根目录,如上所述为过渡设置动画的最佳方式是什么?

一种方法是全局存储所有可能的路径,然后说“应用程序,过渡到这条路径,过渡到这条路径”。如果应用程序非常简单,那就可以了。这就是Gaia的做法,一个 Actionscript 框架。但是,如果您希望它能够转换进/出任意嵌套路径,则不能全局存储它,因为:

  1. Actionscript 无法处理所有这些处理
  2. 似乎不是很好的封装

所以这个问题可以改写为,你如何动画出最左边的叶子节点及其父节点,从叶子开始,并在最右边的叶子节点中动画,从根开始? 该信息存储在哪里(要输入和输出什么)?

另一种可能的解决方案是只说“应用程序,转出上一个子节点,完成后,转入当前子节点”,其中“子节点”是应用程序根的直接子节点。然后应用程序根的最左边的子节点(它有两个子节点,每个子节点都有两个子节点)将检查它是否处于正确的状态(如果它的子节点被“转出”)。如果没有,它会在它们上调用“transitionOut()”......这样所有东西都将被完全封装。但这似乎是处理器密集型的。

你怎么看?你还有其他选择吗?或者你能指出我关于AI 行为树或分层状态机的任何好的资源,这些资源描述了它们如何实际实现异步状态转换:

  • 他们从哪里调用对象上的“transitionOut”?从根源还是特定的孩子?
  • 状态存储在哪里?全球,本地?定义所谓的“transitionIn()”和“transitionOut()”的范围是什么?

我已经看过/阅读了许多关于 AI 和状态机的文章/书籍,但我还没有找到描述它们如何在复杂的 MVC 面向对象项目中实际实现异步/动画转换的内容,其中有 100 多个视图/图形参与行为树。

我应该从最父对象还是从子对象调用转换?

以下是我检查过的一些内容:

虽然这不一定是 AI 问题,但没有其他资源描述如何将嵌套状态架构应用于网站;这些是最接近的东西。

问题的另一种表述方式:如何将状态更改广播到应用程序?你把事件监听器放在哪里?当它被任意嵌套时,你如何找到动画的视图?

注意:我不是在尝试构建游戏,只是在尝试构建动画网站。

0 投票
3 回答
5789 浏览

encryption - HSM - cryptoki - 打开会话开销

我正在询问有关与 HSM 的会话的问题。

我知道,如果您为要加密/解密的每个文件初始化和最终确定 cryptoki api,则会产生开销。

我的疑问是,

  1. 为每个文件打开和关闭单独的会话是否有开销,您想要加密/解密。(C_Initialize/C_Finalize)

  2. 在不影响性能的情况下,我可以同时为 HSM 拥有多少个最大会话数?

  3. 打开和关闭会话以处理单个文件是最佳方法,还是打开会话并处理多个文件然后关闭会话是最佳方法?

谢谢

0 投票
4 回答
3797 浏览

encryption - HSM - cryptoki - 会话 - 超时

我的应用程序通过 PKCS#11 通过 ASP.NET Web 服务访问 HSM。我初始化 cryptoki 库并获得一个会话句柄。Web 服务保持此句柄以批处理模式执行加密/解密/签名/验证。

我面临的问题是 20 分钟后 ASP.NET Web 服务超时。我认为,此行为会卸载 cryptoki 库,并且 Web 服务持有的会话句柄变得无效。是的,我同意 ASP.NET Web 服务可以重新配置为不超时,这将使 cryptoki 库始终处于加载状态。

我的问题是我首先从 HSM 获得的会话句柄会发生什么?它会丢失还是未使用?我问这个是因为,我没有通过调用正确关闭打开的会话c_closeSession

Web 服务是通过线程池实现的

谢谢

0 投票
3 回答
3710 浏览

encryption - pkcs#11 内存错误 - 常见原因可能是什么?

我正在使用 cryptoki 库CKR_DEVICE_MEMORY获取调用错误代码。C_Encrypt

从 PKCS#11 规范中,CKR_DEVICE_MEMORY意味着令牌没有足够的内存来执行请求的功能。

在什么情况下,我们会得到token的内存完全满了?

HSM 连续 7 天 24 小时不间断地工作,主要是在白天通过 2 个并行会话加密和解密文件。过去 7 天我没有打电话C_Finalize。所以cryptoki库从它被初始化的那一刻起就一直在它的内存空间中工作(参见相关的帖子)。

我可以从我的应用程序、调试日志中看到,我正在分配、正在解除分配,所以我的应用程序代码没有内存泄漏。

更新 1:关于如何调用ASP.NET有一个相关的详细讨论。我无法使用它的主要原因是在回收/超时后,ASP.net 线程访问单个会话导致 CKR_OPERATION_ACTIVE 错误。在我的情况下,多个应用程序正在通过 Web 服务访问 HSM。C_FinalizeApplication_End

0 投票
4 回答
6593 浏览

php - 如何在 PHP 中与 PKCS#11 兼容的 HSM 设备交互

如何在 Linux 服务器上运行的 PHP 应用程序中使用符合 PKCS#11 的 HSM(例如 SafeNet iKey 2032 [USB] 或 Aladdin eToken PRO [USB])中的密钥材料?

0 投票
2 回答
6608 浏览

c - 在 C 中实现分层状态机

我对如何实现我的状态机有点困惑。
我已经知道它是分层的,因为某些州共享相同的操作。
我通过这些参数确定我需要做什么:

  • (值是:BaseDerivedSpecific
  • 操作码
  • 参数 1 - 可选
  • 参数 2 - 可选

我的层次结构由 Class 确定,OpCode代表操作。
Derived可以使用BaseOpCodesSpecific可以使用BaseDerivedOpCodes。 天真的实现如下:

这将很快变得无法维护。
还有另一种方法可以将状态映射到超类吗?

编辑:
进一步的计算使我认为我可能会使用大多数(如果不是全部)操作码,但我不会使用所有可用的类。
另一个澄清:
一些OpCodes可能通过多个派生类和基共享。
例如:

  • 我有一个名为Any的 ,它是一个类。它有 OpCodesSTATE_ONSTATE_OFFSTATE_SET
  • 我有另一个名为 MyGroup的,它是一个派生类。它有OpCodesSTATE_FLIPSTATE_FLOP

  • 第三个是一个 名为ThingInMyGroup的特定类,它具有OpCodeSTATE_FLIP_FLOP_AND_FLOOP

因此,从服务器发送 一条Any类的消息,在所有客户端中接收并处理。

从服务器发送一条MyGroup类的消息,在所有客户端中接收并仅在属于MyGroup的客户端上处理,任何对Any类有效的操作码对MyGroup有效。

从服务器发送具有ThingInMyGroup类的消息,在所有客户端中接收并仅在属于MyGroup并且是ThingInMyGroup* 的客户端上处理,任何Any类和MyGroup类有效的 **OpCodes 对ThingInMyGroup类有效.

收到消息后,客户端将相应地 ACK/NACK。

我不喜欢使用 switch case 或 const 数组,因为当它们变大时它们将变得无法维护。
我需要一个灵活的设计,让我:

  1. 为每个Class指定哪些OpCodes可用。
  2. 为每个Class指定一个超类,并通过该规范允许我调用由当前OpCode表示的函数指针。
0 投票
5 回答
7152 浏览

c++ - 哪些 C++ 状态机执行框架实现了 UML 语义?

我正在寻找一个提供分层状态机 (HSM) 执行的框架。

这些是对框架的要求:

  • 符合 UML 状态机语义(尽可能)
  • 至少支持
    • 运行到完成语义
    • 等级状态
    • 进入和退出动作
    • 过渡动作
    • 警卫
    • 带有自定义参数的事件
  • 面向对象或至少不禁止 OO 设计

目标平台是带有操作系统的中大型嵌入式系统。

你知道满足上述要求的框架吗?你的框架的优缺点是什么?