考点

第一章 ✅

由密钥K和当前状态西格玛,组成函数f(k,西格玛),来产生一个密钥流。(与明文、密文都无关。)



  • 认证业务:
    在单向通信的情况下,认证业务的功能是使接收者相信消息确实是由它自己所声称的那个信源发出的

  • 保密通信系统模型:
    双密钥体制下,接收方由本地密钥发生器获取解密密钥

  • 从安全性上,几类算法的强度排序:
    抗唯密文攻击算法<抗已知明文攻击算法<抗选择明文攻击算法<抗选择密文攻击算法

  • 保密系统对信息保密需要满足

    1.抗密码分析,敌手决定密钥或任意明文在计算上不可行

    2.依赖于密钥,不依赖算法

    3.加密和解密算法适用于密钥空间所有元素

    1. 系统便于实现和使用。
  • 密码系统基本要素

    1.明文

    2.密文

    3.加密

    4.解密

    5.加密算法、解密算法

    6.密钥。 密钥是体制安全保密的关键

  • 密码分析学

    从密文分析出:明文、密钥、解密算法

  • 对称密码体制:

    本质上,加密与解密密钥相同,但是形式上,可以不是完全一样的密钥

  • 代换密码、置换密码区别:

    代换密码要先建立一个替换表(即密钥),加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文。 

    置换密码是对明文字符按某种规律进行位置的置换。

    棋盘密码、凯撒密码、维吉尼亚密码都是代换密码。

    天书密码是置换密码。

    第一个商用级别密码标准是DES

第二章 ⍻

1.理解流密码的概念、密钥流的伪随机性和生成器的结构。流密码运行方式。

2.理解m-序列基本概念和特点。m-序列周期



  • 密钥流生成器的驱动

    1.为了抗密码分析,所以要求函数设计是非线性的。但是状态函数的输入,非线性的难以操作实现。于是由两部分组成。线性的状态输入+非线性的密钥输出。所以整体还是非线性的。

    2.极大周期、良好的统计特性、抗线性分析、抗统计分析

  • 加密器

    加密器可以分为两部分:密钥流产生器+加密变换器

  • 生成器,流密码的产生

    与状态有关,有记忆元件,一个个输出,每次的k要变。

  • 伪随机数

    随机性:

    一般认为随机序列应有良好的统计特性。分布均匀性:序列中的位分布应是均匀的,即0和1出现的频率大约相等。

    独立性:

    序列中任何子序列不能由其他子序列推导出

    为什么叫伪随机:

    密钥流是周期的(不能做到一次一密,密钥没有那么多),序列不可能做到完全随机。

    密码应用大多使用算法来生成随机数。这些算法是确定的,所以产生的序列并非统计随机的。

    只能要求截获比周期短的一段时,不会泄露更多信息。

    需要满足:

    周期要大。截获部分明文和相应密文不能推出整个序列。序列计算容易。

  • m序列:

    1. 0、1出现的概率大致相同,只差一个。(少一个1)

    2. 总游程数为2^{n-1}

    3. 0、1在序列的每一个位置上出现的概率相同。

    4. 破译:已知一个2n长的明文密文对,可以求出2n长的密钥序列。推出线性反馈移位寄存器的n+1个状态

    5. 异自相关函数是一个常数,表明平移序列无法或得更多信息

第三章 分组密码 ⍻

  • 理解数据加密标准DES的设计思想和框架。系统设计基本方法
  • 掌握DES算法的安全性和典型的轮函数结构Feistel。空;S盒参数特质。S盒演示
  • 掌握高级加密标准AES算法轮函数所需的有限域知识。空;空;不可约多项式,位操作快速计算
  • 理解AES轮函数结构和安全性。空;轮函数构成(清楚哪几部分)



  • 设计关键:

    关键在于加解密算法,要求明文和密文之间的关联在密钥的控制下,尽可能复杂

  • 1977年,数据加密标准DES在美国批准。它基于美国IBM公司提出的Lucifer 密码,是世界上第一个广泛的商业数据保密算法

  • DES的轮函数将32比特的R{i-1}输入,经过扩展置换变成48比特,才与轮密钥Ki

异或。而后需要经过S盒代换,变成32比特,再进程一次P置换。

  • AES算法为抵抗线性密码分析和差分密码分析,设计的轮函数分为:线性混合层(高度扩散)、非线性混合层(S盒)、密钥加层(子密钥和状态异或)
  • AES,行移位中,第0行不移位。其他行根据不同状态,不同分组数Nb,位移量不同
  • AES,列混淆中。状态阵列的每个列视为GF(2^8)上的多项式,再与固定多项式c(X)进行模x^4 +1乘法。c(x)是模x^4 +1可逆的多项式(可约多项式)。所以列混合是可逆的
  • 扩展密钥,看作是以字(4字节)为元素的一维数组

第四章 公钥密码学 ⍻

  • 理解公钥密码的体制和基本概念。组成上特点。功能上区别。

  • 掌握剩余系的基本概念、费马定理和欧拉定理

  • 掌握RSA加密算法和预处理计算。空;空;空;计算

  • 理解RSA算法基于大整数难分解的安全性。空、困难问题、安全性

  • 掌握ElGamal加密算法和基于离散对数求解困难性的安全性。空;组成,困难问题,安全性。空;计算,随机数隐患。

  • 了解实数域上椭圆曲线性质。空;运算的代数与几何表示

  • 介绍有限域上的椭圆曲线和基于椭圆曲线的公钥密码体制。空。基本原理



  • 计算上不可行即表示一个程序是可处理的但是需要一个长得不切实际的时间(如几十亿年)来处理的步骤。并不是计算起来复杂性很高。

  • 相比单密钥体制,公钥密码体制还可以解决密钥分配和数字签名问题

  • 安全SSL的数字证书RSA公钥长度已达2048比特

  • 低指数攻击,e很小,可以开方来计算。但是,必须要模较大的时候才可以,如果太小,不能开,无法计算出来

  • 群运算一定满足结合律,不一定满足交换律

第五章 消息认证码与哈希函数 ⍻

  • 理解MAC和Hash函数的定义以及能解决的安全需求。基本特征。MAC的基本原理。
  • 理解哈希函数的生日攻击。空;哈希的安全设计目标。生日攻击原理。
  • 理解HMAC算法原理和设计结构。空;安全设计要求
  • 掌握MD5算法和安全Hash算法原理的结构。SHA-1参数特征。MD5安全性


  • 消息认证码是针对明文的,可以认证明文,不是针对密文产生的,所以不能认证密文。

  • MD5输入长度没有限制,SHA-1长度不超过2^64 位。(是长度,不是转换为二进制后的数值)

  • MD5:缓冲区4个字,进行4轮处理。输入3个32比特的字,输出1个字。小端方式存储

    SHA-1:缓冲区5个字,进行4轮处理。输入3个32比特的字,输出1个字。更新之后还是五个字。大端方式存储

  • MD5存储按照小端方式,而SHA-1按照大端方式。理论上,SHA-1找寻相同哈希值的碰撞消息计算复杂度,大概2的80次方。

第六章 数字签名 ⍻

  • 掌握数字签名的基本概念和特点。本质特征。基本算法结构。
  • 掌握RSA数字签名体制。是否是概率性的。空;空;计算,验证过程


  • 数字签名的密钥生成、签名是概率性算法(随机化算法生成vk、sk。签名随机化算法生成signsk(m)=西格玛,作为签名)验证是确定性算法

  • RSA签名是一种确定性签名。如果用消息填充的方式进行随机化,本质上是对消息的随机化。

  • RSA签名,不再存在共模攻击和低指数攻击。

第七章 密码协议

  • 掌握diffie-Hellman密钥交换及中间人攻击。攻击的类型;空;空;原理、补丁

  • 理解Kerberos第三方认证系统原理。系统目标。可重用性特点

第八章 可证明安全

  • 主要介绍Boneh-Franklin基于身份加密算法及其安全性证明思路。空;特点

第九章 密码学新方向

  • 典型加密算法的半同态性和全同态性。空;经典算法的半同态性
  • 理解后量子密码算法抵抗量子计算攻击的原理。空;经典算法安全性和新算法特点。

例题

xtime算法

理论基础:

C(x)=A(x)B(x) mod P(x) 二进制数转换为多项式:A(a7,a6,a5,a4,a3,a2,a1,a0)==>A(X)=a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0,GF(28)内的最大值为(11111111)2==> x7+x6+x5+x4+x3+x2+x+1,P(x)=x8+x4+x3+x2+x+1==>(100011011)2=0x11B X8 mod P(x)= x4+x3+x2+x+1——————x8除以P(x)的余数 异或运算:0⊕0=0, 0⊕1=1, 1⊕1=0 有限域GF(2n)加法:C(x)=A(x)+B(x)=∑cixi(0≤i≤m-1),ci=ai+bi mod 2即ai⊕bi,A(x)=(am-1,…,a3,a2,a1,a0)2,B(x)=(bm-1,…,b3,b2,b1,b0)2 定义xtime()运算:设A(x)∈GF(28),A(x)=a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0对应的二进制数为(a7,a6,a5,a4,a3,a2,a1,a0)则xtime(A(x))=xA(x)= a7x8+a6x7+a5x6+a4x5+a3x4+a2x3+a1x2+a0x对应的二进制数为(a7,a6,a5,a4,a3,a2,a1,a0,0)。将A(x)左移一位(最低位补0,原先的最高位删除)的结果为(a6,a5,a4,a3,a2,a1,a0,0),如果a7=0,则A(x)左移一位的结果就是xtime(A(x))的值;如果a7=1,则A(x)左移一位的结果与0x1B逐比特异或(异或运算符⊕)即为xtime(A(x))的值。(a7=1时,x*A(x)的值超出GF(28),需要 模P(x),结果为A(x) 左移一位的结果为(a6,a5,a4,a3,a2,a1,a0,0)与0x1B逐比特异或的值) 例题:

例题1:

设0x64∈GF(28),求xtime(0x64)的值? 0x64转换为二进制数为(0110 0100)2,最高位a7=0,所以0x64左移一位的结果就是所求值,(0110 0100)2左移一位后的值为(110 01000)2 例题2:

在GF(28)中计算0x570x13的结果? 先将166进制数转换为二进制数:0x57=(0101 0111)2,0x13=(0001 0011)2 将二进制数转换为多项式:0x13=x4+x+1 0x570x13=0x57*(x4+x+1)=0x57x4+0x57x+0x57 0x57x就是xtime(0x57)=(1010 1110)2 0x57x2就是xtime(0x57x)=(0101 1100)+(0001 1011)=(0100 0111)2 同理0x57x3=(10001110)2,,0x57x4=(0000 0111)2 所以0x570x13=(00000111)2+(1010 1110)2+(0101 0111)2

评论