Google身份验证器

✍ dations ◷ 2025-12-02 20:27:32 #计算机访问控制,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上可供下载。

相关

  • 张洪杰张洪杰(1953年9月22日-)是一位中国化学家。生于吉林榆树,籍贯吉林长春。1978年毕业于北京大学化学系,1985年在中国科学院长春应用化学研究所获硕士学位,1993年在法国波尔多第一大
  • 莫宣学莫宣学(1938年12月-),籍贯广西融水。中国科学院院士,中国地质大学 (北京)教授,博士生导师,中国著名的岩石学家。1960年毕业于北京地质学院地质测量及找矿系并留校任教。1981年-1983
  • 摄护腺炎前列腺炎(Prostatitis)指发生于前列腺组织的炎症。由于前列腺在一定水平血睾丸酮作用下形成,女性仅找到组织胚胎学意义上的前列腺痕迹;没有人体解剖学意义上的前列腺,前列腺炎属
  • 188线市道188号(五甲-竹田,其中屏东县境内路段称县道188号),是位于中华民国(台湾)高雄市、屏东县两县市之间的东西向市(县)道。西起高雄市凤山区五甲,东至屏东县竹田乡泗州,全长共计20.838公
  • 罂粟籽罂粟籽,又名御米、芥子,罂粟的种子,是一种在世界各地广泛使用的调味料,可用于制油,许多地区也将它当成一种草药来使用。一般使用方法为原粒或经研磨后,加入烘焙食品或酱料中以增加
  • 京那峇鲁国家公园基纳巴卢国家公园(英语:Kinabalu National Park;马来语:Taman Negara Kinabalu;别译基纳巴卢国家公园、基纳巴卢国家公园)又名神山国家公园,是马来西亚第一批建立的国家公园,也是马
  • 吟游诗人在中世纪盖尔及凯尔特布立吞人文化中,一位吟游诗人(高卢语:Bardos,英语、苏格兰盖尔语及爱尔兰语:Bard,威尔士语:Bardd,布列塔尼语:Barzh或Barz )是一位专精于叙说故事(包含口述历史及
  • 约翰·菲斯克约翰・菲斯克(英语:John Fiske),美国威斯康星大学传播学教授,被誉为流行文化研究的创始人。他是美国大众文化的重要理论家与实践者,是西方当代文化研究领域的代表人物之一。作为
  • 卡杰尔峰坐标:79°33′S 85°28′W / 79.550°S 85.467°W / -79.550; -85.467卡杰尔峰(英语:Cagle Peaks)是南极洲的山峰,座标,位于埃尔斯沃思地,处于赫里蒂奇岭的怀特陡崖南端,由明尼苏达
  • 丹尼尔·文森特·加莱瑞丹尼尔·文森特·加莱瑞(英语:Daniel Vincent Gallery,1901年7月10日-1977年1月)是一位美国海军将领,最高军衔为少将。加莱瑞出战于第二次世界大战的大西洋战场,曾掳获德国海军的“