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

news2024/11/15 15:48:35

【现代密码学】笔记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.coloradmin.cn/o/1387202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云服务器部署Stable Diffusion Webui从0到1总结:反复重启+循环debug

文章目录 在学校服务器部署Stable Diffusion Webui(一)准备工作(二)环境配置(三)git拉取项目到本地(四)运行项目 遇到的问题:(一)使用git clone时…

jmeter--6.跨线程组关联

目录 1. 跨线程组实现接口关联 2. 跨线程组实现Cookie关联 1. 跨线程组实现接口关联 1.1 根据json/正则的方式提取到需要的响应数据 1.2 在接口下新增一个BeanShell 后置处理器,并通过函数助手写入【${__setProperty(new_token,${access_token},)}】,…

基于Java (spring-boot)的社团管理系统

一、项目介绍 系统管理员的功能概述: ①用户管理 a.注册用户账户 当一个新用户注册时,用户填写基本信息并上传。用户基本信息包括账号、 姓名、密码、手机、地址等信息。 b.用户信息管理 管理员可以查看系统所有用户的基本信息,并修改和…

10分钟快速上手LLM大模型Python前端开发(三)之显示模块(一)

10分钟快速上手LLM大模型Python前端开发(三)之显示模块(一) 显示代码初步测试 通用显示方法显示字符串显示dataframe显示Markdown 微信公众号:leetcode_algos_life,代码随想随记 小红书:4124081…

基于Java (spring-boot)的停车场管理系统

一、项目介绍 基于Java (spring-boot)的停车场管理系统、预订车位系统、停车缴费系统功能: 登录、注册、后台首页、用户信息管理、车辆信息管理、新增车辆、车位费用设置、停泊车辆查询、车辆进出管理、登录日志查询、个人中心、预定停车位、缴费信息。 适用人群&…

jmeter--5.断言

目录 1. 响应断言 1.1 添加断言 1.2 名词解释 断言失败显示示例 2. json断言 2.1 添加断言 2.2 名词解释 断言失败显示示例 2.3 json断言应用 3. beanshell断言 3.1 添加断言 3.2 原理 断言失败显示示例 1. 响应断言 1.1 添加断言 线程组->添加->断言->…

202406读书笔记|《沉睡的线条世界》——翻山越岭,只为与你分享点滴的快乐

《沉睡的线条世界》登登登Dn绘著,简简单单的小画,简简单单的线条,简简单单的语言,温馨又有一点暖心。 怎样的你都好,做最真实的自己。 部分节选如下: 愿你我永远有热情,永远能为生活的每一个小惊…

运筹说 第67期 | 动态规划模型的建立与求解

通过前一期的学习,我们已经学会了动态规划的基本概念和基本原理。本期小编带大家学习动态规划模型的建立与求解。 动态规划模型的建立 一 概述 建立动态规划的模型,就是分析问题并建立问题的动态规划基本方程。 成功地应用动态规划方法的关键&#x…

[渗透测试学习] Hospital - HackTheBox

文章目录 信息搜集getshell提权信息搜集 nmap扫描一下端口 发现8080端口和443端口有http服务 然后发现3389端口是启用了ms-wbt-server服务 在对443端口的扫描没有收获,并且只有邮箱登录界面无法注册 接着看向8080端口,我们随便注册用户登录后发现有文件上传功能 getshell …

Linux入门级常用命令学习笔记

以下命令是我跟着编程界的大佬鱼皮学习Linux时用的命令,我把它都记下来,权当作笔记,可供自己后期反复练习使用,让我们学习一下最基本的Linux命令吧。 一、Linux实战命令 在dos下 【ssh 服务器ip】可以连接服务器,输入…

HCIA基础知识

IP地址、静态路由、动态路由、交换机 OSPF RIP DHCP VLAN ACL NAT OSI TCP/IP UDP TCP 三次握手,四次挥手,报头 什么是网络? 由网络连接设备通过传输介质将网络终端设备连接起来,进行资源共享、信息传递的平台。 OSI七…

运筹说 第98期|无约束极值问题

上一期我们一起学习了关于非线性规划问题的一维搜索方法的相关内容,本期小编将带大家学习非线性规划的无约束极值问题。 下面,让我们从实际问题出发,学习无约束极值问题吧! 一、问题描述及求解原理 1 无约束极值问题的定义 无约…

【C++干货铺】会旋转的二叉树——AVLTree

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 前言 AVL树 AVL树的概念 AVL树结点的定义 AVL树的插入 寻找插入结点的位置 修改平衡因子 AVL树的旋转 右单旋 左单旋 先右旋再左旋 先左旋再右旋 AVL树…

【JAVA-打包jar】jar不能双击运行,Jar包找不到主类

我的问题比较简单,搞了一下午,查阅了很多教程,无意发现,居然是 jdk过期需要更新! 气的吐血! 所以不要废话,首先检查自己的环境变量和JDK!!! 环境变量&…

ML:2-1-4理解python如何实现forward prop

文章目录 1. 单层上的向前传播forward prop2. 前向传播的一般实现3. 通用人工智能 1. 单层上的向前传播forward prop 【了解在python中如何实现forward prop】 继续使用咖啡烘焙模型: 了解经过每一个神经元的预测过程。设置每一个神经元的w,b值。从而得…

(2024,分数蒸馏抽样,Delta 降噪分数,LoRA)PALP:文本到图像模型的提示对齐个性化

PALP: Prompt Aligned Personalization of Text-to-Image Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 4. 提示对齐方法 4.1 概述 4.2 个性化 4.3 提示对齐分数抽…

深度学习记录--Train/dev/test sets

为什么需要训练集、验证集(简单交叉验证集)和测试集? 为了创建高效的神经网络,需要不断进行训练(迭代) 一个神经网络的产生 从最开始的想法idea开始,然后付诸于代码code,根据结果验证反过来对一开始的想法idea进行修正&#xf…

架构简介,到底什么是架构?

1. 前言 对技术人员来说,“架构”是一个再常见不过的词儿了。我们经常对新员工培训整个系统的架构,参加架构设计评审,学习业界开源系统(例如,MySQL、Hadoop)的架构,研究大公司的架构实现&#…

2024年腾讯云服务器多少钱1个月?

2024年腾讯云服务器多少钱1个月?5元一个月,62元一年,更多腾讯云服务器精准报价。腾讯云服务器租用优惠价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,…

2024年全网最全春招时间线

2024年全网最全春招时间线 春招,许多同学可能会误以为这是春天才会进行。 你可能会想,期末刚考完试,先享受下寒假,再欢度春节,收些红包,甚至还能抽空去理个发型。等到春日明媚时,再参加春招活…