【发布时间】:2013-10-25 21:11:24
【问题描述】:
我遇到了一个奇怪的加密问题,我可能做得比需要的多,我将把这归咎于我目前的低烧。我真的不喜欢在没有至少一些审查的情况下在任何与加密相关的事情上推出自己的解决方案。
我正在实施用于集成第三方服务的 SSO 解决方案,其中我根据我们自己的身份验证平台对用户进行身份验证,当用户对其进行正确身份验证时,该平台会返回给我有限数量的一致可用变量。
保证始终代表给定用户的其中一个是他们在我们网络上的login ID。在此上下文中允许的其他任何一项都不能保证对于给定用户保持不变。
我无法将login ID 以明文形式存储在第三方服务上作为共享令牌。 (在你质疑原因之前,有一个非常简单的原因:法律不喜欢它......虽然这个标识符是专门为不敏感 FERPA 而创建的,但它基本上只被删除一次)
我可以散列它。由于可能有充分的理由不将其以明文形式存储在其他地方,因此我想至少合理地对其进行哈希处理。通常,如果给定用户有其他一些非敏感标识符,我可以对敏感信息进行加密(例如,如果它是密码)并将该 salt+hash 和 PK 非敏感标识符存储在一个表中,然后查看在进行比较时,它会根据非敏感标识符进行备份。
如果没有一个不敏感的标识符来执行检索,我似乎只会在没有唯一盐的情况下进行基本的哈希操作(我仍然可以给它们添加胡椒粉)。我存储在自己的数据库中的任何内容都与作为令牌传递的内容一样容易受到攻击,因此创建原始login IDs 到加盐和散列login IDs 的映射表毫无意义。针对我存储的每个盐+哈希盲目地测试给定的哈希是荒谬的。
我可以继续使用 SHA2 和 login IDs 并收工(毕竟,这些只是“只是”登录 ID 而不是密码——而且该解决方案被认为至少足够了) ,但我想知道这种情况是否有更好的解决方案?
【问题讨论】:
-
Anything I store in my own DB would be just as vulnerable as what is being passed as a token是什么让你这么说?第三方系统可以访问您的数据库吗? -
不,但是如果我的数据库被入侵,那么问题就和第三方系统被入侵一样糟糕(假设两者都被完全入侵)。我很乐意假设我们正在使用的数据库更安全,但考虑到环境,这将是一个坏主意......而且一般来说做出这种假设只是一个坏主意。
标签: php security cryptography single-sign-on