在 RSA 加密中既然公钥和私钥是可逆的,为什么都是把公钥给别人,而不把私钥给别人,自己保存好公钥? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
666665443
V2EX    问与答

在 RSA 加密中既然公钥和私钥是可逆的,为什么都是把公钥给别人,而不把私钥给别人,自己保存好公钥?

  •  
  •   666665443 2020-09-07 10:24:26 +08:00 6936 次点击
    这是一个创建于 1865 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RSA 在原理上,公钥和私钥本身就是可逆的。

    但是为什么我们在网络验证身份的时候都是,以 GithubSSH 为例,为什么都是把公钥放在 Github 上面?而不是自己的私钥?我能不能把私钥放在上面,自己保存好公钥不被泄露?

    通常情况下都是把所谓意义上的公钥随便传播,而自己保存好私钥的安全性,这种做法仅仅的习惯原因吗?

    我是否可以把我的私钥任意传播,把自己的公钥保存完好,不被泄露?简言之,是否在使用 RSA 加密算法中,不管是私钥还是公钥,只要保存好其中之一,另一个就可以任意传播了?

    33 条回复    2021-10-22 16:37:32 +08:00
    wzzzx
        1
    wzzzx  
       2020-09-07 10:28:14 +08:00   1
    公钥的公就是公开的意思
    wzzzx
        2
    wzzzx  
       2020-09-07 10:28:35 +08:00
    打完我就不认识公这个字了
    crystom
        3
    crystom  
       2020-09-07 10:29:02 +08:00   1
    数学上的公私钥确实是对称的,但是工程应用中的私钥还包括了原始信息
    zhve2x4
        4
    zhve2x4  
       2020-09-07 10:30:11 +08:00
    公钥和私钥本身就是可逆的?? 你确定???
    私钥---->公钥
    公钥--X-->私钥
    wangkun025
        5
    wangkun025  
       2020-09-07 10:32:43 +08:00
    可逆?可逆?可逆?
    easonHHH
        6
    easonHHH  
       2020-09-07 10:37:15 +08:00   3
    1.随机两个不相等的质数 p,q
    2.p,q 相乘等于 n
    3.根据欧拉函数,φ(n)=(p-1)(q-1)
    4.随机选一个质数 e 满足 1<e<φ(n),且 e 与φ(n)互质,实际应用多用(65537)
    5.通过公式推导:
    ed ≡ 1 (mod φ(n))
    ed - 1 = kφ(n) 存在一个 k
    ex + φ(n)y = 1 其中 y=1/k
    e 已知,根据扩展欧几里得算法,求出 x 即为 d
    6.[n,e]为公钥,[n,d]为私钥
    你看 e 是随机选一个质数 e 且多用于 65537,是不是安全性来说这个公钥更适合公布
    cmdOptionKana
        7
    cmdOptionKana  
       2020-09-07 10:38:50 +08:00   1
    楼主 “公钥和私钥本身就是可逆的” 这个想法是从哪里来的?有来源吗
    maplememory
        8
    maplememory  
       2020-09-07 10:40:06 +08:00
    公钥仅包含两个信息,模( n ),公共指数( e )
    私钥包含私有指数( d ),两个大质数( p,q ),还有额外的 dP,dQ 和 qInv (用于使用中国剩余定理加速运算的)。
    通过私钥可以算出公钥,反之不行。
    GM
        9
    GM  
       2020-09-07 10:42:55 +08:00
    @cmdOptionKana 我估计他意思是这样:

    公钥加密可以私钥解密,私钥加密也可以公钥解密。

    这样一来初一看好像公钥私钥可以互相替换呢。
    linuxvalue
        10
    linuxvalue  
       2020-09-07 10:44:30 +08:00
    公钥加密 私钥解密 基本知识,你给我来个私钥加密...
    churchmice
        11
    churchmice  
       2020-09-07 10:49:04 +08:00
    既然如此,那跟对称加密还有何区别
    zxcslove
        12
    zxcslove  
       2020-09-07 10:51:01 +08:00   1
    发布出去的叫公钥,就像去会所上班才叫公主
    dzdh
        13
    dzdh  
       2020-09-07 10:51:18 +08:00
    貌似…… 公是包含在私钥里的吧
    ZombieMisaka
        14
    ZombieMisaka  
       2020-09-07 10:52:41 +08:00   10
    楼上有一半都是一知半解的,数学意义上两个 rsa 秘钥的确是对等的,但是工程实现例如 OpenSSL 会将信息存在私钥里,使私钥能生成出公钥,这个时候就不能算是对等了
    lvybupt
        15
    lvybupt  
       2020-09-07 10:55:15 +08:00
    刚在知乎上看到这个问题? 楼主提的?

    你的结论是对的。RSA 的密钥是成对出现的,任意给出的那个就叫公钥,留下的就是私钥。

    不过有两位一个问题,为了方便识别密钥,和更方便的排除弱密钥,公钥一般都是固定长度的,私钥是对应算法生成的,长度是有波动的。
    私钥长度不够就是弱密钥,废弃重新生成一对。
    Euporie
        16
    Euporie  
       2020-09-07 10:59:31 +08:00
    @ZombieMisaka 说的是对的,另外 LZ 搞反了因果关系,两个密钥,你公开出去的就可以叫公钥
    khjian
        17
    khjian  
       2020-09-07 11:03:01 +08:00
    你是不是对非对称加密有什么误解?
    felixlong
        18
    felixlong  
       2020-09-07 11:12:49 +08:00
    数字签名就是私钥加密公钥解密的。数学理论上本来公钥和私钥就是对称的。只是工程实践上公钥的那个 e 都是选择固定的值。因为 e 的选择不当会降低 RSA 的安全强度。
    liujialongstar
        19
    liujialongstar  
       2020-09-07 11:12:58 +08:00
    如果可逆, 那么非对称加密还有什么意义
    misaka19000
        20
    misaka19000  
       2020-09-07 11:15:45 +08:00   2
    为什么陨石都落在坑里面?
    GuuJiang
        21
    GuuJiang  
       2020-09-07 11:24:49 +08:00   45
    这个问题里 3/6/8/14/15 楼说的是对的(如有遗漏请见谅),其他人尤其是还带嘲讽语气的就真的是张口就来了,甚至思考的还没有楼主多
    我来一点一点回答吧
    1. 你说的这个“可逆”的在 RSA 的原理上是正确的,更严格的说法是叫“对称”的,注意这里说的是数学上的轮换对称那个对称,而不是对称 /非对称加密里的那个对称,以防杠精
    2. 之所以实际使用中不能互换使用,原因是我们平时使用的叫作私钥的那个文件,除了包含私钥本身,还额外地包含了一些信息,细节详见 6 楼,注意加解密过程中真正需要用到的只有[n,d],这才是真正数学意义上的“私钥”,而实际的私钥文件里除了[n,d]以外还记录了 p/q 等用于产生私钥的原始值,利用这些值可以把公钥重新推导出来,也就是
    (工程意义上的公钥) = (数学意义上的公钥)
    (工程意义上的私钥) = (数学意义上的私钥) + (数学意义上的公钥)
    所以如果你真的互换使用,程序直接就报错了,因为期待的私钥和公钥的文件格式是不一样的,但是如果你手动去解析真正的[n,e]和[n,d]值并喂给底层的 RSA 过程,使用完全没有问题
    3. 那么假设我们统一工程上的私钥和公钥文件的格式,去掉私钥文件中的原始信息,都只包含数学密钥本身,是否就可以任意互换使用了呢?答案是仍然不能,原因是在原始的 RSA 原理定义里,质数 e 应该是随机选取的,但是实际工程应用中,固定为了 3 或者 65537,所以如果你把实际的私钥当成了公钥分发出去,有心人如果看到里面的 e 值不是 3 或 65537,就可以猜测你用反了,并且尝试用 3 或 65537 来生成对应的“私钥”
    4. 一句话总结就是,在数学上,私钥和公钥是轮换对称的,可以互换使用,到底哪个是私钥哪个是公钥取决于哪个保密哪个任意分发,但是在实际工程上由于两点原因,不能互换使用,对于死记硬背“只能公钥加密私钥解密,私钥签名公钥验签”并以此为论据来嘲讽楼主的,你们好好去看看,在 RSA 里,加密和签名就是完全一模一样的过程(再次强调,仅限 RSA,不包括其他的非对称算法)
    cheng6563
        22
    cheng6563  
       2020-09-07 11:27:51 +08:00 via Android
    公私钥的确可以反着用的,但一般公钥短,私钥长。用公钥加密不太合适
    wnck
        23
    wnck  
       2020-09-07 11:40:42 +08:00
    公私钥反着用的场景是数字签名,私钥持有者对 message 进行签名,其他人用公钥去验证签名。

    在数学推导上,公私钥确实是相互关联的,但通常按照标准规范的算法,公钥计算私钥的难度远大于私钥计算公钥,这个难度的差异大概可以类比成私钥计算公钥只需要 1s,公钥计算私钥你要算一辈子还不一定算得出来。
    linvaux
        24
    linvaux  
       2020-09-07 12:14:43 +08:00 via iPhone
    @wzzzx 我特喵的也看懵了
    594duck
        25
    594duck  
       2020-09-07 12:22:19 +08:00
    @GuuJiang 老哥说话真的客观靠谱

    V2 现在真的是张口喷的小年轻太多了
    agegcn
        26
    agegcn  
       2020-09-07 13:55:46 +08:00
    lz“可逆”这个词用错了,才造成这么大误会
    fffang
        27
    fffang  
       
    @misaka19000 为什么呢?
    Nicoco
        28
    Nicoco  
       2020-09-07 17:58:36 +08:00
    非对称加密、对称加密,这两个概念还需要深入了解一下~
    EvilCult
        29
    EvilCult  
       2020-09-08 02:09:08 +08:00
    v2 上应该多一些如 #6 和 #21 这样的“真大佬”
    666665443
        30
    666665443  
    OP
       2020-09-13 09:29:41 +08:00
    @lvybupt 对,在知乎上也提问了
    666665443
        31
    666665443  
    OP
       2020-09-13 09:36:52 +08:00
    @GuuJiang 谢谢前辈
    51fly
        32
    51fly  
       2021-08-23 12:05:28 +08:00
    @GuuJiang 多谢大兄弟,我也有这个问题,就是不考虑复杂的 ssl 场景,只从最单纯地加解密场景出发,即 2 个公私钥的 base64 字符串,我随便公开一个,是不是保留的就可以当做私钥,也就是在这种场景,公私钥不是在数学公式层定义的,而是取决于怎么分发。。。看了你的解释算明白了。多谢。
    find456789
        33
    find456789  
       2021-10-22 16:37:32 +08:00
    @51fly

    老哥, 你现在这个疑问解决了吗? 我最近也在思考这个问题,https://v2ex.com/t/809833#;
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5523 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 08:02 PVG 16:02 LAX 01:02 JFK 04:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86