密码学家经常用来保护秘密(比如密钥)的一种方法就是将其分割成多个较小的份额,并将各个部分分配给各个不同的保管方,某些份额必须组合在一起才能完整地重建秘密。
现在,位于澳大利亚悉尼的非营利组织 Tide 的研究人员已经开发出了一种类似的方法来保护用户名和密码,他们声称,与现有机制相比,新方法可以将密码安全性提升 1400 万倍。
Tide 开发的这种新方法叫做 “分裂” (splintering),涉及在认证系统中采用加密密码,将它们分成多个小块,并将这些部分存储在分散的分布式网络中,可以根据需要重新组合它们。
根据该非盈利组织的说法,Tide 的新技术使得攻击者通过逆向工程和其他技术进行暴力密码猜测攻击来重构密码的实践变得异常困难。
在使用早前泄露的 6000 万个 LinkedIn 密码进行的测试活动中,Tide 工程师发现,“splintering” 密码技术使字典攻击成功的机率从 100% 降低到了 0.00072%,安全性提升了大约 1410 万倍。为了测试这种新技术的可靠性,该非营利组织还发起了一项挑战活动,通过该活动向能够破解用户名和密码的黑客提供比特币奖励。
据悉,Tide 将单个比特币的详细信息存储在 “最简单的网站设置中,存储在 web 服务器后面的数据库记录中”,只要黑客能够使用正确的用户名和密码进入,就能够成功获取这些比特币以及 “吹牛” 的权力。不过,到目前为止的 650 万次尝试中,还没有任何一个黑客能够破解出一个密码。
目前,Tide 已经在其 Tide 协议中实施了新的 “splintering” 技术,Tide 协议是一组开源技术,旨在帮助企业更好地保护数据。
Tide 联合创始人 Yuval Hertzog 表示,在 Tide 协议中,加密密码会被分裂并存储在 Tide 公共区块链上的 20 到 26 个节点之间。每个节点——Tide 协议中的密钥协调控制器的任务是处理分配给它的 “碎片” (splinter),并在接收到请求时组装 splinter。只有分配给 splinter 的节点才能解密它。
可配置的安全性
Hertzog 表示,每个加密密码被分解成 splinter 的数量取决于组织所需的加密强度和冗余要求。最小数量是 20 个节点。这些参数是可配置的,允许用户根据个人需求定制安全性和冗余。
Tide 方案的构建方式使得即使存储 splinter 的一个或多个节点由于某种原因变得不可用,也可以完全恢复分裂的密码。事实上,该模型允许高达 30% 的冗余,这就意味着即使最多 6 个节点由于某种原因变得不可用,也可以完全重新组装分裂的密码,以进行身份验证。
那么在管理数百万个密码时,“splintering” 方法的可扩展性又表现如何呢?Hertzog 表示,该方法的底层架构是基于区块链技术的改进版本,该技术已被证明可以支持数百万用户。Tide 协议下的具体实施已经过负载测试,结果显示其可在受控环境中扩展至数百万。
Tide 工程师已经为每个身份验证请求引入了一个特意内置的 300 毫秒延迟,以缓解网络上的暴力破解和拒绝服务攻击 (denial-of-service,简称DoS)。但是即便如此,与分裂和重组密码相关的延迟仍然要优于现有常用的身份验证提供程序。
在公开测试中,“端对端” 延迟结果显示整个基于分裂的身份验证过程只需要 1,500 毫秒到 4,000 毫秒,并且在 Microsoft Azure、Google 和 Amazon 网络上提供完整的节点。“splintering” 技术可以以与任何现有OAuth2认证方案几乎相同的方式使用,并且可以集成到任何现有组织中。
Tide 开发的这种 “splintering” 方法目前尚未商业化。但是想要提前使用的组织可以在 GitHub 上找到该技术的代码和文档,它可以在特殊的 Tide 开源许可下获得。