- Còn gọi là mã hóa quy ước (conventional cryptosystem)
- Quy trình mã hóa và giải mã đều sử dụng chung một khóa
- Bảo mật thông tin phụ thuộc vào bảo mật khóa
- Phép thay thế (subtitution)
- Phép thay đổi vị trị (transposition)
- Đơn ký tự (mono-alphabetic)
- Đa ký tự (poly - alphabetic)
(xem lại CSC15005)
Dịch chuyển xoay vòng từng ký tự đi
Cho
-
$e_k(x) = x + k \pmod n$ và$d_k(y) = y - k \pmod n; x, y \in \mathbb{Z}_n$ -
$\mathcal{E} = {e_k, k \in \mathcal{K}}$ và$\mathcal{D} = {d_k, k \in \mathcal{K}}$
Tính chất:
- Phương pháp đơn giản
- Thao tác xử lý mã hóa & giải mã thực hiện nhanh
- Không gian khóa
${0, 1, 2, .., n - 1} = \mathbb{Z}_n$ - Dễ bị phá vỡ bằng brute-force.
Hoán vị các phần tử trong bảng chữ cái. Tổng quát hơn: hoán vị (permute) các phần tử trong tập nguồn
Cho
Với mỗi khóa
-
$e_{\pi}(x) = \pi(x)$ và$d_{\pi}(y) = \pi^{-1}(y); x, y \in \mathbb{Z}_n$ -
$\mathcal{E} = {e_{\pi}, \pi \in \mathcal{K}}$ và$\mathcal{D} = {d_{\pi}, \pi \in \mathcal{K}}$
Tính chất:
- Đơn giản, thực hiện nhanh!
- Không gian khóa gồm
$n!$ phần tử - Brute-force với
$k \in \mathcal{K}$ là không khả thi. - Tấn công bằng cách khác: frequency analysis
(Ngoài lề): veni vidi vici - I came, I saw, I conquered
Cho
-
$e_k(x) = (ax + b) \pmod n$ và$d_k(y) = a^{-1}(y - b) \pmod n; x, y \in \mathbb{Z}_n$ [^1] -
$\mathcal{E} = {e_k, k \in \mathcal{K}}$ và$\mathcal{D} = {d_k, k \in \mathcal{K}}$
Giải mã chính xác thì
Gọi
Nếu
Ta có
-
$n$ khả năng chọn$b$ -
$\phi(n)$ khả năng chọn$a$ - Vậy tổng cộng có
$\phi(n) \times n$ giá trị$k = (a, b)$
Cho
$r_0 = a$ $r_1 = b$ $s_0 = 1$ $s_1 = 0$ $t_0 = 0$ $t_1 = 1$
Thực hiện:
$r_2 = r_0 - q_0r_1$ $s_2 = s_0 - q_0s_1$ $t_2 = t_0 - q_0t_1$
Lặp đến khi
Chọn
$\mathcal{K} = {(k_1, k_2, .., k_m)} \in (\mathbb{Z}_n)^m$ -
$\forall k = (k_1, k_2, .., k_m) \in \mathcal{K}, \forall x, y \in (\mathbb{Z}_n)^m$ , định nghĩa$e_k(x_1, x_2, .., x_m) = ((x_1 + k_1) \pmod n, (x_2 + k_2) \pmod n, .., (x_m + k_m) \pmod n)$ $d_k(y_1, y_2, .., y_m) = ((y_1 - k_1) \pmod n, (x_2 - k_2) \pmod n, .., (y_m - k_m) \pmod n)$
Mã hóa bằng thay thế: mỗi khóa
Mã hóa Vigenere sử dụng khóa có độ dài
- Tên đặt theo Blaise de Vigenere
- Có thể xem như
$m$ phép mã hóa bằng dịch chuyển luân phiên theo chu kỳ - Không gian khóa
$\mathcal{K}$ có số phần tử$n^m$ - VD:
$m = 26, n = 5$ thì không gian khóa$\approx 1.1\times 10^7$
(Xem lại CSC15005)
Trường hợp đặc biệt của mã hóa Hill.
Chọn số nguyên dương
$\mathcal{P} = \mathcal{C} = \mathbb{Z}_n^m$ -
$\mathcal{K}$ là tập hoán vị của$m$ phần tử${1, 2, .., m}$ . Với mỗi$\pi \in \mathcal{K}$ , định nghĩa$e_{\pi}(x_1, x_2, .., x_m) = (x_{\pi(1)}, x_{\pi(2)}, .., x_{\pi(m)})$ -
$d_{\pi}(y_1, y_2, .., y_m) = (y_{\pi^{-1}(1)}, y_{\pi^{-1}(2)}, .., y_{\pi^{-1}(m)})$ , với$\pi^{-1}$ là hoán vị ngược của$\pi$