Mật mã khối Feistel
Feistel Cipher không phải là một lược đồ cụ thể của mật mã khối. Nó là một mô hình thiết kế mà từ đó có nhiều mật mã khối khác nhau. DES chỉ là một ví dụ về Mật mã Feistel. Một hệ thống mật mã dựa trên cấu trúc mật mã Feistel sử dụng cùng một thuật toán cho cả mã hóa và giải mã.
Quy trình mã hóa
Quá trình mã hóa sử dụng cấu trúc Feistel bao gồm nhiều vòng xử lý bản rõ, mỗi vòng bao gồm một bước “thay thế” sau đó là một bước hoán vị.
Cấu trúc Feistel được thể hiện trong hình minh họa sau:
Khối đầu vào cho mỗi vòng được chia thành hai nửa có thể được ký hiệu là L và R cho nửa bên trái và nửa bên phải.
Trong mỗi vòng, nửa bên phải của khối R không đổi. Nhưng nửa bên trái, L, trải qua một hoạt động phụ thuộc vào R và khóa mã hóa. Đầu tiên, chúng tôi áp dụng một hàm mã hóa 'f' nhận hai đầu vào - khóa K và R. Hàm tạo ra đầu ra f (R, K). Sau đó, chúng tôi XOR đầu ra của hàm toán học với L.
Trong triển khai thực tế của Feistel Cipher, chẳng hạn như DES, thay vì sử dụng toàn bộ khóa mã hóa trong mỗi vòng, một khóa phụ thuộc vòng (khóa con) được lấy từ khóa mã hóa. Điều này có nghĩa là mỗi vòng sử dụng một khóa khác nhau, mặc dù tất cả các khóa con này đều liên quan đến khóa gốc.
Bước hoán vị ở cuối mỗi vòng sẽ hoán đổi L đã sửa đổi và R. không sửa đổi. Do đó, L của vòng tiếp theo sẽ là R của vòng hiện tại. Và R cho vòng tiếp theo là đầu ra L của vòng hiện tại.
Các bước thay thế và hoán vị trên tạo thành một 'vòng'. Số vòng được quy định bởi thiết kế thuật toán.
Khi vòng cuối cùng được hoàn thành thì hai khối con, 'R' và 'L' được nối theo thứ tự này để tạo thành khối bản mã.
Phần khó khăn của việc thiết kế Feistel Cipher là lựa chọn hàm tròn 'f'. Để là lược đồ không thể phá vỡ, hàm này cần có một số thuộc tính quan trọng nằm ngoài phạm vi thảo luận của chúng ta.
Quy trình giải mã
Quá trình giải mã trong mật mã Feistel gần như tương tự. Thay vì bắt đầu với một khối bản rõ, khối bản mã được đưa vào phần bắt đầu của cấu trúc Feistel và quá trình sau đó hoàn toàn giống như được mô tả trong hình minh họa.
Quá trình này được cho là gần như tương tự và không hoàn toàn giống nhau. Trong trường hợp giải mã, sự khác biệt duy nhất là các khóa con được sử dụng trong mã hóa được sử dụng theo thứ tự ngược lại.
Việc hoán đổi cuối cùng của 'L' và 'R' trong bước cuối cùng của Mật mã Feistel là điều cần thiết. Nếu chúng không được hoán đổi thì không thể giải mã được bản mã kết quả bằng cùng một thuật toán.
Số vòng
Số vòng được sử dụng trong Mật mã Feistel phụ thuộc vào mức độ bảo mật mong muốn từ hệ thống. Số lượng vòng nhiều hơn cung cấp hệ thống an toàn hơn. Nhưng đồng thời, nhiều vòng hơn có nghĩa là quá trình mã hóa và giải mã chậm không hiệu quả. Do đó, số vòng trong hệ thống phụ thuộc vào sự cân bằng giữa hiệu quả và bảo mật.