密码体制构成

密码体制就是完成加密和解密功能的密码方案或密码算法。一个密码体制(cryptosystem)或密码算法通常由五个部分组成:{M,C,K,E,D}

  1. 明文空间M(全体明文的集合)

  2. 密文空间C(全体密文的集合)

  3. 密钥空间K(全体密钥的集合)

  4. 加密器或加密变换(算法),由加密密钥控制的加密变换的集合

    image-20211220212445780

  5. 解密器或解密变换(算法),由解密密钥控制的解密变换的集合

    image-20211220212537796

密码体制攻击方法

安全性攻击分类:

被动攻击:未经用户同意和认可的情况下将信息或数据文件泄露给系统攻击者,但不对数据信息进行任何修改

主动攻击:主要涉及某些数据流的篡改或虚假数据流的产生。主动攻击常分为假冒(或伪造)、重放、篡改信息和拒绝服务四类

密码分析者分析密码算法主要由三个方法:

  • 穷举法
  • 统计分析法
  • 密码体制分析法

根据对明文和密文掌握的程度,密码分析者可以在下面五种情况下对密码体制进行攻击

  • 唯密文攻击(知道待破译的一些密文和加密算法)
  • 已知明文攻击(知道一些待破译的密文和加密算法,还知道对应的明文)
  • 选择明文攻击(知道一些待破译的密文和加密算法,还可以选择一些明文并得到相应的密文)
  • 选择密文攻击
  • 选择文本攻击

一个密码体制是安全的,通常指在前三种攻击下是安全的

仿射密码技术

image-20211220214803137

gcd:辗转相除法,是求两个自然数的最大公约数的一种方法,也叫欧几里德算法

image-20211220215342391

image-20211220215356288

维吉尼亚密码

image-20211220215821366

image-20211220215850846

image-20211220220044659

DES算法

  • DES是对称密码算法
  • 明文分组长度为64bit,密钥长度为64bit,有效密钥为56bit,还有8bit是校验位
  • 加密、解密各16轮,每轮要一个子密钥
  • 16轮解密就是加密的每一轮的逆过程

整体结构:Feistel

image-20211220220720919

image-20211220220524428

初始置换IP

image-20211220221349016

轮结构

image-20211220221622944

逆初始置换IP

image-20211220221748767

E盒置换扩展

image-20211220222235447

S盒代替压缩

S盒分为了8个子盒,对应着8张表(Si),每个表是4行16列,每个子盒的输入为6bit,输出为4bit

image-20211220223649489

image-20211220223743684

P盒置换运算

image-20211220223948179

密钥置换PC-1

image-20211220224340462

循环左移位

image-20211220224447815

密钥置换PC-2

image-20211220224519119

image-20211220224639031

AES算法

  • 明文分组为128bits
  • 密钥长度为128、192、256bits,相应迭代轮数为10、12、14轮
  • image-20211221195740861

结构image-20211221195536337

轮密钥加

image-20211221200033893

字节代替

image-20211221200047577image-20211221200105488

行移位

image-20211221200444128

image-20211221200532639

列混合

image-20211221200609249

image-20211221202704552

image-20211221204215209

密钥扩展

image-20211221204902536

分组密码工作模式

电子码本 ECB

image-20211220225301394

密码分组链接 CBC

image-20211220225707461

  • 能够隐蔽明文数据的格式规律统计特性,相同的明文分组产生不同密文分组
  • 在一定程度上能够识别攻击者在密文传输中是否对数据进行了篡改,如组的重放、嵌入和删除等
  • CBC模式各密文分组不仅与当前明文组有关,而且通过反馈作用还与以前的明文组有关。在CBC模式下,最好是每发一个消息,都改变IV,比如将其值加一,这样即使是两个相同的明文使用相同的密钥,也将产生不同的密文,这样大大提供了安全性。但这样产生另外一个问题,接收端(解密方)如何知道使用的IV呢?实际上,IV的完整性要比其保密性更为重要

image-20211220230201742

