这些年来,我不止一次遇到过这种情况。您有一堆与用户相关的数据,要从一个应用程序发送到另一个应用程序。第二个应用程序应该“信任”这个“令牌”并使用其中的数据。令牌中包含时间戳以防止盗窃/重用攻击。无论出于何种原因(这里不用担心),都选择了自定义解决方案,而不是像 SAML 这样的行业标准。
对我来说,对数据进行数字签名似乎是你想要的。如果数据需要保密,那么您也可以对其进行加密。
但我经常看到的是开发人员会使用对称加密,例如 AES。他们假设除了使数据“保密”之外,加密还提供 1) 消息完整性和 2) 信任(源身份验证)。
我是否正确怀疑这里存在固有的弱点?从表面上看,如果对称密钥管理得当,它似乎确实有效。没有那个密钥,我当然不知道如何修改一个加密的令牌,或者在截获几个令牌后发起某种加密攻击。但是一个更老练的攻击者能够在这里利用一些东西吗?