Criptoanálise linear no exemplo do algoritmo de criptografia de bloco NUSH

Introdução

No mundo moderno, existe uma questão aguda sobre a confidencialidade dos dados durante sua troca e armazenamento, o que é alcançado por meio de todos os métodos possíveis de criptografia. Porém, com o advento de novos algoritmos de criptografia, começa-se a estudar formas de violar o sigilo dos dados, ou seja, estão em busca de ataques contra eles.





Hoje em dia, são amplamente utilizados algoritmos de criptografia de bloco como AES, Grasshopper, etc. A criptoanálise linear é uma das formas potencialmente eficazes de atacá-los. O conceito básico deste método foi apresentado por Mitsuru Matsui em seu trabalho “Linear Cryptoanalysis Method for DES Cipher” [1] nos anos 90. A essência deste método será descrita na seção 2 deste artigo.





Como exemplo de uso efetivo deste método, é apresentada uma criptoanálise linear do algoritmo de criptografia de blocos NUSH [2], uma breve referência sobre a qual será dada a seguir.





Fundamentos da Criptoanálise Linear

Como foi escrito acima, a essência da criptoanálise linear é descrita em “Linear Cryptoanalysis Method for DES Cipher”. Ao usar criptoanálise linear, presume-se que a estrutura da cifra seja conhecida e que o criptanalista tenha uma amostra estatística suficiente de “texto cifrado-chave pública” obtida em uma única chave.





Depois de atender aos requisitos acima, a estrutura do algoritmo é substituída por uma função linear simples. Via de regra, a análise de funções lineares é muito mais simples do que as funções não lineares da própria cifra, o que pode reduzir o problema de análise de uma cifra à análise de sua modificação linear. Além disso, a partir do sistema de funções obtido, o criptanalista adivinha os bits da chave com uma certa probabilidade.





Deixe o <x, y> = x_1 * y_1 + x_2 * y_2 + ... + x_n * y_n produto escalar dos vetores binários módulo 2. E deixe o P, C, Ktexto simples, texto cifrado e chave, respectivamente. 





Definição 1





L:





<P, \ alpha> \ oplus <C, \ beta> = <K, \ gamma>

1 \ barra invertida 2 + \ varepsilon \ varejpsilon , \ \ alpha, \ beta, \ gamma- .





, .





.





(Pilling-up , “ ”)





     XI 1 \ leq i \ leq n- , \ mathbb {Z} _2.





P \ {X_i = 0 \} = 1 \ barra invertida 2 + \ varepsilon_i

1 \ leq \ varepsilon_i \ leq 1 \ barra invertida 2. X_1 \ oplus X_2 \ oplus ... \ oplus X_n  0 1 \ barra invertida 2 + \ varepsilon, \ varejpsilon = 2 ^ {n-1} \ prod ^ {n} _ {i = 1} \ varejpsilon_i





1: \ varejpsilon_j = 0, j \ in \ overline {1, n} .





.





NUSH

2000 NESSIE , , LAN Crypto – NUSH. , (64, 128, 192 256 ).





S- P-, (XOR, AND ..). . , , Está bem), k – .









N = 4nP = P_0 P_1 P_2 P_3. KS_i(start key) . : a_0 b_0 c_0 d_0 = P_0 P_1 P_2 P_3 \ oplus KS_0 KS_1 KS_2 KS_3. r-1 , KR_i (subKey) - , # — , , C_i, S_i , \ gg j— j :





