公钥密码体制(RSA,椭圆曲线密码,ElGamal

本文详细介绍了RSA算法的密钥生成、加密解密原理,ElGamal公钥密码体制基于离散对数问题,以及椭圆曲线密码ECC的安全性与加密流程。探讨了非对称密码在密钥分发中的优势,并对比了它们在安全性、密钥管理和应用中的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

RSA

 密钥的产生

加密:

 解密:

 ElGamal:

椭圆密码曲线密码ECC:


概述

密钥是需要定期更换的。如果采用对称密钥体制(分组密码和序列密码)更换密钥以及相应的“密钥分发”工作量相当大。

由于对称密码在实际应用中“密钥分发”的问题,非对称密码在这方面相对安全。

1976年,Diffie,Hellman发表了非对称密码的奠基性论文《密码学的新方向》,建立了公钥密码的概念。

序列密码在加密和解密时,无论是种子密钥还是生成密钥流,都是一样

分组密码初始密钥是一样的,子密钥使用顺序相反或者可以互推。

而非对称密码不一样,公钥公开,私钥藏好。

查看源图像

 只有持有私钥的才能解密。

对称密码体制和非对称密码体制配合,对称密码加密速度快,但密钥分发困难,公钥密码加密速度慢,基本不存在密钥分发问题。可以用公钥密码传递对称密码的密钥,完成密钥的分发,之后运用对称密码进行大规模传输。

分类:基于大整数难分解问题(RSA,Rabin。基于离散对数难题ElGamal。基于椭圆曲线离散对数的密码体制。

基于的数学难题

RSA

大整数难分解问题:

已知大整数N是两个大素数的乘积。求大素数p和q使得N=p*q。

 密钥的产生

选择两个满足需求的大素数p和q,n=p*q计算φ(N) = (P-1)(Q-1)  其中φ(N)是n的欧拉函数。

选一个整数e,满足1<e<φ(N),且gcd(φ(N),e)=1,e 与 φ(n) 互质。gcd求最大公因数

取d,可以使得 ed 除以 φ(n) 的余数为 1
( 1<d<e,且e
d mod φ(n) = 1 ) 

以{e,n}为公开密钥,{d,n}为私密密钥。

加密:

c:密文
m:明文
加密:c = m^e mod N

 解密:

解密:m = c^d mod N

查看源图像

 RSA准确性证明:

证明 m  经加解密后还是  m,
 

 在实现RSA算法时,在提高指数运算速度上,可以运用膜重复的算法

 RSA平方乘算法

将e表示为二进制形式 bk bk-1 .。。。。。b0

 a为明文,b为e  

 ElGamal:

 基于离散对数难题的公钥密码体制:

离散对数问题:已知大素数p,y属于{1,2,。。。。,p-1}。g是膜p的本原元(即ord p(g)=p-1(g能被p^p-1整除)),由y,g,p求x使得y=g^X(modp)

1、ElGamal密钥生成
首先选择一个大素数p,g是模p的本原元α,再选取一个随机数x,1<x < p-1, 计算 y = g^x ( mod p ),则其公钥为 y,g,p。私钥是x,g,p。

的概念:若模n下a的阶d=φ (n),a就是n的(又称为原根)。

先是阶的概念:模19下7的阶为3(7^1=7mod19,7^2=11mod19,7^3=1mod19,7^4=7mod19....)

本原元并不唯一

2、ElGamal加密
(1)对于明文M加密,随机地选取一个整数k,2≤k≤p-2
(2)C1=g^k mod p
(3)C2=My^k mod p
(4)密文为(C1,C2)

3、ElGamal解密
由密文可得明文M,M=C2/(C1^d) mod p

缺点:密文长度是所对应的明文长度的两倍。

椭圆密码曲线密码ECC:

 安全性:基于椭圆曲线离散对数问题的困难性

已知椭圆曲线Ep(a,b),以及两个点Q R属于Ep(a,b),由R Q Ep(a,b)求K属于Z 使得R=KQ。

K=kG  [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数]
  不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。
  这就是椭圆曲线加密算法采用的难题。

  我们把点G称为基点(base point),

  k(k<n,n为基点g的阶)称为私有密钥(privte key),

  k称为公开密钥(public="" key)。<="" p="">

  现在我们描述一个利用椭圆曲线进行加密通信的过程:

  1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。
  2、用户A选择一个私有密钥k,并生成公开密钥K=kG。
  3、用户A将Ep(a,b)和点K,G传给用户B。
  4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。
  5、用户B计算点C1=M+rK;C2=rG。
  6、用户B将C1、C2传给用户A。
  7、用户A接到信息后,计算C1-kC2,结果就是点M。

  因为C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M再对点M进行解码就可以得到明文。

  在这个加密通信中,如果有一个偷窥者H ,他只能看到Ep(a,b)、K、G、C1、C2 而通过K、G 求k 或通过C2、G求r 都是相对困难的。因此,H无法得到A、B间传送的明文信息。

设私钥、公钥分别为k、K,即K = kG,其中G为G点。
 
公钥加密:
选择随机数r,将消息M生成密文C,该密文是一个点对,即:
C = {rG, M+rK},其中K为公钥
 
私钥解密:
M + rK - k(rG) = M + r(kG) - k(rG) = M
其中k、K分别为私钥、公钥。

摘抄于椭圆曲线


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值