iOS逆向 08:对称算法(上)

本文主要介绍对称算法的基本概念

对称加密

对称加密

  • 加密、解密使用的是同一个key,即使用同一个密钥加密的方式

对称加密过程

  • 明文通过密钥加密得到密文

  • 密文通过密钥解密得到明文

对称加密优点

  • 加密计算量小

  • 速度快

  • 适合对大数据进行加密的场景

对称加密的缺点

  • 密钥传输问题:因为加解密使用的是同一个密钥,所以如何安全的把密钥传输到解密者手里是一个关键。在实际应用中,一般是客户端想服务器请求对称加密的密钥,而且密钥还需要使用非对称加密后再传输

  • 密钥管理问题:因为每个用户都会有一个单独的密钥,所以随着用户的增多,密钥的管理也是一个问题。

常见的对称加密算法

在上节iOS逆向 07:Hash算法中我们利用了Hash算法加密,还可以使用对称加密,对称加密主要有以下?DES、3DES、 AES等,下面会分别进行介绍

DES

DES (Data Encryption Standard) 是 1977 年美国联邦信息处理标准(FIPS)中所采用的一种对称密码(FIPS 46-3)。DES 一直以来被美国以及其他国家的*和银行所使用

DES 是一种把?64 位明文加密成 64 位密文的对称加密算法。它的密钥长度为?64 比特,但是除去每 7 个二进制位会设置一个用于错误检测的位以外,实际上密钥为 56 比特。

  • DES 会以 64 个二进制为一个分组进行加密。DES一次性只能加密64位明文,如果明文超过了64位,就要进行分组加密

    ?

    iOS逆向 08:对称算法(上)

    DES加密

  • DES解密也是64位分组解密,解密密钥实质也是 56 位。

    ?

    iOS逆向 08:对称算法(上)

    DES解密

3DES

三重 DES (triple-DES) 是为了增加 DES 强度,所以将 DES 重复 3 次得到的一种算法。也称为 TDEA (Triple Data Encryption Algorithm),通常缩写为 3DES

  • 加密:进行3次DES加密(即?加密-解密-加密),DES的密钥长度为56位,所以3DES的密钥长度为 56 * 3 = 168 位

    iOS逆向 08:对称算法(上)

    image

    ?

  • 解密:解密的过程正好与加密过程相反,按照密钥的逆序解密(即?解密-加密-解密)

    iOS逆向 08:对称算法(上)

    image

    ?

缺点:3DES 由于处理速度不高,除了兼容之前的 DES 以外,目前基本不再使用它了

AES

AES (Advanced Encrytion Standard) 是取代前任标准 DES 而成为新标准的一种对称密码算法。在全世界的范围内征集 AES 加密算法,最终于 2000 年从候选中选出了?Rijndael 算法,确定它为新的?AES。

Rijndael 的分组长度和密钥长度可以分别以 32 位比特为单位在 128 比特到 256 比特的范围内进行选择。不过在 AES 的规范中,分组长度被固定在?128 比特,密钥长度只有?128、192 和 256?比特三种。

加密:AES的加密是由多个轮组成,主要分为4轮

  • 1、SubBytes 字节变换

  • 2、ShiftRows 移行操作

  • 3、MixColumns 混行操作

  • 4、AddRoundKey 异或运算

解密:AES的解密是加密的逆过程。

所以,在?Rijndael 加密过程中,每一轮处理的顺序为:

  • SubBytes -> ShiftRows -> MixColumns -> AddRoundKey

在?Rijndael 解密过程中,每一轮处理的顺序为:

  • AddRoundKey -> InvMixColumns -> InvShiftRows -> InvSubBytes

解密过程中除了第一步和加密完全一样,其他三步都为加密的逆过程。

优点

  • 加密效率更高

  • 目前还没有针对AES有效的***破译方式

参考链接

注:对称算法这里也只是简单介绍,更为详细的了解可以参考以下链接

  • 第二篇:对称加密及AES加密算法

  • 漫游对称加密算法

分组模式

由于DES和AES一次加密都只能加密固定长度的明文,如果需要加密任意长度的明文,就需要对分组密码进行迭代。其中分组密码的迭代方式就称为分组密码的模式

常用的分组模式主要有ECB、CBC,下面来分别进行介绍

ECB

ECB?模式全称“Electronic CodeBook”模式,在 ECB 模式中,将明文分组加密之后的结果直接就是密文分组,中间不做任何的变换。

简单来说,ECB就是一个电子密码本模式,每一块数据,独立加密,独立解密,如果其中一块丢失,并不会影响其他数据块。如下图所示

iOS逆向 08:对称算法(上)

ECB模式

?

ECB是最基本的加密模式,即通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放***,一般情况下很少用

缺点

由于ECB的加密和解密都非常直接,所以可以根据密文中存在多少种重复的组合就能以此推测明文,来破译密码。所以ECB模式存在安全风险,使用的人很少。

CBC

CBC?模式的全称是 Cipher Block Chaining 模式,密文分组链接模式。名字中也展示它的实质,像链条一样相互链接在一起。使用一个密钥和一个初始化向量[IV]对数据执行加密

简单理解就是,同ECB一样,也是一块一块的加密,但是后一块数据的加密与前一块数据室友关联的,解密也是如此,如下所示

iOS逆向 08:对称算法(上)

CBC模式

?

明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前引用最广泛的模式,CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)

ECB与CBC对比

  • ECB模式只进行了加密

  • CBC模式则是在加密之前进行了一次 XOR(即异或),这样就完美了克服了 ECB 的缺点了

    iOS逆向 08:对称算法(上)

    ECB与CBC对比

    ?

优点

CBC模式采用链接模式,可以有效的保证密文的完整性,如果一个数据块在传递是丢失还是改变,后面的数据将无法正常解密

缺点

一个比特位的缺失就会导致整个密文无法解析。这算是 CBC 链式的一个“小缺点”。相对ECB而言,更安全

总结

  • 对称算法:加解密使用同一个key

  • 常用的对称算法

    • DES:数据加密标准,因为强度不够,所以使用很少

    • 3DES:使用3个密钥,多相同的数据进行加密,相比DES而言,强度增强

    • AES:高级密码标准

  • 常用的分组模式

    • ECB:电子密码本模式,每一块数据独立加密、独立解密

    • CBC:分组密码采用链接模式,使用一个密钥和一个初始化向量[IV]对数据执行加密,即上下文是关联的

?

?

iOS逆向 08:对称算法(上)

上一篇:苹果Mac电池显示未充电,如何查看 Mac 电池健康?


下一篇:【云栖号案例 | 交通&物流】方向物流上云 等保三级合规架构节省部署时间和成本