{   for ( i=1...r-1 )  \\  a_i = b_{i-1}    b_i=((c_i \oplus (KR_{i-1}+C_{i-1}))+b_{i-1}) \gg S_{i-1} \\ c_i = d_{i-1} \\  d_i = a_i \oplus (b_i \# d_i)}

:





{a_r = a_{r-1}  + (c_r \# d_{r-1}) \\ b_r = b_{r-1} \\ c_r = ((c_{r-1} \oplus (KR_r+C_{r-1})+b_{r-1})) \gg S_{r-1} \\ d_r = d_{r-1}}

: M_0 M_1 M_2 M_3 = a_r b_r c_r d_r \oplus KF_0 KF_1 KF_2 KF_3













{d_{r-1} = d_r \\ b_{r-1} = b_r a_{r-1} = a_r - (c_r \# d_{r-1}) \\ a_{r-1} = a_r - (c_r \# d_r{r-1}) \\ c_{r-1} = c_r \gg (n- S_{r-1}) }

r-1





{ for(i=r-1...1) \\ d_{i-1} = c_i \\ b_{i-1} = a_i \\ a_{i-1} = d_i - (b_i \# c_{i-1}) \\ c_{i-1} = (b_i \gg (n-S_{i-1}))-KR_{i-1}-a_{i-1}}

NUSH

, , , 1









{ a_i[0] = b_{i-1}[0]  \quad (1) }

f(x,y)=x \# y . , p=0.75 p=0.25. p=0.75 p=0.25 d_i:









{d_i =  a_{i-1}[0] \oplus b_i[0] \oplus d_{i-1}[0] \quad (2)}

(1) (2) p=0.75









a_i[0] \oplus b_i[0] \oplus d_i[0] = a_{i-1}[0] \oplus b_{i-1}[0] \oplus d_{i-1}[0] \oplus \theta \quad (3)

\theta = 0 # “AND” \theta = 1 # “OR”. 





, .





a_1[0] \oplus b_1[0] \oplus d_1[0] . , S_0 = 4, b_1[0] c_0[0-4], b_0[0-4], KR_0[0-4] C_0[0-4]. c_0[0-4]





  5 c_0. a_1[0] \oplus b_1[0] \oplus d_1[0] a_0[0-4], b_0[0], c_0[0], d_0[0-4], KR_0[0-4] C_0[0-4].





f_1:









a_1[0] \oplus b_1[0] \oplus d_1[0] = f_1 \begin{pmatrix} P_0[0], P_1[0-4], P_2[0-4], P_3[0], \\  KS_0[0], KS_1[0-4], KS_2[0-4], KS_3[0], KR_0[0-4] \end{pmatrix} \quad (4)





a_2[0] \oplus b_2[0] \oplus d_2[0] . , a_2[0] \oplus b_2[0] \oplus d_2[0] P_3[0] \oplus KS_0[0], P_2[0-11] \oplus KS_1[0-11], P_1[0-11] \oplus KS_2[0-11], P_0 [0-7] \oplus KS_2[0-7], KR_0 [0-11] KR_1[0-7]. f_2:









a_2[0] \oplus b_2[0] \oplus d_2[0] = f_2 \begin{pmatrix} P_0[0-7], P_1[0-11], P_2[0-11], P_3[0], \\  KS_0[0], KS_1[0-11], KS_2[0-11], KS_3[0-7], KR_1[0-7] \end{pmatrix} \quad (5)





a_3[0] \oplus b_3[0] \oplus d_3[0] . , a_3[0] \oplus b_3[0] \oplus d_3[0] P, KS_0[0-11], KS_1, KS_2, KS_3, KR_0, KR_1[0] KR_2[0-11]. f_3:









a_3[0] \oplus b_3[0] \oplus d_3[0] = f_3(P, KS_0[0-11], KS_1, KS_2, KS_3, KR_0, KR_1, KR_2[0-11]) \quad (6)





a_{32}[0] \oplus b_{32}[0] \oplus d_{32}[0] . ,





{ d_{32}[0] = c_{33}[0] \\ b_{32}[0] = a_{33}[0] \\ a_{32}[0] = d_{33}[0] \oplus (b_{33}[0] \& c_{32}[0])}  \quad { \space \\ (7)}

a_{32}[0] b_{32}[0] c_{32}[0] d_{32}[0] a_{32}[0] \oplus b_{32}[0] \oplus d_{32}[0]. a_{34}[0], b_{34}[0], c_{34}[0], d_{34}[0] KR_{33}[0]. , a_{35}[0,1], b_{35}[0,1], c_{35}[0,1], d_{35}[0,1] a_{36}[0,1], b_{36}[0,1], c_{36}[0,1], d_{36}[0,1] KR_{35}[0].





, a_{32}[0] \oplus b_{32}[0] \oplus d_{32}[0] M_0[0,1], M_1[0-2], M_2[0,12], M_3[0,1], KF_0[0], KF_1[0,12], KF_2[0-2], KF_3[0,1], KR_{33}[0], KR_{34}[0], KR_{35}[0], M_0[0,1], M_1[0-2]. f_4:





a_{32}[0] \oplus b_{32}[0] \oplus d_{32}[0] = f_4 \begin{pmatrix} {M_0[0,1], M_1[0-2], M_2[0-12], M_3[0,1], \\  KF_0[0,1], KF_1[0-12], KF_2[0-2], KF_3[0,1], \\ KR_{33}[0], KR_{34}[0], KR_{35}[0] }  \end{pmatrix} \quad (8)

a_{31}[0] \oplus b_{31}[0] \oplus d_{31}[0] f_5:





a_ {31} [0] \ oplus b_ {31} [0] \ oplus d_ {31} [0] = f_5 \ begin {pmatriz} {M_0 [0-9], M_1 [0-11], M_2 [0 -12], M_3 [0,1], \\ KF_0 [0,1], KF_1 [0-12], KF_2 [0-11], KF_3 [0-9], \\ KR_ {32} [0] , KR_ {33} [0], KR_ {34} [0], KR_ {35} [0-9]} \ end {pmatriz} \ quad (9)

. (3) , 29-





a_2 [0] \ oplus b_2 [0] \ oplus d_2 [0] = a_ {31} [0] \ oplus b_ {31} [0] \ oplus d_ {31} [0] \ quad (10)

1/2 + 2 ^ {- 30} .





{f_2 (P, KS_0 [0], KS_1 [0-11], KS_2 [0-11], KS_3 [0-7], KR_1 [0-7]) = \\ = f_5 \ begin {pmatriz} {M , \\ KF_0 [0,1], KF_1 [0-12], KF_2 [0-11], KF_3 [0-9], \\ KR_ {32} [0], KR_ {33} [0], KR_ {34} [0], KR_ {35} [0-9]} \ end {pmatriz}} {\ espaço \\ \ espaço \\ \ quad (11)}

NUSH , (11) m_0- . , .





1. K ^ i (i = 1, ..., 2 ^ {m_0}) T_i - , (11).





2. T_j T_i, K ^ j.





3. , .





O artigo apresenta o conceito básico da criptanálise linear e considera um exemplo de sua aplicação na análise do algoritmo de criptografia NUSH.





Literatura

1. Mitsuru Matsui, Linear cryptoanalysis method for DES cipher, Advances in Cryptogy-Eurocrypt'93, Berlin: Springer-Verlag, 1993, 386-397.





2. Wu Wenling & Feng Dengguo, Linear cryptoanalysis of NUSH block cipher, Science in China (Seria F), fevereiro de 2002, Vol. 45, nº 1.





3. M. Heys, A Tutorial on Linear and Differential Cryptoanalysis, Cryptologia, junho de 2001, vol. 26 No. 3.





4.https: //www.youtube.com/watch? V = nEHVfeaPjNw 












All Articles