Google身份验证器

✍ dations ◷ 2025-11-16 21:20:22 #计算机访问控制,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上可供下载。

相关

  • 小儿急疹小儿急疹,俗称玫瑰疹,古时中国又称奶疹、假麻疹,是一种常见于6个月到3岁之间幼儿的疾病。根据最近中国大陆的数据,此病发病率高达98.2%。虽然早在二十世纪四十年代就开始怀疑是
  • 复视复视(英语:Diplopia)是把一个物体看成两个的视功能障碍。当用两眼同时视物时,虽然在视网膜上形成的物象也只是二维空间的平面象,但由于两眼球的位置不同,左右稍为分开,看物体时的角
  • 弓部,为汉字索引里为部首之一,康熙字典214个部首中的第五十七个(三划的则为第二十八个)。就繁体和简体中文中,弓部归于三划部首。弓部通常是从下、左方均可为部字,且无其他部首可
  • 弗兰茨·马尔克弗兰茨·马尔克(1880年2月8日出生于慕尼黑,1916年3月4日死于法国凡尔登战役),德国画家,艺术团体“蓝骑士”的成员。他是二十世纪最伟大的画家之一和德国表现主义的创始人之一。弗
  • 克劳狄一世提贝里乌斯·克劳狄乌斯·凯撒·奥古斯都·日耳曼尼库斯(拉丁语:Tiberius Claudius Caesar Augustus Germanicus,简称克劳狄乌斯、克劳狄、革老丢、或模仿后来欧洲君主习惯冠以
  • 杨秋忠杨秋忠(1948年5月29日-),台湾男性微生物学家、中央研究院院士、教育部终生荣誉国家讲座主持人,现担任国立中兴大学土壤环境科学系兼任教授及讲座教授。致力于台湾微生物肥料研究
  • 哈萨克斯坦经济哈萨克经济,是指中亚国家哈萨克之经济。哈萨克位处之中亚,蕴藏了大量的天然资源,因此哈萨克的经济是以石油、天然气、采矿、煤炭为主。其自然资源丰富,目前整个哈萨克已探明总的
  • 秘密建储制秘密建储制,又称密建储贰、密匣立储、储位密建,为大清一种立储模式,由雍正帝所发明。皇帝将遗诏封入密匣内,一般放到北京乾清宫正殿正大光明匾额后;将来天子驾崩之时,由王侯宗室、
  • 奥格涅·弗拉涅斯奥格涅·弗拉涅斯(波斯尼亚语:Огњен Врањеш;1989年10月24日-)是一位波黑足球运动员。在场上的位置是中后卫。他现在效力于希腊足球超级联赛球队AEK雅典。他也代表波黑
  • 巴哈雷斯坦巴哈雷斯坦是伊朗的城市,位于该国中部,由伊斯法罕省负责管辖,距离首府伊斯法罕20公里,该市始建于1989年以纾缓首府人口过多的问题,海拔高度1,605米,2006年人口45,538。