我可以使用密钥本身来计算RSA密钥的数据完整性检查吗?

问题描述 投票:0回答:1

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

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

解决方案是执行一个customerId +密钥的HMAC,这样就不可能在不中断完整性检查的情况下在用户之间切换密钥。

用于计算HMAC的密钥专用于此用例,并存储在HSM中。但是这一点是我想更改的,对此我提出了这个问题。

从技术上讲,可以通过使用密钥的公共部分对customerID +密钥进行加密来使用RSA密钥本身来计算完整性检查。但是,CTO阻止了此解决方案,因为他们说不应使用相同的密钥进行签名和加密。

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

[我正在寻找具有安全知识的人员,可以帮助我理解“在签名和加密时不要使用相同的密钥”原则是否真的适用于此情况,我认为并非如此。

非常感谢。

security encryption hmac sha pci-compliance
1个回答
0
投票

您的CTO正确地阻止了此操作。由于您没有提供有关正在构建哪种支付解决方案的详细信息,因此,仅由于您存储,处理和/或传输持卡人和/或敏感身份验证数据这一事实,您才可以使用PCI-DSS或PA-DSS审核。

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

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

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

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

[在以前的职位上,我负责管理美国,欧洲和南美的PCI&PA-DSS软件合规性计划,这非常昂贵。与专家讨论,因为您不想成为下一天的休息时间。听起来您的CTO理解其中的含义,所以我会听他的话。

© www.soinside.com 2019 - 2024. All rights reserved.