Quá trình hình thành và phát triển Sau Đại chiến Thế giới lần thứ II: Chính phủ và quân đội Mỹ (và nhiều Công ty Mỹ) ráo riết tiến hành thiết lập công cụ mã hoá. Với cộng đồng: cục xi gắn trên phong bì là “chuẩn” về bí mật thư tín.
Phần thứ 3: Các hệ mã đối xứng tiêu chuẩn Quá trình hình thành và phát triển Sau Đại chiến Thế giới lần thứ II: Cuộc "cách mạng” máy tính và thông tin điện tử: Hệ mã dữ liệu tiêu chuẩn - DES (Data Encription Standard) Phương án thu gọn của DES Các toán tử sẽ được sử dụng: Quy trình sinh các chìa khoá con (subkeys) từ chìa khoá ban đầu. Các ánh xạ và các "phép nâng" tương ứng 12 ,TT Quy trình hoạt động của DES thu gọn Mô hình đầy đủ của DES Quy trình sinh khoá con Cơ chế vận hành của các toán tử i T Quy trình làm việc của DES Các phương thức sử dụng DES Độ an toàn của DES Tiêu chuẩn mã hoá nâng cao và thuật toán Rijndael (AES - Advanced Encryption Standard) Quá trình hình thành Công cụ chuẩn bị Đa thức trên trường các byte (GF(2 8 )) và các “từ” Phép nhân với đơn thức x Thuật toán Vài nét đặc trưng về thiết kế Trạng thái, khoá mã và số lượng vòng Các phép biến đổi trong một vòng Quy trình sinh (phát triển) khoá Thuật toán lập mã Thuật toán giải mã 1 2 Quá trình hình thành và phát triển Sau Đại chiến Thế giới lần thứ II: Chính phủ và quân đội Mỹ (và nhiều Công ty Mỹ) ráo riết tiến hành thiết lập công cụ mã hoá. Với cộng đồng: cục xi gắn trên phong bì là “chuẩn” về bí mật thư tín. Cuộc "cách mạng” máy tính và thông tin điện tử: Cánh cửa bước vào lĩnh vực mã hoá đã được mở tung cho cả cộng đồng. Cuối thập kỷ 60, IB M lập một nhóm nghiên cứu về mật mã tại New York (do Horst Feistel chỉ đạo). Làm ra hệ mã khoá bí mật với tên gọi là ‘Lucifer’, dùng trong hệ thống máy phát tiền mà IBM đã thiết lập cho tập đoàn bảo hiểm Lloyd’s of London (năm 1971). Tiếp theo là quá trình hoàn thiện và thương mại hóa (dưới dạng một chip điện tử), hoà n thành năm 1974. Đồng thời, nhiều công ty khác cũng “vào cuộc” với các công cụ mã hoá khác nhau, không có một chuẩn nào, và không có ai đứng ra kiểm tra và xác nhận khả năng bảo mật của chúng. Chính quyền (Mỹ) tham gia hỗ trợ → Tình thế được dần dần đổi khác. Năm 1968, Cục tiêu chuẩn quốc gia Hoa Kỳ (National Bure au of Standards - NBS, bắt đầu một chuỗi khảo sát về nhu cầu của Nhà nước và dân chúng Mỹ trong vấn đề an toàn thông tin máy tính. Ngà y 15/5/1973, NBS đưa ra các yêu cầu cơ bản đối với một thuật toán mã hoá tiêu chuẩn (dùng trong việc mã hoá các dữ liệu "nhậy cảm" mà không thuộc phạm vi kiểm soát của các cơ quan đặc nhiệm quốc gia), trong đó quan trọng nhất là: Thuật toán cần đem lại tính bảo mật cao. Thuật toán công k hai, dễ hiểu. Tính bảo mật được chốt vào chìa khoá chứ không vào chính thuật toán. Thuật toán cần có tính "linh động", để có thể áp dụng cho nhiều loại hình ứng dụng. Việc triển khai thuật toán trên các thiết bị điện tử phải không tốn kém. Yêu cầu t hứ 2 có vẻ phi lý, vì xưa nay người ta thường gắn chặt 2 khái niệm "bảo mật" và "bí mật" với nhau, và xem "bí mật" như là tiền đề của "bảo mật". Tuy nhiên, yêu cầu này mang tính thực tiễn ca o: thuật toán mã hoá thường không thể chỉ có một người biết, và khi đã có vài người biết thì điều bí mật sẽ trở thành như "cái kim trong bị", không thể dấu kín được lâu. Hơn nữa, dân thường không có nghiệp vụ giữ bí mật chung, mà chỉ có thể giữ được bí mật riêng của chính mình. Cùng với việc ban bố “tiêu chí” là lời kêu gọi cộng đồng tham gia đề xuất thuật toán. Sự hưởng ứng sôi nổi của cộng đồng khi đó cho thấy sự quan tâm của toàn xã hội tới vấn đề chuẩn mực mật mã, nhưng cũng đồng thời cho thấy sự non yếu về kinh nghiệm trong lĩnh vực nà y. Một số ý kiến đề xuất mới chỉ là những phác thảo thô sơ về thuật toán. Không có đề xuất nào đáp ứng được yêu cầu đề ra. Do đó, lời kêu gọi lần thứ 2 được đưa ra sau hơn một năm , vào 27/8/1974. Cơ quan An ninh Quốc gia Hoa Kỳ (National Security Agency - NSA) đưa ra một phiên bản biến thể của thuật toán Lucifer. Nó đã trở thành chuẩn mã hoá dữ liệu của Hoa Kỳ (the Data Encryption Standard - DES). Trong gần 3 thập kỷ qua, DES đư ợc sử dụng rộng rãi không chỉ ở Mỹ mà còn ở nhiều nước trên thế giới. Nó dùng ch ìa khoá có độ dài 56-bits để mã hoá các khối dữ liệu 64-bits. Lập mã và giải mã cùng bằng một chìa. Sau này, để tăng độ an toàn, nó được cải biên thành DES bội 3 (Triple DES). Hệ mã dữ liệu tiêu chuẩn - DES (Data Encription Standard) Để giúp bạn đọc nắm được ý tưởng cơ bản của phương pháp, mà không bị "rối" bởi các chi tiết kỹ thuật, chúng ta hãy xét một mô hình đơn giản của DES. Phương án thu gọn của DES Trong mô hình này ta dùng khối có độ dài 8 bits và sử dụng khoá có độ dài 10 bits (để sinh ra 2 khóa con có độ dài 8 bits dùng cho 2 vòng). Các toán tử sẽ được sử dụng: Có 3 toán tử sẽ được sử dụng trong quá trình mã hoá là: Phép hoán vị (Permutation), ký hiệu là P. Cho bởi một vectơ 8 thành. Ví dụ P8 = (2,5,0,4,7,3,1,6) xác định phé p hoán vị như sau: bit ở vị trí thứ ba (mang số thứ tự là 2) chuyển lên vị trí đầu tiên, bit ở vị trí thứ 6 (mang số thứ tự 5) chuyển lên vị trí thứ hai, bit ở vị trí đầu tiên (mang số thứ tự 0) được chuyển sang vị trí thứ ba, v.v… và như vậy nó biến khối 8 bit 10011101 thành ra khối 8 bit 01111100. Phép đảo vế, ký hiệu là Q , có vai trò đảo vị trí của nửa khối đầu (4 bits) cho nửa khối sau (4 bits); tức là X XQ= , trong đó trong đó X, X' là các số nhị phân 4 bits ứng với các "nửa" khối dữ liệu (8 bits). Rõ ràng 1- Q=Q, vì 2 Q là ánh xạ đồng nhất. (,XX') ( ', ) P hép "nâng theo T", ký hiệu T P , xác định bởi , trong đó T là một ánh xạ của tập số nhị phân 4 bits vào chính nó. (, ') ( ( '), ') T XX X TX XP=+ Theo phép cộng mod2, ta luôn có , và do đó ( ') ( ') 0000TX TX+= 3 ) 2 (,') ( ('),') ( (') ('),') (,' TT XX XTXX XTX TXX XXP=P+ =++ =, tức là ánh xạ là tự khả nghịch, với mọi T bất kỳ. Sau này T sẽ đư ợc chọn là phép biến đổi phi tuyến khá phức tạp và phụ thuộc vào tham số (là chìa khóa con). T P Quy trình sinh các chìa khoá con (subkeys) từ chìa khoá ban đầu. Trong phương án DES rút gọn, ta dùng khoá ban đầu có độ dài 10 bits để sinh ra các kho á con với độ dài 8 bits. Phé p hoán vị P10 = (2,4,1,6,3,9,0,8,7,5) lên chìa khoá ban đầu (10 bits); Phé p dịch xoay vòng về phía trái đối với từng nửa xâu theo một chế độ dịch chuyển xác định trước (ví dụ: với tuần tự dịch là (1,2) thì thực hiện dịch đi 1 bits đối với việc tạo khoá con thứ nhất, dịch đi 2 bits đối với việc tạo khoá con thứ 2). Phép chọn 8 thành phần, xác định bởi S8=(5,2,6,3,7,4,9,8), để tạo thành chìa khóa con (dành cho một vòng). Những phé p biến đổi trên là công khai ai cũng biết. 4 } ) ) ) ) Như vậy, với khoá ba n đầu là , , ta áp dụng P10 và thu được 012 9 rrr r { 0, 1 i r Î 0123456789 2416390875 01234567 89 10()()(P rrrrrrrrrr rrrrrrrrrr ssssssssss== ta phân kết quả thành 2 nửa là và dịch mỗi nửa sang trái 1 bits (để làm ra khoá con thứ 1) và có được 01234 56789 ()(sssss sssss 123 4 0 67 895 123 4 06 7 895 0123456789 ()()( )(sssss sssss ssssssssss tttttttttt==, rồi, theo phép chọn S8, ta nhặt ra 8 phần tử và sắp xếp theo thứ tự đã định ra trong đó, tức là thu đượcchìa khoá con thứ nhất là . 52637498 ()tttttttt Để tạo ra chìa khoá c on thứ 2 ta không bắt đầu lại từ 10 bits của khoá ban đầu, mà từ "sản phẩm" đã được hoán vị trước khi nhặt ra khoá con thứ nhất, tức là từ . Sau khi tách nó thà nh 2 nửa và cho dịch từng nửa sang trái 2 vị trí (theo quy định đã đề ra từ trên), ta có được 0123456789 tttttttttt 23401 78956 2340178956 0 1 2 3 4 5 6 7 8 9 ()()( )(ttttt ttttt tttttttttt uuuuuuuuuu== và sau đó áp dụng "phép chọn" S8 để nhặt ra 8 thành phần là . 52637498 ()uuuuuuuu Các ánh xạ và các "phép nâng" tương ứng 12 ,TT Mỗi vòng biến đổi cần một ánh xạ T. Trong DES thu gọn ta dùng 2 vòng nên sẽ cần 2 ánh xạ . Vì T chỉ làm việc trên nửa s au của khối dữ liệu (4 bits), nên biến của nó sẽ là , với . 12 ,TT 4567 nnnn {} 0, 1 i n Î Toá n tử vận hà nh khá "tinh vi", trước hết từ 1 số nhị phân 4 bits là nó sinh ra 8 bits bằng cách cho nó xoay vòng sang phải 1 bit để được 4 bits đầu và cho xoay vòng ngược về trái 2 bits để được 4 bits sau, và nếu xếp các bits này thành 2 hàng (mỗi hàng 4 bits) ta có biểu đồ sau 1 T 4567 nnnn 745 567 nnnn nnnn 6 4 . Sự tham gia của khóa con được thông qua phép cộng. Sau khi cộng vào đây các thành phần của khoá c on thứ 1 (ta đang nói về ), tức là , ta được 1 T 52637498 ()tttttttt 7542566 57647948 ntntntnt ntntntnt ++++ ++++ 3 . Sau khi “đặt tên” lại 00 01 02 03 10 11 12 13 pppp pppp 5 ) Mỗi thành phần c hỉ là số 0 hoặc 1, nên từng cặp hai thành phần sẽ biểu diễn một số nhị phân nào đó có giá trị thập phân từ 0 đến 3, và sẽ được xem như chỉ số của hàng hay cột trong một bảng số chữ nhật cỡ 4x4 nào đó. Quy ước rằng số tạo bởi các bits nằm ngoài vùng "đóng cọc", như , sẽ là số chỉ hàng, còn số tạo bởi các bits nằm trong vùng "đóng cọc", như ( , sẽ là số chỉ cột. Khi ấy, mỗi hàng sẽ cho ta "toạ độ" một phần tử trên bảng số. Các bảng số này được cho sẵn (còn có tên gọi là các S-boxes), và trong phương án DES thu gọn thì chúng chứa các phần tử là số nguyên từ 0 đến 3, cụ thể là: 00 03 (pp 02 ) 01 pp [] 0123 0 1032 1 3210 0 2 0213 3 3132 S é ù ê ú ê ú = ê ú ê ú ê ú ê ú ê ú ë û [] 0123 0 0123 1 2013 1 2 3010 3 2103 S é ù ê ú ê ú = ê ú ê ú ê ú ê ú ê ú ë û , . Ta lấy ra trong bảng S[0] phần tử có tọa độ sinh bởi hàng trên (tức là có chỉ số hàng và chỉ số cột ); nó là một số nguyên nào đó trong khoảng 0 đến 3 nên c ó thể viết lại dưới dạng nhị phân như một số 2 bits là . Tương tự như vậy ta lấy ra trong ma trận S[1] phần tử có tọa độ sinh bởi hàng dưới (tức là có chỉ số hàng , vả chỉ số cột ) rồi viết nó lại dưới dạng nhị phâ n là . Ta "dính" 2 kết quả tìm kiếm lại và được một số nhị phân 4 bits là . Sau cùng, ta sử dụng phép hoán vị P4 = (1,3,2,0) và biến số nà y thành ra và đó chính là kết quả tác động của toán tử lên nửa khối dữ liệu n . Như vậy ta có: 00 03 (pp 11 (pp ) ) ) ) ) ) ) ) 01 02 (pp 4567 nnn 01 (qq 23 (qq 10 13 (pp 12 0123 (qqqq 1320 ()qqqq 1 T 1 4567 1320 ()(T nnnn qqqq= và ánh xạ có biểu diễn tường m inh là 1 T P 1 01234567 () T nnnnnnnnP = 0 11 32 23 04567 ( , , , ,,,,)nqnqnqnqnnnn++++ (trong đó các "dấu phẩy" được đưa và o biểu thức vế phải một cách "khiên cưỡng" chỉ với mục đích là để cho dễ nhìn hơn). Toá n tử vận hành hoàn toà n tương tự, chỉ khác tại bước cộng khoá thì ta dùng khoá con thứ 2, còn lại các S-boxes và phép hoán vị P4 thì vẫn như cũ. Rõ ràng, chính bước "cộng khoá" đã làm cho các ánh xạ T trở nên "bị tham số hóa" bởi khoá. 2 T Ta không cần phải bận tâm khi thấy rằng một nửa của khối dữ liệu không hề bị biến đổi, vì tiếp sau đó sẽ ta sẽ gọi ra phép đảo 2 nửa khối Q và toán tử sẽ "tiến ra" vận hành trên nửa khối còn đang đề nguyên đó. 2 T Sau đây ta sẽ kí hiệu là cho gọn việc trình bày. i T P i f Quy trình hoạt động của DES thu gọn Một chu trình tác động lên một khối dữ liệu (8 bits) của DES thu gọn là tổ hợp của các phép biến đổi sau: 1 21 IP f f IP - Q với IP là phép hoán vị ban đầu, cho bằng vectơ . 8 (1 , 5, 2, 0, 3, 7, 4, 6)P = Dễ dàng tính ra . 1 (3,0,2,4,6,1,7,5)IP - = 6 1- Từ c hu trình lập mã như trên và quy tắc ta rút ra chu trình giải mã là 11 ()hg g h = () 1 11 21 12 IP f f IP IP f f IP - Q=Q . được gọi là một vòng biến đổi trong quá trình mã hoá. Ánh xạ kép i f Q Mỗi vòng m ã hoá cần tới một hàm i f , phụ thuộc vào chìa khoá con của vòng đó. Khi tăng số vòng trong quy trình mã hoá thì đòi phải sinh ra nhiều chìa khoá con hơn (từ 1 chìa khoá đã cho ban đầu), và khi ấy người ta cũng thường đạt được độ an toàn cao hơn. Lưu ý rằng phé p đảo vế Q được sử dụng chỉ nhằm mục đích đưa nửa khối dữ liệu còn lại ra cho biến đổi f trong vòng tiếp theo, cho nên nó sẽ không có tác dụng gì ở vòng cuối cùng (vì sau đó không còn có biến đổi f nữa). Vì vậy, trong vòng cuối người ta thường bỏ đi công đoạn đảo vế 2 nửa khối (toán tử Q ). Ta hiểu vì sao trong mô hình DES thu gọn với 2 vòng mà chỉ có một phép đảo vế. Mô hình đầy đủ của DES Trong mô hình DES thực tế, người ta dùng 16 vò ng (thay cho 2 vòng trong phương án rút gọn), khối dữ liệu 64 bits (thay cho khối dữ liệu 8 bit), khoá ban đầu có độ dài 56 bits (thay vì 10 bit) sinh 16 khoá con với độ dài 48 bits (thay vì 2 chìa với độ dài 8 bit). Và như vậy, sẽ có những t hay đổi sau đây: Quy trình sinh khoá con Các tha o tác không có phát sinh đặc biệt, ngoài việc dùng P56 thay cho P10, dùng S48 thay cho S8, và sử dụng tuần tự dịch chuyển với 16 bước là (1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1) thay cho 2 bước, là (1,2) như trong DES thu gọn. Cơ chế vận hành của các toán tử i T Nửa sau của khối dữ liệu bâ y giờ 32 bits, tức là một số nhị phân có dạng . Từ đây ta sẽ tạo ra 48 bits (cho phù hợp với độ dài khoá con bây giờ là 48 bits) bằng cách nhặt 8 lần, mỗi lần 6 bits. Cụ thể là: lần đầu ta cho nó xoay vòng sang phải 1 bit và nhặt ra 6 bits đầu (tức là được ), từ lần thứ 2 trở đi ta cho nó quay vòng về phía trái, mỗi lần 4 bits, và nhặt ra 6 bits đầu (tức là trong lần thứ 2 ta có xâu bi ts , và trong lần thứ 3 t a có xâu , ). Nếu xếp chúng thành hàng thì sau 8 lần ta được biểu đồ với 8 hàng (mỗi hàng 6 bits) như sau: 32 33 63 ( )nn n 63 32 33 34 35 36 nnnnnn 4035 36 37 38 39 nnnnnn 39 40 41 42 43 44 nnnnnn 63 32 33 34 35 36 35 36 37 38 39 40 59 60 61 62 63 32 nn n n nn nn n n nn nnnnnn Sau khi cộng các khoá con (48 bits) vào đây theo tương ứng bit với bit, ta được một biểu đồ mới đóng vai trò định vị "toạ độ" các thành phần trong các S-boxes (tương tự như tr ong phương án DES thu gọn). Cần phải lưu ý rằng, tại mỗi hàng trong biểu đồ mới, phần "trong miền đóng cọc" có tới 4 bits cho nên nó biểu diễn một số nguyên nào đó từ 0 đến 15, còn "phần ngoài miền đóng cọc" vẫn chỉ biểu diễn một số nguyên trong vùng từ 0 đến 3; như vậy các S-boxes cần c ó kích thước là 4 hàng và 16 cột, và do trong biểu đồ có 8 hàng nên ta cần tới 8 cái S-box như vậy. Một điểm đáng chú ý là trong các S-boxes của DES thực sự thì mỗi hàng là một vectơ 16 thành phần, nhận giá trị nguyên từ 0 đến 15 và không có 2 thành phần nào giống nhau. Quy trình làm việc của DES Chu trình lập mã đư ợc mô tả bằng công thức: 1 16 15 1 IP f f f IP - QQQ trong đó, như đã biết IP là phép hoán vị ba n đầu, làm việc với các khối dữ liệu 64 bits, Q là phép đảo 2 nửa khối 32 bits cho nhau, còn cơ chế vận hành của các ánh xạ (và ánh xạ i T i f tương ứng) không có gì khác so với trong phương án rút gọn, ngoại trừ cỡ biến được tăng lên cho phù hợp (như đã thấy ở trên). Như vậy, nếu không kể các bước hoán vị ban đầu và cuối cùng, DES bao gồm 16 vòng, với vòng cuối cùng bỏ qua phép Q đảo vế 2 nửa khối. Hình vẽ sau đây mô tả một số vòng của DES. Chúng ta sẽ bỏ qua phép hoá n vị khởi tạo (IP - Initial permutation) và phép hoán vị kết thúc IP -1 (ngược của phép hoán vị khởi tạo). Các ký hiệu sau cũng sẽ được sử dụng trong suốt phần này. P : khối văn bản nguồn (plaintext) 64-bit, C : khối văn bản m ã tương ứng (64-bit), P H : nửa trái của khối P (32-bit), P L : nửa phải của khối P (32-bit), C H : nửa trái của khối C (32-bit), C L : nửa phải của khối C (32-bit), X i : giá trị trung gian (32-bit) của vòng thứ i; K i : khoá con (48-bit subkey) cho vòng thứ i; F i (X i ,K i ) : ánh xạ T tại vòng thứ i; 7 Chu trình giải mã đư ợc suy ra từ phép lấy ánh xạ ngược (tương tự như đã làm đối với DES thu gọn. Do tính "tự khả nghịch" của các ánh xạ được dùng, quy trình giải mã lặp lại nguyên si quy trình lập mã với việc đảo ngược thứ tự sử dụng các ánh xạ . i T P Các phương thức sử dụng DES Sau một thời gian sử dụng, người ta dần nhận ra rằng DES sử dụng khoá có độ dài không thoả đáng. Trong năm 1997, người ta đã sử dụng máy tính loại mạnh (trị giá 1 triệu đô la) để "duyệt" hết các loại "chìa khoá có thể sinh ra" của DES, trong vòng dưới 2 giờ đồng hồ, cho nên DES không còn sức mạnh đối với các máy tính cao cấp. Các biến thể của DES đã được đưa ra làm giải pháp "cứu cánh". Người ta cũng phát hiện ra rằng việc mã hoá 2 lần liên tiếp bằng D ES (với 2 chìa khác nhau) lại chẳng mạnh hơn bao nhiêu so với DES đơn. Phương án được dùng rộng rãi là DES bội 3 với 2 chìa, trong đó lần giữa dùng chìa thứ 2 để thực hiện phép giải mã mà không lập mã. Cụ thể, nếu ký hiệu phép lập mã bằng khoá k là và phép giải mã bằng khóa k là , thì DES bội 3 đư ợc mô tả bằng công thức k E k D 8 )) 121 ((() key key key CTEDEPT= . Việc triển khai DES trên chip c ho phép tạo thêm nhiều biến thể cho việc sử dụng DES: Phương án đơn giản là dùng Electronic C ode Book (ECB), các khối văn bản được mã hoá độc lập với nhau. Phương án này đơn giản, nhưng có một nhược điểm là, với một khoá đã cho, các khối văn bản nguồn giống nhau sẽ ứng với các khối văn bản mã giống nhau. Phương án an toàn hơn là dùng CipherBloc k Chaining (CBC) mode. Người ta khởi tạo ra một vectơ ban đầu (là một xâu số nhị phâ n 64 bits) và thông báo cho nhau biết (cùng với khoá). Trong bước đầu, vectơ khởi tạo được trộn với khối PT đầu tiên (bằng phép loại bits ), rồi lấy kết quả thu được cho m ã hoá (bằng DES), thành ra khối CT đầu tiên. Bước tiếp theo lấy kết quả mã hoá (CT) của bước trước làm vectơ khởi tạo và thực hiện tương tự như bước trước (đối với khối văn bản tiếp theo). Å Một phương án khác là Cipher Feedback (CFB) mode. Người ta cũng sử dụng vectơ khởi tạo, nhưng không đem trộn nga y với PT mà đem mã hoá (bằng DES) rồi mới trộn với PT (bằng phép loại bits Å ) thành ra CT, kết quả CT bước trước lại được dùng làm vectơ khởi tạo cho bước sau và công việc tiếp diễn tương tự như bước trước. Phương án sau cùng là Output Feedback (OFB) mode, thực ra là biến DES thành một công cụ mã dòng (Stream Cipher). Người ta dùng DES để sinh ra một dòng khoá (Key Stream) đem trộn với dòng bits văn bản nguồn (bằng phép loại bits Å ) để thu được dòng bits văn bản mã. Quy trình sinh khoá dòng cũng sử dụng vectơ khởi tạo ban đầu. Vectơ này được mã hoá (bằng DES) và cho ta khối đầu tiên của khoá dòng. Khối đầu tiên lại được mã hoá (bằng DES) để cho ra khối tiếp theo của khoá dòng là. Công việc cứ thế tiếp diễn cho tới khi có đủ dòng khoá. Độ an toàn của DES Ban đầu, DES xem ra có vẻ như là vững chắc. Tuy nhiên, sau một thời gian dài sử dụng, những yếu điểm của DES cũng đã dần bộc lộ. Với độ dài của chìa khoá chỉ vẻn vẹn có 56-bits làm cho số lượng chìa (có thể sinh ra) là không đủ nhiểu so với số lượng chips và tốc độ xử lý của các siêu máy tính này nay, nhất là các dàn máy song song chuyên dụng phục vụ cho giải mã. Với các máy tính này, nhiều nơi đã thông báo khả năng có thể bẻ khoá được DES trong thời gian không quá lâu. Chính vì vậy, trong mấy năm gần đây đã xuất 9 hiện nhiều giải pháp khác ưu việt hơn nó, đáng lưu ý hơn cả là International Data Encription Algorithm (IDEA) và Advanced Encrypti on Standard (AES), cùng hỗ trợ cho khoá dài 128 bits Tiêu chuẩn mã hoá nâng cao và thuật toán Rijndael (AES - Advanced Encryption Standard) Quá trình hình thành Trong nguy cơ sụp đổ của DES trước các cuộc tấn công của các siêu máy tính đương thời, ngày 2/1/1997 (gần như tròn 20 năm kể từ khi DES được Chính phủ thông qua), Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) chính thức đưa ra đề nghị cộng đồng tham gia vào việc xây dựng một chuẩn mã hoá nâng cao (Advanced Encryption Standard - AES). Trong số những yêu cầu đưa ra đối với AES, có những tiêu chí đáng lưu ý sau đây: A.1) AES đư ợc xác lập công khai. A.2) AES là hệ mã k hối đối xứng. A.3) AES được thiết kế sao cho độ dài khoá có thể mở rộng theo nhu cầu. A.4) AES c ó thể triển khai trên cả phần cứng và phần mềm. A.5) AES cần phải là sản phẩm a) miễn phí hoặc là b) được cho dưới các điều kiện phù hợp với chính sách về bản quyền của Viện tiêu chuẩn quốc gia Hoa kỳ (American National Standards Institute - ANSI ). A.6) Các thuật toán thoả mãn các điều kiện trên sẽ được xem xét trên cơ sở các phương diện sau đây: a) Tính bảo mật ; b) Tính hiệu quả về mặt tính toán ; c) Nhu cầu đòi hỏi về bộ nhớ ; d) Tính đơn giản; e) Tính mềm dẻo, linh động ; f) Các yêu cầu về phương diện bản quyền . Sau một thời gian xe m xét và thảo luận thêm, tháng 9/1997, NIST chính thức đưa ra lời kêu gọi hưởng ứng cuộc thi xây dựng thuật toán cho AES. Trong vòng 1, từ t háng 8/98 đến 4/99, sau khi loại bỏ các phương án không thoả mãn các tiêu chí đề ra, người ta chính thức đưa vào xem xét 15 phương án (gửi đến từ khắp nơi trên thế giới: Đức, Bỉ, Áo, Pháp, Nhật, ). Trong vòng 2, từ 8/99 đến 5/ 2000, từ 15 phương án xem xét người ta lọc ra được 5 phương án để đưa vào vòng chung kết, đó là: Tê n thuật toán Những người sáng chế MARS IBM (đại diện bởi Ne venko Zunic) RC6 TM RSA Laboratories (đại diện bởi Burt Kaliski) Joan Daemen, Vincent Rijmen Rijndael Ross A nderson, Eli Biham, Lars Knudsen Serpent Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson Tw ofish Trong vòng chung kết, diễn ra trong 90 ngà y từ đầu tháng 3 đến cuối tháng 5/2001, với sự xem xét tỷ mỷ cả 5 thuật toán từ mọi phương diện, người ta đã chọn Rijndael làm thuật toán cho AES. NIST tổng hợp các thông tin về Rijndael và tiếp tục đưa ra cho bàn dân thiên hạ xem xét và bình luận lần cuối, trước khi đi đến kết luận c uối cùng vào cuối mùa hè năm 2001. Thuật toán Rijndael mang đậm màu sắc Toán học. Trong thuật toán này, ngoài các tính toán đồng dư và các phép tính bits (thường gặp trong các thuật toán khác), người ta đã thiết lập những phép toán khá đặc biệt trong trường hữu hạn và trong vành đa thức trên trường hữu hạn. Công cụ chuẩn bị Chúng ta xây dựng 2 loại phép toán mới: loại phép toán trên tập các byte (8 bits) và loại phép toán trên các là từ (word), tức là vectơ gồm 4-byte. Các phép toán ở mức byte trong thuật toán Rijndael được định nghĩa thông qua phép biểu diễn mỗi byte như một phần tử của trường hữu hạn hay còn gọi là , và ở đây sẽ được gọi là trường các byte. 8 2 F 8 (2 )GF Các phép toán trên các từ (gồm 4 byte) sẽ được thiết lập trên cơ sở các phép toán trên các byte theo ý tưởng như sau. Mỗi từ thường được xem như một vectơ 4 chiều trên trường các byte và mỗi vectơ 4 chiều lại có thể được xem như tập các hệ số của một đa thức bậc 3. Như vậy, các phép toán trên các từ có thể được định nghĩa thông qua các phép toán trên các đa t hức bậc 3 (với các hệ số là byte). Trường các byte đã được đề cập trong phần cơ sở toán học. Bây giờ ta xem xét vành các đa thức trên trường các byte. Đa thức trên trường các byte (GF(2 8 )) và các “từ” Sau nà y ta sẽ chỉ xem xét các từ (word) gồm 4 byte cho nên ta sẽ chỉ đề cập tới các vectơ 4-byte, và các đa thức có bậc không vượt quá 3. Thông thường, vectơ 4-byte đư ợc tương ứng với đa thức 3210 (, ,, )bbbb 10 0 32 321 ()bx bx bx bx b=+++ . Phép cộng cũng như việc cộng các byte trong trường , được thực hiện một cách đơn giản thông qua phép loại bits EXOR. 8 (2 )GF Phé p nhân các từ dùng 2 phép toán bổ trợ: a) Các hệ số của đa thức tính theo quy tắc nhân () và cộng () c ác byte, trong trường ; 8 (2 )GF [...]... I_FinalRound(State,I_ExpandedKey); } Như vậy, thuật toán giải mã cũng có cấu trúc tương tự như thuật toán lập mã (nhưng khác nhau ở từng phép biến đổi cụ thể) Nhận xét: Mặc dù các tính toán trong quá trình lập mã không thể "tự động" áp dụng được cho quá trình giải mã, nhưng các nhận xét nêu trên có thể giúp ta khai thác được khá nhiều kết quả tính toán lập mã vào việc giải mã 21 ... khóa mã ban đầu (Cipher Key) thành ra các chìa khoá con dành cho từng vòng biến đổi Nó gồm 2 công đoạn: Mở rộng khoá và trích chọn khoá cho vòng Mở rộng khoá Mở rộng khóa là quá trình kiến tạo một mảng tuyến tính của các từ (4 byte), xuất phát từ Nk từ của chìa khoá mã (Cipher Key), với các từ tiếp theo được xác định truy hồi theo các từ ở phía trước Quy tắc truy hồi thay đổi theo độ dài của khoá mã, ... đoạn mã sau đây: Rijndael(State,ExpandedKey) { AddRoundKey(State,ExpandedKey); For( i=1; i . thứ 3: Các hệ mã đối xứng tiêu chuẩn Quá trình hình thành và phát triển Sau Đại chiến Thế giới lần thứ II: Cuộc "cách mạng” máy tính và thông tin điện tử: Hệ mã dữ liệu tiêu chuẩn -. 15/5/1973, NBS đưa ra các yêu cầu cơ bản đối với một thuật toán mã hoá tiêu chuẩn (dùng trong việc mã hoá các dữ liệu "nhậy cảm" mà không thuộc phạm vi kiểm soát của các cơ quan đặc nhiệm. 56-bits để mã hoá các khối dữ liệu 64-bits. Lập mã và giải mã cùng bằng một chìa. Sau này, để tăng độ an toàn, nó được cải biên thành DES bội 3 (Triple DES). Hệ mã dữ liệu tiêu chuẩn - DES