1.3 密码发展
词条 | 内容 |
创新的动力 | 信息系统的应用需求和攻击威胁 |
发展三个阶段 | 古典密码、机械密码、现代密码 |
古典密码 | 代换密码,采用一个代换表将一段明文变换成一段密文。若代换表只有一个,是单表代换;代换表多余一个,是多表代换。 置换密码,特殊的代换密码,不改变明文字母,只改变它们的位置。 |
仿射密码 | 单表代换密码,乘法密码和加法密码,凯撒密码是加法密码。凯撒密码密钥取值范围只有25,很容易被穷举破译。 |
多表代换 | 以多个代换表依次对明文消息的字母进行代换。维吉尼亚密码是典型代表(16世纪法国外交官Blaise de Vigenere的名字命名)-d 代换表的数目,周期代换密码。 |
多字母代换 | 凯撒和维吉尼亚密码都是单字母代换,每次对多于1个字母代换就是多字母代换。有利于隐藏字母的自然频度,从而更有利于抵抗统计分析。 |
置换密码 | 列置换密码和周期置换密码。栅栏密码,明文按列写入,密文按行输出。可以一个置换也可以多个置换。(1861-1865美国南北战争) |
密码分析学 | 研究加密消息的破译或消息的伪造。 |
古典密码缺陷 | 密钥空间不大 统计特征存在缺陷 重合指数法容易确定维吉尼亚密钥长度,再用攻击单表代换的方法确定密钥字 用唯密攻击法分析单表和多表代换密码是可行的。古典密码不安全。 |
机械密码 | 设计出一些机械和电动设备,自动实现加密和解密计算,代表是恩尼格玛密码机。20世纪20年代商用,德国人亚瑟谢尔比乌斯和理查德里特发明。被德国改造使用于二战 |
恩尼格玛密码 | 大约1亿不同的密码表换组合,约定转子方向、位置和连线版的连线状态。本质是只用多表代换密码系统,单表数目庞大而且在加密过程中不断变化,简单的频率分析法失效。 |
现代密码 | 香农《保密系统的通信理论》《通信的数学理论》,DES发布以及公钥密码思想的提出 |
评价密码系统的标准 | 5条,保密度、密钥量、加密操作的复杂性、误差传播和消息扩展。 |
一次一密 | 香农提出的理想密码模型,最安全的密码是1bit密钥保护1bit明文,现实中很难找到。 |
DES出现和停用 | IBM Horst Feistel设计的一种分组密码,密钥长度56bit,成为美国数据加密标准DES。1998年7月破解,1998年12月决定不再使用。 |
AES算法出现 | 用来取代DES算法。1997年,分组长度128bit,密钥支持128、192、256bit。Rijndael算法胜出成为AES算法。基于的数学结构是有限域GF(2^8)。可以抵抗差分分析、线性分析、代数攻击等分析方法。 |
公钥密码出现 | 1976年Diffle和Hellman发表《密码学的新方向》,首次证明公钥密码是可能的,提出了一种密钥协商的创造性方法(基于离散对数求解的困难问题) |
RSA出现 | 1977年Rivest、Shamir、Adelman提出RSA算法,基于大整数因子分解。2003年RSA-576破解,2005年RSA-640破解,2009年RSA-768破解。需要2048bit的长度才能保证安全 |
Elgamal | 1985年提出,基于离散对数问题 |
椭圆曲线公钥密码 | 1985年提出,基于椭圆曲线上离散对数问题 |
密码杂凑算法 | 将任意长度的消息压缩成某一固定长度的消息摘要,可用于数字签名、完整性保护、安全认证、口令保护等。 |
杂凑算法破解 | 2004年王小云教授成功找到MD4、MD5算法的碰撞,之后不久SHA-1也被同样破解。从而引发NIST对SHA-2的担忧。2007年NIST开始征集新算法,2012年10月Keccak算法成为SHA-3算法。 |
商用密码管理条例 | 1999年发布,后根据《密码法》修改。指导我国商用密码在信息安全领域的应用。 |
SM4 | 2012成为行业标准,2016成为国家标准,2018年11月纳入ISO/IEC标准正文,2021年6月正式成为国际标准。 |
ZUC | 2011年ZUC与AES、SNOW 3G成为4G移动通信密码算法国际标准。(首次国际标准) 推动ZUC-256进入5G通信安全标准。 |
SM3 | 2010年公布,12年行业标准,16年国家标准,18年10月成为ISO/IEC国际标准。 |
SM2 | 2012年行业标准,16年国家标准。 |
SM9 | 标识密码,2016年行业标准,2018年SM2、SM9成为国际标准。 |
量子攻击 | Shor算法,在多项式时间内求解大整数因子分解和离散对数问题,RSA、Elgamal危险 Grover算法,穷举算法的平方级提升,如AES-128降为2^64复杂度。 |
后量子密码算法 | 即可以抵抗量子攻击的公钥算法:基于格、基于多变量、基于编码、基于杂凑函数 |
基于格的密码 | 格最早作为分析工具出现,利用LLL格基约化算法分析Knapsack、RSA和NTRU算法。 1996开始研究,2005年Regev提出LWE算法(在密钥和密文尺寸上得到极大改善)。Chrome基于RIng-LWE问题的抗量子密钥交换算法,微软公布其开发基于RIng-LWE问题的密钥交换算法的源代码。 |
基于多变量 | 基于求解有限域上随机产生的非线性多变量多项式方程组的困难问题。效率较高,但密钥量大,主要用于签名。 |
基于编码 | 依赖于随机线性码译码的困难性。密钥量比较大,且大多是基于编码的公钥密码使用Goppa码,导致密钥长度太长效率很低。 |
基于杂凑函数 | 1979年Lamport提出依赖于杂凑函数的单向性,比较容易分析。之后40年改进,XMSS形成RFC8391,SPHINCS+和Gravity-Sphincs都基于XMSS设计。 |
量子密钥分发(OKD) | 量子通信为通信双方建立安全的会话密钥,依赖于物理原理。实际上利用量子信道和经典信道来完成,前者传递量子信息,后者分发设备之间交互的数据和信令。仍需要通过经典密码技术来鉴别通信双方的身份。不是替代品而是补充。 |
密钥攻击 | 获得密钥和随机数(通过侧信道、后门等手段) |
抵抗密钥攻击 | 密钥泄露容忍(KLR),在密钥泄露的情况下保证密码方案的安全性。-针对侧信道攻击 黑盒模型-物理可观测模型,辅助手段对抗密钥泄露攻击,无法真正保证安全性。 白盒密码-通过分析二进制代码及其运行的内存区域来提取密钥。使用密码混淆技术将密码和密码算法融合在一起,从而无法提取。 |
密文计算 | 支持密文状态下的同态操作,即可以在密文状态下对数据进行计算和处理。 RSA和ELgamal具备乘法同态,Paillier支持加法同态。2009年Gentry基于理想格上的全同态密码方案。(引入噪声,当所需的乘法数量较少时,接近实用化) |
极限性能 | 对时延、吞吐率、功耗和成本进行取舍 |
轻量级对称密码 | 适用于计算能力、能量供应、存储空间和通信带宽等资源受限。如PRINCE、SIMON、SPECK,分组长度32,48,64,80,96bit,补充空白 |
轻量级公钥密码 | 传统公钥密码运算负荷大。格密码提供新思路,但格密码密文和密钥大小远大于经典公钥密码算法。 |
密码校验函数 | 包括单向鉴别机制和双向鉴别机制 采用诸如时间戳、序号和随机数等时变参数,目的是防止先前有效的鉴别信息在超过时效后又被接收的问题。
|
1.4 密码算法
词条 | 内容 |
对称密码 | 序列密码(流密码),SNOW、RC4、ZUC 分组密码(块密码),DES、3DES、AES、SM4 |
序列密码 | 将密钥和IV作为输入,通过密钥流生产算法输出密钥流(拓展密钥序列),明文序列和密钥流异或得到密文。速度快,资源占用少,实时性要求高。 |
初始向量 | 每次加密IV都必须重新生成,IV的引入使得对同一明文使用相同的密钥进行加密,得到不同的密文。IV可以随密文一起在非安全通道传输,即使IV被截获也不影响安全性 |
分组密码的工作模式 | 7种类:电码本ECB、密文分组链接CBC、密文反馈CFB、输出反馈OFB、计数器CTR、分组链接BC、带非线性函数的输出反馈OFBNLF |
带鉴别功能的加密模式 | 可鉴别的加密模式AEM,包括CCM、GCM |
ZUC序列密码 | 提供保密性和完整性保护。密钥128bit,由种子密钥128bit和IV128bit产生32bit密钥流。2011年9月,128-EEA#和128-EIA3成为国际标准。ZUC-256版本,256bit密钥和184bit初始向量,产生32、64、128bit的认证标签 |
ZUC结构 | 16级线性反馈移位寄存器LFSR(上层),比特重组BR(中层),非线性函数F(下层)-非线性部件,确保ZUC算法安全性的关键。S盒的非线性性质与密码算法整体强度有着直接关系。 |
ZUC安全性 | 引入素数域运算、比特重组、最优扩散的线性变换。很高的理论安全性,抵抗攻击,较高的安全冗余,软/硬实现性能都比较好 |
SM4性能 | 资源重用,密钥扩展和加密过程类似;加解密过程相同,适合软件更适合硬件实现;适合32位处理器。 |
SM4安全性 | 抵抗差分分析、线性分析和代数攻击,安全性与AES-128相当 |
AES | Rijndael算法,128bit分组,密钥128/192/256,加密轮数10/12/14,加密操作一样 |
公钥密码算法 | 非对称密码算法,包括公钥加密、私钥签名2种用途。 |
公钥加密算法 | 公钥加密速度一般比对称密码慢很多,计算复杂度高,主要用于短数据加密 |
数字签名算法 | 确认数据完整性、签名者身份的真实性、签名行为的不可否认性。为提升效率和安全性,先密码杂凑算法对原始消息进行杂凑运算,在对消息摘要数字签名。 |
椭圆曲线密码 | 1985年Neal Koblitz和Victor Miller提出,ECC。两个基本运算:加点和倍点,用来构造点乘算法。 |
SM2 | 定义在256比特素域上,包含数字签名算法,密钥交换算法和公钥加密算法三部分。 |
SM2数字签名算法 | P=dG,P作为公钥-512bit,d作为密钥-256bit(密码变量)。签名者选取随机数k,一些情况下k可能要重选。签名长度512bit |
SM2密钥交换 | 可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(会话密钥)。在密钥协商完毕后还可以进行密钥确认,确认二者协商到的密钥时一致的。 |
SM2公钥加密 | 选取随机数l。GB/T 32918.3-2016,密文长度=明文长度+96byte |
SM2加密算法安全性 | 单向性,没有私钥无法获得明文;具备不可区分性,对于给定的密文不能区分出是从哪个明文得到的;密文具备不可延展性(第三方无法在不解密密文的前提下,通过简单扩展密文来构造出新的合法密文。 |
SM2优势(比较RSA) | 安全性高(相当RSA3072),密钥短256 vs 3071,私钥产生简单(256位随机数即可),签名速度快。 |
标识密码 | IBC标识密码在PKI基础上发展而来,具备PKI的技术优点,不需要大量交换数字证书,故易于部署和使用。1984年Shamir提出。 每个人的公钥就是他的身份标识(如Email),用户不需要通过第三方保证其公钥来源的真实性。由于标识密码系统的密钥生成中心可计算出用户私钥,需要保证密钥生成中心完全值得信任。 |
SM9基本技术 | 使用256bit的BN曲线,算法的应用和管理不需要数字证书、证书库或密钥库。 |
SM9签名算法 | 私钥由密钥生成中心通过主私钥和签名者的标识结合产生,验证者用签名者的标识生成其公钥。 |
SM9密钥交换协议 | 经2次或可选3次信息传递过程,计算获得一个由双方共同决定的共享秘密密钥。 |
SM9密钥封装机制和加密 | 产生(利用标识产生共享密钥)和加密(目标客户的公钥)一个秘密密钥给目标客户。 |
SM9的安全性和效率 | 避免弱椭圆曲线的选取问题,能抵抗常见的针对椭圆曲线的攻击方式,安全性高于同类算法。安全性还与嵌入次数有关,次数越多越安全。目前SM9采用嵌入次数适中且达到安全性标准的椭圆曲线。 |
RSA | 基于大整数因子分解,公钥(e,n), 私钥(d,p,q)。其中公钥e取值很小不超过32bit,d的长度接近于n,故用e加密/验证要比用d解密/签名计算速度快很多。P,q是强素数,且足够大; p、q的差不能太小;p-1、q-1的最大公因数应该很小。 |
RSA安全性 | RSA-1024不再推荐使用,至少RSA-2048。 |
密码杂凑算法 | 散列算法、哈希算法、杂凑算法、杂凑函数。抗原像攻击(单向性),抗第二原像攻击(弱抗碰撞性),强抗碰撞性(找到两个消息,得到相同的杂凑值很困难) |
杂凑算法构造 | Merkle-Damgard结构-MD构造,(MD5、SHA-1、SHA-2,SM3),安全性取决于压缩函数的安全性。 海绵构造,SHA-3 |
密码杂凑算法的应用 | 直接应用就是产生消息摘要,单独使用不能保证数据的完整性(消息和杂凑值同时修改)。HMAC带密钥的杂凑算法,和密钥一起使用。 |
MD5 | MIT的Rivest提出,512分组(16个32bit),输出128bit消息摘要。2005年后不安全 |
SHA-1 | 1995年NSA和NIST提出,基于MD4,与MD5相似。输入长度小于2^64bit,输出160bit消息摘要。2017年找到两个不同内容但消息摘要完全一样的实例,SHA-1不再安全 |
SHA-2 | 2001年NSA和NIST提出,包含SHA-224\256\384\512四种输出,六种算法,其中256和512是主要算法。目前SHA-2是安全的。 |
SHA-3 | 海绵结构,包括SHA3-224\256\384\512、SHAKE128、SHAKE256。 |