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

Thuật toán mã hóa Blowfish là gì?

Thuật toán mã hóa Blowfish là một mật mã khối đối xứng được thiết kế để đạt được trong thuật toán DES chậm và không chắc chắn. Blowfish là một khối mật mã đối xứng có khóa, được phát minh bởi Bruce Schneier vào năm 1993 và nằm trong miền công cộng.

Mã hóa đối xứng sử dụng một khóa mã hóa riêng để vừa mã hóa vừa giải mã thông tin. Thông tin nhạy cảm và khóa mã hóa đối xứng được sử dụng trong thuật toán mã hóa để biến thông tin nhạy cảm thành bản mã. Blowfish được chứa trong một số lượng lớn các bộ mật mã và các sản phẩm mã hóa, chẳng hạn như SplashID.

Mật mã khối nói chung là một quy trình máy tính lấy một số lượng văn bản thuần túy và chuyển nó thành văn bản được mã hóa, hoặc văn bản mã hóa. Nó thực hiện quy trình này trên các đoạn văn bản được gọi là khối. Và để văn bản được giải mã ở phía bên kia của quá trình truyền, hàm cũng phải tạo một khóa để mở khóa văn bản mật mã.

Blowfish cũng là một trong những công cụ mã hóa khối nhanh nhất được sử dụng công cộng, tạo ra nó lý tưởng cho một sản phẩm như SplashID hoạt động trên nhiều bộ vi xử lý được phát hiện trong điện thoại di động và trong máy tính xách tay và máy tính để bàn.

Blowfish có kích thước khối 64 bit và độ dài khóa từ 32 bit đến 448 bit. Nó là một mật mã Feistel 16 vòng và cần các hộp S lớn phụ thuộc vào khóa. Nó cũng giống như cấu trúc của CAST-128, cần các hộp S cố định.

Thuật toán Blowfish là một trong những thuật toán phổ biến nhất, nhưng nó cần sức mạnh tính toán thiết yếu với một số yếu tố khiến chúng trở thành con mồi của quá nhiều kẻ tấn công. Nó có thể làm giảm kích thước của "s-box" và do đó thiết kế và triển khai nó trên mạng nơ-ron (NN).

Đầu vào cho mạng nơ-ron là văn bản (bản rõ hoặc bản mã) và đầu ra nhận được từ mạng là văn bản giống nhau và khóa được sử dụng trong cả mã hóa và giải mã là trọng số ban đầu của mạng nơ-ron được đào tạo bằng cách sử dụng mạng lan truyền ngược .

Blowfish sử dụng một hình thức tạo khóa cụ thể. Phần tử thứ hai của quy trình Blowfish là một mở rộng khóa giúp biến đổi một khóa đơn có tối đa 448 bit thành một bảng các khóa con có kích thước 4168 byte. Việc tạo ra các khóa con cải thiện hơn nữa bảo mật, vì tin tặc sẽ phải bẻ khóa nhiều hơn chỉ khóa ban đầu.

Độ bền của thuật toán Blowfish phụ thuộc vào việc tạo khóa con và sự nhầm lẫn và thiết kế khuếch tán cơ bản của nó. Blowfish là một hệ thống mật mã chính đối xứng phụ thuộc vào mạng Feistel.

Bruce Schneider giới thiệu thuật toán. Đây là mật mã kích thước khối 64 bit và phiên bản hoàn chỉnh cần 16 vòng để hoàn thành mật mã khối và sử dụng nhiều khóa con, khóa có độ dài thay đổi từ 32 bit đến 448 bit.