GitHub多年来一直处于安全密钥采用的最前沿。我们是普遍的第2因素(“U2F”)的早期采用者,也是第一个转换到WebAuthn的网站之一。我们总是在寻找新标准,以提高安全性和可用性。今天,我们在使用Git Over SSH时,通过运送对安全键的运输支持。
安全钥匙,如yubikey,是在方便的形状因子之间的便携式和可在机器之间传输。大多数安全密钥通过USB,NFC或蓝牙连接。当在启用双因素身份验证的Web浏览器中使用时,安全密钥为应用程序或短信提供的一次性密码提供了强大,方便和网络钓鱼的替代品。密钥上的大部分数据都受到外部访问和修改的保护,确保无法从安全密钥中获取秘密。安全密钥应保护作为凭据,因此跟踪它们,您可以确信您可以使用强大的身份验证。只要您保留对安全密钥的访问,您就可以确信任何其他目的都无法使用它。
当用于SSH操作时,安全键将SSH键的敏感部分从计算机移动到安全的外部安全密钥。绑定到安全键的SSH键保护您免于意外私钥曝光和恶意软件。您执行手势,例如在安全键上点击,以指示您何时打算使用安全密钥进行身份验证。此操作提供“用户存在”的概念。
安全键不限于单个应用程序,因此相同的单独安全密钥可用于Web和SSH身份验证。您不需要为每个用例获取单独的安全密钥。与Web身份验证不同,双因素身份验证在使用安全键对GIT进行身份验证时不是要求。一如既往,我们建议使用强密码,注册双因素身份验证,并设置帐户恢复机制。方便地,如果您丢失了对手机和备份代码的访问,安全键本身恰好是一个很好的恢复选项,以便安全地保留对支持双因素的帐户的访问。
生成和使用SSH的安全键与您过去生成和使用SSH键的方式非常相似。您可以密码保护您的密钥并要求安全密钥!根据我们的数据,您可能使用RSA或ED25519密钥。现在,您可以使用两种额外的关键类型:ECDSA-SK和ED25519-SK,其中“SK”后缀为“安全密钥”。
$ ssh-keygen -t ECDSA-SK -C<电子邮件地址>生成公共/私人ECDSA-SK密钥对。您可能需要触摸您的身份员以授权密钥生成。
生成后,您就像任何其他SSH密钥一样将这些新密钥添加到您的帐户中。您仍然会创建一个公共和私钥对,但是生成秘密位并存储在安全密钥中,并且公共部件就像任何其他SSH公钥一样存储在您的计算机上。您的计算机上有一个私钥文件,但您的私有SSH键是对安全密钥设备本身的引用。如果您的计算机上的私钥文件被盗,则没有安全密钥将无用。使用安全密钥的SSH时,否则没有敏感信息留出物理安全密钥设备。如果您是唯一对您的安全密钥进行物理访问的人,则安全地始终停止插入。
使用安全键,您可以实现更高级别的帐户安全性和从账户收购保护。您可以通过删除先前注册的SSH键进行更新的步骤,仅使用安全键支持的SSH键进一步。仅使用安全键支持的SSH密钥,使您的强度保证是您是唯一通过SSH拉动GIT数据的人,只要您保留安全密钥安全就像任何其他私钥一样。
即使您只访问受信任的,一致的系统上只访问Git,也可以提供有意义的安全保证。在频谱的另一端,您可能会发现自己在众多不熟悉的环境中工作,您需要执行Git操作。安全密钥显着降低无意中曝光的影响,而无需仔细管理您的帐户上的每个SSH密钥。您可以自信地生成并在任何系统上留下SSH键,以便任何时间长度,不必担心稍后删除访问。我们将从您的帐户中删除未使用的密钥,使关键管理更容易。请记住定期使用您想要留住时间的键,所以我们不会为您删除它们。
每个远程GIT操作都需要额外的键点点击,以确保未经批准,确保恶意软件无法启动请求。您仍然可以执行本地操作,例如Checkout,Branch和合并,而不会中断。当您对您的代码感到满意或准备接收更新时,请在Push,Fetch和Pull等远程操作时需要在继续之前点击您的安全密钥。与始终一样,必须出现SSH键,并选择为所有GIT操作的密码解锁。与受密码保护的SSH键不同,客户端不会缓存用于多个操作的安全密钥抽头。
已经熟悉使用安全键支持的SSH密钥?在这种情况下,您可能会想知道为什么我们需要验证(通过安全密钥“点击”),只要存在安全密钥就允许操作即可继续操作。虽然我们了解消除需求的诉求,但我们确定了我们目前需要存在和意图的方法是可用性和安全之间的最佳平衡。
今天,您可以使用密码,个人访问令牌(PAT),或在Github上访问Git的SSH键。今年晚些时候,随着我们继续迭代更安全的身份验证模式,GIT操作将不再支持密码。我们认识到密码方便,但它们是一个一致的帐户安全挑战来源。我们认为密码代表现在和过去,但不是未来。我们宁愿通过添加诸如细粒度访问等功能的特征来投资替代品,如我们的个人访问令牌,并将控制更新。这是一个漫长的旅程,但每次努力减少密码的使用都提高了整个GitHub生态系统的安全性。
通过删除PIT的密码支持,正如我们已成功为我们的API所成功的,我们将为每个用户和组织提高基线安全卫生,以及所产生的软件供应链。通过添加SSH安全性密钥支持,我们提供了一种新的,更安全且易于使用的方式来强烈认证Git,同时防止意外和可能性恶意访问。如果您已准备好制作开关,请登录您的帐户并按照文档中的说明进行操作以创建一个新密钥并将其添加到您的帐户中。
我们希望在多年来,我们对YubiCo的感激之情,我们在多次与我们合作,为我们的早期合作者,并为我们提供了宝贵的反馈,以确保我们继续提高开发人员安全性。