《图解密码技术》第五章 公钥密码—用公钥加密,用私钥解密

第五章 公钥密码—用公钥加密,用私钥解密

  1. 密钥(Yao)配送问题:密钥必须发送,但又不能发送(怕Eve窃听)

  2. 解决密钥配送问题的方法:
    ①事先共享密钥
    ②密钥分配中心
    ③ diffie-hellman密钥交换
    ④公钥密码

  3. 公钥密码中,密钥分为加密密钥(公钥,发送者用来加密)和解密密钥(私钥,接收者用来解密)。
    解密密钥从一开始就是接收者自己保管的,因此只要将加密密钥发给发送者即可解决密钥配送问题。
    •公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对。
    •公钥密码无法解决的问题:
    ①公钥认证。即需判断所得到的公钥是否正确合法。
    ②处理速度只有对称密码的几百分之一。

  4. 时钟运算
    ①加法
    •时钟的指针向右旋转相当于做加法。
    •并不是单纯的加法,而是除法求余数(mod)。
    ②减法
    • "减去X "和" 加上Y "这两个运算是等价的。 在这里插入图片描述
    ③乘法
    •乘法相当于加法的多次重复
    • 7×4mod12 = 28mod12=4
    ④除法
    •除法可看成乘法的逆运算。
    •在“以12为模的世界,看谁有倒数:(0、1…11)x 囗 mod 12=1
    得到1、5、 7、 11(其中5、7、 11和12的最大公约数是1,即和12互质)
    ⑤乘方
    •乘方是乘法的多次重复,只要先进行一般的乘方运算之后再求余数
    • 7 ^4 mod 12= (( 7x7mod12) x(7x7mod2))mod12
    ⑥对数
    •乘方的逆运算称对数
    •时钟运算中的对数称离散对数
    •能快速求出离散对数的算法还没被发现

  5. RSA加密
    • RSA是一种公钥密码算法
    • RSA可被用于公钥密码和数字签名

    密文=明文E mod N ( RSA加密)
    • E和N是RSA加密的密钥,即E(encryption)和N(number)的组合就是公钥。一般写成“公钥是(E,N)”或者“公钥是{ E , N } ”

    补充(离散对数):
    离散对数(Discrete logarithm)是一种基于同余运算和原根的一种对数运算。因此先了解同余运算和原根。

    •同余运算
    同余(congruence modulo,符号:≡):当两个整数除以同一个正整数,若得相同余数,则二整数同余。
    两个整数 a, b,若它们除以正整数 m所得的余数相等,则称 a, b对于模 m同余,记作 a≡b(mod m),读作 a同余于b模m,或读作 a与 b关于模 m同余
    由对于模 n同余的所有整数组成的这个集合称为同余类。模3有三个同余类[0],[1],[2]

    •欧拉函数
    定义:在数论中,对于正整数N,少于或等于N ([1,N]),且与N互质的正整数(包括1)的个数,记作φ(n)。

    φ函数的值:φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))……(1-1/p(n)) 其中p(1),p(2)…p(n)为x的所有质因数;x是正整数; φ(1)=1(唯一和1互质的数,且小于等于1)。注意:每种质因数只有一个。
    例如:

     φ(10)=10×(1-1/2)×(1-1/5)=4;
     1 3 7 9
    
     φ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;
     φ(49)=49×(1-1/7)=42;
    

    欧拉函数的性质:
    (1) p^k型欧拉函数:
    若N是质数p(即N=p), φ(n)= φ( p )=p-p^(k-1)=p-1。
    若N是质数p的k次幂(即N=p^ k),φ(n)=p^ k-p^ (k-1)=(p-1)p^(k-1)。

    (2)mn型欧拉函数
    设n为正整数,以φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值。若m,n互质,φ(mn)=(m-1)(n-1)=φ(m)φ(n)。

    (3)特殊性质:
    若n为奇数时,φ(2n)=φ(n)。
    对于任何两个互质 的正整数a,n(n>2)有:a^φ(n)=1 mod n (恒等于)此公式即 欧拉定理
    当n=p 且 a与素数p互质(即:gcd(a,p)=1)则上式有: a^(p-1)=1 mod n (恒等于)此公式即 费马小定理

    •阶
    群元素的个数称为群的阶。
    对欧拉函数,设m > 1 且 (a, m) = 1, 则使得 a^d≡1(mod m) 成立的最小的正整数d,称为a对模m的阶, 记为δm(a)。
    如果m为质数,则 δm(a)=m−1。即群am−1≡1(mod m)的阶为m-1。

    •原根
    对于两个正整数a和m互质,其最大公约数为1,即gcd(a,m)=1,简写为(a,m)=1. 满足 a^d≡1(mod m) 的最小的 d,称为a对m的阶,记为 δm(a),若δm(a)=φ(m),则称a是模 m的原根。
    另一种定义,对(a,m)=1,即a,m互质. 如果a是m的原根,那么ai(modm)的结果两两不同,且有 1<a<m,1<i<m. 即,a^ i(mod m)≠a ^j(mod m) (m为质数),其中i≠j且i, j介于1至(m-1)之间,则a为m的原根。
    简单的来说,如a是m的原根,那么a的1…(m-1)次幂mod m的结果一定互不相同
    性质:
    1.a ^x≡a ^y(mod m) => x≡y(mod δm(a))
    2.m(若存在原根)的原根数目为 ϕ(ϕ(m))
    求解方式:
    从2开始枚举,然后暴力判断a^m−1≡1(mod m)是否当且当指数为m-1的时候成立 而由于原根一般都不大,所以可以暴力得到.
    例如: 设m= 7,则φ(7)等于6。φ(7)表示7的欧拉函数。 设a= 2,由于2^3=8≡1(mod 7),而3<6,所以 2 不是模 7 的一个原根。 设a= 3,由于3 ^1≡3(mod 7),3 ^2≡2(mod 7),3 ^3≡6(mod 7),3 ^4≡4(mod 7),3 ^5≡5(mod 7),3 ^6≡1(mod 7),所以 3 是模 7 的一个原根。

    ●离散对数
    离散对数(Discrete logarithm)是一种基于同余运算和原根的一种对数运算。而在实数中对数的定义x=logba是指对于给定的 a 和 b,有一个数 x,使得bx=a。相同地在任何群 G中可为所有整数 k定义一个幂数为 bk,而离散对数 logba是指使得 bk≡a(mod m) 整数 k。记为k=Indba

    定义:当模 m有原根时,设 a为模 m的一个原根,则当ak≡x(mod m)时: Indx≡k(modϕ(m)),此处的 Indx为 x以整数 a为底,模 ϕ(m)时的离散对数值。

    示例:对模5,ϕ(5)=5−1=4.有个原根是2. 因为 20≡1,21≡2,22≡4,23≡3(mod5) Ind21=0,Ind22=1,Ind24=2,Ind23=3

  6. RSA解密
    RSA解密可用公式:明文=密文D mod N表示。
    •数D和数N组合起来就是RSA的解密密钥,即私钥。
    •D(是解密Decryption的首字母)不是随便什么数都可以的,它和数字E有着相当紧密的联系。
    •RSA的加密和解密
    |密钥对|公钥|数E和数N|
    |:--------😐 -------------😐
    | |私钥|数D和数N|
    |:--------😐 -------------😐
    | 加密 |密文=明文Emod N |
    |:--------😐 -------------😐
    | 解密 |明文=密文Dmod N |

  7. 生成密钥对
    •公钥:E,N 私钥:D,N
    •求E、D、N这三个数就是生成密钥对
    •RSA密钥对生成步骤:
    ①求N
    (1)先准备两个很大的质数p和q(由伪随机数生成器得到)
    (2)这两个数相乘结果就是N,即N=p x q
    ②求L(L是仅在生成密钥对过程中使用的数)
    L是p-1和q-1的最小公倍数,即L=lcm(p-1,q-1)
    ③求E
    •1<E<L
    •gcd(E,L)=1 (E和L的最大公约数为1,即E和L互质)
    (1)通过伪随机数生成器在1<E<L的范围内生成E的候选数
    (2)判断其是否满足gcd(E,L)=1的条件
    ④求D
    •1<D<L
    •E x D mod L=1
    要保证存在满足条件的D,就需要保证E和L的最大公约数为1,简单来说,E x D mod L=1保证了对密文进行解密时能得到原来的密文。

