Computer >> Máy Tính >  >> Lập trình >> Lập trình

Mật mã Feistel trong Bảo mật thông tin là gì?

Mật mã Feistel là một cách tiếp cận mật mã đượ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 mật mã khối. Mạng Feistel thực hiện một chuỗi các mật mã lặp đi lặp lại trên một khối thông tin và thường được thiết kế cho các mật mã khối mã hóa một 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 phần 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à trình tự bắt nguồn từ hàm hoặc khóa chính. Số vòng thay đổi đối với mỗi mật mã triển khai mạng Feistel.

Mật mã Feistel là một 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ỉ hoạt động trên một phần riêng lẻ trong mỗi vòng mã hóa hoặc giải mã.

Feistel đề xuất rằng nó có thể gần đúng với mật mã khối khái niệm bằng cách sử dụng khái niệm về mật mã sản phẩm, là việc thực thi hai hoặc nhiều mật mã đơn giản theo trình tự theo một phương pháp sao cho kết quả hoặc sản phẩm cuối cùng là mật mã tốt hơn bất kỳ mật mã thành phần nào. .

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

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

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

Hoán vị - Một thứ tự của thành phần bản rõ được lưu lại 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 hoặc xóa hoặc thay thế trong chuỗi, thay vào đó thứ tự mà các phần tử xuất hiện trong chuỗi được thay đổi.

Mật mã Feistel được biết đến như là lịch khóa tạo điều kiện thuận lợi như một đầu vào cho mỗi vòng của mật mã. Có hai lựa chọn khả dụng cho một lịch trình chính.

Đầu tiên là khóa cho mỗi vòng mật mã (hoặc "khóa tròn") đượ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 được chia sẻ cao).

Một giải pháp thay thế khác là khóa bí mật được 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ố thao tác 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 ban đầu thành các khóa tròn cho mỗi vòng mã hóa. Chức năng này nên được chọn để hỗ trợ không gian khóa của chức năng mã hóa.

Nếu cần khóa bí mật 64 bit, nhưng tại thời điểm tương tự, không gian khóa hiệu dụng giảm xuống còn 32 bit, do đó kẻ tấn công chỉ phải tìm kiếm một không gian gồm các khóa 32 bit để giải mã bản mã.