Github 宣布在2023年底前必须使用双重验证

简介: 2FA(双因素身份验证)是一种增强在线账户安全性的方法,要求用户提供两种不同类型的验证信息才能登录。常见的验证因素包括密码、手机验证码、指纹等。启用2FA能显著提升账户安全性,防止因密码泄露导致的账户被盗。对于开发者而言,尤其是在使用如GitHub这样的平台时,启用2FA尤为重要,可有效抵御恶意攻击,保护代码和个人信息的安全。设置2FA通常通过安装TOTP应用(如Microsoft Authenticator)并按照平台指引完成相关配置。即使手机App被卸载,用户也可通过保存的恢复码登录账户。

什么是 2FA?

首先我们要知道什么是 2FA。

2FA 代表双因素身份验证(Two-Factor Authentication)。它是一种安全措施,用于保护用户的在线账户和信息。传统的身份验证通常只涉及输入用户名和密码,但这种方法可能存在安全风险,因为密码可能被猜测、盗取或者破解。

通过使用双因素身份验证,用户需要提供两个不同类型的身份验证因素才能成功登录。这些因素通常分为以下几种类型:

  1. 知识因素:如密码、PIN码或者答案问题。
  2. 所有权因素:如硬件令牌、手机验证应用程序生成的一次性密码(OTP)或短信验证码。
  3. 生物特征因素:如指纹识别、虹膜扫描或面部识别。

当用户进行登录时,除了输入用户名和密码之外,还需要提供另外一个因素进行验证。这使得攻击者更难以入侵用户账户,因为他们需要获取并使用第二个因素才能成功登录。

2FA 提供了额外的安全层,帮助用户保护其账号免受恶意活动和未经授权的访问。

现在,越来越多的在线服务和应用程序支持 2FA,推荐用户启用 2FA 以增强账户安全性。

为什么要使用 2FA?

Github 首席安全官 Mike Hanley 在博客中提到:

2021年11月,一些未启用 2FA 的开发者账户遭到入侵,导致很多 npm 包被入侵者接管,为此 Github 承诺在 npm 账户安全性方面会投入更多的资源。我们会继续改进 npm 账户安全性,同时也会投入相同程度的努力来保护 Github 开发者的账户。

大多数安全漏洞并非少见的零日攻击的产物,而是来源于很多低成本的攻击手段,如社会工程、凭证盗窃或者泄漏,以及为攻击者提供对受害者账户及其所有资源的广泛访问权限的途径。被入侵的账户可用于窃取私有代码,或者将恶意更改推送到这些代码上。这不仅会将与受感染账户相关的个人和组织置于危险之中,而且会让所有使用受影响代码的用户都暴露在风险环境下。因此,这种攻击可能会对更广泛的软件生态系统和供应链下游产生巨大的影响。

这表示对于传统的单因素认证(即使用密码)来说它更容易受到密码泄漏、弱密码攻击、社会工程攻击等方式的威胁。对于一些每周下载次数高达成百上千次的 npm 包来说,它们更容易被黑客团伙攻击投毒,比如安装一些密码窃取器等。

❓什么是社会工程攻击?

它是指利用心理学和社会工程学原理,通过欺骗、诱导或操纵人员来获取信息或者实施非法行为的攻击手段。这类攻击往往不直接涉及技术上的漏洞,而是针对人类的社会和心理特征进行操作,从而获得所需的信息或者访问权限。

它的形式大概包括:

  1. 钓鱼攻击(Phishing):通过伪装成合法机构或者个人,发送虚假的电子邮件、短信或者网站链接,诱导受害人输入个人账户信息、密码或者敏感信息。
  2. 预文本信息攻击(Pretexting):攻击者伪装成他人,通过编造虚假的理由或者身份来诱使受害者透露信息或者执行特定操作。
  3. 人员招聘或渗透测试:攻击者伪装成潜在雇主或者客户,以获取内部信息或者物理访问权限。
  4. 垃圾邮件攻击:发送包含恶意软件或者链接的垃圾邮件,通过诱导受害者点击链接或者下载附件,以便攻击者获取系统访问权限或者窃取信息。

社会工程攻击通常需要攻击者对目标受害者进行深入的调查和分析,以便制定相应的欺骗方案。为了防范社会工程攻击,个人和组织需要加强对安全意识的培训,对于未知来源的信息和请求,我们要谨慎对待,保护自己的个人信息。

如何设置 2FA?

我们这里介绍一下国内可以使用的方式:使用 TOTP 应用。

那什么是 TOTP 应用呢?