8.对RSA的攻击
•通过密文求明文是一个求离散对数的问题,这是非常困难的。
•通过暴力破解来找出D,难度会随着D的长度增加而变大。
•通过E和N求出D。p和q不能被密码破译者知道,①但是N=pxq且公开,因此一旦发现了对大整数进行质因数分解的高效算法,RSA就能被破译;②如果伪随机数生成器的算法很差,破译者可能推测出p和q,进而破译RSA;③也可能有不需要对N进行质因数分解也可以由E和N求出D的方法。
•中间人攻击(主动攻击者Mallory混入发送者和接受者的中间,对发送者伪装成接收者,对接收者伪装成发送者)。虽不能破译RSA,但却是一种针对机密性的有效攻击。这种攻击不仅针对RSA,而是可以针对任何公钥密码。

  1. 其他公钥密码
    •ElGamal方式。RSA利用了质因数分解的难度,ElGamal则利用了mod N下求离散对数的难度,有一缺点是经过加密的密文长度会变成明文的2倍。
    •Rabin方式。利用的mod N下求平方根的困难度。
    •椭圆曲线密码。通过将椭圆曲线上的特定点进行特殊的乘法运算实现,利用这种乘法的逆运算非常困难的特性。特点是所需的密钥长度比RSA短。

  2. 小结
    •公钥密码能解决密钥配送问题。
    •对称密码通过将明文转换为复杂的形式来保证机密性,公钥密码则基于数学上困难的问题来保证机密性。
    •公钥密码的运行速度远远低于对称密码,在通信过程中,往往配合使用者两种密码,即用对称密码提高速度,用公钥密码解决密钥配送问题,这样的方式称为混合密码系统。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值