Security REST身份验证S3,如hmac sha1签名与对称数据加密

Security REST身份验证S3,如hmac sha1签名与对称数据加密,security,rest,architecture,encryption,cryptography,Security,Rest,Architecture,Encryption,Cryptography,我在讨论类似S3的aproach,它使用授权散列作为种子,请求中的一些数据作为消息,使用hmac sha1(Amazon S3方式)签名,而另一个开发人员则支持使用发送者和服务器已知的密钥对数据进行符号加密 与符号密钥相比,使用hmac sha1签名数据的优点是什么?使用前者,我们不需要加密用户名或密码 最难打破的是什么?la S3的对称加密或sha1哈希 如果所有大玩家都使用oauth和类似的没有对称密钥的密码,那么肯定有明显的优势,这些优势是什么?hmac和对称密码并不是相互排斥的想法。事实

我在讨论类似S3的aproach,它使用授权散列作为种子,请求中的一些数据作为消息,使用hmac sha1(Amazon S3方式)签名,而另一个开发人员则支持使用发送者和服务器已知的密钥对数据进行符号加密

与符号密钥相比,使用hmac sha1签名数据的优点是什么?使用前者,我们不需要加密用户名或密码

最难打破的是什么?la S3的对称加密或sha1哈希


如果所有大玩家都使用oauth和类似的没有对称密钥的密码,那么肯定有明显的优势,这些优势是什么?

hmac和对称密码并不是相互排斥的想法。事实上,AES-CMAC既是MAC(非散列)又是对称密码,它是使WPA安全的加密原语。(尽管WPA仍然可以使用a来破坏)

您不应该为此需要一个外来的身份验证系统。通常使用用户名和密码登录并使用cookie维护会话状态,因为它易于实现且安全。通过像cookie一样存储状态,从技术上讲它不再是RESTful的,但没有什么可以阻止您这样做

然而,在身份验证方面,我认为像RSA这样的非对称加密是最安全的。(默认情况下,Amazon对ssh连接使用非对称加密技术。)这允许您只存储公钥,这样,如果您的服务器受到威胁,就不能使用任何身份验证凭据。它还防御MITM攻击。在许多情况下,这可以很容易地与REST一起移植,因为HTTPS已经支持客户端证书。您可以免费签署客户证书,然后自行签署

如果实施得当,hmac相对于对称密码的强度主要取决于秘密的强度。如果您使用的是密码之类的秘密,那么这两个系统同样非常脆弱。这些秘密一定很大。要记住的另一件事是对称密码很难正确实现。大多数程序员不理解这一点,当使用流密码或分组密码时,他们使用了错误的模式,并将IV保留为空。相比之下,HMAC非常容易实现,出错的可能性更小。如果所有内容都通过HTTPS传输,并且您使用的是hmac,那么实现安全认证系统就很容易了。如果你真的想实现一个对称密码,你必须得到一个副本,这里有几章专门讨论对称密码,因为有太多可能会出可怕的错误。您还必须考虑密钥分配,ssl使用DH密钥交换来交换对称密钥


请务必阅读OWASP前10名,尤其是。这需要在整个会话中使用https,大多数web应用程序程序员没有意识到这一点

最大的区别在于HMAC将提供完整性但不提供隐私,而加密将提供不完整性的隐私。许多用例都需要两者,但我想不出任何不需要完整性的地方。HMAC似乎是一个最低要求,加密可能是一个伴奏