1. 密码学概述

加密过程发送方将明文通过加密密钥进行加密,得到密文用于传输,接收方通过解密密钥进行解密。

**对称加密:**使用相同的密钥进行加密解密

公开密钥加密:每个人拥有公钥和私钥,发送方使用接收方的公钥加密,接收方使用自己的私钥进行解密

唯密文攻击:入侵者只截取到密文,基于对密文的解析进行破解,可通过暴力破解和统计分析

已知明文攻击:入侵者知道部分明文和与之对应的密文

2. 传统加密方法

2.1 替换:替换明文中的字母

2.2 换位:重排明文中的字母顺序

3. 现代加密技术

3.1 对称密钥加密

**在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。**密钥只有一个,这就要求解密方事先必须知道加密密钥。

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。然后其缺点是密钥管理困难,使用成本较高。因为每两台机器间都需要设置唯一密钥,使得计算机集群内的密钥数量呈几何级数增长。此外对称加密算法的加密和认证缺乏了签名功能,使得使用范围有所缩小。

对称加密过程通常是将明文数据块进行拆分、移位、异或等操作。

主要对称加密算法:

1、DES:已被破解,不再安全。具有学习价值
2、TripleDES:计算密钥时间太长、加密效率不高,所以也基本上不用
3、AES: 密钥建立时间短、灵敏性好、内存需求低,是最常用的对称加密算法
4、IDEA:常用的电子邮件加密算法

加密模式:

  1. Electronic Code Book(ECB):最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。
  2. Cipher Block Chaining(CBC):明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。
  3. Cipher Feedback Mode(CFB):类似于自同步序列密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器,优点最小可以按字节进行加解密,也可以是n位的,CFB也是上下文相关的,==CFB模式下,明文的一个错误会影响后面的密文(错误扩散)。
  4. Output Feedback Mode(OFB):将分组密码作为同步序列密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题。

分组密码:

  • 将明文序列划分为长为m的明文组
  • 各明文组在长为i的密钥组的控制下变换成长度为n的密文组
  • 通常n == m
    • 如果 n > m,密钥称为扩展分组密码
    • 如果 n < m , 密钥称为压缩分组密码

3.2 非对称密钥加密

非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反。

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥。但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以通过数字签名确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

因此一般对大数据进行对称加密,再用RSA对加密的KEY进行加密,或者加密hash值,也就是数字签名。

主要非对称加密算法:

  1. RSA:它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。
  2. DSA:既 Digital Signature Algorithm,数字签名算法,DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多 。==DSA 仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能更快。
  3. ECDSA椭圆曲线签名算法:其是ECC与DSA的结合。相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障。和普通DSA相比,==ECDSA在计算秘钥的过程中,部分因子使用了椭圆曲线算法。

3.3 数据加密标准DES

DES是16轮的Feistel结构密码,分组长度为64位,使用56位密钥,每一轮采用48位子密钥

3.4 RSA

生成公私钥对:

  • 选择2个大质数q、p
  • 计算n = pq,z=(p-1)(q-1)
  • 选择e(e<n),使e与z之间没有公因子,即e,z互质
  • 选择d使得ed-1刚好可以被z整除
  • 公钥:(n,e);私钥:(n,d)

加解密过程:

RSA的幂运算强度很大,所以DES至少比RSA快100倍。

实际现实中,一般通过RSA进行分发对称密钥,然后通过对称密钥来加解密数据

+++

4. 身份认证

5. 报文完整性

报文摘要:对报文m应用散列函数H,得到一个固定长度的散列码,称为报文摘要,记为H(m)

报文认证:

  • 简单方案:报文 + 报文摘要 = 扩展报文(m,H(m))
  • 报文认证码MAC:报文m + 认证密钥s(安全的共享的) + 密钥散列函数H = 扩展报文(m,H(m+s))

5.1 散列函数算法

散列函数算法是用来验证报文完整性的一种解决方案

MD5:被广泛应用的散列函数。

  • 通过4个步骤,对任意长度的报文输入,计算输出128位的散列值
  • MD5不是足够安全的

SHA-1:

  • 散列值为160位
  • 要求输入长度小于 2^64
  • 速度慢于MD5,但安全性优于MD5

+++

6. 数字签名

为了验证报文的完整性,发送方将报文进行散列得到了报文摘要,然后将报文摘要用发送方的私钥进行加密,得到了数字签名。

接收方收到数字签名,用发送方的公钥进行解密,得到了报文摘要,再对报文进行散列后的结果与报文摘要进行比较,从而确定报文完整性。

数字签名的特点:

  • 可验证性
  • 不可伪造性
  • 不可抵赖性

对报文m的简单数字签名:

  • 报文加密技术是数字签名的基础
  • 使用非对称加密算法进行签名
  • 签名的是报文摘要,而不是全部报文

+++

7. 密钥分发中心KDC

两个用户怎么共享对称密钥:

  • 用户A和用户B都信任KDC

  • 用户A将AB的信息加密传输到KDC,Ka-kdc(A,B)

  • KDC产生随机数R1,并生成报文Ka-kdc(R1, Kb-kdc(A,R1))

  • A解密报文,得到R1和Kb-kdc(A,R1),并将 Kb-kdc(A,R1)传送到B

  • B解密报文,得到A地址和R1

  • 两者利用R1作为会话密钥,用于共享对称加密

+++

8. 认证中心CA

认证中心功能是实现特定实体E与其公钥之间的绑定。

  • 每个E在CA上注册公钥,E向CA提供身份证明
  • CA创建绑定E及其公钥的证书
  • A想要B的公钥时,首先获取B的证书,然后应用CA的公钥解密证书,获取B的公钥