@
frylkrttj 没懂...
https://s2.ax1x.com/2019/01/16/FzvrVS.png不能创建私有仓库?现在免费用户也可以创建私有库了吧。
@
whileFalse 已经转的帖子已经说得很明白了。此外,网上还可以找到很多说明
https://security.stackexchange.com/questions/120706/why-would-i-sign-my-git-commits-with-a-gpg-key-when-i-already-use-an-ssh-key-to首先介绍两个概念。
authorization 是 “身份校验”,它就好像以房卡。有了房卡。马蓉可以进酒店,王宝强也可以。
签名 (signature) 是密码学中的一个概念。
在非对称加密算法中,公钥和私钥都是一个大素数,它们的不同名称只是公钥是给所有人知道的,而私钥只能自己知道。本质其实是一样的。这对素数可以通过一个加密一段内容,通过另一个解密。
若别人通过公钥加密,得到一个东西,我们称为密文,我们通过私钥解密。这个被称为“加密”,理论上,只有掌握那个私钥的我才能读取那段密文。这个让那个消息作为隐私。
反之,要是我用私钥加密一段内容,而公众使用公钥解密,这个被称为签名。它的好处是证明这段内容是我发出的,而不可能是任何其它人。
不过,RSA 的加密和解密都很复杂,而且我们有时候并不需要那么复杂,那么我们可以基于散列( hash )生成一个信息摘要( message digest )。它长度会比较短,我们不能从摘要中生成原文,但是我们可以用它检查原文的正确性和完整性。
比如我们准备一个王宝强的摘要,照片,身高,声音等等。那么宋 JJ 跑马蓉房间,我们抓住他,然后和摘要对比,那么很容易可以证明进马蓉房间的不是王宝强。
简单翻译下上面那个链接的内容,作为补充说明:
当你使用 ssh 密钥对 gh 身份验证后,验证信息本身不会存储起来。github 只是临时提供了一条让你读写的途径,但不会和任何不在 github 的人证明任何(身份相关的)信息。
当你 gpg 签名一个 tag 后。这个 tag 就是这个库的一部分,它可以被 push 到其它仓库。因此,clone 这个库的别人也能很容易验证这是你签名的,然后就可以像相信你一样相信那个内容。
然而,对每个 commit 进行 gpg 签名是不必要的。但在发布带 gpg 签名的 tag 是明智的。它提供了一些明确的保证:
+ 这个代码若有问题和你有关
+ 这个代码是你提交的
+ 在你签名后,这个提交没有修改过
这个并不是说你干了这些事,而只是提供追踪和确认的一个正确方向。