Google身份验证器

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

相关

  • 凸版印刷凸版印刷(英语:Letterpress)凸版从前以活版为主,其他和活版并版的图片版,不管是锌质还是胶质,均同属凸版(包括古代以整块木板去雕刻的木刻版)。最早由石括、括章所衍生而来,并应用于
  • 狗攻击狗属于掠食者,纵使被人类饲养驯服,它们仍有狡猾的天性、灵敏的身手、强壮的体型以及自我防卫机制。尖锐牙齿、爪子、双颚与四肢都有强壮肌肉,无意间造成的抓伤也很容易造成感染
  • 奥洛穆茨州- Jeseník District- Olomouc District- Přerov District- Prostějov District- Šumperk District奧洛穆茨州(捷克语:Olomoucký kraj)是捷克摩拉维亚地区中部和西北
  • 红刀豆蔓性刀豆,又名红凤豆、红刀豆、海刀豆、巴西豆,俗称刀板豆。是属于豆科刀豆属的一年生缠绕性草质藤本植物,植株长3-5米,会开白色或紫红色的蝶形花,为穗状花序。花期过后每个花穗
  • 1,2-二硫戊环1,2-二硫戊环是一种有机化合物,化学式为C3H6S2,是一种二硫化物。它可以1,3-丙二硫醇为原料来制备。1,2-二噻戊环作为母体见于硫辛酸和其他环状二硫化物中。
  • conio.hconio.h是一个C头文件,用于MS-DOS C编译器里。此头文件宣告了数个有用的函数,提供程序设计者主控台的输出入操作接口。大部分MS-DOS、Windows 3.x、Phar Lap、DOSX、OS/2或Win
  • 柏景伟柏景伟(1831年5月28日-1891年),字子俊,号沣西,陕西西安府长安县人,由廪生中式咸丰五年乙卯科陕甘乡试第三十三名举人,定边县训导。候选知县。
  • He 118俯冲轰炸机He 118为亨克尔的钧特兄弟(英语:Siegfried and Walter Günter)设计之单引擎、单翼活塞动力俯冲轰炸机,在1930年代与多家厂商竞标纳粹德国空军订单,但败给了容克斯的Ju 87俯冲轰
  • 史蒂芬·费格尔 史蒂芬·费格尔(德语:Stefan Fegerl,1988年9月12日-),奥地利男子乒乓球运动员。他曾与若奥·蒙泰罗合作获得2015年欧洲乒乓球锦标赛(德语:Tischtennis-Europameisterschaft 2015)男
  • 何敬之何敬之(1904年-1973年),四川万县(今重庆万州区)人,中国人民解放军将领、中国人民解放军开国少将。曾任中国人民解放军广州军区后勤部副部长兼运输部部长。1955年,授予中国人民解放军