第2章 密码技术

第2章 密码技术

2.1 基本概念

  • 密码体制可以定义为一个五元组(P, C, K, E, D)

    • P称为明文空间,是所有可能的明文构成的集合;
    • C称为密文空间,是所有可能的密文构成的集合;
    • K称为**空间,是所有可能的**构成的集合;
    • E和D分别表示加密算法解密算法的集合
  • 2种密码体制:对称密码非对称密码

    • 对称密码体制也叫单钥密码体制秘***密码体制,在对称密码体制中,加密和解密使用完全相同的**,或者加***和解***彼此之间非常容易推导。
    • 非对称密码体制也称为公钥密码体制:在公钥密码体制中,加密和解密使用不同的**,而且由其中一个推导另外一个是非常困难的。这两个不同的**,往往其中一个是公开的(公钥,通常用于加密),而另外一个保持秘密性(私钥,通常用于解密)。

2.2 对称密码

对称密码分为两大类:流密码分组密码

  • 流密码(stream cipher)又称作序列密码,加密和解密每次只处理数据流的一个符号(如一个字符或一个比特)。
  • 分组密码(block cipher)又称块密码,它将明文消息划分成若干长度为m(m>1)的分组(或块),各组分别在长度为r的**K的控制下转换成长度为n的密文分组。

2.2.1 古典密码

  • 体现了现代密码学的两大基本思想:置换代换
  • 属于流密码

2.2.2 分组密码

  • DES、DES3、IDEA、AES

2.2.3 序列密码(流密码)

2.3 公钥密码

  • 公钥算法建立在数学函数基础上,而不是基于替换置换。其安全性基于数学上难解的问题,如大整数因子分解问题、有限域的离散对数问题、平方剩余问题、椭圆曲线的离散对数问题等
  • 公钥密码体制是建立在数学中的单向陷门函数的基础之上的。

2.3.2 RSA算法

  • RSA是一种分组密码体制,其理论基础是数论中“大整数的素因子分解是困难问题”的结论

2.4 散列函数&消息鉴别码

2.4 散列函数

  • 散列函数又叫做散列算法,是一种将任意长度的消息映射到某一固定长度消息摘要(散列值或哈希值)的函数。
  • 假设H安全,发送方将散列值H附于消息M后发送;接收方通过重新计算散列值H’,并比较H=H’是否成立,可以验证该消息的完整性

2.4.2 消息鉴别码

  • 保障消息完整性真实性的重要手段是消息鉴别技术。
  • 用鉴别函数产生一个鉴别符,根据收发端的鉴别符是否一致,对消息进行鉴别。
  • 根据鉴别符的生成方式,鉴别函数可以分为如下三类:
    ① 基于消息加密:以整个消息的密文作为鉴别符。
    ② 基于消息鉴别码(MAC, Message identification code):利用公开函数和**产生一个较短的定长值作为鉴别符,并与消息一同发送给接收方,实现对消息的验证。
    ③ 基于散列函数:利用公开的散列函数将任意长的消息映射为定长的散列值,并以该散列值作为鉴别符。

2.5 数字签名

签名起到了鉴别、核准、负责等作用,表明签名者对文档内容的认可,并产生某种承诺或法律上的效力。数字签名是手写签名的数字化形式。

  • 消息鉴别通过验证消息完整性和真实性,可以保护信息交换双方不受第三方的攻击,但是它不能处理通信双方内部的相互的攻击,这些攻击可以有多种形式。
  • 数字签名是解决通信双方内部相互攻击的最好方法,它的作用相当于手写签名。用户A发送消息给B,B只要通过验证附在消息上的A的签名,就可以确认消息是否确实来自于A。同时,因为消息上有A的签名,A在事后也无法抵赖所发送过的消息。
  • 因此,数字签名的基本目的是认证、核准和负责,防止相互欺骗和抵赖。数字签名在身份认证、数据完整性、不可否认性和匿名性等方面有着广泛的应用。

数字签名的特征

  • 可验证性
  • 不可伪造性
  • 不可否认行
  • 数据完整性