image-20211220225955406

  • 明文有一组中有错,会使以后的密文组都受影响,但经解密后的恢复结果,除原有误的一组外,其后各组明文都正确地恢复
  • 若在传送过程中,某组密文组出错时,则该组恢复的明文和下一组恢复数据出错。再后面的组将不会受中错误比特的影响
  • 在CBC模式中,密文分组若某些比特缺失(例如某些比特位没有收到等),那么即使密文分组中1 bit的缺失,也会导致后续密文分组都受缺失影响,从而此自缺失比特密文分组开始,后续密文分组全部受缺失影响,无法正常解密

密码反馈模式 CFB

image-20211221165642117

image-20211221165746969

输出反馈模式 OFB

image-20211221165800737

image-20211221165843705

计数器模式 CTR

image-20211221165907571image-20211221165921442

比较image-20211221165939241

序列密码分类

同步序列密码

密钥流独立于消息流产生

image-20211221205600522

自同步序列密码

自同步序列密码也称为异步流密码,其密钥流的产生不是独立于明文流和密文流的,与种子密钥和其前面已产生若干密文字有关

image-20211221205625039

线性反馈寄存器

线性反馈移位寄存器

image-20211221205701628

image-20211221205713182

image-20211221205914742

非对称密码概述

image-20211221151755410

image-20211221151803719

RSA算法

RSA算法密钥生成、加密和解密

image-20211221152351982image-20211221152532061

image-20211221152954245

0

Hash函数概念

Hash函数又称为哈希函数、Hash函数、杂凑函数和散列函数,在现代密码学中扮演着重要角色。

Hash函数可以将任意长的消息m映射为较短的、固定长度的一个值,记为H(m),经常称函数值H(m)为散列值、哈希值、杂凑值、杂凑码或消息摘要、数字指纹

安全性要求

  • 单向性(抗原像):对干任意给定的消息,计算其哈希值容易. 但是,对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的
  • 弱抗碰撞(抗二次原像):对于给定的消息M1,要发现另一个消息M2,满足H( M1 )=H(M2)在计算上是不可行的.
  • 强抗碰撞:找任意一对不同的消息M1,M2,使H(M1)=H(M2)在计算上是不可行的
  • 随机性

Hash发展状况

发展

image-20211221011216138

image-20211221011246217

image-20211221011336146

image-20211221010514861

SHA-1算法

Hash函数研究现状,SHA-1数据填充和数据扩充、基于分组的CBC-MAC、消息认证方式

现状

image-20211221011542388

  • SHA-1接受输入消息的最大长度为2^64-1 bits,生成160 bits的消息摘要。
  • SHA-1算法操作首先对输入消息划分为512-bit块,若最后一个数据块不满足长度要求,按照一定规则进行填充为512-bit块。
  • 然后每个512-bit块重复使用分块处理函数,最终输出160 bits哈希值。

消息认证

image-20211221150930135

image-20211221193347173image-20211221193401224

数字签名原理

数字签名分类

image-20211221144608130

image-20211221144826029

RSA数字签名算法

RSA数字签名算法,以及改进算法

image-20211221145036004

image-20211221145100500

image-20211221145110398

image-20211221145745623

image-20211221145952326

image-20211221150422625

认证协议

单向认证协议和双向认证协议

单向认证

目前,电子邮件是最受欢迎的通信工具,其主要优点是发送方和接收方无需同时在线,只是电子邮件被发到接收方的邮箱中,被保存下来直到接收方来阅读。如果通信双方只需要一方被认证,这样的认证过程就是一种单向认证,例如口令核对法实际上就是一种单向认证,这是这种简单的单向认证还没有与密钥分发相结合。

与密钥分发相结合的单向认证有两类:

  • 一类采用对称密码技术,需要一个可信赖的第三方——通常为密钥分发中心(KDC)或认证服务器(AS),又这个第三方来实现通信双方的身份认证和密钥分发

    image-20211221012133953

  • 另一类是采用非对称密码技术,无需第三方的参与。

image-20211221012143425

双向认证

