各加密算法比较(非对称加密篇)

各加密算法比较(非对称加密篇)
Nanoyep非对称加密算法
定义:
非对称加密算法使用一对密钥(公钥私钥)进行加密或解密操作的一种加密算法,公钥用于加密或验证数字签名,而私钥用于解密或生成数字签名。因此非对称加密也称为公钥加密,它解决了对称加密的密钥分发问题,但通常速度较慢且计算量大常用于https通信中的SSL/TLS握手阶段(handshake)。
还是不懂可以参考这个视频
RSA
RSA是第一个同时支持数字签名和加密的非对称加密算法。在此之前的算法要么只支持数字签名要么只支持加密,而RSA的出现极大加快了运算速度保证了安全性,是目前最流行的非对称加密算法。
数学原理
给定两个大素数
给定
RSA 正确性证明(欧拉公式):
中国剩余定理优化
注:实际签名解密/验签加密常结合中国剩余定理减少运算量
攻击方式
侧信道攻击
时序攻击
最初由 Paul Kocher 与1996年提出
原理:RSA的核心操作取决于私钥指数d的大小,在二进制取幂法中对于d每一位都进行平方操作由此可知对0只有一次平方操作而对1即有平方操作又有乘法操作因此处理1的数据要长于0。在高精度计时的情况下可以推测d的模位置。
解决方法:使用openssl(推荐)/boringssl/libressl的RSA实现来统一加密时间
功耗分析
SQA:
原理:观测功耗轨迹曲线,∵芯片在处理平方操作和乘法操作时功耗不同,可能直接读出私钥
DPA:
概念:通过收集数千条或更多功耗轨迹曲线通过统计学分析私钥
原理(步骤):计算密钥相关中间值;对每条功耗轨迹进行分析根据假设的字节计算中间值按其最高位(或某一位)是0或1将轨迹分为两组;计算两组平均功耗曲线并计算差分曲线;如果密钥推测正确则分组正确会在加密操作中在差分曲线产生峰值,错误则分组随机差分曲线平坦最后进行统计
预防措施:使用openssl/boringssl的RSA实现统一功耗减少功耗攻击可能
电磁辐射攻击
通过采集设备泄露的电磁辐射信号,可以提供比功耗攻击更局部的信息有时信噪比更高(推得私钥更准确)
预防措施:加入物理屏蔽电磁辐射手段在现代高安全设备中常见(部分个人主机也支持)能有效防御电磁辐射攻击
故障攻击
原理:在进行加密/验签操作时施加物理干扰诱导芯片计算错误结果比较正确结果并进行统计学分析可以推得私钥
经典案例: Bellcore攻击,在使用剩余定理签名时诱导一个CRT组件出错则可以通过 错误签名^e-m与n的最大公约数得到私钥彻底攻破RSA
解决方法:使用openssl/boringssl/libressl等权威ssl实现
目前地位:是世界上最流行的非对称加密算法但TLS1.3已弃用RSA多国也开始宣布在2035年前淘汰RSA算法
ECDSA
注:由于ed25519与ecdsa有比较大的区别所以在ECC中单独列出
定义:是一个基于椭圆曲线的加密算法本身虽支持加密但一般不使用(除OpenPGP等),常用于生成用于对称加密的密钥
特点:①ecdsa加密/数字签名速度快但由于椭圆曲线的复杂性在解密/验签时速度甚至不如RSA。
②由于椭圆曲线的离散性和生成私钥的速度快使其具备前端安全性即在每次TLS通信时都会生成一次临时密钥即使私钥泄露也不会影响所有信息仅会泄露本次会话信息
数学原理
椭圆曲线是一个
其中
正确性证明
攻击方式
侧信道攻击
时序攻击
简单功耗分析:
步骤:ECDSA中核心的椭圆曲线点乘 [k]G 通常使用双倍-相加算法。如果算法的控制流依赖于 k 的比特位,功耗分析可以直接读出这些比特
差分功耗分析:
步骤:由于,如果恢复了 k,那么可以计算私钥:
因此,一次签名中 k 的泄漏就可能导致整个私钥 d 的永久泄露。
故障攻击
1.在计算 [k]G 时注入故障,使得到的 R’ 错误,从而导致 r’ 错误,得到错误签名 (r’, s’)。
2.利用正确的签名 (r, s) 和错误的签名 (r’, s’),结合已知的故障模型,可以建立方程求解私钥 d
侧信道攻击实际案例:SM2硬件实现与侧信道安全性研究
目前地位:是世界上较为流行的加密算法用以较高安全需求情景,替代RSA算法
Ed25519
定义:是一个基于扭曲爱德华曲线:
其中
特点:
1.高安全短密钥(通常只有128位),相当于RSA3072位,设计时考虑了侧信道攻击使其具备优秀的抗侧信道能力
2.高性能性,ed25519签名/验签速度远快于RSA与ECDSA
3.确定性签名,不依赖随机数而是使用哈希函数作为’nounce’签名,避免了RPG/CSPRNG带来的安全隐患
数学原理
其中可以双等价于蒙哥马利曲线
正确性证明
生成私钥
数字签名
验签
当前地位:ed25519目前被广泛应用于tls1.3/区块链/ssh等领域中,未来将取代RSA与ECDSA



