公钥可公开。如果别人把我的公钥复制进他的ras.pub,是否能无限push我仓库? 如果公钥也需要保密,怎么能叫“公钥”呢?

zhuchenxi113
  • 14

github上的公钥真的是可以公开的吗?,既然如此为什么找不到别人的公钥信息?

回复
阅读 2k
5 个回答
然后去远足
  • 33.3k
✓ 已被采纳

你对非对称加密是不是有什么误解啊……

流程大概是(伪流程,实际流程比这复杂多了):

  1. 你请求 GitHub,告诉它你准备提交东西了;
  2. GitHub 随机选一个受支持的对称加密算法(比如 AES-256-GCM 之类的)、并随机生成一个密钥,把这两个信息用你之前上传给它的公钥加密,返回给你;
  3. 你收到以后用你的私钥解密这段信息,得到第二步里提到的算法和密钥,然后用相应的算法和密钥去加密你原本要提交的内容,发送给 GitHub;
  4. GitHub 收到后用之前约定的算法和密钥去解密;
  5. 结束。

P.S. 你会发现其实还有对称加密参与进来,因为非对称加密的效率实在是太低了,不适合大量数据传输。所以只用非对称来传输对称算法和密钥,而真正的原始数据还是通过对称加密完成的。

公钥加密的东西、只有私钥才能解开。就算别人拷贝走你的公钥,Ta 又没有你的私钥,上面讲的第三步 Ta 就进行不下去,Ta 能提交个啥?


“公钥”是指交给别人的那一个、相对应的是自己收起来打死都不给别人看的“私钥”,并不是说非得找个地方跟发微博似的还得公开公示:“XXX 分钟前用户 XXX 上传了公钥 XXX”。GitHub 凭啥要给你看其他用户的公钥?

我当然知道公钥的英文是Public key而私钥的英文是Private key,但我依然更愿意将公钥理解为公锁Public lock和私钥Private key的关系。

锁我们大家都知道,它就是挂在门上给陌生人看的,作为一把锁来说,它当然就是公开的,即使陌生人把它偷走,或者复制它,他也就是复制了你的锁而已,假设他不会配钥匙的话,他拿了你的锁,最多只能帮你锁东西,而不可能用锁解开任何东西。

我们存放在Github的其实就是一把没有钥匙的锁,当Github需要向我们发送保密内容时,Github会用我们存放在Github的公锁来把信息加密,只有拥有私钥的我们能打开它,别的人即使上再多的锁也打不开这把锁。

数字签名的过程反过来,把存放在Github的锁看成是一把公开的钥匙,这个钥匙只能打开一把锁,而我们手里的私钥其实就是那把锁,想验证这把钥匙是不是我们的,只要看看Github存放的那把公开的钥匙能不能打开我们手里这把私锁就知道了。

张亚
  • 2
新手上路,请多包涵

公钥是公开的。

A生成私钥和公钥,并发布公钥。

A发了一个消息,B用公钥可以解开,B也就可以确认消息是A发出的,而不是别人发的。
这是公钥的作用。

A加密的消息一般是公开的信息,比如A的公司名称,证书用途等。

公加私解, 私加公解. 记住这个就好了.

myskies
  • 2.2k

公钥可公开 是的
如果别人把我的公钥复制进他的ras.pub,是否能无限push我仓库? 不是

如果别人把我的公钥复制进他的ras.pub,那么你可以无限的PUSH他的仓库

公钥需要保密,所以叫“公钥”

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