对称密码算法(Symmetric-key Algorithm)
对称算法 是指加密秘钥和解密秘钥相同的密码算法,又称为 秘密秘钥算法 或 单密钥算法 。
该算法又分为 分组密码算法(Block cipher) 和 流密码算法(Stream cipher) 。
- 分组密码算法
- 又称块加密算法
- 加密步骤一:将明文拆分为 N 个固定长度的明文块
- 加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块
- 加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文
- 流密码算法
- 又称序列密码算法
- 加密:每次只加密一位或一字节明文
- 解密:每次只解密一位或一字节密文
常见的分组密码算法包括 AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2 等;
常见的流密码算法包括 RC4 等。
- AES:目前安全强度较高、应用范围较广的对称加密算法
- SM1:国密,采用硬件实现
- SM4:国密,可使用软件实现
- DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法
这里 我们以AES为例子,详细讲解一下里面的数学原理,让你们了解一下计算机中一个简单的加密算法背后到底做了一些什么东西。(AES是我们当时课本上需要手动计算的例子,当时计算一个简单的123加密 都可能需要花费十几分钟到半个小时,可见其数学复杂度)
上面是详细的流程图,简单梳理一下上面的流程
1.把明文按照128bit拆分成若干个明文块。
2.按照选择的填充方式来填充最后一个明文块。
3.每一个明文块利用AES加密器和密钥,加密成密文块。
4.拼接所有的密文块,成为最终的密文结果。
具体分成多少轮呢?
初始轮(Initial Round) 1次
普通轮(Rounds) N次
最终轮(Final Round) 1次
而AES还有AES128,AES192,AES256三种key长度的区分,这里每种方式对应的加密轮数不一样,分别为AES128:10轮AES192:12轮AES256:14轮。
其中的加密方式 又有两种不同的区别,一种是ECB(Electronic Code Book 电子密码本) 模式
ECB 模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。但是这种早就被淘汰了,我们现在广泛使用的是另外一种,CBC(Cipher Block Chaining 加密块链) 模式。
这种模式的加密方式相对来说更加复杂和安全,在n轮加密中,每一次加密都需要使用前面一次加密的结果来进行下一次的加密,如果其中有一步计算错误,后面全部都将错误。
这个就是我们应用于互联网的一个相对来说比较简单的加密方式,这里面详细的计算逻辑我这里就不再一一讲述,里面涉及到大量的数学与计算机知识(S盒,逆S盒,行位移,列混淆(列混淆子层是AES算法中最为复杂的部分))有想要了解的可以去读一些《密码学概论》这本书,这也是我们当时的教材,这里只是讲解流程。AES只是计算机加密方式中比较简单的一种,有感兴趣的同学可以去了解一下这些算法,你会了解到数学的无穷奥秘。