【AES加密专题】1.AES的原理详解和加密过程

目录

一、什么是加密?

1.加密算法的定义和基本概念

2.对称加密算法

原理:

常见算法:

3.非对称加密算法

原理:

常见算法:

二、AES

[1.AES(advanced encryption standard 高级加密标准)介绍](#1.AES(advanced encryption standard 高级加密标准)介绍)

2.对称加密算法与非对称加密算法的区别

3.AES的基本结构

4.加密流程


一、什么是加密?

1.加密算法的定义和基本概念

加密算法是一种数学函数,用于将原始信息(明文)转换为密文,使得未经授权的用户难以理解信息的内容。这个过程需要一个密钥,密钥是一个控制加密和解密过程的参数。加密算法主要分为对称加密算法和非对称加密算法。

2.对称加密算法

原理:

对称加密算法使用相同的密钥进行加密和解密。发送方和接收方必须共享这个密钥。例如,当用户A要发送一条消息给用户B时,他们需要事先协商好一个密钥。用户A使用这个密钥对消息进行加密,然后将密文发送给用户B。用户B收到密文后,使用相同的密钥进行解密,得到原始消息。

常见算法:

  • DES ( 数据加密标准 **):**它是一种比较早期的对称加密算法。DES采用64位的分组长度,但是其中有效密钥长度为56位。由于密钥长度相对较短,现在已经不太安全,容易被暴力破解。例如,在早期的银行系统数据加密中曾经使用DES算法,但随着计算机计算能力的提升,其安全性受到挑战。

  • AES ( 高级加密标准 **):**这是目前应用非常广泛的对称加密算法。AES支持128位、192位和256位的密钥长度。它的分组长度为128位。例如,在无线网络安全协议(如WPA2)、磁盘加密(如WindowsBitLocker)等众多领域都有应用。AES的安全性较高,在合理的时间内很难通过暴力破解获取密钥。

  • 优点和缺点:

    • 优点:加密和解密速度快,适用于大量数据的加密。因为使用相同的密钥,算法实现相对简单。

    • 缺点:密钥管理困难。由于发送方和接收方需要共享密钥,在多个用户的网络环境中,密钥的分发和存储容易出现安全问题。如果密钥泄露,整个加密系统就会失效。

3.非对称加密算法

原理:

非对称加密算法使用一对密钥,即公钥和私钥。公钥可以公开,任何人都可以获取。私钥则由所有者保密。当用户A要发送消息给用户B时,用户A使用用户B公布的公钥对消息进行加密,然后发送给用户B。用户B收到密文后,使用自己的私钥进行解密。反过来,用户B也可以使用自己的私钥对消息签名,用户A可以使用用户B的公钥验证签名的真实性。

常见算法:

  • RSA **:**这是最著名的非对称加密算法之一。

  • ECC ( 椭圆曲线密码学 **):**ECC是基于椭圆曲线离散对数问题的非对称加密算法。

  • 优点和缺点:

    • 优点:密钥管理方便,公钥可以公开分发,不需要像对称加密那样担心密钥的安全分发问题。并且可以用于数字签名,确保消息的来源和完整性。

    • 缺点:加密和解密速度相对较慢,尤其是对于较长的消息或大量数据,计算成本较高。

二、AES

1.AES(advanced encryption standard 高级加密标准)介绍

  • 明文P

    • 没有经过加密的数据。
  • 秘钥K

    • 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。
  • AES加密函数

    • 设AES加密函数为E,则C=E(K,P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。
  • 密文C

    • 经加密函数处理后的数据
  • AES解密函数

    • 设AES解密函数为D,则P=D(K,C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

2.对称加密算法与非对称加密算法的区别

  • 对称加密算法

    • 加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。
  • 非对称加密算法

    • 加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal。

3.AES的基本结构

AES的基本结构是一个分组加密的框架,通常分为若干"轮"(round)来处理数据。AES的加密过程由初始轮、多个主轮和最后一个轮组成,每一轮执行特定的数据处理步骤,确保密文的安全性和混淆性。

在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所示:

密钥长度是指在加密算法中使用的密钥的位数或字节数。它是加密强度的重要因素,通常以比(bit)为单位表示。密钥长度直接影响到加密算法的安全性和计算复杂度。

分组长度是指分组加密算法在处理数据时,每次处理的固定长度数据块的大小,通常以字节(Bytes)或比特(Bits)为单位。

加密轮数(Number of Rounds)指的是对每个数据分组执行加密处理的重复次数。每一轮加密都是对数据进行一系列特定的操作,包括字节替换 (SubBytes)、行移位 (ShiftRows)、列混淆 (MixColumns),以及与密钥的轮密钥加(AddRoundKey)运算。轮数的增加使得AES更具抗攻击性。

4.加密流程

a. 密钥扩展(Key Expansion)

  • 将输入的密钥通过一个密钥扩展算法,生成多个轮密钥(Round Keys)。

  • AES-128 会生成11个轮密钥(原密钥+10轮加密密钥)。

b. 初始轮操作(Initial Round)

  • AddRoundKey:将明文和第一个轮密钥进行按位异或(XOR)操作。

c. 主要轮操作( Main Rounds)

  • 每一轮包括以下四个步骤:

    使用S-Box(置换盒)对每个字节进行非线性替换,提高算法的安全性。

    • SubBytes(字节替换)
  • ShiftRows(行移位)

对状态矩阵的每一行按固定规则进行循环左移。

  • MixColumns(列混合)

对状态矩阵的每一列进行线性变换,增强列间的混淆性。

  • AddRoundKey(轮密钥加)

将状态矩阵与当前轮的轮密钥按位异或(XOR)。

d. 最终轮操作(Final Round)

  • 和主要轮类似,但省略MixColumns(列混合)步骤。

下一篇:

【AES加密专题】2.AES头文件详解-CSDN博客

相关推荐
yunson_Liu8 小时前
jenkins更新了gitlab后出现报错
运维·gitlab·jenkins
iconball8 小时前
个人用云计算学习笔记 --19 (MariaDB服务器)
linux·运维·笔记·学习·云计算
Lynnxiaowen8 小时前
今天我们开始学习python3编程之python基础
linux·运维·python·学习
skywalk81638 小时前
term.everything‌ 通过终端运行任意GUI应用程序
运维
破坏的艺术9 小时前
DNS 加密协议对比:DoT、DoH、DoQ
网络·dns
dragoooon349 小时前
[Linux系统编程——Lesson6.进程切换与调度]
linux·运维·服务器
feifeigo1239 小时前
MATLAB的无线传感器网络(WSN)算法仿真
网络·算法·matlab
waves浪游9 小时前
Linux基本指令(下)
linux·运维·服务器
2401_831501739 小时前
Linux之lvm存储卷管理篇
运维