数据的安全传输 --- 密码学
什么是密码学?--->是一门提供信息安全和信息保护的学科,包含对信息的加密、验证、签名等等。
本质上 ---> 应用数学。
当前使用的加解密算法 --- 近现代加密算法
古典密码学、近代密码学、现代密码学加密技术发展史
古典加密算法 --- 遵循原则是算法保密原则。
现代加密算法 --- 使用密钥来解决古典加密算法的问题。
密钥 --- 就是一个任意数值,在加密和解密的过程中都会使用的数值。
算法的安全性都是基于密钥的安全性,而不是基于算法的安全性。--->意味着算法可公开,也可以被分析。
近现代加密算法 --- 遵循的原则是算法公开,密钥保密原则。
对称加密算法\非对称加密算法
对称加密算法 --- 传统密码算法 --- 秘密密钥算法 --- 单钥算法
特点:发送者和接收者具备相同的密钥信息。即用于加密,也用于解密。
对称加密算法安全性取决于是否有未经授权的第三方获取到该密钥信息。
特别注意:使用对称秘钥加密的双方,需要在交换加密数据之前,先安全的交换密钥信息。
密钥解释
密钥的核心 --- 双向函数
运算逻辑 ---> 异或算法
异或算法 ---> 一种不进位的加法,针对二进制运算。
相同为0,不同为1。
输入a,根据函数,得到B
输入B,根据函数,得到a
11001110 = 输入
10001010 = 密钥
01000100 = 密文
10001010 = 密钥
11001110 = 明文对称加密算法分类
流加密
一种简单的顺序加密技术--->异或算法。
特点:基于明文流进行加密,密钥必须与明文流长度相同。
密钥传输方式:
带外传输 --- U盘
带内传输 --- 流量行为传输
RC4加密算法是典型的流加密算法,因为无线通信网络中使用的就是RC4算法。
分组加密 --- 块加密算法
分组加密 --- 多应用于网络加密,是对称加密体系中发展最为完善的密码体系。
逻辑 ---> 先将明文切分为一个个固定大小的块,再对每个块进行加密。块长度就是分组长度。
分组长度需要权衡安全性和实用性,一般设置为56位;目前分组密码多选择128位作为算法的分组
长度。
实现的效果--->使用密钥Key将一个固定的块转换为等长度的另一个块。
1. 如何分组?如果明文并非是块长度的整倍数,是否需要填充?如何填充?--->填充算法
2. 分组之后,如何将各个分组组合起来?--->分组模式
3. 如何对每一个块进行加解密?--->分组加密算法
分组加密流程:
1、将明文切分为一个个固定长度的块,假设为16字节。
2、对每一个块进行单独加密,加密使用密钥进行。
且该过程是可逆的---异或算法
块加密不会改变块的长度
3、将加密后的块拼接起来,得到最终的密钥字节数组填充算法
使用分组加密算法时,对明文进行分割时,对明文信息进行填充的,使其长度变为块长度的整倍
数。
规则:
假设分组加密的块长度为 BlockSize ,明文字节数字长度为 SrcSize ,则按照如下公式计算
Padding 。
Padding 明文需要补位的字节数,也是补位的每个字节的数值,解密过程中通过最后一个字节的数
值判断需要去除多少个填充位。

分组模式
解决了如何将各个块组织起来,协同实现明文流的整体加解密。


