密码学08(RSA密码、EIGamal密码)

RSA密码

非对称密码,分组密码

数学基础

  • 欧拉函数:
    对于一个正整数n,小于n且与n互素的正整数的个数,记为φ(n)。
    对于一个素数n,可知φ(n) = n - 1
    对于两个素数p和q,他们的乘积n = p * q,则φ(n) = (p-1) * (q-1)。

φ(n) = p*q-(q-1)-(p-1) -1 = (p-1) * (q-1)
最后-1是减去n本身

  • 欧几里得算法:
    gcd( a,b)表示a和b的最大公约数,gcd(a,b) = 1表示a,b最大公约数为1,说明a、b互质。
  • 同余
    两个整数a、b。若它们除以整数m所得的余数相等,则称a与b对于模m同余,记作a ≡ b (mod m)。例如26 ≡ 2 ( mod12 )。

RSA加密与解密

  • 参数定义和密钥生成:
    ①选两个大素数p和q (p、q保密)
    ②计算n = p * q和φ(n) = (p-1) * (q-1) (n公开,φ(n)保密)
    ③选一整数e,满足1 < e < φ(n) ,且gcd(φ(n),e) = 1(e公开,e就是公钥)
    ④计算d,满足d * e ≡ 1 (mod φ(n))(d保密,d就是私钥),由于p、q都为素数,则φ(n)一定为2的倍数,因此d、e一定都不为2。
  • 加密
    c = me mod n
  • 解密
    m = cd mod n
    由此可见密文和明文分组长度最大为n的位数,在存储时一般也按照n的位数来存储。

已知p、q如何求d?
①算出n = p * q,φ(n) = (p-1) * (q-1)
②随机选择一个小于φ(n)且互质的整数e
③使用扩展的欧几里得算法求d

  • 特点
    加解密可逆,可同时确保数据的秘密性和真实性。
    效率高效,核心运算为模幂运算
  • 安全性
    RSA密码的安全性在于大合数的因子分解,应当采用足够大的整数n,一般至少取1024位以上。

Diffie-Hellman密钥交换

素数q和其本原根α是两个公开的整数,
用户A先选择一数字XA < q作为私钥,再计算YA = αXA作为公钥,将YA发送给B。
用户B先选择一数字XB < q作为私钥,再计算YB = αXB作为公钥,将YB发送给A。
两人都可以计算出公共密钥K = YBXA mod q和K = YAXB mod q,
这两个K是相同的。
攻击者在知道q、α、YA、YB的情况下想要知道K的值就必须要算出私钥XA或XB,XA = dlogα、q(YB),这是非常困难的。

破解方法:中间人攻击
假设此时攻击者C截获了发送过程中的YA和YB,由于q和α是公开的,所以C可以选择两个私钥Xc,伪造两份Yc发给A和B,这样A、B会错以为他们之间已经共享密钥K,然而实际上A、B只是分别和C共享了密钥K1和K2,这样A、B之间发送的加密消息都会被C窃听和篡改。

EIGamal密码

这是基于离散对数问题上的公开密钥密码体系。

数学基础

  • 有限域:对于素数p,整数集合(0,1,2……p-1),在mod p意义下,关于四则运算构成域,当域的元素数目有限时称为有限域。
  • 阶:有限域中元素的个数,比如,模19下7的阶为3。(a、p互质,使得ad ≡ 1 (mod p)成立的最小正整数d称为a对模p的阶。)

71 mod 19 = 7
72 mod 19 = 11
73 mod 19 = 1
阶为3

  • 本原元(原根):设p为素数,若存在一个正整数g使得g1 、g2、g3……gp-1 关于模p互不同余,即模p下g的阶为φ( p ) = p - 1, 则称g为模p的本原元。 如果存在ad ≡ 1 (mod p), 且阶d = φ(n),那么a就是p的本原元,一个域的本原元可能不唯一。

EIGamal的加密和解密

  • 参数定义和密钥生成
    ①选取大素数p,并且要求p-1有大素数因子,再选取一个模p的本原元g。p、q为系统中所有用户共享。
    ②系统中每个用户U都随机挑选一个整数XU,1 <= XU <= p-1。并计算:YU = gXu mod p.
    ③用户的公钥为(YU,p,q),私钥为XU
  • 加密算法:
    选一数k,k满足k<p且gcd(k, p-1) = 1,计算a = g^k ^mod p和b = yk *M mod p。其中(a,b)为密文对。
  • 解密算法:
    接收方收到密文对后,计算M = b * (ax ) -1 mod p

数字签名

特征

验证签名的真实性
不可伪造
不可改变
不可抵赖
验证消息的完整性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章