For faster navigation, this Iframe is preloading the Wikiwand page for Google身份验证器.

Google身份验证器

Google身份验证器
開發者Google
首次发布2010年9月20日,​13年前​(2010-09-20[1]
源代码库github.com/google/google-authenticator
编程语言
操作系统Android, iOS, BlackBerry OS
平台移动设备
许可协议私有许可协议(早期版本为Apache License 2.0

Google身份验证器是一款TOTPHOTP两步验证软件令牌英语Authenticator,此软件用于Google的认证服务。此项服务所使用的算法已列于 RFC 6238RFC 4226 中。[2]

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

典型使用情况

舊標誌

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

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

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

实现

谷歌提供安卓[4]黑莓iOS[5]版本的身份验证器。同时也有第三方版本。

  • Windows Phone 7.5/8/8.1/10: Microsoft Authenticator[6] Virtual TokenFactor[7]
  • Windows Mobile: Google Authenticator for Windows Mobile[8]
  • Java CLI: Authenticator.jar[9]
  • Java GUI: JAuth[10] FXAuth[11]
  • J2ME: gauthj2me[12] lwuitgauthj2me[13] Mobile-OTP (仅支持中文)[14] totp-me[15]
  • Palm OS: gauthj2me[16]
  • Python: onetimepass[17], pyotp[18]
  • PHP: GoogleAuthenticator.php[19]
  • Ruby: rotp,[20] twofu[21]
  • Rails: active_model_otp[22] (第三方实现)
  • webOS: GAuth[23]
  • Windows: gauth4win[24] MOS Authenticator[25] WinAuth[26]
  • .NET: TwoStepsAuthenticator[27]
  • HTML5: html5-google-authenticator[28]
  • MeeGo/Harmattan (Nokia N9): GAuth[29]
  • Sailfish OS: SGAuth,[30] SailOTP[31]
  • Apache: Google Authenticator Apache Module[32]
  • PAM: Google Pluggable Authentication Module[33] oauth-pam[34]
  • Backend: LinOTP英语LinOTP (后端管理使用Python实现)
  • Chrome/Chrome OS: Authenticator[35]
  • iOS: OTP Auth[36]
  • privacyIDEA 认证系统。

技术说明

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

  • UNIX时间TOTP)起始之后所经过的30秒周期数
  • 随着每个新密码所增加的计数(HOTP

一段哈希值被提取出来并转换为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[offset..offset+3]  //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[offset..offset+3]  //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商店上以私有版权协议发布。Google在GitHub上开放了其身份验证器源代码,并陈述如下:

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

最後一個開源的版本在2020年發布。[38]

Android版本的独立分支之一为FreeOTP[39],其基于Google在GitHub上所开源的最新版本。另外一个較不活躍的分支OTP Authenticator[40]也在Google Play上可供下载。

參見

参考文献

  1. ^ Google Is Making Your Account Vastly More Secure With Two-Step Authentication - TechCrunch. TechCrunch. 2010-09-20 [2016-03-12]. (原始内容存档于2020-12-02). 
  2. ^ GitHub - google/google-authenticator: Open source version of Google Authenticator (except the Android app). GitHub. Google. [2017-10-15]. (原始内容存档于2021-01-26) (英语). These implementations support the HMAC-Based One-time Password (HOTP) algorithm specified in RFC 4226 and the Time-based One-time Password (TOTP) algorithm specified in RFC 6238. 
  3. ^ Willis, Nathan (22 January 2014)."FreeOTP multi-factor authentication页面存档备份,存于互联网档案馆". LWN.net. Retrieved 10 August 2015.
  4. ^ https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2页面存档备份,存于互联网档案馆) A
  5. ^ Google Authenticator. App Store. [2017-10-15]. (原始内容存档于2015-12-22). 
  6. ^ Authenticator. 4 April 2013 [2017-10-15]. (原始内容存档于2019-10-17). 
  7. ^ Virtual TokenFactor. 26 February 2012 [2017-10-15]. (原始内容存档于2013-09-08). 
  8. ^ [APP]Google Authenticator for Windows Mobile. XDA Developers. [2017-10-15]. (原始内容存档于2019-04-19). 
  9. ^ http://blog dot jamesdotcuff dot net. [2017-10-15]. (原始内容存档于2014-08-01). 
  10. ^ mclamp/JAuth. GitHub. [2017-10-15]. (原始内容存档于2015-08-04). 
  11. ^ kamenitxan/FXAuth. GitHub. [2017-10-15]. (原始内容存档于2020-09-05). 
  12. ^ gauthj2me - Google Authentification in Java Mobile, j2me - Google Project Hosting. [2017-10-15]. (原始内容存档于2016-01-06). 
  13. ^ lwuitgauthj2me - Google Authenticator for J2ME phones - Google Project Hosting. [2017-10-15]. (原始内容存档于2016-03-16). 
  14. ^ chunlinyao / mobile-otp — Bitbucket. [2017-10-15]. (原始内容存档于2017-10-15). 
  15. ^ totp-me - TOTP for Java ME - Google authenticator. [2017-10-15]. (原始内容存档于2018-01-05). 
  16. ^ gauth.prc - gauthj2me - Google Authenticator for Palm OS (converted from java) - Google Authentification in Java Mobile, j2me - Google Project Hosting. [2017-10-15]. (原始内容存档于2016-01-06). 
  17. ^ tadeck/onetimepass. GitHub. [2017-10-15]. (原始内容存档于2020-10-27). 
  18. ^ pyotp/pyotp. GitHub. [2017-10-15]. (原始内容存档于2018-06-11). 
  19. ^ chregu/GoogleAuthenticator.php. GitHub. [2017-10-15]. (原始内容存档于2020-09-29). 
  20. ^ rotp - RubyGems.org - your community gem host. [2017-10-15]. (原始内容存档于2019-07-11). 
  21. ^ ukazap/twofu. GitHub. [2017-10-15]. (原始内容存档于2020-09-12). 
  22. ^ heapsource/active_model_otp. GitHub. [2017-10-15]. (原始内容存档于2020-12-05). 
  23. ^ GAuth. [2017-10-15]. (原始内容存档于2020-10-20). 
  24. ^ gauth4win - Google Authenticator for windows - Google Project Hosting. [2017-10-15]. (原始内容存档于2016-01-11). 
  25. ^ MOS Authenticator Home. [2017-10-15]. (原始内容存档于2020-02-17). 
  26. ^ winauth - Windows Authenticator for Battle.net / World of Warcraft / Guild Wars 2 / Glyph / WildStar / Google / Bitcoin - Google Project Hosting. [2017-10-15]. (原始内容存档于2015-05-17). 
  27. ^ glacasa/TwoStepsAuthenticator. GitHub. [2017-10-15]. (原始内容存档于2020-12-05). 
  28. ^ gbraad/html5-google-authenticator. GitHub. [2017-10-15]. (原始内容存档于2014-07-05). 
  29. ^ Techtransit. Nokia Store: Download GAuth and many other games, wallpaper, ringtones and mobile apps on your Nokia phone. [2017-10-15]. (原始内容存档于2014-07-12). 
  30. ^ SGAuth. [2017-10-15]. (原始内容存档于2019-07-11). 
  31. ^ SailOTP. [2017-10-15]. (原始内容存档于2021-01-10). 
  32. ^ google-authenticator-apache-module - Apache Module for Two-Factor Authentication via Google Authenticator - Google Project Hosting. [2017-10-15]. (原始内容存档于2015-11-19). 
  33. ^ google-authenticator - Two-step verification - Google Project Hosting. [2017-10-15]. (原始内容存档于2015-02-10). 
  34. ^ oauth-pam - PAM for use with OAuth Websites - Google Project Hosting. [2017-10-15]. (原始内容存档于2016-08-08). 
  35. ^ Authenticator. [2017-10-15]. (原始内容存档于2019-10-17). 
  36. ^ OTP Auth. App Store. [2017-10-15]. (原始内容存档于2019-04-12). 
  37. ^ https://tools.ietf.org/html/c#section-4[永久失效連結]
  38. ^ google/google-authenticator-android: Open source fork of the Google Authenticator Android app. GitHub. 16 May 2022. 
  39. ^ FreeOTP. [2017-10-15]. (原始内容存档于2020-11-12). 
  40. ^ kaie/otp-authenticator-android. GitHub. [2017-10-15]. (原始内容存档于2020-11-22). 

外部链接

{{bottomLinkPreText}} {{bottomLinkText}}
Google身份验证器
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?