日前 GitHub 发布博客,表示正在采取措施提高其托管的代码仓库的安全性。之后推送和拉取 Git 数据时必须使用加密的 Git 协议。这些变化将影响 SSH 中支持的一些密钥,根据 Git 系统团队的说法,未加密的 Git 协议自此将成为过去式。
具体而言,GitHub 不再支持 DSA 密钥(Digital Signature Algorithm),一些传统的 SSH 算法,如 HMAC-SHA-1 和 CBC 也不再适用。尤其是后者,如今 CBC 已经成为攻击者频繁攻击且容易攻击的一个目标了。GitHub 将为 SSH 增加了两个新的主机密钥 —— ECDSA 和 Ed25519,它们都是基于椭圆曲线加密为基础的新标准。还会新增对 RSA 密钥的要求(Rivest-Shamir-Adleman),今后将通过 SHA-2 签名来满足额外的安全要求。
变化并不影响所有 GitHub 用户
不过根据系统团队的说法,大多数用户都不会受到此次政策变化的影响。根据公告,只有那些通过 SSH 或 git:// 连接到仓库的用户才会受到影响,如果你自己的 Git 是以 https:// 开头的,也同样不会受到影响。前段时间,GitHub 还放弃了对 Git Actions 的密码认证,虽然此次 Git 协议的加密要求与之没有技术上的联系,但这两项改变都是 GitHub 为了保护用户数据安全所做出的努力。
移除旧的密钥类型
GitHub 团队表示,之所以要放弃旧的密钥类型和一些用于签名的算法,是由于越来越多的攻击和新的攻击方法在原本的技术下容易引起更多的安全问题。几十年前被认定为安全的东西,放到如今已经不一定适用了。DSA 密钥只有 80 位的安全级别,而现在的标准则是 128 位。虽然使用 GitHub 用户对此应该多多少少有所了解,但根据 GitHub 的内部统计,目前仍然有 0.3% 的 GitHub 请求在使用 DSA。
移除不安全的签名算法
如今不少 SSH 客户端包括 OpenSSH 7.2 (rsa-sha2-256 和 rsa-sha2-512)以及更新的版本都已支持 SHA-2 与 RSA 的结合。虽然 RSA 密钥被认为更安全(ssh-rsa),但在旧的 Git 客户端中,它们经常与过时的签名算法(基于 SHA-1)结合使用。由于 SHA-1 签名算法十分脆弱,因此 GitHub 如今将强制新的 RSA 客户端使用 SHA-2 签名。尽管如此,用户目前还可以继续使用 SHA-1 签名,但从 2021 年 11 月 2 日开始所有密钥都需要使用 SHA-2 签名。
这些变化何时生效?
Git 团队已经分享了即将到来的变化的时间表,新的主机密钥 ECDSA 和 Ed25519,最早将在 2021 年 9 月 14 日通过 UpdateHostKeys-Extension 提供。11 月 2 日起,用 SHA-1 算法设置 RSA 密钥的选项将不再适用,届时将强制使用 SHA-2。两个新的主机密钥 ECDSA 和 Ed25519 将从 11 月 16 日开始全面运行,与此同时,之前的 DSA 主机密钥也将退出支持。
本文转自OSCHINA
本文标题:GitHub:未加密的 Git 协议即将成为历史
本文地址:https://www.oschina.net/news/158632/improving-git-protocol-security-github