TOTP 应用指的是基于事件的一次性密码(Time-based One-Time Password)应用,它是一种用于实现双因素认证的安全技术。TOTP 应用通常以移动应用的形式存在,用户在手机上安装相应的身份验证应用程序,如 Google Authenticator、Authy 等。

TOTP 应用的工作原理是,基于当前的时间戳生成一次性密码,该密码在一定时间内有效,然后过期。用户在登录时除了输入常规的用户名和密码外,还需要提供由 TOTP 应用生成的动态验证码,这样即使黑客获得了用户的账号密码,也无法直接登录用户的账户。

TOTP 应用依赖于一个共享的密钥(secret key),该密钥由服务提供商在用户启用双因素认证时生成,并通过二维码或者其他方式提供给用户。用户将该密钥输入到 TOTP 应用中后,应用根据当前的时间戳和密钥算法生成一串动态的验证码,用户在登录时需要输入该验证码方可完成登录。

但是在国内由于一些原因,安装不了 Google Authenticator,但是我们可以安装微软的 Authenticator,不过安装渠道是有限制的,对于安卓手机来说,目前只支持四个应用商城:

  • Samsung
  • Oppo
  • 百度
  • Lenovo

以 Oppo 的应用商城为例,我们在 App 中搜索 Authenticator 之后点击进行安装即可。

安装好之后,我们可以进行 Github 2FA 的认证操作。

  • 首先打开你的 Github,并进入到设置页面中。

  • 在左侧的菜单中找到 Password and authentication

  • 在右侧的主内容区找到 Two-factor authentication,没有开通 2FA 的用户会看到以下内容,我们点击「Enable two-factor authentication」进行开通(如果已经是强制要使用 2FA 了,那会直接看到下图)

  • 然后会弹出来一个对话框,默认方式是 「Setup authenticator app」也就是使用 TOTP 应用,这里会提供一个二维码

  • 此时我们就可以通过刚刚安装的 app 来扫描这个二维码添加这个 Github 账号,选中「已验证 ID」-「扫码 QR 码」即可进行账户添加(这里截不了图,大家可以根据描述来进行操作)。
  • 添加好 Github 账户之后,在 App 的首页就可以看到你 Github 的账户已经被展示出来了,我们点击这条记录然后就可以看到一个展示一次性密码的页面,将这个 6 位数验证码输入到浏览器中 「Verify the code from the app」的输入框中之后,Github 会自动进行验证。
  • 完成上述步骤之后,Github 会返回给我们一个 Recovery Codes,这个 Codes 需要我们点击 「Download」 保存在本地。

  • 最后点击「I have saved my recovery codes」完成设置

后续要登录 Github 除了输入密码之外,还需要通过输入 TOTP 应用提供的 code 来进行登录。

我们也可以进行编辑操作:

点击 「edit」之后,会重复上述展示二维码的步骤,按照之前说的进行操作即可。

如果设置了 2FA,但是在登录时手机 App 被卸载怎么办?

这种场景比较少见,我们在登录时,如果没有 Authentication code,可以使用保存在本地的 Recovery code 进行验证登录:

然后将我们保存在本地的 Recovery code 中的任意一个 code 输入进去即可完成登录。

相关文章
|
7天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
9天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1568 10
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
12天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
782 27
|
2天前
|
移动开发 JavaScript 前端开发
💻揭秘!如何用 Vue 3 实现酷炫的色彩魔方游戏✨
本文分享了开发基于Canvas技术的小游戏"色彩魔方挑战"的完整过程。游戏旨在考验玩家的观察力和耐心,通过随机生成的颜色矩阵和一个变化点,玩家需在两幅画布中找出不同的颜色点。文章详细讲解了游戏的核心功能,包括随机颜色矩阵生成、点的闪烁提示、自定义配色方案等。此外,作者展示了使用Vue 3和TypeScript开发的代码实现,带领读者一步步深入了解游戏的逻辑与细节。
103 68
|
2天前
|
存储 前端开发 JavaScript
🚀前端轻松实现网页内容转换:一键复制、保存图片及生成 Markdown
在现代前端开发中,提升用户的交互体验至关重要。本文将详细介绍如何使用 HTML2Canvas 和 Turndown 两个强大的 JavaScript 库,实现将网页选中文本转化为图片并保存或复制到剪贴板,或将内容转换为 Markdown 格式。文章包含核心代码实现、技术细节和功能拓展方向,为开发者提供了一个轻量级的解决方案,提升用户体验。
100 68
|
16天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
849 5
|
9天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
232 4
|
2天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
121 1
|
6天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
474 2