Security 通过使用RSA加密授权哈希来保护HMAC共享机密
我正在考虑构建一个使用HMAC的API系统。服务器和客户端将共享一个秘密,客户端将对请求进行签名,服务器将进行验证,如果一切正常,则继续。这种系统的问题在于,秘密必须以可以检索的方式存储,例如数据库。如果有人要窃取这个秘密,他们就拥有所需的密钥,基本上可以做用户有权做的任何事情 我在想,必须有一个更安全的替代方案。使用RSA有什么缺陷吗Security 通过使用RSA加密授权哈希来保护HMAC共享机密,security,encryption,hash,hmac,hmacsha1,Security,Encryption,Hash,Hmac,Hmacsha1,我正在考虑构建一个使用HMAC的API系统。服务器和客户端将共享一个秘密,客户端将对请求进行签名,服务器将进行验证,如果一切正常,则继续。这种系统的问题在于,秘密必须以可以检索的方式存储,例如数据库。如果有人要窃取这个秘密,他们就拥有所需的密钥,基本上可以做用户有权做的任何事情 我在想,必须有一个更安全的替代方案。使用RSA有什么缺陷吗 客户端具有“公共”密钥,而不是共享密钥。(对于我的用例,公钥仍然必须保密。) 客户端将使用SHA-1或任何正常的方式散列消息 与直接将散列添加到消息中不同,散列
这种方法有什么问题吗?有这种或类似的已知实现吗?这取决于您选择的非对称密码系统: (EC)迪菲·赫尔曼:它不起作用。Publickey通过生成器直接从privatekey派生,例如[d]g=Q
RSA:通常人们会选择像0x010001这样的固定公钥。这样做是为了提高效率。如果你取一个足够大的、完全随机的
e
并从中导出d
,就不可能计算p
和q
给定的d
和N
或e
和N
。事实上,他们当时是相当平等的,私人和公共的标签已经没有多大意义了。所有这些都依赖于RSA的smmyetrical属性。确保不要涉及教科书上的RSA问题。一定要问足够多的聪明人,这只是我的想法。如果你的密码系统基于拥有秘密的证据,那么你需要保密:)
但是,如果您不需要对称身份验证的速度,那么可以使用非对称签名。通常,这是通过签名哈希完成的,但也可以使用签名hmac
术语通常是使用密钥签名并使用公钥验证(即使签名操作看起来像加密)。对于堆栈溢出,这个问题有点离题。你考虑过把它寄到或吗?(显然,如果有的话,检查他们的帮助中心,看看哪一个更合适)。您需要提供有关您的安全目标/威胁的更多信息,以便其他人可以分析您提出的解决方案是否满足这些目标。很可能这个问题以前已经得到了妥善解决,所以我怀疑你是否应该发明自己的方案。我投票将这个问题作为离题题来结束,因为它是关于安全/密码学的,不包含编程问题。@Duncan是的,我的目标不是发明自己的方案,这就是为什么当我想到它时,我应该看看它有什么问题,或者是否存在现有的实现。我考虑过把它贴在上面,但我认为堆栈溢出也是一个不错的地方,因为这里还有很多其他类似的问题。我认为这两个问题都很重要。我猜你指的是“密钥对的一部分”,而不是“公钥”或“公钥密码系统的密钥”。@eckes是的,没错。我在这里说的是公钥/私钥,但在我的用例中,这两个密钥都是保密的,但不是共享密钥。0x010001不是公钥,而是(公共)指数之一。