密码学工具2——公钥密码(非对称加密算法最全版)

密钥配送问题

在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送秘钥。用于解密的密钥必须被配送给接收者,这就导致了密钥配送问题(见后文概念介绍)


密钥配送问题

根据之前文章介绍过的对称加密算法,加解密双方需要使用同一个密码,明文加密后,发送方需要将密文与密钥一起发送给接收者,接收者才可以正确解密。但是,在发送过程中,窃听者会监听到密文和秘钥,则也可以进行解密,造成信息泄露,如何保护密钥不被窃听者会监听到,安全传输密钥的问题就是密钥配送问题。


现有解决密钥配送问题的解决方法有以下几种:

  • 事先共享密钥
  • 密钥分配中心
  • Diffie-Hellman密钥交换(加密双方不是交换秘钥,而是通过交换一些信息,生成相同的秘钥)
  • 公钥密码解决

以上四种方法,前三种都是在使用对称加密算法,密钥的保护仍有被攻击的风险。而第四种则是发明了公钥密码,如果使用公钥密码,则无需向接收者用于解密的密钥,这样就解决了密钥配送的问题,因此公钥密码是密码学上一个伟大的发明。

非对称加密算法

公钥密密码也称非对称加密算法(后文均使用非对称加密),该方法采用公钥(public key)私钥(private key)两种不同的密码来进行加解密。公钥和私钥一一对应的,一对公钥和私钥统称为秘钥对(key pair)。公钥是从私钥中提取产生公开给所有人的,私钥是不可以被别人知道的。如果使用公钥对数据进行加密,那么只有对应的私钥才能解密,反之亦然。

非对称加密示意如下图所示,信息的发送者使用和信息接收者使用不同的密钥:

信息的接收者会设计出一套加密和解密规则,加密和解密使用两个不同的密钥。接收者把加密密钥先传递给发送者,发送者用这套密钥对信息进行加密,但是这套密钥不能对已加密的信息进行解密,需要接收者用专门的解密密钥对信息进行解密,这样即使加密密钥被泄密也不会导致信息被破解。

非对称加密算法的优点:安全性高、算法强度负复杂;

非对称加密算法的缺点:公钥认证问题(无法确认公钥的来源合法性以及数据的完整性、加解密耗时长、速度慢,只适合对少量数据进行加密;

非对称加密常见算法包括:

  • RSA:RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名。
  • ECC:Elliptic Curve Cryptography是ECC的全称表示基于椭圆曲线的加密算法。

非对称加密的应用户场景如下:

  • 信息加密
  • 登录认证
  • 数字签名
  • 数字证书

RSA算法

RSA,Rivesrt-Shamir-Adleman,算法是一种公钥密码算法,名字是由三个开发者的姓氏首字母组合而成。

RSA算法原理简析

RSA算法中,明文秘钥和密文都是数字,RSA的加密流程可以用下列公式表示,RSA的密文是对明文的E次方求mod N的结果。


mod运算

mod是除法求余的运算


根据RSA的公式可知,E(Encryption,加密)和N(Number)是RSA加密的秘钥,E和N的组合就是公钥

从RSA加密的公式可以推出RSA解密的公式,对密文的D次方求mod N就可以得到明文。

解密公式中的N和加密公式中的N是相同的,D(Decryption,解密)和N的组合就是RSA的解密密钥,所以DN的组合就是私钥。

可以使用下图来表示加解密的流程:

N,L,E,D的求解

N的求解公式:

p,q是靠软件提供一个512比特的随机数,再用数学方法判断这个数是不是质数,准备好两个512比特质数后,相乘得到N。

L,过程数,计算公式如下:

L用于生成密钥对,lcm(X,Y)是计算最小公倍数的表示形式。

E的求解公式:

E是1大,比L小,E和L的最大公约数是1,即E和L互质,E的生成是也是使用随机数模块生成一个在1<E<L范围内的数,通过数学方法(欧几里得辗转相除法)判断是都满足gcd(E,L)=1,满足即求得E。

D的求解公式:

求解D需要由E和L或得,满足上述要求,即可获得D。、

RSA算法分析

RSA算法优点

  • 安全性高:RSA算法的安全性基于大数分解的困难性,目前尚未发现有效的攻击方法。
  • 签名和加密功能一体化:RSA算法既可以用于加密,也可以用于数字签名。
  • 广泛应用:RSA算法被广泛应用于电子商务、数字证书、VPN等领域。

RSA算法缺点

  • 计算复杂度高:RSA算法的加密和解密速度较慢,尤其是对于较长的密钥长度。
  • 密钥管理困难:RSA算法需要管理大素数和质因数,密钥管理相对复杂。

RSA算法被用于以下场景:

  • 加密通信:RSA算法可以用于加密通信中的密钥交换和数据加密。
  • 数字签名:RSA算法可以用于生成和验证数字签名,确保数据的完整性和真实性。
  • 数字证书:RSA算法可以用于生成和验证数字证书,提供身份认证和安全传输。

椭圆曲线算法

椭圆曲线算法,Elliptic Curve Cryptography,也称ECC算法,是指利用椭圆曲线来实现的密码技术,与RSA算法相比,ECC算法使用更短的密钥长度来实现相同的安全性,ECC算法可以实现以下功能:

  • 基于椭圆曲线的公钥密码
  • 基于椭圆曲线的数字签名
  • 基于椭圆曲线的密钥交换
椭圆曲线算法原理简析

椭圆曲线算法的原理有以下三个步骤组成

1.选择椭圆曲线

椭圆曲线可用下列方程式来表示

下图是一个典型的椭圆曲线图形

椭圆曲线具备水平对称性,且不垂直椭圆曲线的直线与椭圆曲线的交点总是不超过三个。

2.生成秘钥对

选择一个随机数k,一般是256比特的整数,作为ECC加密算法的私钥(private key),基于k和椭圆曲线上的基点G,计算点P=kG,P即是公钥(public key)。在给定G和随机数k的情况下,得到P=kG是很困难的,所以要找到合适k和P形成秘钥对。

3.加密和解密

使用公钥进行加密,假设明文M,选择随机数r,使用公钥P计算密文C={rG,rP+M}(+号表示椭圆曲线上的加法),获取密文后使用私钥S计算明文M=rP+M-k(rG)=M+r(kG)-k(rG)(+/-号表示椭圆曲线上的加减法)。

椭圆曲线算法分析

ECC算法优点

  • 密钥长度短:ECC算法相比RSA算法,可以使用更短的密钥长度来实现相同的安全性。这对于资源受限的设备和网络通信来说非常重要。
  • 快速运算:ECC算法的加密和解密速度较快,尤其是对于较短的密钥长度。
  • 小存储空间:ECC算法所需的存储空间较小,适用于存储资源受限的设备。

ECC算法缺点

  • 算法复杂度高:ECC算法的实现相对复杂,需要高效的椭圆曲线运算。
  • 知识门槛高:ECC算法的理论基础相对较深,对于初学者来说较难理解和实现。

ECC算法被用于以下场景:

  • 无线通信:ECC算法可以用于无线通信中的密钥交换和数据加密,保护通信的安全性。
  • 移动支付:ECC算法可以用于移动支付中的数字签名和加密,确保支付的安全性和可靠性。
  • 物联网设备:ECC算法可以用于物联网设备的身份认证和数据传输的加密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值