Mã hóa khối – Wikipedia tiếng Việt

Mã hóa
Giải mã

Trong mật mã học, mã hóa khối (tiếng Anh: block cipher) là những thuật toán mã hóa đối xứng hoạt động trên những khối thông tin có độ dài xác định (block) với những chuyển đổi xác định. Chẳng hạn một thuật toán mã hóa khối có thể xử lý khối 128 bít đầu vào và biến nó thành khối 128 bít ở đầu ra. Quá trình chuyển đổi còn sử dụng thêm một tham số nữa: khóa bí mật để cá biệt hóa quá trình. Việc giải mã cũng diễn ra tương tự: xử lý khối mã hóa 128 bít cùng với khóa để trả về khối 128 bít bản rõ ban đầu.

Để mã hóa những văn bản có độ dài vượt quá độ dài của khối, người ta sử dụng thuật toán theo một chính sách mã hóa khối nào đó .Phân biệt với mã hóa khối là mã hóa dòng. Mã hóa dòng thao tác trên từng bít của dòng tài liệu và quy trình đổi khác đổi khác theo quy trình mã hóa. Tuy nhiên, sự phân biệt giữa 2 chiêu thức nhiều khi không rõ ràng vì mã hóa khối khi hoạt động giải trí theo một chính sách nào đó thì có công dụng như một giải pháp mã hóa dòng .

Thuật toán mã hóa khối ra đời sớm và có nhiều ảnh hưởng là thuật toán DES (Data Encryption Standard – Tiêu chuẩn mã hóa dữ liệu) do công ty IBM phát triển và được ban hành làm tiêu chuẩn năm 1977. Tiêu chuẩn thay thế DES có tên là AES (Advanced Encryption Standard – Tiêu chuẩn mã hóa nâng cao) được ban hành năm 2001.

Quá trình mã hóa khối bao gồm 2 thuật toán: mã hóa – ký hiệu E và giải mã – ký hiệu E-1. Cả hai thuật toán đều tác động lên một khối đầu vào n bít sử dụng một khóa k bít để cho ra một khối đầu ra n bít. Đối với bất kỳ khóa nào, giải mã là hàm ngược của mã hóa, nghĩa là:

E K − 1 ( E K ( M ) ) = M { \ displaystyle E_ { K } ^ { – 1 } ( E_ { K } ( M ) ) = M }{\displaystyle E_{K}^{-1}(E_{K}(M))=M}

trong đó M là khối thông tin và K là khóa bất kỳ.

Với mỗi khóa K, EK là một hoán vị (song ánh) của khối đầu vào. Mỗi khóa sẽ xác định một hoán vị trong tổng số

2

n

!

{\displaystyle 2^{n}!}

{\displaystyle 2^{n}!} khả năng.

Độ dài của khối thông tin, ký hiệu là n, thường thì là cố định và thắt chặt ở 64 hoặc 128 bít. Một số thuật toán có độ dài khối đổi khác nhưng không phổ cập. Tính đến trước những năm giữa của thập kỷ 1990 thì độ dài 64 bít thường được sử dụng. Từ đó trở về sau thì khối 128 bít được sử dụng thoáng rộng hơn. Trong những chính sách mã hóa khối thì người ta thường phải bổ trợ thêm một số ít bít cho văn bản ( tiếng Anh : padding ) để văn bản chứa số nguyên lần những khối. Mỗi chính sách mã hóa có đặc tính khác nhau về Viral lỗi ( lỗi mã hóa trong khối này ảnh hưởng tác động tới khối khác ), năng lực truy xuất ngẫu nhiên và năng lực chống lại những kiểu tiến công khác nhau. Độ dài thường thì của khóa, k, là 40, 56, 64, 80, 128, 192 và 256 bít. Hiện tại ( năm 2006 ) thì 80 bít là độ dài tối thiểu của khóa để hoàn toàn có thể chống lại tiến công kiểu duyệt hàng loạt .

Mã hóa khối gồm nhiều quy trình lặp lại[sửa|sửa mã nguồn]

Hầu hết những thuật toán mã hóa khối sử dụng lặp đi lặp lại những hàm đơn thuần. Phương pháp này còn được gọi là mã hóa khối lặp ( xem thêm product cipher ). Mỗi chu kỳ luân hồi lặp được gọi là một vòng ( tiếng Anh : round ) và thường thì những thuật toán có từ 4 tới 32 vòng .

Rất nhiều thuật toán mã hóa khối có tính chất của mạng Feistel, hay tổng quát hơn là hệ thống thế và hoán vị. Các thành phần sử dụng trong thuật toán là các hàm toán học, các hàm lô gíc (đặc biệt là hàm XOR), hộp thế (S-box) và các phương pháp hoán vị.

