Logo 谷歌邮箱批发购买网站平台-谷歌企业邮箱账号批发购买-号领
GitHub强制要求开启两步验证了,但是1password要收费,怎么办?
自动发货

GitHub强制要求开启两步验证了,但是1password要收费,怎么办?

销售单价
¥ 0.00
库存: 999 件
商品详情


  今早收到邮件,GitHub要求用户强制开启两步验证:

  打开GitHub的设置,却发现推荐的两步验证方法要求下载1Password/Authy/Microsoft Authenticator等APP。

  可是1password是个收费软件,而且还不便宜。

  第二个通过手机短信验证码的方式,还不支持中国大陆的手机号:Countries where SMS authentication is supported - GitHub Docs

  怎么办呢?

  自己动手,丰衣足食!

  首先看看这种验证机制的原理。

  基于时间的一次性密码(Time-based One-Time Password,TOTP)是一种双因素身份验证(2FA)方法,它根据共享的密钥和当前时间生成唯一的临时密码。TOTP通常用作在线账户的额外安全层,帮助防止未经授权的访问。TOTP是一种在RFC 6238下标准化的算法。

  以下是TOTP工作原理的简要概述:密钥生成:在为帐户设置TOTP时,将生成一个唯一的密钥。该密钥在用户设备(通常是智能手机)和认证服务器之间共享。密钥通常表示为二维码,以便轻松设置。时间同步:用户设备和认证服务器需要同步到相同的时间源。TOTP算法依赖于当前时间来生成一次性密码。OTP生成:TOTP算法将密钥和当前时间结合起来,应用加密哈希函数(例如SHA-1、SHA-256或SHA-512)生成一次性密码。此密码通常包含6-8位数字,并具有有限的有效期,例如30或60秒。OTP验证:当用户尝试登录时,他们输入常规密码以及由TOTP应用程序或设备生成的一次性密码。然后,认证服务器根据共享密钥和当前时间独立生成预期的OTP。如果用户输入的OTP与服务器生成的OTP匹配,则授权访问。

  由于一次性密码经常更改(每30或60秒),即使攻击者设法截获有效的OTP,他们也只有非常有限的时间窗口来使用它。这为认证过程增加了额外的安全层,使未经授权的用户更难以访问帐户。

  简单来说,TOTP就是在用户和系统之间共享密钥,并同步时间,然后计算一个基于时间的函数,验证双方得到的结果是否一致。

  otpauth://totp/Twilio:krobinson@twilio.com?secret=JBSWY3DPEHPK3PXP&issuer=Twilio&algorithm=SHA1&digits=6&period=30 (二维码自动识别)

  要使用 Python 计算 TOTP,可以使用 库。首先使用 pip 安装库:pip install pyotp

  安装库后,可以使用以下示例生成和验证 TOTP 代码:

  此示例生成一个随机密钥,创建一个 TOTP 对象,生成当前的 OTP 并验证它。验证分两次进行:一次是立即进行,一次是在时间间隔过后进行,以演示 OTP 的有效性窗口。

  请注意,在现实世界的情况下,在设置过程中,密钥将在用户设备和认证服务器之间共享,服务器将独立生成 OTP 以进行验证。所以,如果你想自己从密钥生成TOTP,只需要:

  有关更多信息和高级用法,请参阅 文档:https://github.com/pyauth/pyotp

  如果你不想用Python来自己计算,也可以使用一些第三方的插件。在这里我推荐一个叫做Authenticator的插件,它不会联网,不上传用户的数据,只是静静地为你计算TOTP验证码。

  传送地址:https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai/

  使用方式很简单,只需要在安装好了之后点击扫描二维码,然后用鼠标选取二维码区域,就可以啦。

  “使用Python代码来实现自己的TOTP计算器”的部分由GPT-4完成,提问过程见下图。

  这个过程中,我提了四个问题:

  Can you tell me what is "time-based one-time password (TOTP)" and how it works?How to calculate TOTP using python?

  请把第一个回答翻译成中文。请将第二份回答翻译成中文,代码应该保持英文,但是要为每一行代码加上中文注释。