密码算法
密码算法 | 种类 | 密钥长度 | 分组长度 | 对应加密轮数 | 杂凑值长度 |
ZUC | 对称 | 128 | |||
SM4 | 对称 | 128 | 128 | 32 | |
AES | 对称 | 128/192/256 | 128 | 10/12/14 | |
DES | 对称 | 56(64) | 64 | 16 | |
RSA | 非对称 | 2048… | |||
SM2 | 非对称 | 256 | |||
SM9 | 非对称 | 256 | |||
SM3 | 杂凑 | 512 | 256 | ||
MD5 | 杂凑 | 512 | 128 | ||
SHA-1 | 杂凑 | 512 | 160 | ||
SHA-2 | 杂凑 | 256 | 224/256/384/512 | ||
SHA-3 | 杂凑 | R | 224/256/384/512 |
1、“种类”填写对称、公钥或杂凑
2、对称中的分组密码填写分组长度、密钥长度和对应加密轮数
3、对称中的序列密码填写密钥长度
4、公钥填写密钥长度(安全性保证至少需要的私钥长度)
5、杂凑填写分组长度(消息分块长度)、杂凑值长度
6、以上内容有多种的都列出
算法是密码技术的核心。
常见的密码算法分为三大类别。
常见密码算法分类
对称密码算法加密过程与解密过程使用相同的或容易互相推导得出的密钥,即加密和解密两方的密钥是“对称”的。
对称密码算法常用于门禁系统、金融系统等。
分类:
序列密码(流密码):ZUC、SNOW、RC4等
序列密码:将密钥和初始向量(IV)作为输入,通过密钥流生成算法输出密钥流,将明文序列和密钥流进行异或,得到密文序列。
特性/参数:
①特点执行速度通常很快
②对计算资源的占用较少
应用场景:
①常用于功耗或计算能力受限的系统中,如嵌入式系统、移动终端等
②可用于实时性要求要较高的场景,如语音通话、视频通过等
序列密码和分组密码的加密流程对比
分组密码(块密码):SM4、DES、TDEA(3DES)、AES等
分组密码:先对明文消息根据分组大小进行分组,再将明文分组、密钥和初始向量(有的情况下)一起作为输入,通过分组加密算法直接输出密文序列。
特性/参数:
①同一密钥,同一加密算法,分组加密,分组长度固定
②应用最为广泛、影响最大的一种密码体制
③主要提供数据保密性
④加解密速度较快,安全性好
⑤分组长度:能够抵御选择明文攻击
⑥密钥长度:能够抵御穷举攻击
工作模式:
电话本模式:ECB
密文分组链接模式:CBC
密文反馈模式:CFB
输出反馈模式:OFB
计数器模式:CTR
分组链接模式:BC
带非线性函数上网输出反馈模式:OFBNLF
常见分组密码工作模式流程:
1)ECB模式
ECB模式加解密流程
2)CBC模式
CBC模式加解密流程
3)CTR模式
CTR模式加解密流程
常见分组密码工作模式的优缺点及用途:
/ | 优点 | 缺点 | 特性/应用 |
ECB | 加密简单 可并行计算(加解密) 错误不传递 | 不能隐藏数据模式 易重放攻击 | 需要并行加密的应用 单个数据的安全传输 |
CBC | 不容易重放攻击(同样的明文组不会被加密成相同的密文组) 每次加密IV必须重新生成 解密支持并行计算 | 无法并行计算,且消息必须被填充到块大小的整数倍 错误会传播 | 生成消息鉴别码,用于检验消息完整性、验证消息源的真实性 |
CTR | 可并行计算,加解密结构相同,不需填充 对包含错误的密文解密时,只有对应明文的相应位会出错 | 易重放攻击 | 实现并发分组,效率高,安全性也有保障 |
²初始向量变化或发送消息不一致的情况下,能抵抗重放攻击
年份:
2011年9月 第53次第三代合作伙伴计划(3GPP)系统架构组会议,以ZUC算法为核心的加密算法128-EEA3、完整性保护算法128ELA3与美国AES、欧洲SNOW 3G共同成为4G移动通信密码算法国际标准
特点/参数:
①能有效抵抗目前已知的攻击方法
②算法速度快,软硬件实现性能较好
③种子密钥128比特、初始向量128比特、32比特位宽密钥流【位宽是额定的】
应用场景:
目前我国正在推动256比特版本的ZUC算法进入5G通信安全标准
SM4算法主要用于数据加密。
年份:
2006年11月 公布SM4算法
2012年3月 发布为密码行业标准
2016年8月 发布为国标GB/T32907-2016《信息安全技术SM4分组密码算法》
特性/参数:
①分组长度为128比特,密钥长度128比特,加密轮数32
②安全,可以抵抗差分分析、线性分析,代数攻击等密码分析方法
③算法设计简沽,加解密速度块(高效)、资源重用,128bit密钥长度的SM4算法安全性上等同于AES-128,但SM4实现更为简单
应用场景:
①SM4常用于政府系统的数据传输加密
②无需进行密钥交换的场景,如内部系统,事先就可以直接确定密钥
③防止明文传输数据被窃取的场景
④加解密速度快,适合数据内容比较大的加密场景
国外场景的对称密码算法主要包括:DES、TDES(3DES)、AES
AES算法(又称Rijndael算法):替代DES并被广泛应用。
特性/参数:
AES算法基本特性
AES-128、AES-192、AES-256加解密思路一致,密钥扩展算法的过程不同,加密和解密的轮数适当增加,加解密操作一致。
公钥密码算法又称非对称密码算法,用于加密和解密,也用于数字签名,解决对称算法中密钥管理难题。
公钥密码模型包括:
公钥加密算法:公钥加密数据,私钥解密
对比对称加密算法,计算复杂度高,加密速度慢,用于短数据加密
²公钥加密算法加密和解密使用不同密钥。其中加密的公钥可以公开,解密的私钥不可公开。
数字签名算法:私钥对消息签名,公钥验签
保持数据完整性、签名者身份真实性、签名行为的不可否认性
²为提高效率和安全性,数字签名算法一般先使用密码杂凑算法对原始消息进行杂凑运算,再对得到的消息进行数字签名。
SM2公钥密码算法包括:
SM2数字签名算法:
包括数字签名生成算法和验证算法,满足多种密码应用中的身份鉴别和数据完整性、信息来源真实性。
含密钥生成、签名生成、签名验证三个过程。
SM2密钥交换协议:
又称密钥协商,常用在对称密码算法中。
SM2公钥加密算法
SM2公钥密码算法年份:
2010年 SM2椭圆曲线公钥密码算法公布
2012年 SM2算法发布为密码行业标准
2016年 SM2算法发布为国家标准
SM2公钥密码算法特性/参数:
①密文单向性
②明文、密文不可区分性
③密文不可延展性
④密钥空间256比特,私钥长度256比特,公钥长度512比特
对比RSA算法:
①安全性高,高于RSA2048,约等于RSA3072
②密钥短,SM2私钥长度256Bit,RSA至少2048Bit
③私钥产生简单,风险较小
④签名速度快,同等安全强度,速度远超RSA算法
SM2公钥密码算法应用场景:
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)
SM9标识密码算法包括:
SM9数字签名算法:
用椭圆曲线对实现的基于标识的数字签名算法包括数字签名生成算法和验证算法。【标识:唯一标识】
签名者用自身私钥对数据产生数字签名,验证发送数据的完整性、来源的真实性和数据发送者的身份。
SM9密钥交换协议:
用户双方通过可选项实现密钥确认。
SM9密码密钥封装机制和加密算法:
SM9标识密码算法年份:
2016年 SM9算法发布为密码行业标准
SM9标识密码算法特性/参数:
①256比特的密钥空间
②安全性远高于同类算法
③安全性和嵌入次数有关,次数越多计算越难,相对速率降低
④公钥管理不需要分配数字证书
应用场景:
大型会议或大型运动会或大型活动相关的身份识别。
RSA算法基于大整数因子分解难题设计,应用最为广泛的公钥密码算法。
RSA算法的公钥相当两个素数的合集。
RSA算法的私钥相当两个独立的素数。
RSA算法包括:RSA-1024、RSA-2048、RSA-3072
RSA公钥密码算法年份:
1992年 RSA算法纳入国际电信联盟制定的X.509系列标准
RSA公钥密码算法特性/参数:
①安全需要达到RSA2048及以上,低于则不安全
②密钥长度比ECC算法(如SM2)长,计算效率慢数倍
RSA公钥密码算法应用场景:
①HTTPS单向认证
②HTTPS双向认证
密码杂凑算法(散列算法/HASH算法)是将任意长度的输入消息进行压缩,输出固定长度的消息摘要或杂凑值。
主要过程表示为: h=H(M)
h为处理后的杂凑值;M为输入消息;H为杂凑算法。
①抗原像攻击(单向性),杂凑函数单向计算,无法通过杂凑值反推输入消息。
②抗第二原像攻击(弱抗碰撞性),已知一个消息M1,找另一个M2进行计算,使两个输入消息的杂凑值相同是困难的,即输入消息的任何微小变化都会使杂凑值不同。
③强抗碰撞性,找到两个输入消息M1、M2(不相同),得到的杂凑值是不同的。
常见的结构为M-D结构、海绵结构。其中采用M-D结构的密码算法有MD5、SHA-1、SHA-2、SM3;采用海绵结构的有SHA-3。
M-D结构即将输入消息进行填充分组,压缩函数通过初始向量进行初始化,本组与上一组消息结果产生中间值,最后一个压缩函数的结果就是最终的杂凑值。
M-D结构的安全性取决于压缩函数的安全性。
M-D结构示意图:
M-D结构
密码杂凑算法主要基于安全特性检验数据完整性,但单独使用/在不安全的通道下不能保证数据完整性。
此处引入HMAC概念,利用杂凑算法将一个密钥和消息作为输入,生成一个消息摘要作为输出,生成的杂凑值为MAC,这样的杂凑算法称为带密钥的杂凑算法,即HMAC。可用作数据完整性校验,可以进行消息鉴别、保证消息源的真实性。IPSec/SSL协议中均用到HMAC。
HMCA计算时调用了两次完整的杂凑函数。
杂凑算法也与公钥算法一同使用进行数字签名。
结构:M-D结构。
年份:
2012年 成为行业标准 《GM/T 0004-2012 SM3密码杂凑算法》
2016年 成为国家标准 《GB/T 32905-2016 信息安全技术 SM3密码杂凑算法》
2018年10月 成为国际标准
特点/参数:
①将任意长消息进行压缩,输出成256比特的杂凑值。
②SM3算法速率高,能够跨平台高效实现。
③对比SHA256,在安全性和效率上具有优势,保证安全前提下基本相等。
应用场景:商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,如安全应用、网络协议等。
结构:M-D结构。
年份:
2010年 美国软件工程学会(SEI)认为MD5算法已被破解不在适用。
特点/参数:
①最终输出为128比特的消息杂凑。
②散列函数
③已被破解,不安全的算法
应用场景:一般用于数字签名(数字指纹)、完整性保护、安全认证、口令保护等。
结构:
SHA-1、SHA-2均为M-D结构,SHA-3为海绵结构。
年份:
SHA-1 2005年 王小云教授首次给出了SHA-1的碰撞攻击,复杂度为2^69比特。
2017年 国家秘密管理局发布使用SHA-1密码算法的风险警示。
SHA-2 2001年 NSA和NIST提出的标准算法。
特性/参数:
SHA-2包括:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256
SHA-3包括:SHA3-224、SHA3-256、SHA3-384、SHA3-512。
SHA-1:160比特的消息摘要
SHA-2:支持224、256、384、512比特长度的输出
SHA系列均为单向散列函数
应用场景:用户密码保护(密码的散列值校验)、接口验签、文件完整性校验等。
算法名称 | 算法作用 | 长度 | 主要用途 | 备注 |
SM1算法 | 对称分组密码算法 | 数据分组长度为 128 比特 | 存在形式: | 算法不公开 |
SM2算法 | 椭圆曲线公钥密码算法 | 私钥密钥长度为 256 比特 | 组成: | |
SM3算法 | 密码杂凑算法 | 杂凑输出长度为 256 比特 | 用途: HMAC 可用作数据完整性检验,检验数据是否被非授权修改;也可用作消息鉴别,保证消息源的真实性 | |
SM4算法 | 对称分组密码算法 | 数据分组长度为 128 比特 | 数据加解密 | |
SM7算法 | 对称分组密码算法 | 数据分组长度为 128 比特 | 适用: 应用: | 算法不公开 |
SM9算法 | 标识密码公钥密码算法 | 私钥密钥长度为 256 比特 | 组成: | |
ZUC算法 | 对称序列密码算法 | 算法密钥长度为 128 比特 初始向量长度为 128 比特 | 数据保密性保护、完整性保护 无线网络控制设备之间的无线链路上通信信令和数据的加密和解密 无线网络控制设备之间的无线链路上通信信令和数据的完整性校验,并对信令源进行鉴别。其 主要技术手段是利用完整性算法 128-EIA3 产生 MAC, 通过对 MAC 进行验证,实现对消息的完整性校验 |