Cómo se crean las cajas S

El cifrado de clave simétrica es omnipresente en el mundo actual: almacena y transmite información, correo electrónico e incluso mira videos en YouTube. Los cifrados simétricos fuertes incluyen cajas S bien formadas. En esta publicación, lo guiaré a través de las diferentes formas de crear cajas S y compararlas.





1. ¿Qué es el bloque S?

El bloque S es una función que toma n bits en la entrada, los transforma de acuerdo con un cierto algoritmo y devuelve m bits en la salida. Las cajas S se utilizan ampliamente en la mayoría de los cifrados de bloques. Pueden diferir en los tamaños de entrada y salida (nym), pueden generarse de forma determinista o aleatoria y también pueden ser inmutables (fijos) o generados en función de una clave. Las cajas S se pueden representar como una tabla (como en DES) o como una función booleana algebraica (como en AES). Los criterios importantes al componer un S-box son su no linealidad y el criterio para la propagación de funciones booleanas. Para ver el S-box como una secuencia de funciones booleanas, primero comprendemos cómo las funciones booleanas se relacionan generalmente con la criptografía.





2. Funciones booleanas en criptografía

En los sistemas de encriptación tradicionales que traducen un mensaje abierto en uno encriptado con una clave secreta, el aparato de funciones booleanas es muy utilizado. El principal requisito para ellos es que compliquen la decodificación del mensaje por una persona que no es su destinatario.





Para ilustrar el uso de funciones booleanas, presentamos un esquema de cifrado de flujo, cuando cada carácter entrante se convierte inmediatamente en un carácter de texto cifrado. El texto original, la clave y el texto cifrado son cadenas binarias de la misma longitud. En la práctica, la mayoría de las veces el remitente y el receptor eligen una secuencia pseudoaleatoria en lugar de una clave en el cifrado Vernam, que se genera a partir de una clave secreta corta de acuerdo con el algoritmo acordado. Esta secuencia se llama keystream o gamma .





, (Linear Feedback Shift Register, LSFR).





. ( ) ( ). LSFR , , LSFR.





, , L. L_i, L_1 + L_2 + ... + L_n = L, norte F.









, .





3.

F_2- 2 ( \ {0, 1 \}), F_2 ^ j - j- F_2.





S- s \ times t :





S: F_2 ^ {s} \ longrightarrow F_2 ^ {t}

s :





f: F_2 ^ {s} \ longrightarrow F_2

, S- :





S (x_1, x_2, ..., x_s) = (f_1 (x_1, x_2, ..., x_s), f_2 (x_1, x_2, ..., x_s), ..., f_t (x_1, x_2, ..., x_s))

s f_i: F_2 ^ {s} \ longrightarrow F_2, i = 1, 2, ..., t z - (x_1, x_2, ..., x_s). y_z = f (x_1, x_2, ..., x_s). F





[y_0, y_1, ..., y_ {2 ^ {s} menos 1}].





( ) 2 ^ s :





\ Displaystyle f (x) = a_o \ oplus \ sum_ {i = 1} ^ {s} a_ {i} x_ {i} \ oplus \ sum_ {1 \ leq i <j \ leq s} {} a_ {ij} x_ {i} x_ {j} \ oplus ... \ oplus a_ {12..s} x_ {1} x_ {2} ... x_ {s},

\ suma 2.





s , :





f (x_1, x_2, ..., x_ {s}) = a_ {0} \ oplus a_ {1} x_ {1} \ oplus a_ {2} x_ {2} \ oplus ... \ oplus a_ {s } x_ {s}, a_ {i} \ en F_ {2}.

, () . "".





4.

f: F_2 ^ s \ longrightarrow F_2, , .





x \ en F_2 ^ s, hwt (x)- . f, g: F_ {2} ^ {s} \ longrightarrow F_2 :





\ displaystyle d (f, g) = \ sum_ {x \ in \ {0, 1 \} ^ s} f (x) \ oplus g (x).

