Mật mã khối sử dụng tự nghịch đảo ($f(f(x)) = x $) mà sau đó sẽ được áp dụng cho bản rõ và rất có thể chứa một số hằng số có thể dựa trên một khóa.
Để có được bảo mật, các hoạt động diễn giải đầu vào theo những cách khác nhau được liên kết với nhau.
Quá trình này được lặp đi lặp lại nhiều vòng với các phím khác nhau.
Trong trường hợp tối ưu, một đầu vào ngẫu nhiên nằm trong một chu kỳ khép kín (nếu mật mã khối được áp dụng lặp đi lặp lại) với kích thước chu kỳ ngẫu nhiên (đồng nhất, khóa ngẫu nhiên đã cho).
Bằng cách thử nghiệm xung quanh, tôi nhận thấy điều này có thể xảy ra chỉ với một số thao tác rất đơn giản của XOR, Bit-Rotation và phép cộng. (được gọi là ARX)
Ví dụ: cho một vòng có đầu vào $m$:
$$
m = XOR(m, R_i) \
m = RotateBit(m,5) \
m = m + K_i
$$
$R_i, K_i$ là các phím tròn cho tròn $i$.
XOR một mình không an toàn vì hoạt động đó chỉ ở các bit đơn lẻ mà không ảnh hưởng lẫn nhau.
Vòng quay bit được thêm vào để tăng tác động của một bit đối với mọi bit khác. Bản thân nó cũng không an toàn vì nó chỉ tác động ở từng bit đơn lẻ
Bổ sung được thêm vào dưới dạng diễn giải đầu vào thứ 2 (dưới dạng số thay vì bit). Ở đây các bit có thể tác động lẫn nhau.
Với điều này, tôi đã nhận được một số phân phối đồng đều tốt (nhưng không hoàn hảo) về độ dài chu kỳ khác nhau (được cung cấp khóa và đầu vào ngẫu nhiên).
Câu hỏi đặt ra là cần phải áp dụng bao nhiêu vòng để bảo mật? Nó cần ít nhất bằng tổng kích thước bit để mọi bit có thể đạt đến mọi vị trí khác do xoay bit.
Đây là một số liên quan chủ đề cho AES.
Nhưng với tư cách là một số liệu tổng quát hơn (đối với mật mã khối tùy chỉnh), độ bảo mật có thể được đo bằng tác động của một thay đổi bit trong đầu vào đối với từng bit của đầu ra không?
Trong trường hợp tối ưu, mọi thay đổi bit có thể có của mọi đầu vào có thể sẽ dẫn đến 50% bit khác nhau ở đầu ra (với mỗi bit khác nhau với cùng một lượng).
Số vòng có thể được tăng lên cho đến khi đạt đến mức độ bảo mật phù hợp.