You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
我们假设一条身份信息为:I,将身份信息用私钥变换加密后,与明文身份信息组成一个二元组 [I,S(I,s)],然后其它任何人都可以通过公钥变换将二元组的加密信息还原,并与二元组的明文身份进行核对,如果核对无误,说明该身份验证成功,即数字签名的验证过程为: I = P(S(I,s),p)。
密钥变换结果 S(I,s) 称为 数字签名。
Alice 发送加密信息给 Bob 的时候,Bob 一般需要确认两件事:一是 Alice 是一个可信任的发送方而不是恶意攻击者,所以 Alice 需要一个权威的公信组织的证明,这个证明由一个公开的组织 CA(certificate authority,证书颁发机构)以数字签名的方式颁发,称之为 证书;二是 Alice 的公钥,用以对加密信息进行解密,而这个公钥也是附加在证书里的。
注意,证书是一个数字签名,为了验证证书,每个人都知道证书的公钥,所以每个人都能对证书进行验证。
证书里存储的信息除了 Alice 的公钥以外,还包括:证书版本号、序列号、证书签名算法、证书颁发者、有效期、Alice 的个人信息等。Bob 在收到 Alice 的证书之后,通过公钥变换核对证书的真伪。如果 Bob 是一个浏览器,则会保存很多权威 CA 的信息,以便于验证真伪。
2.2 RSA 加密系统
欧拉 phi 函数(即模n乘法群规模大小) φ(n) 的定义如下:
模线性方程的一个推论:对任意 n>1,如果 gcd(a,n) = 1,那么方程 ax ≡ 1(mod n) 对 n 有唯一解;否则方程无解。此处,x 称为 a 对模 n 的乘法逆元。
1 RSA 用到的数论原理
整个数论算法这一章,都是为了最终阐述 RSA 加密的底层原理。换句话说,RSA 加密算法的本质就是部分数论原理的运用。具体来说,用了以下数论原理:
a
,b
为非负数,n
为正整数,计算a^b mod n
。用于 RSA 加密和解密运算;ax ≡ b(mod n)
,其中a>0
,n>0
。用于 RSA 密钥的计算;a
和任意正整数b
,gcd(a,b) = gcd(b, a mod b)
。用于互质的验证和相关定理的证明;2 加密概念和加密方式
在密码学中,关于加密有很多概念:加密,密钥,公钥,对称加密,非对称加密,数字签名,证书。
2.1 相关概念
明文传输最容易被窃听,所以将明文通过某种算法编码之后变成密文的过程称为 加密。
对应的,用相同的算法对密文解析回明文的过程叫 解密。
加密和解密算法可以看做两个函数,函数计算过程用到的关键参数称之为 钥匙,钥,key。
我们把这两个函数称为 变换。特别的,如果钥是需要保密的,就叫做 密钥,如果是公开的,则称为 公钥。
对于同一条信息,如果在加密和解密中,使用的是相同的密钥,则这样的变换算法我们称之为 对称加密。
对于同一条信息,如果用公钥加密,用私钥解密;或者用私钥加密,用公钥解密,则这样的变换算法我们称之为 非对称加密。
设公共变量:
M
为明文,C
为密文,p
为公钥,s
为密钥。对于对称加密,设:加密变换为
E()
,解密变换为D()
,所以有E(M,s) = C,D(C,s) = M
,即D(E(M,s),s) = M
。对于非对称加密,设:公钥变换为
P()
,私钥变换为S()
,且P()
和S()
互为逆变换,即S(M,s) = C,P(C,p) = M
;P(M,p) = C,S(C,s) = M
;S(P(M,p),s) = P(S(M,s),p) = M
。我们假设一条身份信息为:
I
,将身份信息用私钥变换加密后,与明文身份信息组成一个二元组[I,S(I,s)]
,然后其它任何人都可以通过公钥变换将二元组的加密信息还原,并与二元组的明文身份进行核对,如果核对无误,说明该身份验证成功,即数字签名的验证过程为:I = P(S(I,s),p)
。密钥变换结果
S(I,s)
称为 数字签名。Alice 发送加密信息给 Bob 的时候,Bob 一般需要确认两件事:一是 Alice 是一个可信任的发送方而不是恶意攻击者,所以 Alice 需要一个权威的公信组织的证明,这个证明由一个公开的组织 CA(certificate authority,证书颁发机构)以数字签名的方式颁发,称之为 证书;二是 Alice 的公钥,用以对加密信息进行解密,而这个公钥也是附加在证书里的。
注意,证书是一个数字签名,为了验证证书,每个人都知道证书的公钥,所以每个人都能对证书进行验证。
证书里存储的信息除了 Alice 的公钥以外,还包括:证书版本号、序列号、证书签名算法、证书颁发者、有效期、Alice 的个人信息等。Bob 在收到 Alice 的证书之后,通过公钥变换核对证书的真伪。如果 Bob 是一个浏览器,则会保存很多权威 CA 的信息,以便于验证真伪。
2.2 RSA 加密系统
φ(n)
的定义如下:模线性方程的一个推论:对任意 n>1,如果 gcd(a,n) = 1,那么方程 ax ≡ 1(mod n) 对 n 有唯一解;否则方程无解。此处,x 称为 a 对模 n 的乘法逆元。
RSA 加密算法是一种非对称加密算法。
RSA 加密生成公钥和密钥的过程:
q1
和q2
,使得q1≠q2
,例如,素数q1
和q2
可能各有 1024 位。n=q1q2
。φ(n)
互质的小奇数e
,根据φ(n)
的定义可知:φ(n)=(q1-1)(q2-1)
。φ(n)
,计算出e
的乘法逆元d
的值,由上述推论可知,d
是存在且唯一的,给定e
和φ(n)
,可以通过求解模线性方程求得d
。p=[e, n]
,并公开。s=[d, n]
,并保密。P(M,p) = P(M,e,n) = M^e mod n
,此处M
也可以为C
。S(C,s) = S(C,d,n) = C^d mod n
,此处C
也可以为M
。RSA 的正确性:
P(S(M,s),p) = S(P(M,p),s) = M^(ed) (mod n) = M
,证明略。RSA 的安全性:找出大素数
q1
和q2
比较容易,但是给定大整数n
,要对n
进行质因数分解成q1q2
则相当困难。具体来说,最终需要破解密钥,即知道d
是什么,而要求解d
,根据上述过程 4 可知,必须先求得φ(n)
,而根据过程 3 又可知φ(n)=(q1-1)(q2-1)
,这个求解难度等价于求解n=q1q2
。加密在网络通信中最经典的运用就是 HTTPS,核心是 SSL 安全协议,在 HTTP权威指南/SSL握手原理 中已有详细总结。
The text was updated successfully, but these errors were encountered: