DES、AES、RSA、MD5加密算法辨析与应用场景

信息安全Cryptographic Techniques

对称加密算法

Data Encryption Standard(DES)

  • DES 是一种典型的块加密方法:将固定长度的明文通过一系列复杂的操作变成同样长度的密文,块的长度为64位。同时,DES 使用的**来自定义变换过程,因此算法认为只有持有加密所用的**的用户才能解密密文。 DES 的**表面上是64位的,实际有效**长度为56位,其余8位可以用于奇偶校验。

  • DES 现在已经不被视为一种安全的加密算法,主要原因是它使用的56位**过短。

  • 为了提供实用所需的安全性,可以使用 DES 的派生算法 3DES 来进行加密 (虽然3DES 也存在理论上的攻击方法)。

Advanced Encryption Standard(AES)

  • AES 在密码学中又称 Rijndael 加密法,用来替代原先的 DES,已经被多方分析且广泛使用。

  • AES 加密过程在一个称为 “体 (state)” 的44字节矩阵上进行,其初值是一个16字节的明文区块 (Rijndael 加密法因支持更大的区块,其矩阵行数可视情况增加)。加密时,各轮 AES 加密循环 (除最后一轮外) 均包含4个步骤。

    1. AddRoundKey ‐ 矩阵中的每一个字节都与该轮**(round key) 做 XOR 运算;每个子**由**生成方案产生。
    2. SubBytes ‐ 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
    3. ShiftRows ‐ 将矩阵中的每个横列进行循环式移位。
    4. MixColumns ‐ 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。最后一个加密循环中省略 MixColumns 步骤,而以另一个 AddRoundKey 取代。

非对称加密算法

Diffie‐Hellman Key Exchange Algorithm

  • Diffie‐Hellman **交换算法:加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系,即可在不直接传递**的情况下,完成解密,回避了直接传递**过程的风险

  • wiki

RSA

  • 1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他们三人姓氏开头字母命名,是一种获得广泛使用的非对称加密算法。

  • 对极大整数做因数分解的难度 (The Factoring Problem) 决定了 RSA 算法的可靠性。换言之,对一个极大整数做因数分解愈困难,RSA 算法就愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。目前看来找到这样的算法的可能性非常小。

DES、AES、RSA、MD5加密算法辨析与应用场景

DES、AES、RSA、MD5加密算法辨析与应用场景

DES、AES、RSA、MD5加密算法辨析与应用场景

散列(Hashing)算法

在信息安全领域,将源数据经过散列算法计算出数据指纹(data fingerprint),用于识别经过传播途径得到的数据是否有误 (通信误码或被窜改),以保证数据的来源真实性。

Message Digest(MD5)

MD5 即 Message‐Digest Algorithm 5 (信息‐摘要算法 5),是计算机广泛使用的散列算法之一,经常用于确保信息传输的完整性和一致性 。

  • MD5 输入不定长度信息,经过程序流程,生成四个32位数据,最后联合起来输出固定128bit长度的信息摘要。计算的基本过程为:求余、取余、调整长度、与链接变量
    进行循环运算、得出结果。
  • MD5 的前身有 MD2、MD3 和 MD4。

Secure Hash Algorithm(SHA-1、SHA-256)

  • SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值

  • wiki

应用场景

  • DES/AES加密速度快,适合大量数据,处理数据后可复原。

  • RSA

    1. RSA用于保密性时,就是公钥加密,私钥解密。 因为公钥是可以公开了, 那么任何人都可以使用公钥对信息进行加密,但是只有持有私钥的人才能正确解密。这样就保证了信息的保密性,因为只有私钥持有者才能正确解密。
    2. RSA用于认证性时,比如数字签名,即私钥持有者对信息进行签名,验证者可以根据公开的公钥进行验证签名是否正确和有效,即实现了认证性,以及不可抵赖性。
  • MD5/SHA-1用于完整性,确保信息在传输过程保持一致性;用于密码加密,数据库中不存储密码明文,而是存储其散列值,校验时比较散列值是否相同

组合使用

  • 采用非对称加密算法管理对称算法的**,然后用对称加密算法加密数据,使用散列函数进行数据摘要

附:

  • Confidentiality:保密性原则要求做到只有发送人和授权接收人才能访问消息的内容。如果非法人员能够访问消息内容,则破坏了保密性原则。
  • Integrity:完整性原则确保消息内容在发送方发出后和到达接收方之间不会发生改变,即保持一致性。
  • Authenticity:认证机制用于证明身份。认证过程保证对电子消息或文档来源的正确标示。
  • Non‐repudiation:不可抵赖原则确保发送消息的用户不能对其发送消息的行为进行抵赖。