Симметричная криптография

Lời giải cho quyển sách [21] của Н.Н. Токарева.

Глава 3. Булевы функции. Комбинаторный подход

Câu 16

Chứng minh rằng, hàm Boolean \(f\) tuyến tính khi và chỉ khi \(f(\bm{x} \oplus \bm{y}) = f(\bm{x}) \oplus f(\bm{y})\) với mọi \(\bm{x}\), \(\bm{y}\). Tương tự kiểm tra hàm Boolean là affine khi và chỉ khi \(f(\bm{x} \oplus \bm{y}) = f(\bm{x}) \oplus f(\bm{y}) \oplus f(\bm{0})\).

Câu 17

Tìm số đỉnh và số cạnh của đồ thị \(E^n\). Có bao nhiêu vector \(\bm{x}, \bm{y} \in E^n\) sao cho \(d(\bm{x}, \bm{y}) = k\)?

Mỗi đỉnh của \(E^n\) biểu diễn một vector dạng

\[(z_1, \ldots, z_n), \quad z_i \in \{ 0, 1 \}\]

nên \(E^n\)\(2^n\) đỉnh. Mỗi đỉnh nối với \(n\) đỉnh khác (khác nhau chỉ ở vị trí \(z_i\)) nên \(\deg v_i = n\) với \(i = \overline{1, 2^n}\). Theo định lí cơ bản về số cạnh của đồ thị (Định lý 8) thì

\[\text{số cạnh} = \dfrac{1}{2} \sum_{i=1}^{2^n} \deg v_i = \dfrac{1}{2} \cdot n \cdot 2^n = n \cdot 2^{n-1}.\]

Để \(d(\bm{x}, \bm{y}) = k\) thì đầu tiên ta chọn \(k\) vị trí khác nhau với \(C_n^k\) cách. Với mỗi vị trí khác nhau ta có hai cách chọn \(x_i\)\(y_i\)

\[\begin{split}\begin{cases} x_i = 1 \\ y_i = 0 \end{cases}, \quad \text{hoặc} \ \begin{cases} x_i = 0 \\ y_i = 1 \end{cases}.\end{split}\]

Do đó có \(2^k\) cách chọn cho các vị trí khác nhau, còn \(n - k\) vị trí còn lại thì chọn tùy ý nên có \(2^{n-k}\) cách.

Đáp án là \(C_n^k \cdot 2^k \cdot 2^{n-k} = C_n^k \cdot 2^n\).

Câu 18

Tìm lực lượng của mặt cầu \(S_r(\bm{x}) = \{ \bm{y} : d(\bm{x}, \bm{y}) = r \}\)hình cầu \(B_r(\bm{x}) = \{ \bm{y} : d(\bm{x}, \bm{y}) \leqslant r \}\).

Đối với mặt cầu thì đáp án chính là bài 17, nghĩa là \(\lvert S_r(\bm{x}) \rvert = 2^r \cdot C_n^r\).

Đối với hình cầu \(B_r(\bm{x})\) ta xét tất cả giá trị từ \(0\) tới \(r\):

  • khi \(d(\bm{x}, \bm{y}) = 0\) thì có \(2^n \cdot C_n^0\) cách chọn;

  • khi \(d(\bm{x}, \bm{y}) = 1\) thì có \(2^n \cdot C_n^1\) cách chọn;

  • tương tự, khi \(d(\bm{x}, \bm{y}) = i\) thì có \(2^n \cdot C_n^i\) cách chọn;

  • cho tới khi \(d(\bm{x}, \bm{y}) = r\) thì có \(2^n \cdot C_n^r\) cách chọn.

Như vậy lực lượng của hình cầu là tổng tất cả giá trị trên:

\[\lvert B_r(\bm{x}) \rvert = 2^n \cdot (C_n^0 + C_n^1 + \cdots + C_n^r).\]

Глава 5. Криптографические свойства булевых функций

[TODO] Câu 31

Chứng minh rằng khoảng cách từ hàm Boolean \(f\) với \(n\) biến tới hàm Boolean affine

\[l_{\bm{a}, b}(\bm{x}) = a_1 x_1 \oplus \ldots \oplus a_n x_n \oplus b\]

với \(\bm{a} = (a_1, \ldots, a_n) \in \mathbb{F}_2^n\)\(b \in \mathbb{F}_2\) được tính theo công thức:

\[\begin{split}d(f, l_{\bm{a}, 0} (\bm{x})) & = 2^{n-1} - \frac{1}{2} W_f(\bm{a}), \\ d(f, l_{\bm{a}, 1} (\bm{x})) & = 2^{n-1} + \frac{1}{2} W_f (\bm{a}).\end{split}\]

[TODO] Câu 32

Chứng minh rằng nonlinearity của hàm Boolean \(f\) bất kì được tính bởi công thức

\[N_f = 2^{n-1} - \frac{1}{2} \max_{\bm{y}} \lvert W_f (\bm{y}) \rvert.\]

Câu 33

Chứng minh rằng hàm Boolean \(f\) là hàm bent khi và chỉ khi \(W_f(\bm{y}) = \pm 2^{n/2}\) với mọi vector \(\bm{y}\).

Câu 34

Có bao nhiêu hàm Boolean cân bằng \(n\) biến?

Trong \(2^n\) vector, ta chọn \(2^{n-1}\) vector khiến hàm Boolean có giá trị \(1\) nên đáp án là

\[C_{2^n}^{2^{n-1}}.\]

[TODO] Câu 35

Chứng minh rằng hàm Boolean \(f\)\(r\)-resillient khi và chỉ khi nó cân bằng và correlation immune bậc \(r\).

[TODO] Câu 36 (Định lí Siegenthaler I, 1984)

Chứng minh rằng nếu hàm Boolean \(f\) là correlation immune bậc \(r\) thì \(\deg f + r \leqslant n\).

[TODO] Câu 37 (Định lí Siegenthaler II)

Chứng minh rằng nếu hàm Boolean \(f\)\(r\)-resillient và \(r \leqslant n - 2\) thì \(\deg f + r \leqslant n - 1\).

Chứng minh cho các định lí Siegenthaler có thể tìm ở [44].

Câu 38

Chứng minh rằng hàm Boolean \(f\) là correlation immune bậc \(r\) khi và chỉ khi \(W_f(\bm{y}) = 0\) với mọi vector \(\bm{y}\) thỏa \(1 \leqslant \mathrm{wt} (\bm{y}) \leqslant r\).

Đầu tiên ta chứng minh bổ đề sau.

Bổ đề 5

Nếu hàm Boolean \(f\) là correlation immune bậc \(r\) thì nó cũng là correlation immune với mọi bậc \(s\), \(1 \leqslant s \leqslant r\).

Đối với điều kiện cần, Xiao và Massey [45] có một chứng minh năm 1988. Ta cần bổ đề sau.

Bổ đề 6

Biến ngẫu nhiên rời rạc \(Z\) độc lập với họ \(r\) biến ngẫu nhiên nhị phân rời rạc độc lập nhau \(Y_1\), \(Y_2\), ..., \(Y_r\) khi và chỉ khi \(Z\) độc lập với tổng \(\lambda_1 Y_1 + \lambda_2 Y_2 + \cdots + \lambda_r Y_r \in \mathbb{F}_2\) với mọi \(\lambda_1\), \(\lambda_2\), ..., \(\lambda_r\) không đồng thời bằng \(0\) và thuộc \(\mathbb{F}_2\).

Ta quay lại chứng minh điều kiện cần và đủ của câu 38.

Năm 2007 Д. Г. Фон–Дер–Флаасс tìm được chặn trên cho correlation immune của hàm Boolean không cân bằng.

[TODO] Câu 39 (Định lí Д. Г. Фон–Дер–Флаасс, [46])

Gọi \(f\) là hàm Boolean không cân bằng có correlation immune bậc \(r\) khác \(0\). Chứng minh rằng \(r \leqslant (2n/3) - 1\).

[TODO] Câu 40

Chứng minh rằng với hàm Boolean \(r\)-resillient \(f\) sao cho \(r \leqslant n-2\) thì ta có bất đẳng thức \(N_f \leqslant 2^{n-1} - 2^{r+1}\) [47].

[TODO] Câu 41 (Chặn của algebraic immune)

Chứng minh rằng algebraic immune của hàm Boolean \(f\) bất kì với \(n\) biến không vượt quá giá trị \(\lceil n/2 \rceil\).

[TODO] Câu 42

Chứng minh một số tính chất cơ bản của algebraic immune với mọi hàm Boolean \(f\), \(g\) trên \(n\) biến:

  • \(\mathsf{AI}(f) \leqslant \deg f\);

  • \(\mathsf{AI}(f \cdot g) \leqslant \mathsf{AI}(f) + \mathsf{AI}(g)\);

  • \(\mathsf{AI}(f \oplus g) \leqslant \mathsf{AI}(f) + \mathsf{AI}(g)\);

  • \(\mathsf{AI}(f) = \mathsf{AI}(g)\) nếu \(g\) nhận được từ \(f\) qua một biến đổi affine trên các biến, nghĩa là \(g(\bm{x}) = f(\bm{A} \bm{x} \oplus \bm{b})\) với \(\bm{A}\) là ma trận khả nghịch bậc \(n\)\(\bm{b}\) là vector.

[TODO] Câu 43

Xác định giá trị của \(\mathsf{AI}(f)\) với các hàm Boolean sau và tìm hàm \(g\) tương ứng:

  • \(f(\bm{x}) = x_1 x_2 x_4 \oplus x_1 x_2 \oplus 1\);

  • \(f(\bm{x}) = 0\);

  • \(f(\bm{x}) = 1\);

  • \(f(\bm{x}) = x_1 \cdots x_k\) với \(k = 1, 2, \ldots, n\);

  • \(f(\bm{x}) = x_1 \oplus \ldots \oplus x_n\);

  • \(f(\bm{x}) = x_1 x_2 \oplus \ldots \oplus x_{n-1} x_n\) (tổng tất cả cặp tích);

  • \(f(\bm{x}) = x_1 x_2 x_3 x_4 \oplus x_5 x_6\).

[TODO] Câu 44

Cho ví dụ hàm Boolean \(f\) với giá trị algebraic immune nhỏ nhất, nghĩa là \(\mathsf{AI}(f) = d\) với \(d = 1, 2, \ldots, k\).

Câu 45

Chứng minh hàm \(S : \mathbb{F}_2^8 \to \mathbb{F}_2^8\) của S-box trong thuật toán AES là differentially \(4\)-uniform.

Bài tập này cho thấy rằng S-box tốt thì \(\delta\) sẽ nhỏ nhất có thể nhằm kháng phá mã vi sai, và có thể dễ dàng chứng minh kết quả là \(4\) bằng việc vét cạn số nghiệm của phương trình \(S(\bm{x} + \bm{a}) \oplus S(\bm{x}) = \bm{b}\) với mọi \(\bm{a} \in \mathbb{F}_2^8\) khác không và với mọi \(\bm{b} \in \mathbb{F}_2^8\).