Trong ngành mật mã học, phương pháp IDEA (International Data Encryption Algorithm) là một phương pháp mã khối. Được phát triển bởi Lai Học Gia (來學嘉) và James L.Massey của ETH Zurich và được công bố lần đầu tiên vào năm 1991. Phương pháp này đưa ra như là một sự thay thế cho phương pháp cũ DEA (Data Encryption Standard). Tiền thân của IDEA là phương pháp mã trước đó có tên là PES (Proposed Encryption Standard); lúc đầu IDEA còn có tên là IPES (Improved PES). Sau này IDEA đã trở thành tên thương mại. Nó sẽ hết hạn vào năm 2010-2011. Ngày nay, IDEA thuộc quyền sở hữu của MediaCrypt. IDEA được sử dụng trong Pretty Good Privacy (PGP) V2.0 và đã được sáp nhập sau khi phiên bản đầu tiên V1.0 được phát hiện là không còn an toàn nữa.

IDEA
[[Image:
|240px]]
Một bước mã hóa của IDEA
Thông tin chung
Tác giả James Massey, Lai Học Gia
Năm công bố 1991
Phát triển từ PES
Các thuật toán dựa trên MESH, Akelarre,
IDEA NXT (FOX)
Chi tiết thuật toán
Khối dữ liệu 64 bit
Độ dài khóa 128 bit
Cấu trúc Substitution-permutation network
Số chu trình 8.5
Phá mã
A collision attack requiring 224 chosen plaintexts breaks 5 rounds with a complexity of 2126 (Demirci et al, 2003).

Cách thực hiện sửa

IDEA là hệ mã thao tác trên từng khối 64bit, mã hóa cụm rõ 64bit thành cụm mã 64bit, sử dụng 128bit làm khóa bao gồm 1 chuỗi 8 lần biến đổi liên tiếp và tiếp theo là 1 lần biến đổi đầu ra. Lần biến đổi thứ r sử dụng 6 khối khóa con 16 bit Ki(r), 1<=i<=6, để biến đổi 64bit đầu vào X thành 1 đầu ra với 4 khối 16bit và đầu ra này lại là đầu vào cho lần biến đổi tiếp theo. Đầu ra của lần biến đổi thứ 8 là đầu vào cho lần biến đổi cuối cùng là đầu ra của phương pháp này. Trong lần biến đổi này nó dùng 4 khóa con Ki(9), 1<=i<=4, để tính toán cụm mã cuối cùng Y= (Y1,Y2, Y3, Y4). Tất cả các khóa con nhận được từ K.

Một khái niệm trong thiết kế mang tính đột phá của phương pháp IDEA là cách sử dụng hỗn độn các phép toán từ tập 3 phép toán đại số khác nhau của nhóm 2**n phần tử. Các phép toán nhóm thực hiện trên các phần tử biểu diễn bằng 16 bit a và b là: XOR theo từng bit: a ^ b; cộng modulo 2**n: (a+b) mod 2**n, ký hiệu: a [+] b, và nhân modulo 2**n+1, ký hiệu a (*) b.

Tham khảo sửa