Re: [问题] openssl rsa 产生key的过程

楼主: Qbsuran (Qbsuran)   2018-07-19 02:12:17
借标题回一下,有错鞭小力点
首先名词先确定一下
对称式加密:密钥系统、私钥系统,这边的key有时候被翻译成私钥(secret key)
非对称式加密:公钥系统,key有两把,公钥和私钥(public key和private key)
“私钥”虽然中文一样,但是原文英文意思完全不同
=========================================
RSA可以用在两个地方,非对称式加密和数位签章(ckc1ark大大讲的:私钥签章 公钥验证)
那么来讲一下最常听到这些算法应用的地方:SSL/TLS
SSL/TLS常常被误会成它就是公钥系统,实际上它包含了:密钥系统、公钥系统、杂凑、乱数产生、HMAC...等
SSL/TLS过程大概是两个阶段
1. client和server交换加解密资讯
2. 密文传输
第二个阶段的密文传输是怎么加密的,是低,就是用“对称式加密”
那么这时候对称式加密的key(secret key)什么时候传递的?
就是第一阶段的交换加解密资讯时候传递的
第一阶段交换的加解密资讯实际上是交换非对称式加密的公钥(和其他东西)
再用这个非对称加密的公钥来加密之后要用的对称式加密secret key
所以这样就能解决非对称加密速度太慢的问题(filiaslayers大大提到的)
=========================================
那再继续往下讲,“如何交换或协商对称式加密的secret key(第一阶段)”
现代SSL/TLS连线资讯通常会写这样:
1. ECDHE-ECDSA
2. ECDHE-RSA
3. RSA-RSA
前面代表交换对称式加密key的方法,后面代表凭证的数位签章算法
RSA因为速度很慢,加上key要够大(2048 bits以上)安全性才够,所以有个算法来了
DH(Diffie-Hellman)是一种算法可以两方自己决定secret key(在SSL/TLS叫做session key)
但是它需要的一些参数并不会每次不同,所以再加上E(Ephemeral),它就会每次产生不同的参数已达到Perfect Forward Secrecy(PFS)
然后再加上Elliptic Curve(EC),就能达到不用很长的key就能达到一定的安全性
EC的key 224 bits相当于RSA的2048 bits
(Source: NIST 800-57, Table 2)
所以
ECDHE-ECDSA:ECDHE来决定secret key,ECDSA来做数位签章
ECDHE-RSA:ECDHE来决定secret key,RSA做数位签章
RSA-RSA:RSA来交换secret key(key的来源是凭证的private key),RSA做数位签章
按照这个关系,所以并不会有RSA-ECDSA,因为用RSA来交换secret key,但是凭证内没有private key给它用
=========================================
补充一下:因为ECDHE能达到PFS的关系,所以即使破解了这条session的key
但是无法拿来破解其他同一个server的session,所以有些的passive SSL decryption会失败就是这个原因
passive SSL decryption是把SSL封包录下来,然后用server的私钥(RSA)来解密
但是假设产生secret key牵涉到ECDHE就一定无法解,(除非利用NSS Key Log来记录client的资讯)
作者: ddtsatan   2018-07-19 22:14:00
作者: bdvstg (bdvstg)   2018-07-20 09:57:00

Links booklink

Contact Us: admin [ a t ] ucptt.com