有一个密钥对,把私钥给别人,自己保留公钥,可行不?

2014-11-07 12:23:03 +08:00
 larkifly
目前看到的应用场景都是把公钥给别人,自己保留私钥,
但是理论上不是公钥加密,私钥解密,私钥加密,公钥解密,那这样的话,把私钥给别人,自己保留公钥也是可行的了???
13396 次点击
所在节点    程序员
31 条回复
nopy
2014-11-07 12:30:56 +08:00
当然不可以……
a mod b=c
知道a,b很容易可以求出c
但是如果知道b,c 求a不是那么简单……
可以看下加密算法
RemRain
2014-11-07 12:32:01 +08:00
是的,不过问题在于有私钥就能生成公钥,所以你只能把私钥悄悄地给某一个人,不能给多个人哦~
SErHo
2014-11-07 12:33:00 +08:00
自己保留公钥,那么不就成私钥了么? “称公开的密钥为公钥;不公开的密钥为私钥”--http://zh.wikipedia.org/wiki/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86
LazyZhu
2014-11-07 12:33:58 +08:00
楼主M向。。。
qping
2014-11-07 12:35:27 +08:00
搜RSA 阮一峰
wy315700
2014-11-07 12:37:37 +08:00
公钥密码体系里,公私钥其实是对称的,公开的叫公钥,不公开的叫私钥。
你给别人的永远叫公钥,而不是私钥。
Daniel65536
2014-11-07 12:38:35 +08:00
这不就相当于对方把公钥给你,自己保留私钥,当然是可行的。

私钥不能公开,公钥可以公开,在涉及多个人的时候就有区别了,两个人之间倒是无所谓。

真实的使用场景是把公钥贴在blog、网站等等地方,自然就必须强调公钥了。(私钥可以直接反推出公钥)
xenme
2014-11-07 12:41:02 +08:00
一般的SSL连接建立之前需要交换公钥,然后用私钥加密传输。
如果你的的私钥交换,然后公钥保留。反过来。还不是一样,只是换了名字。
你就改成交换私钥了,这相当于私钥变成公钥了。没有意义啊。
jsq2627
2014-11-07 12:42:57 +08:00
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub.test
ssh-keygen -f ~/.ssh/id_rsa.pub -y > ~/.ssh/id_rsa.priv.test

你可以试试这两条命令。
Daniel65536
2014-11-07 12:47:44 +08:00
*RSA的私钥可以算出公钥
所以楼上的一些说公开的就叫公钥这个说法是可能会引起迷糊混淆的。

你把RSA的私钥公开,别人立刻就能从私钥推算出公钥,OK,啥都泄漏了。
把RSA的公钥公开,别人只能知道公钥,要反推私钥需要分解大素数算好久好久,安全了。

RSA的公钥私钥是不能随意发布私钥然后把私钥叫做公钥的。

两个人之间这么做只有一个安全隐患:私钥会经过一次网络传输,如果有人窃听了私钥,跪了,如果是传公钥,对方窃听无所谓。

如果中间人攻击篡改传输的内容那完全无法防范,必须手动确认是否真实。
Cu635
2014-11-07 12:59:17 +08:00
理论上可行,这样的话是要用“公”钥来加密的,而且只有你能够加密生生合法的可以解密的串。别人用“私”钥解密,可以验证你的身份。

不过一方面,这么干的话一般就把只有你知道的加密密钥叫做私钥,把公开的解密密钥叫做公钥了。

另一方面,在软件实现上要看软件相关的手册甚至是代码:万一这个软件没有实现这个功能怎么办?对吧。

信息加密是用公开的加密密钥加密,只有你知道的解密密钥解密。
Cu635
2014-11-07 13:01:08 +08:00
哦,对了,加密密钥和解秘密密钥具有对称性,密钥对中的两个用那个加密都可以,相应的另一个就是解密密钥。

尽量不要混淆这些概念。
9hills
2014-11-07 13:02:38 +08:00
rsa是非对称的
jsq2627
2014-11-07 13:05:55 +08:00
@Cu635 公私钥位置不是对等的。楼上有人已经解释了,可以通过私钥计算出公钥,但反过来是不行的。给别人私钥,相当于把公钥也泄漏了。
billlee
2014-11-07 13:08:47 +08:00
RSA 的两个密钥是对称的,公开那个叫公钥。用公钥加密的可以用私钥解密,这是 RSA 的加密功能,用私钥加密的可以用公钥解密,这是签名功能。
知道 RSA 的公钥是推导不出私钥的。
wzxjohn
2014-11-07 13:15:11 +08:00
看来一堆人说“给别人的交公钥,自己留着的叫私钥”。
我只想说,那好,请把你们的私钥给我,我给你们发加密邮件。
XDA
2014-11-07 13:27:49 +08:00
dorentus
2014-11-07 13:53:10 +08:00
关于 RSA,我的理解是:
按定义的话,公私钥是可以互换的
问题是常见的实现里面,保存“私钥”的那个数据结构或者文件,里面除了私钥所必需的那一对数之外,还有额外的信息(足以算出公钥来),所以绝对不能把这个“私钥”数据给其他人……
pright
2014-11-07 13:53:28 +08:00
工具生成的私钥信息一般是包含了公钥的,如果只提供私钥(N和d),公钥的计算难度其实也是因数分解。不过出于性能考虑,公钥指数e按标准(PKCS)一般都建议选择了3、65537之类的小数,这样的话会更容易破解。
xoxo
2014-11-07 13:59:39 +08:00
方向搞错. 非对称加密, A不应该信任B, 也注是要么你把你的公钥给对方, 要么对方生成key pair, 然后把公钥给你.

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

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

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

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

© 2021 V2EX