项目
博客
文档
归档
资源链接
关于我
项目
博客
文档
归档
资源链接
关于我
加密算法及分类
2021-01-08
·
feng0926
·
转载
·
加密
·
本文共 923个字,预计阅读需要 4分钟。
### 加密算法分类 常见的`对称加密`算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。 常见的`非对称加密`算法:`RSA`、ECC(移动设备用)、`Diffie-Hellman`、El Gamal、`DSA(数字签名用)`。 常见的`Hash`算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。 ### RSA ` RSA算法`是第一个能同时`用于加密和数字签名`的算法,也易于理解和操作。RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为`公钥数据加密标准`。RSA算法基于一个十分简单的数论事实:`将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难`,因此可以将乘积公开作为加密密钥。 ### DSA Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST(美国国家标准局)作为`数字签名标准`(DigitalSignature Standard)。同样`属于公匙密码体系`,并使用`Secure Hash Algorithm(SHA/SHA-1)`作为中间单向计算算法。 ### DH Diffie-Hellman算法(D-H算法),`密钥一致协议`。是由公开密钥密码体制的奠基人Diffie和Hellman所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、`可以共享的密钥`。换句话说,就是由甲方产出`一对密钥(公钥、私钥)`,乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥(SecretKey)对数据加密。这样,在互通了本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯!该算法源于中国的`同余定理`——中国馀数定理。 ### ECDSA 椭圆曲线数字签名算法(ECDSA)设计的数学原理是基于椭圆曲线离散对数问题的难解性。EC点上离散对数的研究 现状表明: `所使用的ECDSA密钥至少需要192比特,才能保证有足够的中长期安全`。 ### RC2 RC2是由著名密码学家Ron Rivest设计的一种传统对称分组加密算法,它可作为`DES算法`的建议`替代算法`。它的 输入和输出都是`64`比特。密钥的长度是从8字节到128字节可变,但目前的实现是8字节(1998年)。 ### RC4 RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。RC4起初是用于保护商业机密的。但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了。`RC4`也被叫做`ARC4`(Alleged RC4——所谓的RC4),因为RSA从来就没有正式发布过这个算法。 ### RC RC5密码是1994由麻萨诸塞技术研究所的RonaldL.Rivest教授发明的。它是一种非常快速且简单的算法由块尺寸,轮数,和密钥长度参数化。这些参数能被调整以满足不同的安全目的,性能和出口能力。 合并的RSA数据安全已经归档了RC5密码的专利的申请和RC5,RC5-CBC,RC5-CBC-Pad,RC5-CTS并分类了各种变更。 ### DES `数据加密算法`(Data Encryption Algorithm,DEA)是一种`对称加密算法`,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,`自动取款机`(Automated Teller Machine,ATM)`都使用DEA`。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用。1977年被美国政府正式采纳。 还有DES2和DES3等算法。 ### 3DES 3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条64位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。 ### CAST CAST算法是由加拿大的Carlisle Adams(Entrust Technologies)和Stafford Tavares共同设计的。尽管CAST常常被看作算法,实际上它是`用于构造算法的设计过程`。结果算法(由CAST构造的算法)将是一个“CAST 算法”。CAST设计过程的细节已经向密码学界公布了,专家们可以评论和分析它,并且必须承受全部密码分析的尝试。各种各样的研究表明CAST比DES具有更强的抗攻击能力,而且在加密和解密上要更快一些。应用在Entrust产品线中的“CAST算法”比典型的DES算法大约快5-6倍。“CAST算法”是分组算法,它使用64位分组作为输入。“CAST算法”的设计允许可变的密钥长度,变化范围在40-256位。“CAST算法”使用的迭代轮数由设计者决定。报告已经显示一个仅仅使用8轮迭代的“CAST算法”比DES(使用16轮迭代)具有稍强一些的抗攻击能力。 CAST算法已经被美国和加拿大政府接受作为代替DES的后选算法之一。 ### IDEA IDEA(International Data Encryption Algorithm)是瑞士的James Massey,Xuejia Lai等人提出的加密算法,在密码学中属于`数据块加密算法`(Block Cipher)类。IDEA使用长度为128bit的密钥,数据块大小为64bit。从理论上讲,IDEA属于“强”加密算法,`至今还没有出现对该算法的有效攻击算法`。 ### SKIPJACK Skipjack分组加密算法是由美国国家安全局(NSA)从1985年开始设计,1990年完成评估,于1993年由美国政府正式对外宣布的,是"Capstone"(美国政府根据1987年国会通过的计算机安全法案所订立的长远计划)中的一个项目(另三个项目分别是`数字签名标准(DSA)`、`安全散列函数(SHA)`及`密钥交换方法`)。Skipjack算法曾经被列为“`机密”等级`。 ### AES 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。经过三轮的筛选,比利时Joan Daeman和VincetRijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对AES还有不同的看法,但总体来说,`AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活`等优点。 ### BLOWFISH BlowFish算法用来加密64Bit长度的字符串。 BlowFish算法使用两个“盒”——ungigned long pbox[18]和unsigned long sbox[4,256]。 BlowFish算法中,有一个核心加密函数:BF_En(后文详细介绍)。该函数输入64位信息,运算后, 以64位密文的形式输出。 用BlowFish算法加密信息,需要两个过程: 1.密钥预处理 2.信息加密 ### TWOFISH 在1972到1974年中,National Bureau of Standards (现在更名为National Institute of Standards andTecnology,缩写为NIST)首次公开征求一种标准的数据加密算法,结果产生了 DES ( Data Encryption Standard) 加密算法。 ### SHA SHA(即Secure Hash Algorlthm,安全散列算法)是一种常用的数据加密算法.它由美国国家标准与技术局(Natlonal Instituteof Standards and Technology)于1993年作为联邦信息处理标准公布(即第一代SHA算法——SHA-0)。在1995年和2002年.其改进版本SHA-1、SHA-2也分别正式公布(SHA-1和SHA-2具有比SHA-0更高的安全性)。SHA算法与MD5算法的设计原理类似.同样也按2blt数据块为单位来处理输入 SHA-1 SHA-1杂凑算法起初是针对DSA算法而设计的,其设计原理与Ron Rivest提出的MD2,MD4,尤其是MD5杂凑函数的设计原理类似。 ### ECC 2000年10月,国际密码学界在德国ESSEN召开了学术大会(ECC2000),在这次会议上,来自世界各国的密码学家、数学家证明了对ECC算法的最快破解效率是高于亚指数级的,而RSA算法的最快破解效率是亚指数级的。ECC2000的召开进一步从学术上奠定了ECC算法的安全性,极大的推动了它在世界各国的应用。 ### MD2 Rivest在1989年开发出MD2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,Rogier和Chauvaud发现如果忽略了检验将和MD2产生冲突。`MD2算法加密后结果是唯一的`-----即没有重复。 ### MD4 MD4是麻省理工学院教授Ronald Rivest于1990年设计的一种信息摘要算法。它是一种用来测试信息完整性的密码散列函数的实行。其摘要长度为128位。这个算法影响了后来的算法如MD5、SHA 家族和RIPEMD等。 ### MD5 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for ComputerScience和RSA Data Security Inc的Ronald L. Rivest开发出来,`经MD2、MD3和MD4发展而来`。 **HAMC** HAMC是密钥相关的哈希运算消息认证码(keyed-Hash Message Authentication Code),HMAC运算利用哈希算法,`以一个密钥和一个消息为输入`,生成一个消息摘要作为输出。HMAC引擎提供HMAC运算功能,发挥两方面的作用: (1)验证TPM接受的授权数据和认证数据;(2)确认TPM接受到的命令请求是已授权的请求,并且,命令在传送的过程中没有被改动过。 ### HMAC_SHA1 HMAC_SHA1(Hashed Message Authentication Code, Secure Hash Algorithm)是一种安全的基于加密hash函数和共享密钥的消息认证协议。它可以有效地防止数据在传输过程中被截获和篡改,维护了数据的完整性、可靠性和安全性。HMAC_SHA1消息认证机制的成功在于一个加密的hash函数、一个加密的随机密钥和一个安全的密钥交换机制。HMAC_SHA1 其实还是一种散列算法,只不过是用密钥来求取摘要值的散列算法。HMAC_SHA1算法在身份验证和数据完整性方面可以得到很好的应用,在目前网络安全也得到较好的实现 ### SCB2 SCB2 算法是国家密码管理局推出的一款对称分组密码算法,与以往的对称分组密码算法相比具有安全性高,加解密性能快等特点,因此目前 SCB2 算法成为国家主管部门在商用密码领域主力推广使用的对称分组密码算法。 SCB2 算法可以用于各种文件传输过程中进行加解密的安全文件传输系统。目前,该领域主要有使用县乡专用SCB2 算法的安全文件传输系统如: SJY117 和使用通用 SCB2 算法的安全文件传输系统 ### SSF33 国内的一些行业应用智能卡规范中,凡是涉及到CPU卡的大多会提到采用SSF33算法。但是目前在任何公开的资料中始终不能找到SSF33算法的详细内容,开始的时候大家都疑窦丛生,后来也就习以为常见怪不怪了。因为虽然规范中定义了SSF33算法,但是在实际应用中几乎都不使用这套算法。尤其是针对那些需要在国际间实现互联互通的领域,比如银行卡方面,从来就没用过SSF33算法。从本质上看,SSF33算法相当于3DES算法的一个扩展,但是在内部的具体实现方式,比如移位、迭代、替换、压缩和扩充是否完全符合DES算法则不得而知。 在加密领域也存在一些算法和密钥都不公开的模式,比如NXP公司的Mifare产品。不过这种不公开的算法很难保证安全,因为没有经过众多破解专家的分析和破译,事实也证明了这种不安全。 回过头来再看看我们的国产SSF33算法,假设它足够安全那就应该公开让大家去测评。否则,这种算法本身就没有多大的存在意义。换句话说,对于这种存在潜在风险的加密算法不应该在应用中采纳。 当然还有一种可能,就是我们的SSF33算法本身就是在DES算法基础上进行了简单的修改,安全性是没有问题的,不过根本算不上一个全新的算法,这样也不好公开,否则我们怎么面对国内外专家的质疑呢?