Google身份验证器

✍ dations ◷ 2025-08-05 22:53:37 #计算机访问控制,Google服务

Google身份验证器是一款TOTP与HOTP的两步验证软件令牌,此软件用于Google的认证服务。此项服务所使用的算法已列于 RFC 6238 和 RFC 4226 中。

Google身份验证器给予用户一个六位到八位的一次性密码用于进行登录Google或其他站点时的附加验证。其同样可以给第三方应用生成口令,例如密码管理员或网络硬盘。先前版本的Google身份验证器开放源代码,但之后的版本以专有软件的形式公开。

通常,用户安装身份验证程序在智能手机上。为了登录到使用两步验证的网站或服务上,用户提供用户名和密码后运行身份验证器进行额外验证。 该应用程序会生成六位数的一次性密码,而不同网站可能会生成同一密码。

为了使身份验证器正常工作,安装运行之前网站必须向用户提供一组共享密钥。这组密钥将会用于未来的所有登陆请求。

在两步验证的保护之下,仅仅拥有用户名密码已不足以黑入账户。攻击者需要这组共享密钥或者拿到进行两步验证的移动设备。另一种方法是进行中间人攻击;若用户的电脑被木马侵入,则用户名、密码及一次性密码都将被木马所捕获,随后攻击者即可利用木马进行登录、监听或修改用户与网站的通信。

谷歌提供安卓、黑莓和iOS版本的身份验证器。同时也存在有第三方版本。

服务提供商为每个用户生成80位的密钥(然而RFC 4226 §4要求使用128位并建议使用160位密钥)。 它以16位、26位或者32位base32的字符串亦或是二维码的方式提供出来。客户端使用此密钥生成HMAC-SHA1。经过HMAC处理过的信息可能为:

一段哈希值被提取出来并转换为6位数密码。

  function GoogleAuthenticatorCode(string secret)      key := base32decode(secret)      message := floor(current Unix time / 30)      hash := HMAC-SHA1(key, message)      offset := last nibble of hash      truncatedHash := hash  //4 bytes starting at the offset      Set the first bit of truncatedHash to zero  //remove the most significant bit      code := truncatedHash mod 1000000      pad code with 0 until length of code is 6      return code

生成事件性或计数性的一次性密码伪代码

  function GoogleAuthenticatorCode(string secret)      key := base32decode(secret)      message := counter encoded on 8 bytes      hash := HMAC-SHA1(key, message)      offset := last nibble of hash      truncatedHash := hash  //4 bytes starting at the offset      Set the first bit of truncatedHash to zero  //remove the most significant bit      code := truncatedHash mod 1000000      pad code with 0 until length of code is 6      return code

Android上的开源情况

Google身份验证器在Google Play商店上目前(2017年9月16日)以私有著作权协议发布。Google在GitHub上开放了其身份验证器源代码,并陈述如下:

“此开源计划包含了2.21版本的源代码。随后的版本中包含了Google特有的工作流程,与此项目无关。”

Android版本的独立分支之一为FreeOTP,其基于Google在GitHub上所开源的最新版本。另外一个并非很火的分支OTP Authenticator也在Google Play上可供下载。

相关

  • 米氏线米氏线(Mees' lines),亦作雷诺德氏线(Reynolds' lines)或欧德里奇氏线(Aldrich-Mees' lines),是一种在指甲或趾甲上出现的横纹,通常都是白色的。现时已知会引起米氏线出现的原因如下:
  • 维度维度,又称维数,是数学中独立参数的数目。在物理学和哲学的领域内,指独立的时空坐标的数目。0维是一点,没有长度。1维是线,只有长度。2维是一个平面,是由长度和宽度(或曲线)形成面积
  • 植物 (消歧义)植物是一个历史悠久的概念,自一般认为的植物学奠基人特奥弗拉斯托至今,“植物”的概念多经变化,本消歧义页列出“植物”可能指代的概念,及其可能包含的子类群。
  • 幽默幽默(英语:Humour,或 Humor),意为滑稽、诙谐。此词出于林语堂在《晨报》副刊上所撰文章,自英文“humour”一词音译而来,指使人感到好笑、高兴、滑稽的行为举动或语言,与“风趣”含义
  • 上韦莱省上韦莱省(法语:Province du Haut-Uélé)是位于刚果民主共和国北部的一个省,首府伊西罗(Isiro),与中非共和国及南苏丹接壤,人口1,920,867(2005年),面积89,683 km²。
  • AIM-9响尾蛇美国三军通用编号AIM-9响尾蛇(Sidewinder)空对空导弹是第一款以红外线作为导引设计,也是第一款有击落目标记录的空对空导弹。它在1956年配备至美国海军,1964年美国空军也开始使
  • 太空先锋《太空先锋》(英语:The Right Stuff),又译《征空先锋》、《太空英雄》,是一部1983年正式上映的美国电影,基于美国新闻作家兼记者汤姆·沃尔夫所著的写实性小说《真材实料》(The Rig
  • 灶头灶、炉灶、厨灶或灶头是一种固定的烹饪的设施,透过加热炊具来达到将食物变熟的目的。中文语境中有时也以灶来指窑,例如佛山的南风古灶。早期的灶多是粘土制灶的,用柴火来加热。
  • 沙拉金尼·奈都沙拉金尼·奈都(Sarojini Naidu ,1879年2月13日-1949年3月2日),中文又称奈都夫人,印度政治家、女权运动者及诗人,被尊为神童、“印度的南丁格尔”和印度独立运动的自由斗士,是第一位
  • 网络口碑网络口碑之定义:互联网的出现,使顾客可以透过浏览网页的动作,来收集其他消费者所提供的产品资讯与主题讨论,并赋予顾客能力来针对特定主题进行自身经验、意见与相关知识的分享,形