Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Mã Feistel (Feistel Cipher) trong An ninh Thông tin là gì?

Mã Feistel là phương pháp mật mã học được sử dụng trong việc xây dựng các thuật toán và cấu trúc dựa trên khối mật mã (block cipher). Mạng Feistel thực hiện một chuỗi các mật mã lặp lại trên một khối thông tin và thường được thiết kế cho các khối mật mã mã hóa lượng lớn dữ liệu.

Mạng Feistel hoạt động bằng cách chia khối dữ liệu thành hai mảnh giống nhau và sử dụng mã hóa trong nhiều vòng. Mỗi vòng thực hiện hoán vị và chuỗi dẫn xuất từ hàm chính hoặc khóa. Số vòng thay đổi cho mỗi mật mã triển khai mạng Feistel.

Mã Feistel là mật mã nhiều vòng chia trạng thái riêng tư hiện tại của mật mã thành hai phần và chỉ làm việc trên một phần trong mỗi vòng mã hóa hoặc giải mã.

Feistel đề xuất rằng nó có thể xấp xỉ khối mật mã khái niệm bằng cách sử dụng khái niệm mật mã tích, là thực hiện hai hoặc nhiều mật mã đơn giản theo trình tự theo cách mà kết quả cuối cùng hoặc tích tốt hơn về mặt mật mã học so với bất kỳ mật mã thành phần nào.

Bản chất của phương pháp là tạo một khối mật mã với độ dài khóa k bit và độ dài khối n bit, cho phép tổng cộng 2^k phép biến đổi có thể, thay vì 2^n! phép biến đổi có sẵn với khối mật mã lý tưởng.

Feistel đề xuất sử dụng mật mã thay thế thay thế và hoán vị, nơi các phương pháp này được định nghĩa như sau:

Thay thế (Substitution) - Mỗi thành phần bản rõ hoặc tập hợp thành phần được khôi phục duy nhất bởi thành phần bản mã tương ứng hoặc tập hợp thành phần.

Hoán vị (Permutation) - Thứ tự thành phần bản rõ được khôi phục bằng một hoán vị của thứ tự đó. Nghĩa là, không có phần tử nào được chèn, xóa hoặc thay thế trong chuỗi, thay vào đó thứ tự các phần tử xuất hiện trong chuỗi bị thay đổi.

Mã Feistel được biết đến như lịch trình khóa (key schedule) đóng vai trò là đầu vào cho mỗi vòng của mật mã. Có hai lựa chọn có sẵn cho lịch trình khóa.

Lựa chọn đầu tiên là khóa cho mỗi vòng của mật mã (hoặc "khóa vòng") được chứa trong khóa bí mật được chia sẻ bởi hai bên (dẫn đến khóa bí mật chia sẻ cao).

Lựa chọn khác là khóa bí mật chia sẻ được sử dụng làm đầu vào cho hàm "mở rộng khóa" thực hiện một số phép toán trên khóa vòng trước hoặc trạng thái nội bộ hiện tại của thuật toán tạo khóa để tạo khóa vòng tiếp theo.

Hàm K biến đổi khóa bí mật gốc thành khóa vòng cho mỗi vòng mã hóa. Hàm này nên được chọn để hỗ trợ không gian khóa của hàm mã hóa.

Nếu cần khóa bí mật 64-bit, nhưng tại điểm tương tự không gian khóa hiệu quả co lại còn 32 bit, do đó kẻ tấn công chỉ phải tìm kiếm không gian khóa 32-bit để giải mã bản mã.