对称加密算法
3DES加密过程 ---> 加密-解密-加密 ---> 使用密钥1、密钥2、密钥3。
AES是目前安全性最高的,使用最广泛的标准。
国密 --- 国家密码局认证的国产密码算法
主要存在SM1、SM2、SM3、SM4。密钥长度均为128位。
SM1为对称加密算法,强度与AES相当 ---> 算法未公开;需要通过加密芯片接口调度。
SM2为非对称加密算法,基于ECC加密算法 ---> 已公开,在非对称加密中,高于使用最广泛的RSA
加密算法,从密钥产生速度,运算速度等方面。
实际上,CFB是用异或来做“块的加解密”,而原本的块加密是用来计算异或参数的。
OFB --- 输出反馈
在CFB基础上,对快加密的参数进行改变。在块加密得到异或参数时,使用的不再是前一个密文块,而是前一个块加密得到的异或参数。
与CFB相同,解密过程不存在快解密。
CTR --- 计数器模式 ----典型
与OFB类似,不同点在于,CTR使用快加密计算异或参数时,不再使用前一个异或参数作为块加密参数,而是使用计数器得到的计数作为快加密参数。
计数器得到的计数通过某种累加计算得出,首次使用初始化向量IV。
加解密过程可以作为并行处理。
GCM --- 伽罗瓦/计算器模式 ----典型 --- 认证加密模式
在CTR基础上增加了计数器,且增加了认证操作。
TLS协议中。 目前使用最多的是
DES(数据加密标准)/3DES ---> 适用于大量数据加密时,效率高。
AES(高级加密标准)算法 ---> 分组长度分别为128、192、256 --->SM3消息摘要 ---> 类似于MD5 ---> 算法已公开,计算结果为256位。
SM4无线局域网标准的分组数据算法 ---> 对称加密算法,长度均为128位。
对称加密特点:
流加密 --- 速度快,消耗少;
分组加密 --- 在安全性、可扩展性等等都高于流加密,且部分分组加密是具备流加密特性的;主流算法
1、密钥共享
需要相同密钥 --- 如何传输
2、密钥管理
密钥太多,如何减少
公钥密码体系
杜绝隐藏式安全性
非对称加密算法 --- 公钥加密
一个公钥+一个私钥;两者存在数学上关联性。公钥信息可以公开传递,但是相关的私钥是保密的。
只有使用私钥才能解密公钥加密的数据,使用私钥加密的数据也只能使用公钥解开。
在完成的通讯过程中,需要使用到四个密钥信息。在非对称密钥体系中,通讯时,使用的是对方的公钥进行加密通讯。
取模运算,求余,是不可逆的运算方式 --- 非对称密钥算法是不可逆算法。
1、密钥共享
需要相同密钥 --- 如何传输
2、密钥管理
密钥太多,如何减少
1、事先共享密钥
2、密钥分配中心KDC
3、DH算法密钥交换
4、非对称加密算法对称加密
非对称加密
安全性
较低
较高
速度
较快
较慢
实际上 公钥密码学 用来解决对称加密密钥共享问题的方式,但是在每一次通信时,使用密钥协商算法协商一套临时的会话密钥,并会结合数据签名来做身份认证的。
公钥 --- 是在目前数学理论和实际算力的前提下,无法根据公钥计算出私钥。
公钥都是通过私钥推到得到,所以,私钥一旦暴露,公钥也会暴露,因此私钥绝对不能充当公钥使用。
真正做法 --- 在数据传输的时候,依然使用对称加密算法进行加密,这样来保证数据的传输效率问题;在传输数据之前,进行对称密钥共享时,通过非对称密钥进行加密。实现算法互补。--->混合密码体系。
数据传输 --- 对称算法
密钥传输 --- 非对称算法
密钥分配问题
事先共享密钥 --- 需要有一种安全的方式。
密钥分配中心 --- 解决密钥数量过多问题。
密钥是在KDC保存,然后每个人只需要知晓与KDC进行通讯时,使用的加密密钥。
如果要使用该方式需要解决两个问题:1.KDC性能问题;2.KDC自身安全性问题。
DH交换算法 --- 密钥交换算法
虽然被称为密钥交换算法,但是,双方并没有真正的交换密钥,而是通过计算生成密钥信息,交换的内容是生成密钥信息所需要的一系列参数。
原理:通过一个共享的参数(公钥),私有参数(私钥)以及算法来协商一个对称密钥,然后通过对称密钥完成后续加密通讯。
DH算法不是为了加密而存在的,而是为了传递密钥从而诞生的算法,且并没有真正的传递密钥,而是传递产生密钥的核心数据。