加密基础知识
为什么要进行加密
数据加密是为了保证 数据存储 和 传输中 的保密性、完整性、及进行身份验证。
密码学的发展史
古典密码学
置换密码加密法
置换密码(Transposition Technique): 将明文字母互相换位,打乱顺序。
栅栏加密法
栅栏加密法(Rail Fence):就是把要加密的明文分成N个一组,然后把每组纵向连起来,形成一段无规律的话。
代换密码
代换密码(Substitution Technique) : 将明文的每个字母用密文字母或符号替代。
维吉尼亚密码
比如我们协定
第一行是密钥字母列
第一列是明文字母行
密钥为: redio
现代密码学
百科
现代密码学 研究信息从发端到收端的安全传输和安全存储,是研究“知己知彼”的一门科学。其核心是密码编码学和密码分析学。前者致力于建立难以被敌方或对手攻破的安全密码体制,即“知己”;后者则力图破译敌方或对手已有的密码体制,即“知彼”。
基本准则
基本原则(Kerckhoff原): 安全的加密算法建立在算法的公开不用想文明和秘钥的安全
密码体制的安全性
无条件安全
即使破译者提供了无穷的资源,依然无法破译,则该密码体制是无条件安全的,也称为完善保密性(PerfectSecrecy)。
可证明安全性
该方法是将密码算法的安全性归结为某个数学难题,而这个数学难题被证明在目前求解是困难的。
计算安全性
指在目前的计算资源条件下,破译该密码算法所需要的努力超出了破译者的破译能力(诸如时间、空间、资金等资源)。该密码算法的安全是暂时的,也称为实际安全性(PracticalSecrecy)。
现代密码破译(密码分析)
穷举法
密码分析者试图试遍所有的明文或密钥来进行破译。
– 穷举明文-主要用于公钥密码技术及数字签名。
– 穷举密文-增加秘钥长度、添加随机冗余信息进行预防。
统计分析法
密码分析者通过分析密文、明文和密钥的统计规律来达到破译密码技术。
– 使明文的统计特性与密文的统计特性不一样来预防。
密码体制分析法
根据所掌握的明文、密文的有关信息,通过数学求解的方法找到相应的加解密算法。
– 选用具有坚实数学基础和足够复杂的加解密算法来预防。
密码体制
明文P(Plaintext)或 M(message):消息的初始形式
密文C(Cipher Text):加密后的形式
秘钥K(Key):加密或解密算法用的随机数
加密E(Encryption):C=Ek( P),E为加密算法
解密D(Decryption):P=Dk( C),D为解密算法
满足:P=D(E( P))
国际标准加密算法
对称性秘钥加密
加密密钥、解密密钥可以相互推算得出,通常是相同的
DES
Data Encryption Standard 数据加密标准
简介
由IBM公司研发,并于1977年定为美国联邦信息加密标准。
它是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位(每个第8位作为奇偶校验,共64位),加密解密用同一算法。
安全性
DES现在已经不是一种安全的加密算法,主要因为它使用的56位密钥过短。。
1999年1月,distributed.net与电子前哨基金会合作,在22小时15分钟内即公开破解了一个DES密钥。
为了提升安全性,派生了3DES。但现在它们已经被AES取代。
AES
Advanced Encryption Standard 高级加密标准
简介
1997年,美国国家标准与技术研究所NIST开始征集新一代数据加密标准来接任即将退役的DES。2000年10月,由比利时密码学家JoanDaemen和VincentRijmen发明的Rijndael密码算法当选成为新一代数据加密标准——AES(Advanced Encryption Standard)。2001年11月26日,NIST正式公布高级加密标准,并于2002年5月26日正式生效。
分组密码算法,分组长度是128位,密钥长度为128,192和256位;
安全性
速度比3DES快,安全性至少和3DES一样。
目标:能抗击所有的已知攻击;在广大范围平台上的快速和代码简洁;
IDEA
International Data Encryption Algorithm 国际数据加密算法
简介
由瑞士联邦理工学院Xuejia Lai和James Massey的在1990年提出的
以64位分组为单位,使用128位密钥,加密数据。
安全性
比DES更加安全,最近几年提出的用来替代DES的许多算法中的一种。
密码强度包括分组长度、密钥长度、混淆(Confusion)和扩散(Diffusion)。
方便硬件和软件实现:通过由超大规模集成电路(VLSI)进行的硬件实现的设计目标是取得高速度,而软件实现则有灵活和低价的优点。
非对称性秘钥加密
加密、解密密钥不相同,不能推算。通信模型1-数据加密
加密、解密密钥不相同,不能推算。通信模型2-数字签名
RSA
简介
1978年,R.L.Rivest,A.Shamir和L.Adleman实现了RSA公钥密码学,此后成为了公钥密码学中杰出的代表。
两个相关密钥中任何一个都可以用作加密而让另一个用作解密(数据加密与数据签名)
SA算法的安全性依赖于大整数分解因子的难度。。
安全性
1999年底,有人把512位的整数分解因子,512位的RSA秘钥被破解。。
就目前的计算机水平,用1024位的密钥是安全的,2048位是绝对安全的。
私钥的长度和安全性是保证RSA加密算法安全的重要手段。
DSA
Digital Signature Algorithm 签名算法
简介
Schnorr和ElGamal签名算法的变种
验证时计算 w = s^(-1)mod q
安全性
DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。
DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。
单向散列算法
单向散列算法,又称hash函数,Hash函数(也称杂凑函数或杂凑算法)
将任意长度的二进制值映射为较短的固定长度的二进制值,这个较短的固定长度的二进制值称为哈希值
MD5
Message Digest Algorithm 信息摘要
简介
MD系列单向散列算法是Ron Rivest设计的,包括MD2、MD4和MD5。
以变长的信息为输入,把其压缩成一个定长128位(即32位16进制)的散列值输出。例如:2db3f62a87dfd43714394a0d971060ea
安全性
MD5的安全性弱点在于其压缩函数的冲突已经被找到。1995年有论文指出,花费 1,000万美元,设计寻找冲突的特制硬件设备,平均在24天内可以找出一个MD5的冲突。
主要破解手段:使用彩虹表记录明文与密文之间的对应关系,根据获得的密文从彩虹表查找其对应的明文。
SHA
Secure Hash Algorithm,安全哈希算法
简介
是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种。SHA-1,SHA-224和SHA-256适用于长度不超过264二进制位的消息。SHA-384和SHA-512适用于长度不超过2128二进制位的消息。
安全性
2005年,密码学家就证明SHA-1的破解速度比预期提高了2000倍。随着计算机发展,计算速度的加快,SHA-1算法的安全性逐年降低,现在逐渐由安全强度更高的SHA-2(SHA-256、HSA-512)替代它。
国密
非对称密钥加密 - SM2椭圆曲线算法
SM2算法就是ECC椭圆曲线密码机制,包括:
– 数字签名算法(包括数字签名生成算法和验证算法)。
– 密钥交换协议
– 以及公钥加密算法(包括加密算法和解密算法)。
在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。
SM2推荐了一条256位的曲线作为标准曲线。
单向散列算法 - SM3杂凑算法
SM3算法适用于商用密码应用中的:
– 数字签名和验证。
– 消息认证码的生成与验证
– 以及随机数的生成。
在SM2,SM9标准中使用。
此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值。
其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。
对称密钥加密 - SM4分组密码算法
SM4算法主要用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。
加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反。
此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。
总结
常用加密工具及资源
工具类
– SM.js
书籍
– 《Java加密与解密的艺术》
– 《Communication Theory of Secrecy Systems》
————————————————
版权声明:本文为CSDN博主「Solution.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40540178/article/details/109852913