密码学:非对称加密法

参考

RSA加密算法详解及例题

初识公钥系统

加密解密

在这里插入图片描述

优点

一旦共享了公钥,Alice 就可以发送使用Bob的公钥加密过的消息给Bob,只有拥有Bob私钥的Bob本人才能对消息进行解密,而共享的公钥却可以被任何人获取,没有安全风险。

它减少了网络用户必须管理的密钥数,若是采用对称密码体制进行通信,那么用户必须为每一对通信连接保存独立的密钥,而采用非对称密码体制后,用户只需要记住他们自己的私钥,而可以从一些公共基础设施如 PKI处获取其他人的公钥。

结合

公钥加密系统与块加密法相比的一个主要问题是运算速度太慢了,而块加密法的主要问题在于:要在两个用户之间安全的传递对称密钥很难。因此可以把二者结合起来:假如Bob想给Alice发送一个大文件,可以先对文件进行AES加密,然后使用Alice的RSA公钥来加密AES密钥,这样Alice收到后可以利用自己的私钥解密,拿到AES密钥后进行对称解密,从而可以确保安全。

RSA

简介

RSA是一种非对称密码算法,它的安全性是基于大整数分解难题的。

密钥生成

  1. 随机找两个质数P和Q,PQ要保密且数字越大越安全。
  2. 计算乘积:N = P * Q。
  3. 计算乘积N的欧拉函数:f(N) = (P-1) * (Q-1)
  4. 随机选择一个整数e,要满足:1 < e < f(N),且e与 f(N) 互质。
  5. 计算 e 对于 f(N)的模反元素 d,即 d 需满足 1 < d < e,且 e * d mod f(N) = 1。
  6. 公钥为:(N, e),私钥为(N, d)。

安全性

由于 d 是私有的,只有 d 的拥有者才能解密。如果攻击者试图找出 d,就必须知道 P 和 Q,而唯一的方法是对 N 进行因子分解,如果P Q足够大的话,这个方法将是非常困难的。

ElGamal

简介

ElGamal公钥系统的安全性是基于求解离散对数问题的困难度的,与RSA相比,ElGamal算法即使是使用相同的私钥,对相同的明文进行加密,每次加密后得到的密文也各不相同,可以有效的防止重放攻击。

离散对数问题

给定一个素数 p,两个整数 a 和 b ,已知对于某些整数 x 有:b = a ^ x mod p成立,离散对数问题就是求解 x。

密钥生成

  1. 选择一个大素数p,通常建议 p-1 能被另外一个大素数整除.
  2. 计算出一个生成器数字 g,
  3. 选择一个小于 p-1 的随机数字 a,计算 b = g^a mod p。
  4. 公钥为:(p, g, b),私钥为:(p, a)

加解密

Bob要发送一条消息 m 给Alice,先找到Alice的公钥(p, g, b),然后选取一个随机密钥 k(k < p-1,且每个消息块需使用不同的数字k,否则不安全),Bob计算两个数,一个为C1 = g^k,另一个为C2 = m * b^k,将密文(C1, C2) 发给Alice即可。

Alice收到后,用自己的私钥 a 即可完成解密:
在这里插入图片描述

椭圆曲线加密法

椭圆曲线基础

椭圆曲线是由如下的方程定义的:
在这里插入图片描述
其中 p 为一个素数或 2 的幂,且满足 4 * a^3 + 27 * b^2 不等于 0。

典型的椭圆曲线如下图,曲线上坐标值为整数的点的数量是有限的。
在这里插入图片描述
定义一种在椭圆曲线上进行的加法运算:椭圆曲线上取两点 P 和 Q,直线PQ交椭圆曲线于点 R ,点 R 关于X轴的对称点 R’ 即为 P + Q 的运算结果,如图。
在这里插入图片描述

椭圆曲线离散对数问题

上文中的加法,当然也可被用于计算 P + P + P… = k P,如下分别是 2P 和 3P 的图像。
在这里插入图片描述
在这里插入图片描述
所谓椭圆曲线离散对数难题,即:给定两点 P 和 W ,已知 W = k * P,求 k 的值。

密钥生成

  1. 选择一条椭圆曲线及其上一点G。
  2. 选择一个保密数字k。
  3. 公钥为(G, kG),私钥为 k。

加解密

Bob给Alice发送消息时

  1. 将明文转换成数字m,并在曲线上找出一点P,满足P的横纵坐标差值为m。
  2. Bob选取一个随机数 r。
  3. 发送密文为 (r * G, P + r *kG)
  4. Alice收到后,用自己的私钥 k 乘以第一项,再用第二项减去这个结果,就可得到 P。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值