[论文解读] T/Key: Second-Factor Authentication From Secure Hash Chains
T/Key 是一种基于时间的一次性密码系统,通过使用安全哈希链消除服务器端的密钥,即使服务器被攻破也不会暴露用户密钥。该系统通过客户端预先计算一条长哈希链,并仅将最终值发送给服务器,客户端从链中顺序推导一次性密码,从而通过针对由独立随机函数构成的哈希链的新型理论下界实现安全性。
Time-based one-time password (TOTP) systems in use today require storing secrets on both the client and the server. As a result, an attack on the server can expose all second factors for all users in the system. We present T/Key, a time-based one-time password system that requires no secrets on the server. Our work modernizes the classic S/Key system and addresses the challenges in making such a system secure and practical. At the heart of our construction is a new lower bound analyzing the hardness of inverting hash chains composed of independent random functions, which formalizes the security of this widely used primitive. Additionally, we develop a near-optimal algorithm for quickly generating the required elements in a hash chain with little memory on the client. We report on our implementation of T/Key as an Android application. T/Key can be used as a replacement for current TOTP systems, and it remains secure in the event of a server-side compromise. The cost, as with S/Key, is that one-time passwords are longer than the standard six characters used in TOTP.
研究动机与目标
- 解决现有 TOTP 系统中因服务器端存储密钥而导致在发生安全漏洞时密钥暴露的安全缺陷。
- 通过使其基于时间并适用于实际部署,对经典 S/Key 系统进行现代化改造。
- 通过为由独立随机函数构成的哈希链的逆向计算建立新的理论下界,形式化其安全性。
- 设计一种客户端算法,以最小内存占用高效生成哈希链元素。
- 实现并评估 T/Key 作为功能完整的 Android 应用程序,证明其在实际应用中的可行性与安全性。
提出的方法
- 系统使用仅存储在客户端的种子构建长度约为 200 万的长哈希链,设置阶段将链的最终元素发送给服务器。
- 客户端以逆序方式计算该链,每 30 秒显示一个元素,用户在登录时输入该值。
- 服务器仅存储链的最终哈希值,从不存储任何密钥,并通过从存储值正向重新计算链来验证一次性密码。
- 为由独立随机函数组成的 k 步链的逆向计算建立了新的理论下界,证明在标准假设下,逆向计算第 k 个预像在计算上是困难的。
- 开发了一种接近最优的客户端算法,以 O(1) 内存和 O(k) 时间逆向计算链,使移动设备上的高效实现成为可能。
- 安全模型假设哈希函数是独立且随机的,分析采用归约证明方法,表明攻破 T/Key 意味着以非可忽略的优势攻破一个随机函数。
实验结果
研究问题
- RQ1能否构建一种基于时间的一次性密码系统,且在服务器端不存储任何密钥?
- RQ2由独立随机函数组成的 k 步哈希链的逆向计算在计算上有多困难?
- RQ3客户端能否以极低的内存和计算开销高效生成长哈希链的元素?
- RQ4在服务器被攻破的情况下,此类系统的安全性与现有 TOTP 和 S/Key 方案相比如何?
- RQ5在此构造中,为实现 128 位安全强度,所需的一次性密码最小长度是多少?
主要发现
- T/Key 使用 130 位的一次性密码实现 128 位安全强度,远长于标准的 6 位 TOTP,且在服务器被攻破时仍能保持安全。
- 系统在假设逆向计算由独立随机函数构成的 k 步链在计算上困难的前提下具有可证明安全性,其下界表明,任何发起 T 次查询的攻击者,其逆向计算第 k 个预像的成功概率至多为 Õ(ε³/²N/k),其中 N 为安全参数。
- 理论分析证明,攻破 T/Key 意味着以非可忽略的优势攻破一个随机函数,从而建立了坚实的安全基础。
- 开发了一种接近最优的客户端算法,仅使用 O(1) 内存和 O(k) 时间逆向计算链,使其适用于移动设备部署。
- 作为 Android 应用的实现表明,T/Key 在实际中是可行的,服务器不存储任何密钥,且与现有登录工作流完全兼容。
- 即使攻击者获得服务器访问权限并得知最终哈希值,系统依然安全,因为恢复链中更早的值在计算上仍不可行。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。