问题标签 [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.
c# - 如何在 .Net 中与 PKCS #11 兼容的 HSM 设备交互?
我应该用 C# 编写一个与Thales WebSentry通信的客户端应用程序,我需要一些关于如何开始的提示。
设备附带 Java SDK,但我需要在 .NET 中进行编程。.NET 中是否有我可以使用的库,或者我必须全部在低级(直接到套接字)中完成。关于如何以及从哪里开始的任何提示或指示?
谢谢!
.net - 在 HSM 上使用私钥的 SSL
我的应用程序中有一个使用 SSL 的客户端-服务器架构。目前,私钥存储在 CAPI 的密钥存储位置。出于安全原因,我想将密钥存储在更安全的地方,最好是为此目的而构建的硬件签名模块 (HSM)。不幸的是,由于私钥存储在这样的设备上,我无法弄清楚如何在我的应用程序中使用它。
在服务器上,我只是使用SslStream
类和AuthenticateAsServer(...)
调用。此方法采用X509Certificate
已加载其私钥的对象,但由于私钥存储在 HSM 上的安全(例如不可导出)位置,我不知道如何执行此操作。
在客户端,我正在使用一个HttpWebRequest
对象,然后使用该ClientCertificates
属性添加我的客户端身份验证证书,但我在这里遇到了同样的问题:如何获取私钥?
我知道有一些 HSM 充当 SSL 加速器,但我并不真的需要加速器。此外,这些产品往往与我没有使用的 IIS 和 Apache 等 Web 服务器进行特殊集成。
有任何想法吗?我唯一能想到的就是编写我自己的 SSL 库,它允许我将交易的签名部分交给 HSM,但这似乎是一项巨大的工作。
security - 软件安全模块/工具包替代 HSM 以开发加密功能
我工作并完成了一个 PKI 项目,该项目使用 HSM 生成 - 存储密钥和执行加密功能。我使用 PKCS#11 与我们的应用程序交互以进行签名/验证和加密/解密。我们的平台是windows。
现在,我们正在寻求通过将 HSM 替换为软件安全模块来提供低成本的替代解决方案。我必须在这里指出,我知道不使用 HSM 的缺点。它是安全与成本之间的权衡。
我发现微软提供了下一代 CryptoAPI (CNG)、密钥库和证书服务。我的高级管理层不倾向于使用开源软件。我还发现了 RSA 和密码学提供工具包来执行基于软件的解决方案。
有没有人遇到过任何商业软件安全模块工具包来执行密钥生成、密钥存储和加密功能?
编程语言 - c/c++
谢谢
拉吉
optimization - 从嵌套状态转换到嵌套状态的最佳实践(见图)
我正试图围绕以单线程编程语言(Actionscript)实现嵌套状态转换的最佳方法。假设我有这样的行为树结构:
现在假设每个叶子节点是网站上的一个目标点,就像画廊中的图像,或者嵌套在页面视图中的帖子视图中的评论......目标是能够从叶子运行动画过渡节点到叶节点,通过动画出前一棵树(从下到上),并在当前树中动画化(从上到下)。
所以,如果我们在最左下角的叶子节点,并且我们想去最右下角的叶子节点,我们必须:
- 转出左下节点
- 完成时(比如在一秒钟的动画之后),过渡到它的父级,
- 完成后,转出它的父级
- 完成后,过渡到最右边的父级
- 完成后,最右边的过渡
- 完成时,叶中的过渡
我的问题是:
如果您将这些节点中的每一个想象成 HTML 视图(叶子是“部分”,借用 rails 的术语)或 MXML 视图,您在其中嵌套子组件,并且您不一定知道嵌套级别应用程序根目录,如上所述为过渡设置动画的最佳方式是什么?
一种方法是全局存储所有可能的路径,然后说“应用程序,过渡到这条路径,过渡到这条路径”。如果应用程序非常简单,那就可以了。这就是Gaia的做法,一个 Actionscript 框架。但是,如果您希望它能够转换进/出任意嵌套路径,则不能全局存储它,因为:
- Actionscript 无法处理所有这些处理
- 似乎不是很好的封装
所以这个问题可以改写为,你如何动画出最左边的叶子节点及其父节点,从叶子开始,并在最右边的叶子节点中动画,从根开始? 该信息存储在哪里(要输入和输出什么)?
另一种可能的解决方案是只说“应用程序,转出上一个子节点,完成后,转入当前子节点”,其中“子节点”是应用程序根的直接子节点。然后应用程序根的最左边的子节点(它有两个子节点,每个子节点都有两个子节点)将检查它是否处于正确的状态(如果它的子节点被“转出”)。如果没有,它会在它们上调用“transitionOut()”......这样所有东西都将被完全封装。但这似乎是处理器密集型的。
你怎么看?你还有其他选择吗?或者你能指出我关于AI 行为树或分层状态机的任何好的资源,这些资源描述了它们如何实际实现异步状态转换:
- 他们从哪里调用对象上的“transitionOut”?从根源还是特定的孩子?
- 状态存储在哪里?全球,本地?定义所谓的“transitionIn()”和“transitionOut()”的范围是什么?
我已经看过/阅读了许多关于 AI 和状态机的文章/书籍,但我还没有找到描述它们如何在复杂的 MVC 面向对象项目中实际实现异步/动画转换的内容,其中有 100 多个视图/图形参与行为树。
我应该从最父对象还是从子对象调用转换?
以下是我检查过的一些内容:
- 游戏行为 AI 架构:行为多队列
- 分层状态机——一种非常重要的设计方式
- 通过示例编程游戏 AI
- 目标驱动的代理行为
- Troy Gardner 的高级状态管理
- Troyworks 的 AS3 COGS 库
- 流行的行为树设计方法
- 为异步感觉系统构建事件驱动条件
虽然这不一定是 AI 问题,但没有其他资源描述如何将嵌套状态架构应用于网站;这些是最接近的东西。
问题的另一种表述方式:如何将状态更改广播到应用程序?你把事件监听器放在哪里?当它被任意嵌套时,你如何找到动画的视图?
注意:我不是在尝试构建游戏,只是在尝试构建动画网站。
encryption - HSM - cryptoki - 打开会话开销
我正在询问有关与 HSM 的会话的问题。
我知道,如果您为要加密/解密的每个文件初始化和最终确定 cryptoki api,则会产生开销。
我的疑问是,
为每个文件打开和关闭单独的会话是否有开销,您想要加密/解密。(C_Initialize/C_Finalize)
在不影响性能的情况下,我可以同时为 HSM 拥有多少个最大会话数?
打开和关闭会话以处理单个文件是最佳方法,还是打开会话并处理多个文件然后关闭会话是最佳方法?
谢谢
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 服务是通过线程池实现的
谢谢
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_Finalize
Application_End
php - 如何在 PHP 中与 PKCS#11 兼容的 HSM 设备交互
如何在 Linux 服务器上运行的 PHP 应用程序中使用符合 PKCS#11 的 HSM(例如 SafeNet iKey 2032 [USB] 或 Aladdin eToken PRO [USB])中的密钥材料?
c - 在 C 中实现分层状态机
我对如何实现我的状态机有点困惑。
我已经知道它是分层的,因为某些州共享相同的操作。
我通过这些参数确定我需要做什么:
- 类(值是:Base、Derived、Specific)
- 操作码
- 参数 1 - 可选
- 参数 2 - 可选
我的层次结构由 Class 确定,OpCode代表操作。
Derived可以使用Base的OpCodes,Specific可以使用Base和Derived的OpCodes。
天真的实现如下:
这将很快变得无法维护。
还有另一种方法可以将状态映射到超类吗?
编辑:
进一步的计算使我认为我可能会使用大多数(如果不是全部)操作码,但我不会使用所有可用的类。
另一个澄清:
一些OpCodes可能通过多个派生类和基类共享。
例如:
- 我有一个名为Any的类 ,它是一个基类。它有 OpCodes:STATE_ON,STATE_OFF,STATE_SET。
我有另一个名为 MyGroup的类,它是一个派生类。它有OpCodes: STATE_FLIP,STATE_FLOP。
第三个类是一个 名为ThingInMyGroup的特定类,它具有OpCode: STATE_FLIP_FLOP_AND_FLOOP。
因此,从服务器发送 一条Any类的消息,在所有客户端中接收并处理。
从服务器发送一条MyGroup类的消息,在所有客户端中接收并仅在属于MyGroup的客户端上处理,任何对Any类有效的操作码对MyGroup类有效。
从服务器发送具有ThingInMyGroup类的消息,在所有客户端中接收并仅在属于MyGroup并且是ThingInMyGroup* 的客户端上处理,任何对Any类和MyGroup类有效的 **OpCodes 对ThingInMyGroup类有效.
收到消息后,客户端将相应地 ACK/NACK。
我不喜欢使用 switch case 或 const 数组,因为当它们变大时它们将变得无法维护。
我需要一个灵活的设计,让我:
- 为每个Class指定哪些OpCodes可用。
- 为每个Class指定一个超类,并通过该规范允许我调用由当前OpCode表示的函数指针。
c++ - 哪些 C++ 状态机执行框架实现了 UML 语义?
我正在寻找一个提供分层状态机 (HSM) 执行的框架。
这些是对框架的要求:
- 符合 UML 状态机语义(尽可能)
- 至少支持
- 运行到完成语义
- 等级状态
- 进入和退出动作
- 过渡动作
- 警卫
- 带有自定义参数的事件
- 面向对象或至少不禁止 OO 设计
目标平台是带有操作系统的中大型嵌入式系统。
你知道满足上述要求的框架吗?你的框架的优缺点是什么?