crypto

Hệ mã đối xứng

1. Tóm tắt

Với $\mathbb{M}, \mathbb{C}, \mathbb{K}$ lần lượt là không gian tin, không gian mã và không gian khóa

$E_k : \mathbb{M} \rightarrow \mathbb{C}$ khả nghịch $(E^{-1} \equiv D)$

$\forall m \in \mathbb{M}: D(E(m)) = m$ với $E(m) \in C$

$E: \mathbb{M} \times \mathbb{K} \rightarrow \mathbb{C} : D(E(m, k), k) = m\ \forall m \in \mathbb{M}, k \in \mathbb{K}$

2. Một phương pháp mã hóa đối xứng (Diffie-Hellman)

Chú ý là làm cách này không cần tìm $k^{-1}$ và $\pmod p$.

c, m, k = 6, 9, 11

c1 = m ^ k
m1 = c1 ^ k

print(m, m1)
9 9

3. Dạng mã

$\text{Doc} = m_1m_2..m_n$, $\text{len}(m_i) = l$ bit

4. Modes

a. Electronic Codebook (ECB) - từ điển

b. Cipher block chaining (CBC) - xích

Giải mã: làm ngược lại

c. Propagating CBC (PCBC)

d. Cipher feedback (CFB)

e. Output feedback (OFB)

(mã hóa key)

f. Counter (CTR)

Nguyên tắc thiết kế hàm mã

Matrix Cipher

Hill Cipher

Cho $A_{n\times n}$ là ma trận khả nghịch $n$ dòng, $n$ cột. Với mẩu tin kích thước $M_{n\times 1}$, ta có:

Chú ý: Ma trận $A^{-1}$ là nghịch đảo của $A$ trong $\mathbb{Z}_p$. Trong $\mathbb{Z}_p$ chỉ có phép cộngnhân, còn phép chia phải tìm modulo nghịch đảo!

Tạo nhanh ma trận khả nghịch (keygen)

  1. Tạo $U, L$ lần lượt là 2 ma trận tam giác trên và tam giác dưới có định thức khác 0.
  2. Khóa $K = LU$.
  3. Vì bản thân $K$ khả nghịch, nên $KK^{-1} = I_n$ Ta giải hệ sau:
    • $LY = E$ ($E$ là ma trận đơn vị)
    • $UX = Y$

khi đó $X$ là nghịch đảo của $K$.

Đây chỉ là tóm tắt, bản thân mỗi phần nhân ma trận lại có cách làm nhanh.