在双向认证过程中,通信双方需要互相认证各自的身份,然后交换会话密钥,双向认证的典型方案是Needham/Schroeder协议,协议执行的步骤如下

image-20211221012355345

此协议还是容易遭到一种重放攻击。假定x是攻击者,已获得了一个过时的会话密钥。X(应该为C)可以冒充A使用旧的会话密钥,通过简单的重放步骤(3)就能欺骗B,除非B始终牢记所有与A的会话密钥,否则B无法确定这是一个重放。

C进一步截获步骤(4)中的报文,那么他就能够模仿步骤(5)中的响应。因此, C可以向B发送一个伪造的报文,让 B以为报文是来自A(且使用的是认证过的会话密钥)

image-20211221012517738

密钥组织结构

为了适应密钥管理系统的要求,目前在现有的计算机网络系统和数据库系统的密钥管理系统的设计中,大都采用了层次化的密钥结构。这种层次化的密钥结构与整个系统的密钥控制关系是对应的。按照密钥的作用与类型及它们之间的相互控制关系,可以将不同类型的密钥划分为1级密钥、2级密钥、…n级密钥,从而组成一个n层密钥系统

作用:

  • 安全性:最低层密钥可以做到一次一密;下次密钥泄露不会影响上层密钥安全;层次化密钥结构是一个动态的密钥管理系统
  • 进一步提高密钥管理的自动化:除了主密钥,其他分层密钥都可以自动分配,更换,销毁等

密钥分类

(1)基本密钥(Base Key):又称为初始密钥(primary key)或用户密钥(user key)。它是由用户选定或由系统分配给用户的,可以在较长时间内(相对于会话密钥)由一对用户(例如密钥分配中心与某一用户之间,或者两个用户之间)所专用的密钥。在某种程度上,基本密钥还起到了标识用户的作用。

(2)会话密钥(Session Key):在一次通信或数据交换中,用户之间所使用的密钥,是由通信用户之间进行协商得到的。它一般是动态地、仅在需要进行会话数据加密时产生,并在使用完毕后立即进行清除掉的,也称为数据加密密钥(Data Encrypting Key)

(3)密钥加密密钥(Key Encrypting Key):一般是用来对传输的会话密钥进行加密时采用的密钥,又称为二级密钥(Secondary Key)。密钥加密密钥所保护的对象是实际用来保护通信或文件数据的会话密钥

(4)主密钥(Master Key):对应于层次化密钥结构中的最高层次,它是对密钥加密密钥进行加密的密钥,主密钥应受到严格的保护

DH

image-20211221130743177

image-20211221134323920

image-20211221135449749

密钥协商协议

密钥协商是保密通信双方(或更多方)通过公开信道的通信来共同形成秘密密钥的过程。一个密钥协商方案中,密钥的值是某个函数值,其输入量由两个成员(或更多方)提供

密钥协商的结果是:参与协商的双方(或更多方)都将得到相同的密钥,同时,所得到的密钥对于其他任何方都是不可知的

image-20211221135940289image-20211221135951250

密钥分配

密钥分层结构、DH协议、中间人攻击、密钥分配协议

密钥分配技术一般需要解决两个方面的问题:

  • 为减轻负担,提高效率,引入自动密钥分配机制;
  • 为提高安全性,尽可能减少系统中驻留的密钥量。

为了满足这两个问题,目前有两种类型的密钥分配方案:集中式分布式密钥分配方案。

  • 集中式

    集中式密钥分配方案是指由密钥分配中心(KDC)或者由一组节点组成层次结构负责密钥的产生并分配给通信双方

  • 分布式

    分布式密钥分配方案是指网络通信中各个通信方具有相同的地位,它们之间的密钥分配取决于它们之间的协商,不受何其他方的限制(更进一步,可以把密钥分配中心分散到所有的通信方,即每个通信方同时也是密钥分配中心)

此外,密钥分配方案也可能采取上面两种方案的混合:上层(主机)采用分布式密钥分配方案,而上层对于终端或它所属的通信子网采用集中式密钥分配方案。