( ord (f) f (x)- a_J, J- \{1,2,...,s\}. J- , a_0 . a_1, a_2, ..., a_s- , a_{12}, a_{13}, ..., a_{(s-1)s}- . - 2^s.





( ) i f \sigma_{i}(f). f s , i s- ,





\sigma_{i}(f) = \binom{s}i.

f X_s s





\displaystyle \delta(f) = min_{g \in X_s} d(f, g).

f A_s - f g \in A_s. f f N_f,





\displaystyle N_f = min_{g \in A_{s}} d(f, g).

, \displaystyle N_f \leq min_{g \in A_{s}} d(f, g). s- , N_f = 2^{s - 1} - 2^{s/2 - 1}. -.





- .





5.-

- - , . - .





, -, .





N_0[y_0, y_1, ..., y_{{2^s} - 1}]- [y_0, y_1, ..., y_{2^s - 1}] f, N_1[y_0, y_1, ..., y_{2^s - 1}]- . f , N_0[y_0, y_1, ..., y_{2^s - 1}] = N_1[y_0, y_1, ..., y_{2^s - 1}].





f: F_2^{s} \longrightarrow F_2 , f(x) \oplus f(x \oplus \alpha) \alpha \in F_2^{s} , 1 \leq hwt(\alpha) \leq s. \frac{1}{2}.





6. -

6.1

B_s - s s.









1.





: a, b \in B_6, a \neq b.





: - B_8 - 8 .





: g: F_2^8 \longrightarrow F_2, :





\begin{equation*} 	g(x_0, ..., x_7) = 	\begin{cases} 		a(x_0, ..., x_5), x_6 = 0, x_7 = 0\\ 		a(x_0, ..., x_5), x_6 = 0, x_7 = 1\\ 		b(x_0, ..., x_5), x_6 = 1, x_7 = 0\\ 		b(x_0, ..., x_5) \oplus 1, x_6 = 1, x_7 = 1 	\end{cases} 	\end{equation*}





2.





: - s a(x), b(x) c(x) , a(x) \oplus b(x) \oplus c(x)- -.





: - g s+2 .





:





g(x, x_{s + 1}, x_{s + 2}) = a(x)b(x) \oplus b(x)c(x) \oplus c(x)a(x) \oplus [a(x)b(x)]x_{s + 1} \oplus [a(x) \oplus c(x)]x_{s + 2} \oplus x_{s + 1}x_{s + 2}





( -) s s+2 . . 4 6 . - "" (, ), .









3.





: \pi: F_2^{s/2} \longrightarrow F_2^{s/2}, g: F_2^{s/2} \longrightarrow F_2, s- .





: - f_M:F_2^{s} \longrightarrow F_2, .





: f_M(x||y) = \pi(x) * y \oplus g(x), x, y \in F_2^{s/2}, || - (a_{s/2 - 1}, a_{s/2 - 2}, ..., a_0) * (b_{s/2 - 1}, b_{s/2 - 2}, ..., b_0) = a_{s/2 - 1}b_{s/2 - 1} \oplus a_{s/2 - 2}b_{s/2 - 2} \oplus ... \oplus a_0b_0





(a_0, a_1, ..., a_7)- \{0, 1, ..., 7\}. \ widehat {f} (x_0, x_1, ..., x_7) = f_ {M} (x_ {a0}, x_ {a1}, ..., x_ {a7}), f_M - , -. .





6.2 -

"" - , . , , , .





, - 6 . . . - , , - .





- , . - s / 2 , - s / 2. .





s / 2 . yo , , . yo , , yo.





, .





- -, -. . . - ( ).





- , - . , , - .





. -, (i> 2) - . (, 6 s = 8, yo = 3, 4). -, - .









4. ( -)





:





  • s - (s - )





  • ord , 0 \ leq s / 2 cmin_ {ord} cmax_ {ord} ,





0 \ leq cmin_ {ord} \ leq cmax_ {ord} \ leq \ binom {s} {ord}.





:





  1. (1.1) (1.2) ord , 0 \ leq ord \ leq s / 2:





  • - f_ {ANF}





  • f_ {TT} .





:





  1. (1.1) (1.2) ord , 0 \ leq ord \ leq s / 2:





    • 1.1 c_ {ord} ord, cmin_ {ord} \ leq c_ {ord} \ leq cmax_ {ord},





      1.2 1 ord.





  2. f_ {ANF} f_ {TT}.





  3. f_ {TT} .





  4. , (3), 2 ^ {s -1} - 2 ^ {{s / 2} - 1}, f_ {TT} f_ {ANF} - -, ; (1).









s , 4 . - (. - ), (4) - , , .





7. S-

S- - S: F_2 ^ s \ longrightarrow F_2 ^ t, S (x_1, x_2, ..., x_s) = (f_1 (x_1, x_2, ..., x_s), f_2 (x_1, x_2, ..., x_s), ..., f_t (x_1, x_2, ..., x_s)), , S. ,





N_S = min \ {N_ {f_ {J}} |  f_ {J} = \ sum_ {i \ in J}, J \ subseteq (1, 2, ..., t) \}.

S-, 2t . S-.





S-, 8- .





1. S-, ,





2. S-, ,





1 2, , S-, , S- (98 100).





3. S-, ,





, S- , S- - ( 2) (. 3). , 98, S- .









4. S-, -,





S-, - (. 4). S- 112, 5 \% ( , 104). 20 S- 100, S-, - .





, - S- .





, , - S- (80, ). S- (, ) S- .





8.

, S- . , , . S-, -.









  1. . -





  2. Anna Grocholewska-Czurylo and Janusz Stoklosa - Random Generation of S-Boxes for Block Ciphers





  3. Meier, W., Staffelbach, O - Criterios de no linealidad para funciones criptográficas





  4. Wikipedia - S-box (informática)





  5. Wikipedia - Caja S





  6. Wikipedia - Funciones dobladas












All Articles