Github访问令牌背后的原因是什么?

3

它们与SSH密钥对相比,安全性更高还是更低?

我正在使用这些代替SSH密钥对,如在github上引用的那样。 对我来说,它们似乎只是随机生成的复杂密码。

现在,我通过输入我的用户名/令牌进行身份验证,而不是我的用户名/密码。 我不明白这如何比密码提供更好的安全性。

我不反对使用它们,但它们似乎只是自动生成的密码。 看起来它们比SSH不太安全。


通常情况下,您会使用它们进行编程访问。它们与您的普通密码之间的区别在于,它们可以被撤销。您还可以对帐户的各个方面进行精细调整访问权限。 - Phil
就实际安全而言,令牌和密码之间没有区别。然而,GitHub 令牌是有结构的,因此您可以控制任何给定令牌提供的权限量。然后,您可以完全撤销一个令牌并构建一个新的令牌,相当于“更改”密码。所有这些都是针对 GitHub 特定的;其他令牌身份验证系统是不同的;Git 本身对所有这些都是不可知的,因为 Git 不会自行进行任何身份验证,而是选择将其转移到其他程序或库上。 - torek
对于“为什么”的问题,你真的得问GitHub的人。我猜想这是为了尝试降低他们的内部支持成本。 :-) - torek
3个回答

4

使用GitHub访问令牌而不是密码的原因有几个:

  • 访问令牌是伪随机生成的,因此进行暴力猜测攻击是不可行的。
  • 访问令牌具有固定的格式,可以被密钥扫描软件识别,然后警告用户或撤销它们。
  • 访问令牌可以比密码更加具体化,因此在出现问题时可以轻松地将其过期或撤销,而不必担心整个帐户的安全受到威胁。

但是,它们仍然是持有者凭证:您必须像密码一样将它们传递给远程系统。

SSH密钥更安全,因为它们使用非对称加密。创建SSH会话时,会派生一个一次性共享密钥,您的密钥仅用于签署从该密钥派生的数据。您永远不会通过连接发送您的密钥,因此,只要您保持私钥的安全,即使攻击者能够破坏另一方,也无法破坏您的密钥。

正如VonC所指出的,令牌用于HTTPS,而SSH密钥用于SSH,因此它们不能互换。


3
它们首先是不同的:令牌应该与HTTPS URL一起使用。
我知道我无法从我的公司使用SSH进行推送:任何出站SSH都是被禁止的。
而且,由于我必须使用HTTPS,令牌强制性的(因为它们可以很容易地被吊销/重新生成,而不像密码,如果被破解,就可以访问您的所有帐户)。
了解更多信息,请参见“GitHub新身份验证令牌格式背后的原理”。
我们许多旧的身份验证令牌格式是十六进制编码的40个字符字符串,与其他编码数据(如SHA哈希)无法区分。这些具有几个限制,例如对于我们的秘密扫描功能,检测到已被攻击的令牌效率低下甚至不准确。
令牌前缀是使令牌可识别的明显方式。我们包括特定的3个字母前缀来表示每个令牌,以公司标识符“gh”和令牌类型的第一个字母开头。
此外,我们希望使这些前缀在令牌内清晰可辨,以提高可读性。因此,我们添加了一个分隔符:“_”。
下划线不是Base64字符,这有助于确保我们的令牌不能被随机生成的字符串(如SHAs)意外复制。
校验和几乎可以消除离线秘密扫描的误报。我们可以检查令牌输入是否与校验和匹配,并消除假令牌,而无需访问数据库。
我们OAuth访问令牌的实现现在为178:

从安全角度来看,你的安全性从最不安全到最安全依次为:密码、令牌、SSH。 - user17791008
@user17791008 是的,但在这种情况下,这些密码的熵已足够强,而且我无论如何都不能在工作中使用SSH。所以只能用令牌。 - VonC

0

令牌比密码更好,因为它们是随机生成的,长度更长,因此更难破解

因为 GitHub 可以识别它们,它们可以用于为您向存储库授权的每个用户微调访问权限。

SSH 因为它是非对称的并包含公钥和私钥,所以最安全;但是,它稍微更难实现,并且不太容易为特定权限微调。

纯密码已被弃用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接