私钥可以导出公钥,但公钥无法反推私钥?

2017-09-14 21:13:23 +08:00
 a87150

如果提到 GPG 那么不得不提的就是公钥加密算法,首先我们先来快速地了解一下最知名的公钥加密算法 —— RSA:在 RSA 中有「公钥」和「私玥」两种密钥,其中私钥可以导出公钥,但公钥无法反推私钥。如果用公钥加密数据的话,那么只有私钥可以解密;如果使用私钥签名数据的话,那么可以验签名。 https://jysperm.me/2017/09/gpg-and-e2ee/

这是真的吗? 但是我看阮一峰的说法 http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

公钥也能推出私钥

15919 次点击
所在节点    问与答
11 条回复
weyou
2017-09-14 21:21:17 +08:00
据我粗浅的认知,公钥和私钥是对等的。有种私钥文件格式是包含了公钥,自然可以将公钥导出来。
Citrus
2017-09-14 21:31:16 +08:00
如果你说大数分解是可行的,那么就可以随便互相导。
ryd994
2017-09-14 21:34:21 +08:00
hxndg
2017-09-14 22:00:25 +08:00
并不是这个样子的,私钥公钥是一个非对称密码学的概念,你选择哪个公开哪个就是公钥。一般情况下是不能互相推倒的,但是因为公钥是公开的,所以你有了私钥相当于你两个都有。RSA 我一直觉得比较特殊因为它是可以推倒出来的,但是这和公钥私钥概念并不矛盾。
xrui
2017-09-14 22:04:36 +08:00
尝试一下证明黎曼猜想,证出来 RSA 基本就废了
fzleee
2017-09-14 22:12:58 +08:00
私钥无法导出公钥,之所以“可以”,是因为私钥文件里面顺便保存了公钥信息
honeycomb
2017-09-14 22:21:50 +08:00
字面上说,私钥和公钥是两个东西,私钥加密的内容只有公钥才能解开,反之也是。

但是在实际操作时,私钥的容器往往同时包含私钥与公钥(公钥是让所有人都会知道,那么拥有私钥的人没有道理不留存一份公钥),而公钥的容器仅包含公钥
@weyou 已经提到这一点

这就是为什么私钥可以导出公钥,但反过来不行的原因。
geelaw
2017-09-14 22:27:23 +08:00
对于一般的定义,公钥私钥之间没有必然的推导关系。

不过有些定义为了省事儿,直接把私钥定义为用来生成密钥对的算法的随机种子,这样的话私钥是蕴含公钥的。

对于教科书版本的 RSA,公钥和私钥之间是可以互相推出的。只不过目前没有人知道如何 **快速地** 从公钥导出私钥。

@xrui 我搜索了一下,似乎单纯证明出 RH 和 RSA 之间并没有直接的关系。
ryd994
2017-09-14 22:27:33 +08:00
RSA 密钥最少保存 3 个数,n,d,e
ne 组成公钥,nd 组成私钥
其中 e 一般固定 65537,因此知道私钥 nd 就能推出公钥

如果 e 不是 65537 就不一定能推出了
tinybaby365
2017-09-14 23:03:11 +08:00
RSA 公钥内容是私钥的一部分,不是推导,而是直接导出。
xrui
2017-09-14 23:10:21 +08:00
@geelaw
RH 可以找到素数分布的规律
RSA 是大数分解质数
可能大概就这样吧🌚
(我说不清楚,这事是我们离散老师上课说的)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/390780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX