【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》

【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》

  • 写在最前面
  • 5 伪随机排列实践构造(块密码/分组密码)

写在最前面

主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。

内容补充:骆婷老师的PPT
《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节
密码学复习笔记 这个博主好有意思

初步笔记,如有错误请指正

快速补充一些密码相关的背景知识


请添加图片描述

5 伪随机排列实践构造(块密码/分组密码)

  1. 本节学习如何设计一个PRP(伪随机排列)。通过一个经典的加密方案DES来学习PRP的构造和相关安全分析。此外,简要介绍当前广泛使用的AES。

  2. 目录:替换-置换网络、Feistel网络、DES、增加密钥长度、AES、差分分析与线性分析

  3. 块(分组)密码(Block Ciphers

    • 块密码 F : { 0 , 1 } n × { 0 , 1 } ℓ → { 0 , 1 } ℓ F : \{0,1\}^n \times \{0,1\}^\ell \to \{0,1\}^\ell F:{0,1}n×{0,1}{0,1}. 是一个带密钥的函数。

      F k : { 0 , 1 } ℓ → { 0 , 1 } ℓ F_k : \{0,1\}^\ell \to \{0,1\}^\ell Fk:{0,1}{0,1}, F k ( x ) = def F ( k , x ) F_k(x) \overset{\text{def}}{=} F(k,x) Fk(x)=defF(k,x).

      n n n 是密钥长度, ℓ \ell 是块长度.

    • 构造是启发式的,而非被证明了的;

    • 注意:虽然有“密码”二字,但在实践中,块密码被当作是一个PRP,而非加密方案;在之前AES的提案召集中要求,算法输出的范围应该与输入块的随机排列是不可区分的;

    • 方案被认为是“优秀的”,如果已知的最佳攻击具有的时间复杂性与蛮力搜索密钥大致相当

      • 一个 n = 112 n=112 n=112的加密方案,可以在 2 56 2^{56} 256时间内被破解是不安全的;
      • 在渐进设定中,尽管 2 n 2 2^{\frac{n}{2}} 22n是指数,但与上面的例子一样,实际可能不安全;
  4. 漫画

  5. 混淆-扩散范式(The Confusion-Diffusion Paradigm

    • 目标:构造“简洁”的看上去随机的排列;强调“简洁”的原因在于直接存储随机排列所需的空间太大,需要 2 n ⋅ 2 n 2^{n\cdot 2^n} 2n2n 比特;
    • 为此,香农提出了一种实现伪随机排列的方法——混淆-扩散范式;
    • 混淆:令密钥和密文的关系尽可能地复杂和难懂;一个大的随机排列 F k ( x ) F_k(x) Fk(x)可以由若干小随机排列 f i ( x i ) f_i(x_i) fi(xi)来构造,将一个大输入分为若干小输入, F k ( x ) = f 1 ( x 1 ) f 2 ( x 2 ) ⋯ f i ( x i ) F_k(x) = f_1(x_1)f_2(x_2) \cdots f_{i}(x_{i}) Fk(x)=f1(x1)f2(x2)fi(xi)
    • 扩散:在明文统计特征中的冗余性在密文统计特征被消去;其中,统计“冗余性”是指明文中一部分信息可以从密文中获得;
  6. 替换-置换网络(Substitution-Permutation Network

    • 一种混淆-扩散范式的设计是替换-置换网络(SPN),如图所示:
      1. 明文首先与密钥混合(例如,异或);进行混淆
      2. 经过S盒的替换操作;进行混淆
      3. 经过P盒的置换操作;进行扩散
      4. 进入下一轮
    • 一个关键点是在结尾需要有一次密钥混淆操作,否则最后一轮替换和置换操作对于加密都是无效的;
  7. 设计原则1——S盒的可逆性

    • S盒必须是可逆的,否则块密码不是排列;这可以从SPN构造中观察到,其中密钥混合(异或)和P盒(置换)都是排列操作,为了令SPN是排列,那剩下的S盒必须是可逆的;
    • 定理:令 F F F为一个带密钥的函数,该函数由一个SPN定义,其中的S盒是1对1的且满射。无论密钥生成方案和轮次, F k F_k Fk是对于任意 k k k都是一个排列;
  8. 设计原则2——雪崩效应(Avalanche Effect

    • 雪崩效应:改变输入的一个比特影响输出的每个比特;
    • 严格雪崩条件:一个输入比特取补,每个输出比特都有50%的概率改变;
    • 比特独立条件:对于任意 i , j , k i, j, k i,j,k,当改变一个输入比特 i i i时,输出比特 j j j k k k 应该独立改变;
    • S盒:改变1比特输入会改变至少2比特输出;
    • P盒:每个S盒的输出都被扩散到下一轮的不同S盒;
    • 问题:对于4比特的S盒,改变输入的1个比特,在经过 R R R轮的SPN后,影响输出的 2 R 2^R 2R个比特;
  9. 一个针对块密码的KPA框架

    • KPA:知道同一密钥下的若干明文/密文对;
    • 分析步骤:
      1. 观察明文、密文、密钥之间的关系;
      2. 设计基于上面关系的 t t t比特的测试;
      3. 搜索 k k k比特空间;一个猜测的密钥通过测试的概率为 2 − t 2^{-t} 2t
        1. 这里具有一般性。
      4. p p p对明文/密文对来确定密钥的期望是 2 k − p t 2^{k-pt} 2kpt;期望足够小就可以,例如 2 − 10 2^{-10} 210
    • 分析16比特密钥的一轮SPN下的KPA:
      • 尽管这个例子“简单”得缺乏意义,但可以展示上述框架如何应用;
      • 之前提到的一个关键点是在结尾需要有一次密钥混淆操作,否则最后一轮替换和置换操作都是无效的。因此,这个结构并不是一个完整的一轮SPN。在教材的第二版在这方面存在一个修正。 这里我们沿用第一版的内容,因为更容易理解,并且不影响对缩减了轮次的SPN存在弱点的分析。
      • 关系:PT ⊕ \oplus Key ⊕ \oplus Input-of- S S S-boxes = = = 0;其中,根据SPN的可逆性,S盒输入可以通过密文得到;
      • 测试: t = 16 t=16 t=16 比特,因为Input-of- S S S-boxes = = = PT ⊕ \oplus Key;
      • 搜索:密钥空间 k = 16 k=16 k=16比特;通过测试的概率是 2 − 16 2^{-16} 216
      • 确定:使用 p = 1 p=1 p=1对明文/密文对来确定密钥,期望为 1 1 1
  10. 攻击轮次减少的SPN(作业)

    • 攻击一个1轮SPN:64比特块,128比特密钥(2个64比特子密钥),16x4比特的S盒,以及用异或来实现密钥混合;

    • 根据图中关系可以观察到,根据明文和密文知道的20个比特,密钥中未知的20个比特,以及4个比特来比较;

    • 猜测20比特密钥:第一个子密钥的16比特,第二个子密钥的4个比特;

    • 通过4比特测试的概率 2 − 4 2^{-4} 24

    • 需要8对明文/密文对来确定密钥使得期望小于1,期望 2 20 − 4 × 8 2^{20-4\times 8} 2204×8

    • 破解的复杂性为 8 ⋅ 2 20 ⋅ 16 = 2 27 ≪ 2 128 8\cdot 2^{20} \cdot 16= 2^{27} \ll 2^{128} 822016=2272128 ,其中,8是明文/密文对数,16是S盒数量(因为每次猜测只覆盖1个S盒对应的第2个子密钥中4个比特);

  11. Feistel网络

    • 为了构造排列,要求SPN网络中S盒是可逆的,这对S盒的设计提出了要求;那么,能不能放松对S盒设计需求,同时保留排列的?
    • Feistel网络可以满足上面的需求:从若干非可逆组件构造一个可逆函数;
    • L i : = R i − 1 L_i := R_{i-1} Li:=Ri1 并且 R i : = L i − 1 ⊕ f i ( R i − 1 ) R_i := L_{i-1} \oplus f_i(R_{i-1}) Ri:=Li1fi(Ri1)
    • 求逆: L i − 1 : =   ? L_{i-1} :=\ ? Li1:= ?
    • Luby-Rackoff定理:无论mangler函数 f i f_i{} fi和轮次,对于任意 k k k F k F_k Fk是一个排列;
  12. Feistel网络的例题

    • 问题:当输入( L 0 , R 0 L_0, R_0 L0,R0)是下面两个情况中之一时,一个 r r r轮Feistel网络的输出是什么?
      • 每个轮函数输出都是 0 0 0,无论输入是什么;
      • 每个轮函数输出都是一个恒等函数,即输入和输出相同;
  13. DES设计

    • 16轮的Feistel网络;64位块;56位密钥,48位子密钥 (64位密钥带有8个校验位)
    • 密钥编排: 56 bits → left rotation, PC divided into two halves \xrightarrow[\text{left rotation, PC}]{\text{divided into two halves}} divided into two halves left rotation, PC 48 bits.
    • 以初始排列开始 ( I P IP IP) 以 I P − 1 IP^{-1} IP1 结束;
    • 轮函数 f f f 是一个 32位 I/O 的不可逆函数;
    • f i f_i fi 由mangler函数 f ^ i \hat{f}_i f^i 和子密钥 k i k_i ki 来确定;
    • S S S盒是 4 到1 函数,将6位映射为4位;
  14. DES算法概览

  15. DES的Mangler函数

  16. DES中S盒例子

  17. 密钥编排

  18. 弱密钥

    • 弱密钥:DES的密钥编排会产生相同的子密钥
    • 半弱密钥:产生两个不同的子密钥
    • 这些情况发生时,应该更换密钥
  19. DES编年史

    • DES经历了一个从成为加密标准到安全性不足、到安全性增强、到被彻底破解的历程;

    • [1973] NBS (NIST) 发布标准召集公告;

    • [1974] DES 在联邦政府公告发布;

    • [1977] DES 被发布为 FIPS PUB 46;

    • [1990] 2 47 2^{47} 247 个明文的CPA下差分分析;

    • [1997] DESCHALL 项目公开破解DES;

    • [1998] EFF(电子前沿基金会)的Deep Crack在56小时内花费$250,000破解DES;

    • [1999] 三重 DES

    • [2001] AES 在 FIPS PUB 197 发布;

    • [2004] DES标准 FIPS PUB 46-3 被撤销;

    • [2006] COPACOBANA 在9天内花费1万美元破解DES;

    • [2008] RIVYERA 在1天内破解 DES;

    • [2016] Hashcat用8块GTX 1080Ti在2天内破解DES;

    • [2017] 利用CPA攻击,针对一个特定明文在25秒内获得密钥;

  20. 双重加密

    • 为了弥补DES密钥长度不足的缺点,增强加密安全性有两种思路:从内部修改 vs. 黑盒构造;
    • 从内部修改不可行,因为即使以最小的方式修改DES,也将失去我们已经从DES获得的信心;
    • 双重加密: y = F k 1 , k 2 ′ ( x ) = def F k 2 ( F k 1 ( x ) ) y = F'_{k_1,k_2}(x) \overset{\text{def}}{=} F_{k_2}(F_{k_1}(x)) y=Fk1,k2(x)=defFk2(Fk1(x))
    • 密钥长度乘2会更安全吗?
  21. 中间相遇攻击(The Meet-In-the-Middle Attack

    • 双重加密在**中间相遇攻击(MITM)**下并不比原本的DES更安全;

    • 在已知明文攻击(KPA)下,从输入方向输入一个明文,通过一次DES加密,猜测不同密钥来得到一组中间值,保存这些密钥和中间值对;从输出方向反向输入一个密文,通过一个DES解密,猜测不同密钥来得到另一组中间值,也保存这些密钥和中间值对;这两组中间值中相同的为 z 0 z_0 z0,相应的两个密钥 k 1 k_1 k1 k 2 k_2 k2就可能是实际密钥。

    • z 0 = F k 1 ( x ) = F k 2 − 1 ( y )    ⟺    y = F k 1 , k 2 ′ ( x ) z_0 = F_{k_1}(x) = F^{-1}_{k_2}(y) \iff y = F'_{k_1,k_2}(x) z0=Fk1(x)=Fk21(y)y=Fk1,k2(x).

    • 密钥对 ( k 1 , k 2 ) (k_1,k_2) (k1,k2) 满足上面等式的概率为 2 − n 2^{-n} 2n;因为中间值有 2 n 2^n 2n中可能;

    • 这样的密钥对数量为 2 2 n / 2 n = 2 n 2^{2n}/2^n = 2^n 22n/2n=2n;这是密钥对数量乘以满足等式的概率;

    • 用另两个明文/密文对,密钥对的期望数量为 2 n / 2 2 n = 2 − n 2^{n}/2^{2n}=2^{-n} 2n/22n=2n. 足够小,因此剩下的就是密钥!

    • O ( 2 n ) \mathcal{O}(2^n) O(2n) 时间复杂性并且 O ( 2 n ) \mathcal{O}(2^n) O(2n) 空间复杂性,这是一种典型的空间换时间的设计;

    • 可见,双重DES在时间复杂性上与DES没有区别。

  22. DESX(XEX模式)

    • 为了增强DES并对抗中间相遇攻击,DESX通过密钥白化来增加有效密钥长度;
    • 白化(whitening):一个xor-enc-xor(XEX) 模式,用部分密钥来与输入和输出进行异或;
    • DESX: k = ( k 1 , k 2 , k 3 ) , ∣ k 1 ∣ = ∣ k 3 ∣ = 64 , ∣ k 2 ∣ = 56 k = (k_1,k_2,k_3), |k_1|=|k_3|=64, |k_2|=56 k=(k1,k2,k3),k1=k3=64,k2=56
    • 加密 y = k 3 ⊕ F k 2 ( x ⊕ k 1 ) y = k_3\oplus F_{k_2}(x \oplus k_1) y=k3Fk2(xk1)
    • 解密 x = k 1 ⊕ F k 2 − 1 ( y ⊕ k 3 ) x = k_1\oplus F^{-1}_{k_2}(y \oplus k_3) x=k1Fk21(yk3)
    • 安全性: ∣ k ∣ = 184 |k|=184 k=184,在MITM攻击下,破解所需时间 2 64 + 56 2^{64+56} 264+56;原因在于,为了获得中间值需要从输入或输出中一个方向猜测2个密钥;
  23. 三重加密(Triple Encryption

    • 三重DES Triple-DES (3DES):以连续的加密,解密,加密三个DES来加密明文,根据密钥选择分三种情况:
      • k 1 = k 2 = k 3 k_1 = k_2 = k_3 k1=k2=k3: 相当于一次DES,向后兼容,即采用该方案的通信方可以与采用普通DES的通信方互相通信;
      • k 1 ≠ k 2 ≠ k 3 k_1 \neq k_2 \neq k_3 k1=k2=k3: 在MITM攻击下,破解时间为 2 2 n 2^{2n} 22n ;这与DESX类似,某个方向需要猜测两个密钥;
      • k 1 = k 3 ≠ k 2 k_1 = k_3 \neq k_2 k1=k3=k2: 只有两个不同密钥,用一个I/O对的破解时间为 2 2 n 2^{2n} 22n ; 用 2 n 2^{n} 2n个I/O对的破解时间为 2 n 2^n 2n
    • 安全性更强,但块长度仍然不变并且更慢;
  24. 高级加密标准 AES(The Advanced Encryption Standard

    • 1997年,NIST召集高级加密标准 AES提案;
    • 2001年,J. Daemen 和 V. Rijmen设计的Rijndael成为AES;
    • AES是第一个用于绝密信息的公开可用密码;
    • 设计目标不仅包括安全,还包括有效性和灵活性等;
    • 128位块长度,128,192,或256位密钥;
    • 并非一个Feistel结构,而是一个SPN;
    • 对于减少轮次的变体只有非简单的攻击:
      • 对于 6/10轮的128位密钥, 2 27 2^{27} 227 时间;
      • 对于 8/12轮的192位密钥, 2 188 2^{188} 2188 时间;
      • 对于 8/14轮的 256位密钥, 2 204 2^{204} 2204 时间;
  25. AES概览

    • 动画
  26. SM4(思考)

    • 我国商用密码标准SM4是分组密码的国家标准,用于无线局域网和TLS。
    • SM4由吕述望老师主要开发,2006年解密,2012年由国家密码局发布。
    • SM1以芯片实现,和SM7用于轻量级场景,也都是对称加密方案,都保密,未公开。
    • 问题:为什么这些国密标准不公开,或者很晚才公开?
  27. 线性密码分析(Linear Cryptanalysis

    • 下面内容来自于“A Tutorial on Linear and Differential Cryptanalysis”

    • 针对DES的密码学分析的重点是分析S盒,因为S盒是DES中唯一的非线形部分,输入和输出之间关系被有意地设计成难以简单描述;线性分析就是要通过分析来寻找输入和输出之间的线性关系,从而破解加密方案;

    • 在输入和输出之间的线性分析:对于随机选择的输入 x x x和密钥 k k k,有 y = F k ( x ) y=F_k(x) y=Fk(x),在比特位置 i 1 , . . . , i ℓ i_1, ... ,i_\ell i1,...,i i 1 ′ , . . . , i ℓ ′ i_1', ... , i_\ell' i1,...,i 之间存在偏差(bias) p p p , 之所以称为“偏差”,是与“正常”概率 1 2 \frac{1}{2} 21相比而言;

      $ \Pr [x_{i_1} \oplus \cdots \oplus x_{i_\ell} \oplus y_{i_1’} \oplus \cdots \oplus y_{i_\ell’} = 0] = p+\frac{1}{2}. $

      线性关系就是指这些比特的异或值的统计结果与随机值之间存在偏差,无论异或结果为0还是为1,重点在于这些位置比特之间存在线形关系。

    • 当偏差较大时,如极端情况 p = 1 2 p=\frac{1}{2} p=21,可以认为输入中若干位置异或值等于输出中若干位置异或值;

    • 采用KPA(无需CPA)进行线性分析攻击的步骤:

      1. 构造S盒的线性近似表(linear approximation table),从而穿透S盒;
      2. 构造带有较大偏差的 r r r轮SPN的前 r − 1 r-1 r1轮的线性近似关系,从而建立了明文和最后一轮输入的线性关系;
      3. 根据已知的最后一轮输入和输出提取最后一轮的子密钥中若干比特,这部分密钥满足上一步建立的线性近似关系;
  28. 一个对S盒进行线性分析的例子

    • 以一个4位到4位的S盒为例,图中表格按列分为三个部分: X X X各比特值, Y Y Y各比特值,线性关系( X X X中若干比特异或值, Y Y Y中若干比特异或值,本例子中列出了3组);按行共16行,每行对应一个 X X X值,内容包括(由S盒决定的)相应的 Y Y Y值和线性关系;
    • 以第一行为例, X = 0000 X=0000 X=0000,根据S盒构造可知 Y = 1110 Y = 1110 Y=1110;第一组线性关系, X 2 ⊕ X 3 = 0 ⊕ 0 = 0 X_2 \oplus X_3 = 0 \oplus 0 = 0 X2X3=00=0 Y 1 ⊕ Y 3 ⊕ Y 4 = 1 ⊕ 1 ⊕ 0 = 0 Y_1 \oplus Y_3 \oplus Y_4 = 1 \oplus 1 \oplus 0 = 0 Y1Y3Y4=110=0
    • 统计 X 2 ⊕ X 3 X_2 \oplus X_3 X2X3等于 Y 1 ⊕ Y 3 ⊕ Y 4 Y_1 \oplus Y_3 \oplus Y_4 Y1Y3Y4的情况,一共12个;偏差为 12 − 16 / 2 = 4 12 - 16/2 = 4 1216/2=4
  29. 一个线性分布表的例子

    • X X X/ Y Y Y中选择的比特位置表示为一个16进制整数来作为行号/列号,其中选中的位置为1,未选中的为0;例如, X 2 ⊕ X 3 X_2 \oplus X_3 X2X3中选择了第2、3比特,表示为0110 = 6; Y 1 ⊕ Y 3 ⊕ Y 4 Y_1 \oplus Y_3 \oplus Y_4 Y1Y3Y4中选择了第1、3、4位,表示为1011 = B;
    • 根据此前对S盒的线性分析结果在表格中填入偏差;例如, ( 6 , B ) = 4 (6, B)=4 (6,B)=4
    • 至此,我们可以认为S盒被“穿透了”:找到了S盒上输入与输出的线性关系;
  30. 一个线性密码分析的例子

    1. 从上向下,第一轮S盒线性分析结果为 S 1 , 2 S_{1,2} S1,2: x 1 ⊕ x 3 ⊕ x 4 = y 2 x_1 \oplus x_3 \oplus x_4 = y_2 x1x3x4=y2;其中,S盒输入 x 1 , x 3 , x 4 x_1, x_3, x_4 x1,x3,x4为明文和第一轮子密钥中 p 5 , p 7 , p 8 p_5, p_7, p_8 p5,p7,p8 k 1 , 5 , k 1 , 7 , k 1 , 8 k_{1,5}, k_{1,7}, k_{1,8} k1,5,k1,7,k1,8的异或值;

    2. 第2轮S盒线性分析结果为 S 2 , 2 S_{2,2} S2,2: x 2 = y 2 ⊕ y 4 x_2 = y_2 \oplus y_4 x2=y2y4,输出的2个比特影响最后一轮的2个S盒输入 u 3 , 6 , u 3 , 14 u_{3,6}, u_{3,14} u3,6,u3,14

    3. 将输入、密钥和最后一轮S盒输入间关系表达出来: p 5 ⊕ p 7 ⊕ p 8 ⊕ k 1 , 5 ⊕ k 1 , 7 ⊕ k 1 , 8 ⊕ k 2 , 6 ⊕ k 3 , 6 ⊕ k 3 , 14 = u 3 , 6 ⊕ u 3 , 14 p_5 \oplus p_7 \oplus p_8 \oplus k_{1,5} \oplus k_{1,7} \oplus k_{1,8} \oplus k_{2,6} \oplus k_{3,6} \oplus k_{3,14} = u_{3,6} \oplus u_{3,14} p5p7p8k1,5k1,7k1,8k2,6k3,6k3,14=u3,6u3,14,

      其中,密钥比特异或部分 Σ k = k 1 , 5 ⊕ k 1 , 7 ⊕ k 1 , 8 ⊕ k 2 , 6 ⊕ k 3 , 6 ⊕ k 3 , 14 \Sigma{k} = k_{1,5} \oplus k_{1,7} \oplus k_{1,8} \oplus k_{2,6} \oplus k_{3,6} \oplus k_{3,14} Σk=k1,5k1,7k1,8k2,6k3,6k3,14 是由密钥决定的一个固定的值。根据前面线性关系的含义,无论 Σ k \Sigma{k} Σk是0还是1,都有一个线性关系 p 5 ⊕ p 7 ⊕ p 8 = u 3 , 6 ⊕ u 3 , 14 p_5 \oplus p_7 \oplus p_8 = u_{3,6} \oplus u_{3,14} p5p7p8=u3,6u3,14

    4. 从SPN的输出反向分析, u 3 , 6 ⊕ u 3 , 14 u_{3,6} \oplus u_{3,14} u3,6u3,14 由密文和第4个子密钥的所有偶数位异或值决定;

    5. 猜测第4个子密钥的所有偶数位,满足上面线性关系的就可能是真的密钥;需要 2 8 2^8 28时间;

    6. 重复上面的过程,逐渐获得所有密钥;

  31. 差分密码分析(Differential Cryptanalysis

    • 与线性分析类似,但分析的是特定输入差异 Δ X \Delta_X ΔX 产生特定输出差异 Δ Y \Delta_Y ΔY 的概率 p ≫ 2 − n p \gg 2^{-n} p2n

      x 1 ⊕ x 2 = Δ X x_1\oplus x_2=\Delta_X x1x2=ΔX, F k ( x 1 ) ⊕ F k ( x 2 ) = Δ Y F_k(x_1) \oplus F_k(x_2)=\Delta_Y Fk(x1)Fk(x2)=ΔY 的概率 p p p.

    • p p p远大于随机概率 2 − n 2^{-n} 2n时,可以认为输入差异与输出差异间存在关系;

    • 这个攻击需要通过CPA进行,因为需要构造特定输入差异,攻击步骤:

      • 构造S盒的差分分布表(difference distribution table)穿透S盒;
      • 构造带有较大偏差的 r r r轮SPN的前 r − 1 r-1 r1轮的差分特征,从而建立了明文和最后一轮输入的差分特征关系;
      • 根据已知的最后一轮输入和输出提取最后一轮的子密钥中若干比特,这部分密钥满足上一步建立的差分特征关系;
  32. 一个对S盒进行差分分析的例子

    • 以一个4位到4位的S盒为例,图中表格按列分为三个部分: X X X各比特值, Y Y Y各比特值,差分结果( Δ X \Delta_X ΔX下的 Δ Y \Delta_Y ΔY,本例子中列出了3组);按行共16行,每行对应一个 X X X值,内容包括(由S盒决定的)相应的 Y Y Y值和 Δ Y \Delta_Y ΔY值;
    • 以第一行第一列为例, X = 0000 X=0000 X=0000,根据S盒构造可知 Y = 1110 Y = 1110 Y=1110;根据 Δ X = 1011 \Delta_X = 1011 ΔX=1011,可知 X ′ = Δ X ⊕ X = 1011 X' = \Delta_X \oplus X = 1011 X=ΔXX=1011,进而得到 Y ′ = 1100 Y' = 1100 Y=1100 ,有 Δ Y = Y ⊕ Y ′ = 0010 \Delta_Y = Y \oplus Y' = 0010 ΔY=YY=0010
    • 统计不同 Δ X \Delta_X ΔX Δ Y \Delta_Y ΔY各个值的频率,找出频率较高的情况,例如0010出现了8次;
  33. 一个差分分布表的例子

    • Δ X \Delta_X ΔX Δ Y \Delta_Y ΔY用16进制整数来表示,作为行号/列号,其中填入出现频率;例如, Δ X = 1011 = B , Δ Y = 0010 = 2 \Delta X = 1011 = B, \Delta Y = 0010 = 2 ΔX=1011=B,ΔY=0010=2,出现了8次,于是 ( B , 2 ) = 8 (B, 2) = 8 (B,2)=8
    • 至此,我们可以认为S盒被“穿透了”:找到了S盒上差分特征;
  34. 一个差分密码分析的例子

    • 与线性分析时类似,可以得到 Δ P \Delta_P ΔP Δ U \Delta_U ΔU间关系,而不需要关心中间子密钥;
    • 同样从SPN的输出反向分析,猜测第4个子密钥的所有偶数位,满足上面差分特征的就可能是真的密钥;需要 2 8 2^8 28时间;
    • 重复上面的过程,逐渐获得所有密钥;
  35. 块密码补充

    • 块长度应该足够大;
    • 块密码不能抵御消息篡改;
    • Padding:填充n个内容为n的字节,或哑块;
    • 流密码 与 分组密码:流密码更快但安全性更低,应该采用块密码的“流密码模式”;
  36. 总结

    略;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/323045.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue-15、Vue条件渲染

1、v-show 在Vue中&#xff0c;v-show是一个指令&#xff0c;用于根据表达式的值来控制元素的显示与隐藏。当指令的值为true时&#xff0c;元素显示&#xff1b;当指令的值为false时&#xff0c;元素隐藏。 v-show的用法如下&#xff1a; <!DOCTYPE html> <html lan…

新手做抖音小店如何选品?选什么样的品?这几点一定要记住

大家好&#xff0c;我是电商花花。 抖音小店如何选品&#xff1f;大家应该自己的选品方法和渠道&#xff0c;但是选品归根结底就是抓住用户的喜好&#xff0c;清楚他们想要什么样的商品&#xff0c;只有抓住用户的需求&#xff0c;客户才会买单&#xff0c;店铺才会出单。 所…

HTML 列表 iframe

文章目录 列表无序列表有序列表自定义列表 iframe 引入外部页面 列表 列表 是 装载 结构 , 样式 一致的 文字 或 图表 的容器 ; 列表 由于其 整齐 , 整洁 , 有序 的特征 , 类似于表格 , 但是其 组合的自由程度高于表格 , 经常用来进行布局 ; HTML 列表包括如下类型 : 无序列…

FASTQ 文件压缩格式有哪些?

FASTQ 文件压缩格式 .gz .bz2 .xz .rfq .rfq.xz FASTQ 文件是用于存储测序数据的一种格式&#xff0c;它包含了大量的文本信息&#xff0c;因此通常占用大量的存储空间。为了有效地处理和传输这些数据&#xff0c;通常需要对 FASTQ 文件进行压缩来节省存储空间及传输带宽。以下…

2024年软件测试五大趋势预测,软件测试服务商价值凸显

当今软件的高速发展对软件质量提出了更高的要求&#xff0c;而软件测试作为保证软件质量的关键环节&#xff0c;自然也成为业界关注的焦点。进入2024年&#xff0c;回顾中国软件测试的发展历程&#xff0c;我们不难发现中国市场日趋成熟&#xff0c;软件测试行业蓬勃发展&#…

vue3中,vue-echarts基本使用(柱状图、饼图、折线图)

注意&#xff1a;vue-echarts在使用前要先安装echarts&#xff0c;不要只安装vue-echarts这一个 echarts官网地址&#xff1a;Apache EChartsApache ECharts&#xff0c;一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xf…

如何设计一个低代码平台?

导语&#xff1a;如果企业想自主可控&#xff0c;从零开发一个低代码平台&#xff0c;如何技术选型&#xff1f;这篇文章或许会对你有所帮助。 一、前言 低代码平台至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端UI等组件&#xff0c;我们没必要重新造轮…

pve虚拟机的改名和修改ID

PVE的虚拟机名字在web界面是无法修改id和名字的。要注意id和名字不能重。 在使用备份时就发现虚拟机是以虚拟机id作为维一标识&#xff0c;如果有多台pve节点&#xff0c;但共用同一个nfs目录备份或使用同一个pbs进行备份时就必须保障id的唯一性。这时可以使用这个方法来进行补…

在线培训系统开发

随着远程学习和数字化教育的兴起&#xff0c;在线培训系统成为了教育领域的重要组成部分。在这篇文章中&#xff0c;我们将探讨在线培训系统开发的一些关键技术和概念。 前端开发 在在线培训系统中&#xff0c;前端开发起着至关重要的作用。使用现代的前端框架如React、Vue或…

node-red实现ModBus-RTU 通信协议(RS485信号输出)的数据交互

node-red实现485型 - 温湿度变表数据转换 一、介绍二、 通讯协议2.1 通讯基本参数2.2 数据帧格式定义2.3 寄存器地址2.4 通讯协议示例以及解释 三、 node-red实现数据交互3.1 node-red读取数据3.2 node-red写回数据 本文参考《86 壳液晶温湿度变送器使用说明书&#xff08;485 …

jetlinks 规则编排中的函数节点使用 js 脚本格式化输出当前系统时间的坑

网上搜到的都是类似如下这种&#xff1a; // 获取当前时间 var date new Date();// 格式化输出当前时间 var year date.getFullYear(); var month date.getMonth(); var day date.getDate(); var hour date.getHours(); var minute date.getMinutes(); var second date.…

定制聚四氟乙烯反应容器可配套温度计套管和冷凝管

是谁遇到氟化氢就头疼&#xff0c;是谁看着玻璃装置被强碱性试剂折腾的惨不忍睹。 特氟龙塑料材质可以帮您解决问题&#xff0c;聚四氟乙烯材质是其中的一种材质&#xff0c;耐温250℃&#xff0c;耐受强酸强碱和各种有机溶剂&#xff0c;加工灵活&#xff0c;来样或者图纸或者…

线性代数基础【4】线性方程组

第四章 线性方程组 一、线性方程组的基本概念与表达形式 二、线性方程组解的基本定理 定理1 设A为mXn矩阵,则 (1)齐次线性方程组AX0 只有零解的充分必要条件是r(A)n; (2)齐次线性方程组AX0 有非零解(或有无数个解)的充分必要条件是r(A)&#xff1c;n 推论1 设A为n阶矩阵,则…

Matlab论文插图绘制模板第135期—隐函数曲面图(fimplicit3)

在之前的文章中&#xff0c;分享了Matlab隐函数折线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下隐函数曲面图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋友可以关…

html5+css3+bootstrap+js 新闻网页

新闻网页练习打卡&#xff01; 一、首页 二、社会 三、财经 四、视频展示 简易新闻网站&#xff08;期末作业&#xff09;

使用WAF防御网络上的隐蔽威胁之SSRF攻击

服务器端请求伪造&#xff08;SSRF&#xff09;攻击是一种常见的网络安全威胁&#xff0c;它允许攻击者诱使服务器执行恶意请求。与跨站请求伪造&#xff08;CSRF&#xff09;相比&#xff0c;SSRF攻击针对的是服务器而不是用户。了解SSRF攻击的工作原理、如何防御它&#xff0…

在众多的材质中选择灰口铸铁铸造划线平台、铸铁平台等的原因——河北北重

使用灰口铸铁制作铸铁平台和划线平台的主要原因有以下几点&#xff1a; 强度高&#xff1a;灰口铸铁具有较高的强度和硬度&#xff0c;能够承受较大的载荷和冲击力。这使得灰口铸铁非常适合制作需要承受重压和磨损的平台和设备。 耐磨性好&#xff1a;灰口铸铁具有较高的耐磨性…

C++结合OpenCV:图像的加法运算

一、图像运算 针对图像的加法运算、位运算都是比较基础的运算。但是&#xff0c;很多复杂的图像处理功能正是借助这些基础的运算来完成的。所以&#xff0c;牢固掌握基础操作&#xff0c;对于更好地实现图像处理是非常有帮助的。本章简单介绍了加法运算、位运算&#xff0c;并…

【java八股文】之Redis基础篇

【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博…

OpenHarmony—Docker编译环境

Docker环境介绍 OpenHarmony为开发者提供了两种Docker环境&#xff0c;以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下&#xff1a; 独立Docker环境&#xff1a;适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。基于HPM的Docker环…
最新文章