我正在考虑构建一个使用HMAC的API系统。服务器和客户端将具有共享密钥,客户端将签署请求,服务器将验证,并且如果一切正常则继续。这种系统的问题在于秘密必须以可以检索的方式存储,例如数据库。如果有人要窃取这个秘密,那么他们就拥有了基本上需要做任何用户被授权做的事情的钥匙。
我在想,必须有更安全的选择。使用RSA有什么缺陷吗?
这种方法有什么问题吗?是否已知这种或类似的实现?
答案 0 :(得分:1)
这取决于您选择的非对称密码系统:
(EC)Diffie-Hellman:它不起作用。 Publickey通过生成器直接从私钥导出,例如, [d] G = Q
RSA:通常人们选择固定公钥,如0x010001。这是出于效率原因而完成的。如果您从中获取足够大,完全随机的e
并从中导出d
,则无法计算p
和q
给定d
和{{1} } 或 N
和e
。实际上他们是非常平等的,私人和公众的标签不再有意义。所有这些都依赖于RSA的smmyetrical属性。一定不要进入教科书RSA问题。并且一定要问足够聪明的人,这只是我的想法。
答案 1 :(得分:1)
如果你的加密系统基于你需要的秘密证据,那么 - 保守秘密:)
但是,是的,如果您不需要对称身份验证的速度,那么您可以使用不对称签名。通常,它使用签名哈希,但您也可以使用签名的hmac。
术语通常是,您使用密钥进行签名并使用公钥进行验证(即使签名操作看起来像加密)。