“1234”没问题吗?Android应用中短信一次性密码随机性分析
密码学与安全
2021-03-11 v1 软件工程
摘要
短信一次性密码(OTP)的一个基本前提是所使用的伪随机数(PRNs)在每个登录会话中唯一且不可预测。因此,生成PRNs的过程是OTP认证中最关键的一步。伪随机数生成器(PRNG)的不当实现将导致可预测甚至静态的OTP值,使其易受潜在攻击。在本文中,我们针对Android应用中实现的PRNG开展漏洞研究。一个关键挑战是PRNG通常在服务器端实现,因此无法获取源代码。为解决此问题,我们构建了一个分析工具\sysname,以无需源代码的方式自动化评估PRNG的实现。通过逆向工程,\sysname识别使用短信OTP的应用并触发各应用的登录功能以检索OTP值。它进一步评估OTP值的随机性以识别存在漏洞的PRNG。通过分析从\tool{Google Play}与\tool{Tencent Myapp}下载的6431个商用Android应用,\sysname识别出399个生成可预测OTP值的漏洞应用。更糟的是,194个漏洞应用仅使用OTP认证而无任何额外安全机制,导致针对猜测攻击与重放攻击的认证不安全。
引用
@article{arxiv.2103.05758,
title = {Fine with "1234"? An Analysis of SMS One-Time Password Randomness in Android Apps},
author = {Siqi Ma and Juanru Li and Hyoungshick Kim and Elisa Bertino and Surya Nepal and Diethelm Ostry and Cong Sun},
journal= {arXiv preprint arXiv:2103.05758},
year = {2021}
}