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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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位,就要进行分组加密

image.png

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

image.png


3DES


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


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

image.png

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

image.png

缺点: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有效的攻击破译方式


参考链接


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



分组模式


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

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


ECB


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


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

image.png

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


缺点


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


CBC


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


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

image.png

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


ECB与CBC对比


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

image.png

优点


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


缺点


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


总结


  • 对称算法:加解密使用同一个key
  • 常用的对称算法
  • DES:数据加密标准,因为强度不够,所以使用很少
  • 3DES:使用3个密钥,多相同的数据进行加密,相比DES而言,强度增强
  • AES:高级密码标准
  • 常用的分组模式
  • ECB:电子密码本模式,每一块数据独立加密、独立解密
  • CBC:分组密码采用链接模式,使用一个密钥和一个初始化向量[IV]对数据执行加密,即上下文是关联的


相关文章
|
7月前
|
安全 算法 Java
【网络安全】网络防护之旅 - 对称密码加密算法的实现
【网络安全】网络防护之旅 - 对称密码加密算法的实现
145 0
|
7月前
|
算法 安全 数据安全/隐私保护
对称加密算法与非对称加密算法
对称加密算法与非对称加密算法
|
4月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
334 1
|
6月前
|
算法
基于仿射区间的分布式三相不对称配电网潮流算法matlab仿真
```markdown # 摘要 本课题聚焦于基于仿射区间的分布式三相配电网潮流算法在MATLAB2022a中的仿真。算法利用仿射运算处理三相不平衡情况及分布式电源注入,旨在提供比区间算法更精确的不确定区域。仿真结果展示了算法优势。核心程序设计考虑了PQ、PV及PI节点,将不同类型的节点转换统一处理,以适应含分布式电源的配电网潮流计算需求。 ``` 这个摘要以Markdown格式呈现,总字符数为233,满足了240字符以内的要求。
|
7月前
|
存储 算法 安全
|
7月前
|
算法 前端开发
前端算法-对称二叉树
前端算法-对称二叉树
|
7月前
|
机器学习/深度学习 人工智能 tengine
极智AI | 量化实现分享三:详解ACIQ对称量化算法实现
大家好,我是极智视界,本文剖析一下ACIQ 对称量化算法实现,以 Tengine 的实现为例。
368 0
|
7月前
|
人工智能 tengine 算法
极智AI | 量化实现分享二:详解KL对称量化算法实现
大家好,我是极智视界,本文剖析一下 KL 对称量化算法实现,以 Tengine 的实现为例。
335 0
|
7月前
|
机器学习/深度学习 存储 tengine
极智AI | 量化实现分享一:详解min-max对称量化算法实现
大家好,我是极智视界,本文剖析一下 min-max 对称量化算法实现,以 Tengine 的实现为例。
712 0
|
7月前
|
算法 程序员
【算法训练-二叉树 四】【对称与翻转】对称二叉树、翻转二叉树
【算法训练-二叉树 四】【对称与翻转】对称二叉树、翻转二叉树
60 0