【现代密码学】笔记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.mzph.cn/news/625536.shtml

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

相关文章

pve虚拟机的改名和修改ID

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

MySQL使用通配符进行数据搜索以及过滤

目录 1.什么是通配符? 2.通配符之→百分号(%) 3.通配符之→下划线(_) 4.通配符使用注意事项 *本文涉及概念来源于图灵程序设计丛书,数据库系列——《MySQL必知必会》 1.什么是通配符? 通配符(wildcard) :用来匹配值的一部分…

scrollTop与offsetTop解决小分辨率区域块向上滚动效果效果,结合animation与@keyframes实现标题左右闪动更换颜色效果。

scrollTop 是一个属性,它表示元素的滚动内容垂直滚动条的位置。对于可滚动元素,scrollTop 属性返回垂直滚动条滚动的像素数,即元素顶部被隐藏的像素数。 offsetTop 是一个属性,用于获取一个元素相对于其父元素的垂直偏移量&…

移动端开发进阶之蓝牙通讯(二)

移动端开发进阶之蓝牙通讯(二) 蓝牙广播是一种无线通讯技术,通过无线电波传输数据; 在蓝牙低功耗(BLE)协议中,广播通信是其重要组成部分,主要有两类使用场景: 单一方向的…

腾讯云服务器租用价格表_2024新版报价

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

【android】rk3588-android-bt

文章目录 蓝牙框架HCI接口蓝牙VENDORLIBvendorlib是什么 代码层面解读vendorlib1、 vendorlib实现,协议栈调用2、协议栈实现,vendorlib调用(回调函数)2.1、 init函数2.2、BT_VND_OP_POWER_CTRL对应处理2.3、BT_VND_OP_USERIAL_OPE…

5.1 内容管理模块 - 课程预览、提交审核

内容管理模块 - 课程预览、提交审核 文章目录 内容管理模块 - 课程预览、提交审核一、课程预览1.1 需求分析1.2 freemarker 模板引擎1.2.1 Maven 坐标1.2.2 freemaker 相关配置信息1.2.3 添加模板 1.3 测试静态页面1.3.1 部署Nginx1.3.2 解决端口问题被占用问题1.3.3 配置host文…

紫光展锐T770安卓核心板_展锐T770 5G核心板规格参数

紫光展锐T770安卓核心板是一款高性能的5G安卓智能模块,拥有先进的6nm制程工艺和强大的性能。板载8GB Ram 256GBROM的内存单元,支持4K H.265/ H.264视频编解码,搭载Android 13以上操作系统,功能丰富。除了支持5G NSA和SA双模式向下…

我的NPI项目之设备系统启动(三) -- CDT的一个实例

上面说了这么多,这里就添加一个CDT的使用实例和简单的代码解析。 首先生成cdt_configure.xml配置文件,然后执行如下命令: python cdt_generator.py cdt_configure.xml CDT.bin; 就可以生成对应的CDT.bin文件。同时也会生成, 我们会利用ha…

『 C++ 』AVL树详解 ( 万字 )

🦈STL容器类型 在STL的容器中,分为几种容器: 序列式容器(Sequence Containers): 这些容器以线性顺序存储元素,保留了元素的插入顺序。 支持随机访问,因此可以使用索引或迭代器快速访问任何位置的元素。 主要的序列式…

DBA技术栈(三):MySQL 性能影响因素

文章目录 前言一、影响MySQL性能的因素1.1 商业上的需求1.2 应用架构规划1.3 查询语句使用方式1.4 Schema的设计1.5 硬件环境 总结 前言 大部分人都一致认为一个数据库应用系统(这里的数据库应用系统概指所有使用数据库的系统)的性能瓶颈最容易出现在数…

MOSS 混元 巅峰对话!2024大模型发展都在这里

引言 2023 年,各大厂商争先投入 LLM 研发,一年内,在国内累计就有 200 余个大模型正式发布。尽管很多大模型并不完善,但行业内的研究专家及产业领袖都在为大模型的突破甚至 AGI 的发展,做着不懈探索。 但同时&#xff0…

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

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

Windows系统缺失api-ms-win-crt-runtime-l1-1-0.dll的修复方法

“在Windows操作系统环境下,用户经常遇到丢失api-ms-win-crt-runtime-l1-1-0.dll文件的问题,这一现象引发了广泛的关注与困扰。该dll文件作为Microsoft Visual C Redistributable Package的重要组成部分,对于系统内许多应用程序的正常运行起着…

C++ λ表达式

λ表达式提供了函数对象的另一种编程机制。 在 C 11 和更高版本中,Lambda 表达式(通常称为 Lambda)是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象(闭包)的简便方法。 Lambda 通常用于封装传递给算法…

论文笔记(三十九)Learning Human-to-Robot Handovers from Point Clouds

Learning Human-to-Robot Handovers from Point Clouds 文章概括摘要1. 介绍2. 相关工作3. 背景3.1. 强化学习3.2. 移交模拟基准 4. 方法4.1. Handover Environment4.2. 感知4.3. 基于视觉的控制4.4. 师生两阶段培训 (Two-Stage Teacher-Student Training) 5. 实验5.1. 模拟评估…

CSS实现平行四边形

1、为什么实现平行四边形 在日常开发过程中,有些时候我们可以会遇到一种情况,如可视化大屏中要求我们横线实现对应的进度条,但进度条的内容是由无数个平行四边形组装类似于进度条的形式,那么我们就需要使用CSS来进行对应的实现。 …

OPT(erlang)打造一套缓存系统(一)

缓存的设计 这个简易缓存存储的是键/值对,其中键与键之间不得重复,并且每个键只能映射到一个值。这个设计背后的核心思想是为写人缓存的每一个值都分配一个独立的存储进程再将对应的键映射至该进程。你可能会对这种为每个值分配一个进程的设计感到惊讶&…

20240114-寻找零损失或一损失的玩家

题目要求 给定一个整数数组 matches,其中 matches[i] [winneri, Loseri] 表示玩家 Winneri 在一场比赛中击败了玩家 Loseri。 返回大小为 2 的列表答案,其中: answer[0] 是所有未输掉任何比赛的玩家的列表。answer[1] 是仅输掉一场比赛的…

京东年度数据报告-2023全年度笔记本十大热门品牌销量(销额)榜单

2023年度,在电脑办公市场整体销售下滑的环境下,笔记本市场的整体销售也不景气。 根据鲸参谋平台的数据显示,京东平台上笔记本的年度销量为650万,同比下滑约16%;销售额约为330亿,同比下滑约19%。同时&#…