Google身份验证器

✍ dations ◷ 2024-12-23 04:41:39 #计算机访问控制,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上可供下载。

相关

  • 沃夫巴金森怀特症候群沃夫巴金森怀特症候群(英语:Wolff–Parkinson–White syndrome)是由于心脏电气系统的特定类型问题导致症状而导致的紊乱。 约40%的电气问题患者从未出现症状。 症状包括心跳异常
  • 贝尔特·福格尔斯泰因贝尔特·福格尔斯泰因(英语:Bert Vogelstein,1949年6月2日-),美国癌症研究者、霍华德·休斯医学研究所研究员。他是癌症基因组学领域的先驱,基于对大肠癌的研究,他于1988年提出一个
  • 张钧衡张钧衡(1872年-1927年),字石铭,号适园主人,吴兴(今湖州)南浔镇人。其先世是安徽休宁人,康熙中迁至浙江南浔镇。世代经商,以丝绸及盐业致富。张颂贤孙。张宝庆的独生子。张静江是其堂弟
  • 国籍权国籍是指一个人属于一个国家国民的法律资格,也是国家实行外交保护的依据。各国将国籍作为立法的重要内容,是从十八世纪末,十九世纪初开始的。《世界人权宣言》第十五条规定:“人
  • 瞻博网络USAJuniper Networks(公司中文名称:瞻博网络,NYSE:JNPR)是一家网络通讯设备公司,创立于1996年2月,主要供应IP网络及资讯安全解决方案。Juniper Networks与爱立信、朗讯及西门子共同
  • 东门街道东门街道是中国广东省深圳市罗湖区下辖的一个街道,地处罗湖区中心位置。总面积2.1平方公里。总人口10余万人,其中常住人口4.3万,暂住人口5.5万。东门街道是深圳市最早的街道办
  • 排外主义排外主义,是指对外国人与外国制的商品、思想有排斥的思想倾向。中国的义和团运动就是一种排外主义的事件。
  • 贾法尔·伊本·叶海亚贾法尔·伊本·叶海亚 (波斯语:جعفر بن یحیی برمکی‎, 阿拉伯语:جعفر بن يحيى‎, ja`far bin yaḥyā,Ja'far ibn Yahya Barmaki, Jafar al-Barmaki
  • 大贝尔特海峡大贝尔特海峡(丹麦语:Storebælt),意译为大带海峡者,是丹麦西兰岛和菲英岛之间的一道海峡,北连卡特加特海峡,南接波罗的海基尔湾。该海峡全长60公里,最窄处约16公里,大贝尔特桥横跨于
  • 冯明光冯明光(1957年-),四川江油人,汉族,中华人民共和国政治人物,中国国民党革命委员会中央常委、浙江省委主委,第十一届全国政协委员。2008年,当选第十一届全国政协常务委员,代表中国国民党