Thuật toán mã hóa Lucifer do công ty IBM phát triển dựa trên những nghiên cứu của Horst Feistel được xem là thuật toán mã hóa đầu tiên dùng cho mục đích dân sự. Sau đó, thuật toán này được sửa đổi và trở thành tiêu chuẩn mã hóa của chính phủ Hoa Kỳ vào năm 1976 với tên gọi là DES (Tiêu chuẩn mã hóa dữ liệu, tiếng Anh: Data Encryption Stardard). Từ đó, DES được sử dụng rất rộng rãi.

DES đã được phong cách thiết kế chống lại một số ít dạng tiến công mà Cơ quan bảo mật an ninh vương quốc Hoa Kỳ ( NSA ) và IBM đã biết vào thời gian phong cách thiết kế. Tuy nhiên, những thông tin này đã không được công bố và chỉ được biết đến vào cuối những năm 1980 nhờ những nghiên cứu và điều tra của Eli Biham và Adi Shamir. Kỹ thuật đó có tên là tiến công vi sai. Kỹ thuật tiến công tuyến tính là một dạng tiến công khác chỉ được làm sáng tỏ sau xuất bản của Mitsuru Matsui. DES đã tạo nên một làn sóng nghiên cứu và điều tra trong nghành mật mã học và thám mã. Từ đó nhiều yếu tố được làm sáng tỏ và nhiều thuật toán mã hóa mới đã sinh ra .Khối tài liệu trong DES có độ dài 64 bít ( khối 64 bít trở nên phổ cập sau DES ) và độ dài khóa là 56 bít. Độ dài khóa phụ thuộc vào nhiều yếu tố, trong đó gồm có cả pháp luật của cơ quan chính phủ. Ngay từ những năm 1970, nhiều người đã cho rằng độ dài khóa 56 bít là không đủ bảo đảm an toàn. Cùng với sự tăng trưởng của năng lực đo lường và thống kê, yếu tố này ngày càng trở nên cấp thiết. Năm 1998, một mạng lưới hệ thống dành riêng cho thám mã DES của tổ chức triển khai Electronic Frontier Foundation đã phá được khóa DES trong thời hạn hơn 2 ngày. Một số biến thể của DES như Triple DES hay 2TDES có độ dài khóa hiệu dụng 112 và 80 bít vẫn được coi là bảo đảm an toàn vào thời gian năm 2004 .DES được thay thế sửa chữa như thể một tiêu chuẩn bởi AES ( thuật toán mã hóa nâng cao, tiếng Anh : Advanced Encryption Standard ) vào năm 2001 sau một cuộc thi thoáng đãng. Tác giả của AES là 2 người Bỉ : Joan Daemen và Vincent Rijmen ( lấy tên chung là Rijndael ). AES có độ dài khối là 128 bít và khóa có độ dài hoàn toàn có thể là 128, 192 hay 256 bít. nhà nước Hoa Kỳ được cho phép sử dụng AES với những thông tin mật do NSA xếp loại .
Bên cạnh tiến công tuyến tính và vi sai còn có rất nhiều kiểu tiến công khác lên mã hóa khối : tiến công vi sai từng phần ( tiếng Anh : truncated and partial differential cryptanalysis ), tiến công kiểu XLS, tiến công kiểu bu mê răng ( tiếng Anh : boomerang attack ) … Để một thuật toán mới được gật đầu, nó phải được chứng tỏ có năng lực chống lại những dạng tiến công đã biết .

Các hàm băm dựa trên mã hóa khối[sửa|sửa mã nguồn]

Các thuật toán mã hóa khối hoàn toàn có thể sử dụng theo 1 số ít cách để tạo ra hàm băm mật mã. Những chiêu thức này tương tự như với những chính sách mã hóa khối dùng cho mã hóa

Sử dụng mã hóa khối cho hàm băm thường chậm hơn so với dùng các hàm băm chuyên dụng. Tuy nhiên dùng mã hóa khối cho cả hai mục đích (mã hóa và hàm băm) lại tiện lợi vì chỉ phải thực hiện 1 lần. Điều này càng có ý nghĩa cho các hệ thống nhúng (chẳng hạn như thẻ thông minh) do không gian dành cho phát triển phần mềm bị hạn chế.

Mã hóa khối với tham số[sửa|sửa mã nguồn]

M. Liskov, R. Rivest, và D. Wagner đã mô tả một dạng tổng quát hơn là mã hóa khối với tham số (tiếng Anh:”tweakable” block ciphers). Đầu vào của thuật toán dạng này bên cạnh bản rõ/bản mã và khóa còn có thêm một tham số nữa gọi là tweak. Tweak cùng với khóa sẽ lựa chọn cách hoán vị của thuật toán. Nếu việc thay đổi tweak yêu cầu khối lượng tính toán nhỏ (so với quá trình tạo khóa) thì ta sẽ có thêm một số chế độ hoạt động khác. Xem thêm bài mã hóa ổ đĩa để có thêm thông tin về vấn đề này.

M. Liskov, R. Rivest, and D. Wagner, ” Tweakable Block Ciphers “, Crypto 2002 PDF .

Liên kết ngoài[sửa|

sửa mã nguồn]

Mã hóa khối – Wikipedia tiếng Việt

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay