2.1. Giới thiệu

Trung tâm của stream cipher và block cipher là các hàm Boolean. Ở những bài viết tiếp theo mình sẽ mô tả các đặc trưng khi xây dựng các hệ mật mã dạng dòng (stream cipher) và khối (block cipher) từ các hàm Boolean.

Nhắc lại, hàm Boolean \(n\) biến là ánh xạ \(f\) từ \(\{ 0, 1 \}^n\) tới \(\{ 0, 1 \}\). Ở phần này mình sẽ sử dụng kí hiệu trường \(\mathbb{F}_2\). Như vậy hàm Boolean trên \(n\) biến là ánh xạ

\[f: \mathbb{F}_2^n \to \mathbb{F}_2, \quad f(x_1, x_2, \ldots, x_n) = y.\]

Tiếp theo, khi "ghép" các hàm Boolean lại ta có hàm Boolean vector (hay vectorial Boolean function). Như vậy hàm Boolean vector là ánh xạ

\[F: \mathbb{F}_2^n \to \mathbb{F}_2^m, \quad f(x_1, x_2, \ldots, x_n) = (y_1, y_2, \ldots, y_m) \in \mathbb{F}_2^m.\]

Chúng ta có thể coi mỗi hàm \(y_i = f_i(x_1, \ldots, x_n)\) là một hàm Boolean nên khi ghép cạnh nhau chúng ta có hàm Boolean vector.

\(x_1\)

\(x_2\)

\(\cdots\)

\(x_n\)

\(f_1(\bm{x})\)

\(f_2(\bm{x})\)

\(\cdots\)

\(f_m(\bm{x})\)

\(0\)

\(0\)

\(\cdots\)

\(0\)

\(f_1(0, \ldots, 0)\)

\(f_2(0, \ldots, 0)\)

\(\cdots\)

\(f_m(0, \ldots, 0)\)

\(\vdots\)

\(\vdots\)

\(\vdots\)

\(\vdots\)

\(\vdots\)

\(\vdots\)

\(\vdots\)

\(\vdots\)

\(1\)

\(1\)

\(\cdots\)

\(1\)

\(f_1(1, \ldots, 1)\)

\(f_2(1, \ldots, 1)\)

\(\cdots\)

\(f_m(1, \ldots, 1)\)

Ở đây \(\bm{x} = (x_1, \ldots, x_n) \in \mathbb{F}_2^n\).