为啥Github允许冒充别人的身份Commit( 二 )
那么Git就没办法杜绝这种伪造行为了吗?还是有的,那就是GPG签名。这里就只简单说下。用户可以生成一对GPG密钥,公钥可以发布出去让其他用户获取到,私钥自己保管好不要泄露出去(和ssh密钥类似)。生成commit的时候,可以用参数-S(大写的)或者--gpg-sign来对commit进行签名。签名以后的commit其他人还是可以重写伪造,但是重写伪造以后的commit是无法通过校验的,也就暴露了是赝品。记得之前看过Linus把他的公钥文件也推送到了kernel仓里,并且创建了一个tag指向了这个公钥,不过这一点我不是很确定了。克隆kernel仓库的用户如果有需要,可以用这个tag指向的公钥来校验某个看起来是Linus签过名的commit是否是原味的。另一个我确定的例子是https://github.com/git/git.git仓库里名为junio-gpg-pub这个tag。用命令git show junio-gpg-pub可以看到这个tag的内容,作者是Junio C Hamano(滨野纯)。在这个tag里他介绍了这个tag的作用和内容。
上面提到了tag,git有两种tag,一种是轻量级的,像分支那样的一个引用;另一种是带注释的,和commit有点相似,也会以object的形式存在。带注释的tag包含了tagger信息,也可以伪造身份,因此对这类tag也可以进行GPG签名。
即便是这样,如果GPG私钥泄露了,那么别人还是可以伪造身份。当然,这种可能性非常小了。
■网友
所以我们需要用 GPG 签名来钦定下:
是不是瞬间有了「尊贵的 GitHub 开发者」的 feeling 了?
参见:GitHub Help - Managing commit signature verification
--
■网友
不是说GitHub允许,是git本身的机制决定的,git的commit是以邮箱为标志的。解决方案是用GitHub提供的额外密码认证。
■网友
【为啥Github允许冒充别人的身份Commit】 committer 是个可零成本假造的字符串。如果有人信了这个导致问题,那么此人是安全漏洞。
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
- 天赐的声音|33岁张雨绮为啥总离婚?看过这些照片就明白了,都是性感惹得祸
