【问题标题】:OpenSSL - check on what engine is a function called and if hardware is really used?OpenSSL - 检查调用的函数是什么引擎以及是否真的使用了硬件?
【发布时间】:2014-11-01 21:27:34
【问题描述】:

首先,我是 OpenSSL 世界的初学者。对于任何基本的野蛮错误,我提前道歉。

考虑一个流程:

  1. 使用硬件初始化 OpenSSL 引擎(我们称之为 EngineHW)。
  2. 调用 OpenSSL 函数,例如X509_sign。

如何检查调用的函数是否在硬件上执行?

如何验证 EngineHW 函数是否被调用?如果 EngineHW 没有定义函数怎么办 - OpenSSL 会回退到它拥有的任何默认引擎吗?

这个问题与断言质量有关——因为我有硬件可以为我做加密,所以我认为使用软件是一种回归(至少对于重要的功能)。

【问题讨论】:

  • 你在暗示command line use吗?
  • 我在暗示任何解决方案 :( 可以通过静态、动态链接代码中的 API 调用,如果有帮助,甚至可以重建 OpenSSL。
  • 最简单的检查方法当然是确保私钥或密钥永远不会离开 HSM,尽管我必须承认这与日志不同。您最好检查一下您的 HSM 文档(如果适用,智能卡可能不会记录太多)。
  • owlstead,感谢 cmets,我确实使用 HSM 上的密钥测试了一些加密流,而那些确实从未将密钥导出到 HSM 之外,因此我确信它们可以工作。但是不需要密钥的操作呢?像证书验证、哈希函数、随机数等...我将研究 OpenSSL、我的引擎、我的驱动程序、我的驱动程序文档
  • 是的,我知道这很棘手。我会快速查看顶级源代码,看看是否记录了任何内容。如果引擎本身也记录日志,那当然会有所帮助。我现在只能投票。

标签: cryptography openssl hsm


【解决方案1】:

不知道这样做的目的是什么。您是在测试 OpenSSL 是否有效,还是在测试您自己的代码? 看来你想做 OpenSSL 和 HSM 的回归测试?

但是,如果您想测试 X509_sign 是否有效,请从测试系统中删除所有基于软件/磁盘的密钥,并检查您是否可以签名。如果您获得有效的签名,则可以确定它来自您的 HSM。如果你得到 null 回来,它不是。 OpenSSL 不会回退到不同的签名函数,即使这样做了,它也无法签名,因为它需要一个密钥来签名。 希望能回答你的问题。

【讨论】:

  • Mag:谢谢你的回答。这在某些情况下会起作用,因为密钥需要存在于硬件中,但这还不够。即使没有授权给硬件的 rand(作为签名的一个步骤)也可能会损害任何秘密安全......我发现唯一可靠的方法是破坏 HSM 连接并测试 - 所有功能一一进行,或者对加密引擎进行逆向工程.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2021-09-23
相关资源
最近更新 更多