【问题标题】:Can I calculate data integrity check for RSA keys using the key itself?我可以使用密钥本身计算 RSA 密钥的数据完整性检查吗?
【发布时间】:2020-09-29 12:38:16
【问题描述】:

我正在开发一种解决方案,该解决方案为每个客户在数据库中存储一个 RSA 密钥,该密钥将用于签署付款。 这些密钥是通过 SKS HSM 创建的所谓 SIM 密钥,长话短说,我们实际上并没有将密钥存储在我们的数据库中,而只是一个只有 HSM 可以使用的加密 blob。这样一来,除了 HSM 之外,没有人知道密钥是什么。

为了防止可以访问数据库的内部攻击者在用户之间切换密钥,决定为每个密钥计算完整性检查并将其与密钥一起存储。

解决方案是执行customerId + key的HMAC,这样就不可能在不破坏完整性检查的情况下在用户之间切换key。

用于计算 HMAC 的密钥专用于此用例并存储在 HSM 中。然而,这一点是我想改变的,也是我提出这个问题的原因。

从技术上讲,可以使用 RSA 密钥本身计算完整性检查,方法是使用密钥的公共部分加密 customerID + 密钥。 然而,CTO 阻止了这个解决方案,因为他们说永远不应该使用同一个密钥进行签名和加密。

在我看来,使用单独的密钥进行签名和加密的准则不适用于这种情况,实际上该准则是正确的,但前提是我们实际上会公开使用相同密钥执行加密和签名的 API,这并非如此。我们执行的加密操作是针对应用程序本身生成的数据,而不是输入,在密钥的整个生命周期内始终相同,并且仅用于密钥本身的完整性检查。

我正在寻找具有安全知识的人,可以帮助我了解“不要使用相同的密钥进行签名和加密”的原则是否真的适用于这种情况,而我认为这并不适用。

非常感谢。

【问题讨论】:

  • 这个问题更适合我们的crypto 网站。不幸的是,加密可能以微妙的方式变得脆弱,因此确实没有什么可以替代加密专家的彻底分析。 crypto 上肯定有加密专家,但即使在那里,您也无法提供足够的上下文来获得您可以依赖的专业意见。堆栈问答格式并非用于此目的。

标签: security encryption hmac sha pci-compliance


【解决方案1】:

您的 CTO 阻止此操作是正确的。因为您没有详细说明您正在构建哪种支付解决方案,只是您存储、处理和/或传输持卡人和/或敏感身份验证数据的事实使您处于 PCI-DSS 或PA-DSS 审计。

但是在处理敏感的持卡人数据时,对于密钥轮换、强度(您没有提到与 HMAC 一起使用的 SHA)和存储有非常严格的规则。

如果您不熟悉PCI Security Council,请准备好快速学习。如果您正在开发内部解决方案或用于转售的解决方案,他们会发布您作为开发人员必须遵守的指南。第一个概述是指南本身:

https://www.pcisecuritystandards.org/pci_security/maintaining_payment_security

如上所述,这个论坛确实不是开始讨论所有必需的安全编码实践、网络分段注意事项、员工职责分离等细节的地方,这些都包含在 complianc = 中,以及大量的文书工作和可能的季度扫描。并且,根据您的规模和付款量,聘请外部审计员。

在以前的职位上,我负责管理美国、欧洲和南美的 PCI 和 PA-DSS 软件合规计划,而且成本非常高。与专家交谈,因为您不想成为当天的下一个违规行为。听起来您的 CTO 了解其中的含义,所以我会听他的。

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多