TCVN11367-3:2016

Tiêu chuẩn quốc gia TCVN 11367-3:2016 (ISO/IEC 18033-3:2010) về Công nghệ thông tin – Các kỹ thuật an toàn – Thuật toán mật mã – Phần 3: Mã khối TIÊU CHUẨN QUỐC GIA TCVN 11367-3:2016 ISO/IEC 18033-3:2010 CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - THUẬT TOÁN MẬT MÃ - PH Ầ N 3: MÃ KHỐI In f ormation technology - Security techniques - Encrypt i on algorithms - Part 3: Block ciphers Lời nói đầu TCVN 11367-3:2016 hoàn toàn tương đương với ISO/IEC 18033-3:2010. TCVN 11367-3:2016 d o Cục Quản lý mật mã dân sự và Kiểm định s ả n phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng thẩm đ ị nh, Bộ Khoa học và Công nghệ công bố. Bộ tiêu chuẩn TCVN 11367 Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã gồm 04 phần: - TCVN 11367-1:2016 (ISO/ I EC 18033-1:2015) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật t oán mật mã - Phần 1: Tổng quan. - TCVN 11367-2:2016 (ISO/IEC 18033-2:2006) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật m ã - Phần 2: Mật mã phi đối xứng. - TCVN 11367-3:2016 (ISO/IEC 18033-3:2010) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 3: Mã khối. - TCVN 11367-4:2016 (ISO/IEC 18033-4:2011) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 4: Mã dòng. CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - THUẬT TOÁN MẬT MÃ - PH Ầ N 3: MÃ KHỐI In f ormation technology - Security techniques - Encrypt i on algorithms - Part 3: Block ciphers 1. Phạm vi áp dụng Tiêu chuẩn này đặc tả các mã khối. Mã khối ánh xạ các khối n bit vào các khối n bit dưới sự kiểm soát của khóa có độ dài k -bit. Có tất cả bảy loại mã khối khác nhau được mô tả và chúng được phân loại trên bảng 1. Bảng 1 - Đặc tả m ã kh ố i Độ dà i kh ố i Tên thuật toán Độ dài khóa 64 bit TDEA (4,2) 128 hoặc 192 bit MISTY1 (4,3) 128 bit CAST-128 (4,4) HIGHT (4,5) 128 bit AES (5,2) 128,192 hoặc 256 bit Camellia (5 , 3) 128,192 hoặc 256 bit SEED (5,4) 128 bit Các thuật toán được đặc tả trong tiê u chuẩn này của bộ TCVN 11367 (ISO/IEC 18033), được gán cho các định danh đối tượng phù hợp với tiêu chu ẩ n ISO/IEC 9834. Danh sách các định danh đối tượng được đưa ra tại Phụ lục B. Bất k ì sự thay đổi về đặc tính c ủ a thuật toán dẫn đến thay đổi hành vi chức năng chức năng và sẽ dẫn đến thay đổi định danh đối tượng mà thuật toán nhằm tới. 2. Thuật ngữ và định nghĩa Trong tiêu chu ẩ n này áp dụng các thuật ngữ và định nghĩa dưới đây: 2.1. Khối (block) Xâu bit có độ dài xác định. CHÚ THÍCH Trong tiêu chu ẩ n này của bộ TCVN 11367 (ISO/IEC 18033), độ dài khối hoặc l à 64 hoặc 128 b i t. [ISO/IEC 18033-1:2005]. 2.2. Mã khối ( block cipher) Hệ thống mã khối đối xứng, với tính chất là thuật toán mã hóa thao tác trên các khối bản rõ, tức các xâu bit có độ dài xác định, cho ra khối bản m ã . [ISO/IEC 18033-1:2005] 2.3. B ả n mã (ciphertext) Dữ liệu đã được biến đổi để che giấu nội dung thông tin trong đ ó . [ISO/IEC 9798-1:1997] 2.4. Khóa (key) Dãy các kí hiệu điều khiển thao tác c ủ a phép biến đổi mật mã (v í dụ, phép mã hóa và phép giải mã) CH Ú THÍCH Trong tất c ả các hệ m ậ t mã đ ược mô tả trong tiêu chu ẩ n này c ủ a bộ TCVN 11367 (ISO/IEC-18033), khóa gồm một các d ã y b i t. [ISO/IEC 11770-1:1996] 2.5. Mã khối n-bit (n-bit block cipher) Mã khối với tính chất là các khối bản rõ và khối bản mã có đ ộ d à i n bit. [ISO/IEC 10116:2006] 2.6. B ả n rõ (plaintext) Thông tin chưa được mã hóa [ISO/IEC 9797-1:1999] 3. Các ký hiệu n độ dài tính bằng bit của bản rõ/ bản mã đối với mã khối E k hàm mã hóa với khóa K D k hàm giải mã với khóa K Nr số vòng của thuật toán AES, bằng 10, 12 hoặc 14 để chọn độ dài khóa tương ứng 128, 192, hoặc 256 bit. Å phép toán logic XOR trên xâu bit, nghĩa là nếu A và B là hai xâu cùng độ dài thì A Å B là xâu bit bao gồm các bit là kết quả phép toán logic XOR của A và B phép nhân hai đa thức (mỗi đa thức có bậc bé hơn 4) theo mod x 4 + 1 Ù phép toán logic AND trên xâu bit, nghĩa là nếu A và B là các xâu bit cùng độ dài, thì A Ù B là xâu bit được tạo từ phép toán logic AND các bit tương ứng của A và B Ú phép toán logic OR trên xâu bit, tức là nếu A và B là các xâu bit cùng độ dài, thì A Ú B là xâu bit gồm các bit là kết quả của phép toán logic OR A và B ║ phép ghép các xâu bit · phép nhân trên trường hữu hạn phép nhân vòng sang trái i bit. phép nhân vòng sang phải i bit. phép bù bit của x a mod n với các số nguyên a và n , a mod n kí hiệu số dư (không âm) trong phép chia n cho a . Một các tương đương, b = a mod n nếu b là số nguyên duy nhất thỏa mãn các điều kiện sau: (i) 0 ≤ b <> n (ii) (b-a) là bội số nguyên của n phép cộng trong số học mô-đun, nghĩa là nếu A và B là hai xâu t-bit thì A B được xác định bằng ( A + B ) mod 2 t phép cộng trong số học mô-đun, nghĩa là nếu A và B là hai xâu t-bit thì A B được xác định bằng ( A + B ) mod 2 t 4. Mã khối 64 bit 4.1 . Tổng quan Trong Điều này đặc tả b ố n loại m ã khối 64 bit: TDEA (hay " Ba DES " - " Triple DES") ở Điều 4.2, MISTY I ở Đi ề u 4.3, CAST-128 ở Điều 4.4 và HIGHT ở Điều 4.5. Người dùng được cấp quyền để tiếp cận dữ liệu đã mã hóa, sẽ nhận được kh ó a d ùng để mã d ữ liệu để giải mã dữ liệu. Thuật toán c ủ a b ấ t kì hệ mật nào trong điều này, được thiết kế để mã h ó a và giải mã các kh ố i dữ liệu 64 bit, theo sự điều khiển của khóa 128 (hoặc 192 bit). Phép giải mã sử dụng cùng khóa của phép mã hóa. 4.2 . TDEA 4.2.1 . Thuật toán mã dữ liệu bội ba Thuật toán mã dữ liệu bội ba (TDEA-Triple Data Encryption) là mật mã đối xứng, có thể xử lí các khối dữ liệu 64 bit, sử d ụng khóa mật mã có độ dài 128 (hoặc 192) bit, trong đó 112 b i t (hoặc 168 bit) có thể được chọn một cách tùy ý, các bit còn lại dùng để làm mã phát hiện sai. TDEA thường được biết đến như là DES bội ba (Triple - DES) Phép mã h ó a/gi ả i mã TDEA là phép toán ghép các phép toán mã h óa và giải m ã DES, ở đây thuật toán DES được đặc t ả tại Phụ lục A. Khóa c ủ a TDEA gồm ba khóa DES. 4.2.2 . Phép mã hóa/giả i m ã TDEA 4.2.2.1 . Các đ ị nh nghĩa mã hóa/giải mã TDEA được xác định theo thuật ngữ của phép toán DES, ở đấy E k là phép toán mã hóa của DES với khóa K và D k l à phép giải mã của DES với khóa K . 4.2.2.2. Phép m ã hóa của TDEA Phép biến đ ổ i khối P 64 bit thành khối C 64 b i t được xác định như sau: . 4.2.2.3 . Phép giải mã TDEA Phép biến đổi khối C 64 bit thành khối P 64 bit được xác đ ị nh như sau: . 4.2.3 . Tùy chọn khóa trong TDEA Tiêu chuẩn này của TCVN 11367 (ISO/IEC 18033) xác định các tùy chọn khóa cho TDEA. Khóa TDEA gồm ba khóa ( K 1 , K 2 , K 3 ). 1. Tùy chọn khóa 1: K 1 , K 2 và K 3 là những khóa DES khác nhau; 2. Tùy chọn khóa 2: K 1 và K 2 l à các khóa DES khác nhau, còn K 3 = K 1 . CH Ú TH Í CH Tùy chọn khóa K 1 = K 2 = K 3 tương đương với DES-đơn không được khuyến cáo sử dụng. Ngoài ra n ê n sử d ụng tùy chọn 1 h ơ n tùy chọn 2, v ì tùy chọn 1 cung c ấ p mức an to à n bổ sung tại cùng hiệu năng thực thi (tham khảo thêm chi tiết b [3 ] ). 4.3 . MISTY1 4.3.1 . Thuật toán MISTY1 Thuật toán MISTY1 là mã khối đối xứng, có thể xử lí các kh ố i 64 bit sử dụng khóa mật mã độ dài 128 bit. 4.3.2 . Phép mã hóa MISTY I Phép mã hóa được chỉ ra trên Hình 1. Phép bi ế n đổi khối 64-bit P thành khối 64-bit C được xác đ ị nh như sau ( KL , KO , và KI l à các khóa): (2) Với i = 1, 3 ,…, 7 (độ chênh lệch các giá tr ị liên ti ế p nhau của i bằng 2 v ì có hai vòng lặp): với i = 9; R i = FL ( L i -1 , KL i ) L i = FL(R i-1 , KL i+1 ) (3) C = L 9 ║ R 9 4.3.3 . Phép giải mã MISTY1 Phép toán giải mã được chỉ ra trên Hình 2 và giống như phép mã hóa, trừ hai sửa đổi sau đây: (1) Tất cả hàm FL được thay bằng h à m ngược FL - 1 của chúng. (2) Thứ tự áp dụng các khóa con được đảo lại. 4.3.4 . Các hàm MISTRY1 4.3.4.1 . Định nghĩa hàm M I STRY1 Thuật toán MISTRY1 sử dụng một số lượng hàm, đ ó là S 7 , S 9 , F I , FO, FL và FL - 1 , các hàm này sẽ được định nghĩa dưới đ â y. 4.3.4.2 . Hàm FL Hàm FL được ch ỉ ra trên Hình 2 và chỉ áp dụng trong phép m ã hóa. Hàm FL được xác định như sau ( X và Y là dữ liệu, KL là kh ó a): Hình 1 - Thủ tục mã hóa Hình 2 - Thủ tục giải mã 4.3.4.3 . Hàm FL - 1 Hàm FL -1 là hàm ngược c ủ a hàm FL, chỉ được áp dụng vào phép giải mã và được ch ỉ ra trên Hình 4. Hàm F L - 1 được xác đ ị nh như sau ( X và Y là dữ liệu, KL là khóa): 4.3.4.4 . Hàm FO Hàm FO trình bày trên H ì nh 5, được sử dụng tr ong mã hóa và giải mã. Hàm FO được xác định như sau ( X và Y là dữ liệu, KO và K I là khóa): 4.3.4.5 . Hàm Fl Hàm Fl được sử dụng để mã hóa, giải mã và cho lược đồ khóa (schedule). Hàm Fl được trình bày trên Hình 6, ở đấy Extnd là phép toán m ở rộng bằng các bit 0 gồm 7 đến 9 bit, bằng cách ghép 2 bit ở phía bên trái và Trunc là phép cắt hai bit phía bên trái. Hàm Fl được xác định như sau ( X và Y l à dữ liệu, K I l à khóa): Hình 3 - Hàm FL Hình 4 - Hàm FL -1 Hình 5 - Hàm FO Hình 6 - Hàm FI 4.3.4.6 . Bảng tra cứu S 7 và S 9 S 7 l à bảng tra cứu song ánh nhận đầu vào 7 bit và cho đầu ra 7 bit. S 9 là bảng tra c ứ u song ánh nhận đầu vào 9 bit và cho đầu ra 9 bit. Bảng 2 và 3 xác định các bảng tra cứu này ở dạng hệ đếm Hexa. S 7 và S 9 cũng có thể được mô tả dưới dạng đại số đơn giản trên trường GF ( 2 ) được chỉ ra tại Điều C.2. Ví dụ, nếu đầu vào của S 7 là {53}, thì giá trị thay thế được xác định b ở i giao c ủ a hàng " 5 " và cột " 3" với chỉ số "3 " trên Bảng 2. Kết quả S 7 nhận được gi á tr ị {57}. B ả ng 2 - S 7 Bảng 3 - S 9 4.3.5 . Lư ợc đồ khóa MISTY1 Lược đồ kh ó a nhận khóa 128 bit K và đ ưa ra khóa con 128 bit K 1 , như được ch ỉ ra ở h ì nh dưới đây. Lược đồ khóa được cho trên H ì nh 7. Phép lập lược đồ khóa được định nghĩa như sau: CH Ú TH Í CH Khi giá trị hậu tố lớn hơn 8, thì trừ đ i 8. Hình 7- Lược đồ khóa MISTY1 4.4 . CAST-128 4.4.1 . Thuật toán CAST-128 Thuật toán CAST-128 là mã khối đối xứng, có thể xử lí các khối 64 bit, sử dụng khóa mật mã độ d à i 128 bit với 16 vòng. CH Ú TH Í CH Độ dài khóa của phiên bản CAST-128 gốc thay đổi từ 40 đ ế n 128 bit. Tuy nh iê n trong tiêu chu ẩ n này của bộ TCVN 11367 (ISO/IEC-18033) ch ỉ sử dụng phương án khóa 128 bit. 4.4.2 . Mã hóa theo CAST-128 Phép biến đ ổ i khối 64-bit P thành khối 64-bit C được xác định như sau ( Km và Kr là khóa): 4.4.3 . Giải mã CAST-128 Phép giải m ã cũng tương tự như phép mã hóa đã mô tả ở tr ê n, chỉ khác là c á c vòng (và các cặp khóa con) được sử dụng theo thứ tự ngược lại để tính ( L 0 , R 0 ) từ ( R 16 , L 16 ). 4.4.4 . Các hàm CAST-128 4.4.4.1 . Các cặp khóa vòng CAST-128 sử dụng một cặp kh ó a con cho mỗi vòng: 32 bit Km được sử dụng như một kh ó a " mặt nạ " và 5-bit Kr được sử dụng như một khóa " hoán vị vòng " . 4.4 .4 .2 . Các f-hàm Ba hàm vòng khác nhau được sử dụng trong phép mã hóa và phép giải mã, phụ thuộc vào số thứ tự của vòng. Các vòng như sau (" D " là đầu vào dữ liệu của f-h à m, và tương ứng " la " - " Id " tương ứng là các byte có có nghĩa nhất qua byte í t có nghĩa nhất của I ). Các vòng 1, 4, 7, 10, 13 và 16 sử d ụng hàm f kiểu 1 (Type 1 ). Các vòng 2, 5, 8, 11 và 14 s ử dụng hàm f kiểu 2 (Type 2). Các vòng 3, 6, 9, 12 và 15 s ử dụng hàm f kiểu 3 (Type 3). 4.4.4.3 . Các hộp thế 4.4.4.3.1 . Các S -box S1 đ ế n S8 Tám hộp thế được sử dụng: các S-box S1, S2, S3 và S4 là những S-box hàm vòng, S5, S6, S7 và S8 là những S-box lược đồ khóa. 4.4.4.3.2 . S-Box S1 4.4.4.3.4 . S-Box S3 4.4.4.3.5. S-Box S4 4.4.4.3.6 . S-Box S5 4.4.4.3. 7. S-Box S 6 4.4.4.3. 8. S-Box S 7 4.4.4.3. 9. S-Box S 8 4.4.5 . Lược đồ khóa CAST-128 CHÚ TH Í CH N ử a còn lại giống với những gì được đưa ra ở trên, tiếp tục từ chuỗi cuối cùng được tạo ra x0...xF để sinh ra khóa K17-K32. Bước tiếp theo được sử dụng để tạo ra mặt nạ khóa con và các khóa con hoán v ị vòng. Giả sử Km 1 ,...,Km 16 là các mặt nạ khóa con 32-bit (mỗi khóa một vòng), và Kr 1 ,..,Kr 16 là 32 bit các kh ó a con hoán v ị (mỗi khóa một vòng); chỉ có 5 bit cuối cùng có trọng số th ấ p nhất đ ược dùng trong mỗi vòng. v ớ i i = 1 đến 16 K m i = K i K r i = K 16+i 4.5 . HIGHT 4.5.1 . Thuật toán HIGHT Thuật toán HIGHT là mã khối đối xứng, có thể xử lí các khối 64-bit sử dụng khóa mật mã độ dài 128-bit. 4.5.2 . Phép mã hóa theo H I GHT Phép mã hóa được chỉ ra trên H ì nh 8. Phép biến đ ổ i khối 64-bit P thành khối 64-bit C được xác đ ị nh như sau ( WKi và SKi là các byte khóa trắng và các byte khóa con tương ứng được xác đ ị nh trong 4.5.5): (1) P = P 7 || P 6 || P 5 || P 4 || P 3 || P 2 || P 1 || P 0 ( P i là các bản rõ) (2) ( 3 ) với i = 0 tới 30 Với i = 31 (4) (5) C = C 7 || C 6 || C 5 || C 4 || C 3 || C 2 || C 1 || C 0 ( C i là các bản mã ) Hình 8 - Thủ tục mã hóa theo HIGHT 4.5.3 . Giải mã theo HIGHT Phép toán giải mã cũng giống như phép toán mã hóa, trừ hai thay đổi sau đây: (1) Tất cả phép toán được thay thế bằng phép trừ phép toán nối SK i v à đầu ra của F 0 . (2) Thứ tự áp dụng WK i và SK i ngược v ớ i thứ tự trong mã hóa. 4.5.4 . Các hàm HIGHT 4.5.4.1 . Các hàm F 0 và F 1 Thuật toán HIGHT sử dụng hai hàm F 0 và F 1 được định nghĩa dưới đây. 4.5.4.2 . Hàm F 0 Hàm F 0 được sử dụng để mã hóa và giải mã. Hàm F 0 được xác đ ị nh như sau: F 0 ( x ) = (x 1 ) Å (x 2 ) Å (x 7 ) 4.5.4.3 . Hàm F 1 Hàm F 1 được sử dụng để mã hóa và giải mã. Hàm F 1 được xác định như sau: F 0 ( x )= (x 3 ) Å (x 4 ) Å (x 6 ) 4.5.5 . Lư ợ c đồ khóa HIGHT Phần lược đồ khóa nhận khóa chủ 128-bit K = K 1 5 ║ K 14 ║…║ K 0 và đưa ra 8 byte khóa trắng WK i v à 128 byte khóa con SK i và xác định như sau. với i = 0,1, 2, 3: WK i = K i +12 với i = 4, 5, 6, 7 WK i = K i-4 128 khóa con được sử dụng để mã hóa v à giải mã, mỗi vòng có bốn khóa con. Việc tạo các khóa con được xác định như sau: (1) s 0 = 0, s 1 = 1 , s 2 = 0 , s 3 = 1 , s 4 = 1 , s 5 = 0 , s 6 = 1 d 0 = s 6 || s 5 || s 4 || s 3 || s 2 || s 1 || s 0 (2) với i = 1 đến 127 s i +6 = s i +2 Å s i -1 d i = s i +6 || s i +5 || s i +4 || s i +3 || s i +2 || s i +1 || s i (3) với i = 0 đến 7 với j = 0 đến 7 với j = 0 đến 7 5. Mã khối 128-bit 5.1 . M ở đầu Điều khoản này đặc tả ba mã khối: AES ở Điều 5.2, Camellia ở Điều 5.3, và SEED ở Điều 5.4 5.2 . AES 5.2.1 . Thuật toán AES Thuật toán AES là mã khối đối xứng, có th ể xử lí các khối dữ liệu 128 bit, sử dụng khóa mật mã độ dài 128,192 và 256 bit. Thuật toán AES còn được biết đến là Thuật toán Rijdael. Thuật toán AES c ó thể được sử dụng với ba độ dài khóa khác nhau như đã ch ỉ ra ở trên và do đó có ba tham chiếu là " AES - 128 ", " AES-192 " , và " AES-256 ". Trong thuật toán AES, độ dài c ủ a khối đầu vào và đầu ra là 128 bit (4 từ). Độ dài c ủ a kh ó a K là 128, 192 và 256 bit. S ố vòng, Nr , là 10, 12 và 14, tùy thuộc độ dài khóa, được mô t ả trên Bảng 4. Bảng 4 - Số vòng trong AES Độ dài khóa Số vòng ( N r ) AES-128 10 AES-192 12 AES-256 14 Đối với cả hai phép mã hóa và gi ả i mã, thuật toán AES s ử dụng hàm vòng bao gồm bốn phép biến đổi khác nhau trên byte:1) phép thay thế byte sử dụng bảng thay thế (S-box), 2) d ị ch hàng của mảng Trạng thái bằng các phép bù khác nhau, 3) trộn dữ liệu trong mỗi cột c ủ a m ả ng Trạng thái, 4) b ổ sung khóa vòng vào Trạng thái. Các phép biến đổi này (và các phép nghịch đảo của chúng) được mô tả trong Đi ề u 5.2.4 Phép m ã hóa và giải mã được mô tả tương ứng trong 5.2.2 và 5.2.3, lược đồ khóa tương ứng được mô tả trong 5.2.5 5.2.2 . Phép mã hóa theo AES Thuật toán AES gồm một dãy các phép toán được thực hiện trên mảng của các byte hai chiều, được gọi là Trạng thái. Trạng thái gồm bốn dòng byte, mỗi dòng chứa 4 byte. Trong mảng Trạng thái được kí hiệu bằng s, mỗi byte riêng biệt có hai chỉ số với số dòng r , 0 ≤ r 4 và số cột c , với 0 ≤ c < 4.="" trạng="" thái="" được="" kí="" hiệu="" là=""> S = (s r ,c ) Khi bắt đầu quá trình mã hóa, 16 byte c ủ a Trạng thái được khởi tạo với p i byte b ả n rõ, tính từ trên xuống dưới và từ trái sang phải và được minh họa trên Hình 9. Hình 9 - Khởi đ ầ u Trạng thái Sau khi cộng khóa vòng ban đầu, Trạng thái được biến đ ổ i bằng cách thực thi hàm vòng N r lần, với vòng cuối khác một ít với Nr-1 vòng đầu. Nội dung cuối cùng c ủ a Trạng thái ch í nh là bản mã đầu ra. Phép mã hóa đầy đủ có thể được mô tả như sau: Các phép biến đổi riêng biệt SubBytes () , ShifRows(), MixColumns () , AddRounkey () xử lí Trạng thái và được mô t ả tại Điều 5.2.4. Tất cả N r vòng đều giống nhau, trừ vòng cuối cùng không chứa phép biến đổi MixColumns (). Trong phép toán ở trên, m ả ng W i chứa các khóa vòng được mô tả tại Điều 5.2.5 5.2.3 . Phép giải mã AES Tất c ả các phép biến đ ổ i sử dụng trong các phép mã hóa đều kh ả nghịch. Khi thực thi phép giải mã, d ã y các phép biến đổi được s ử dụng trong phép m ã hóa vẫn được duy trì, nhưng thay bằng các phép biến đổi ngược như sau. Phép gi ả i mã đầy đủ có thể mô tả như sau: Các phép biến đổi SuBytes -1 ( ), ShifRows -1 (), MixColumns - 1 () thực hiện xử lí Trạng thái và được mô tả tại Điều 5.2.4. Tất cả Nr vòng đều gi ố ng nhau, trừ vòng cuối không chứa phép biến đ ổ i MixColumns - 1 (). Việc tính các khóa vòng W i đ ược mô tả tại Đi ề u 5.2.5 5.2.4 . Các phép bi ế n đổi AES 5.2.4.1 . Các phép biến đổi xác đ ị nh cho AES Thuật toán AES sử dụng các phép biến đổi Subytes () , Sub y tes 1 ( ) , ShifRows () , ShifRows -1 ( ) , MixColumns (), MixColumns - 1 (), và AddRoun d Key (), được mô tả dưới đây. 5.2.4.1 . Phép bi ế n đổi SubBytes () Phép biến đổi SubBytes ( ) thực hiện thay thế mỗi byte Trạng thái s i,j b ởi giá trị mới s' i, j , bằng cách sử dụng bảng thay thế (S-box) khả nghịch. H ì nh 10 minh họa tác động của phép biến đổi S ubBytes () lên bảng Trạng thái Hình 10 - S ubBytes () áp dụng S-box cho từng byte c ủ a Trạng thái. S-box được sử dụng trong phép biến đổi SubBytes () và được trình bày theo hệ Hexa t rên Bảng 5 Bảng 5 - Các S-box c ủ a AES Ví dụ, nếu s 1,1 = {53} th ì giá trị thay thế là giá trị nằm trên giao c ủ a hàng có chỉ số '5' và cột có chỉ số '3' của B ả ng 5, điều này cho kết quả là s ' 1,1 có giá trị { ed }. 5.2.4.3 . Phép biến đổi SubBytes - 1 ( ) SubBytes - 1 () là phép biến đ ổ i nghịch đảo c ủ a phép biến đổi SubBytes () , trong đó S-box nghịch đ ả o được áp dụng cho từng byte của Trạng th á i. Điều này đạt được bằng cách áp d ụng phép biến đổi nghịch đả o được mô tả tại Điều 5.2 .4 .2 S-box nghịch đảo được sử dụng trong phép biến đổi SubBytes - 1 () được mô tả trong B ả ng 6. B ả ng 6 - S-box nghịch đảo AES 5.2.4.4 . Phép biến đ ổ i ShifRows () Trong phép biến đổi ShifRows () , các byte ở ba dòng cuối của Trạng thái được dịch vòng lên một số lượng bytes khác nhau (offsets). Hàng thứ nhất, hàng 0 được giữ nguyên (không dịch chuyển). Cụ thể, phép biến đổi ShiftRows () được thực hiện như sau: S' r,c = S r,(c+r) mod4 với 0 <> r < 4,="" và="" 0="" ≤=""> c < 4,=""> ở đây r là số thứ tự của hàng. Theo đó sẽ các byte dịch chuyển sang trái (nghĩa l à các giá trị thấp hơn c ủ a c trong một hàng cho trước), trong khi các byte phía trái ngoài cùng dịch vòng sang các vị trí phía phải ngoài cùng của hàng (tức là những giá trị cao hơn của c trong hàng cho trước) Hình 11 mô tả phép bi ế n đ ổ i ShiftRows (), trong đó các byte được dịch vòng sang trái. 5.2.4.5 . Phép biến đổi ShiftRo w s - 1 () ShiftRows - 1 () là phép nghịch đảo của phép biến đổi ShiftRows () . Các bytes trong ba dòng cuối của Trạng thái đư ợ c dịch vòng lên một số lượng bytes khác nhau. Dòng thứ nhất, d ò ng 0 không dịch chuy ể n. Ba dòng dư ớ i cùng được dịch vòng lên 4- r bytes, ở đây r là số thứ tự vòng. Cụ thể, phép biến đổi S hi f tRo w s - 1 () được thực hiện như sau: S' r,c = S r,(c+r) mod4 với 0 <> r < 4,="" và="" 0="" ≤=""> c <> Hình 12 mô tả phép biến đổi ShiftRows - 1 () H ì nh 11 - S hiftRows () dịch vòng ba dòng cuối c ủ a Trạng thái H ì nh 12 - Shiftrows - 1 () dịch vòng ba dòng cuối của Trạng thái. 5.2.4.6 . Phép b iế n đ ổi MixColumns () Phép biến đổi MixColu mns () thao tác trên Trạng thái, thay mỗi cột bằng cột khác. Cá c cột c ủ a Trạng thái được xem như những đa thức trên trường G F (2 8 ) và được nhân modu l o x 4 + 1 với đa thức cố định a (x) cho trước, a (x) = {03} x 3 + {0 1 } x 2 + {0 1 }x + {02}. Phép nhân này có thể viết dưới dạng phép nhân ma trận: K ế t quả của phép nhân trên là bốn byte trong cột được thay thế như sau: Toán tử Å trong các biểu thức trên biểu th ị phép cộng trong trư ờ ng GF(2 8 ) , với phép cộng bit XOR. Phép nhân được thực hiện theo modulo c ủ a đa thức bất khả qui của trường. Trong trường hợp thuật toán AES đó l à đa thức x 8 + x 4 + x 3 + x + 1 . Hình 13 mô t ả phép biến đổi MixColumns (). Hình 13 - MixColumns () thao t á c trên Trạng thái, thay cột bằng cột khác 5.2.4.7 . Phép biến đổi MixColunms - 1 () MixColumns - 1 () là phép biến đổi nghịch đảo của phép biến đổi MixColumns (). MixColumns -1 () thao tác trên Trạng thái, thay mỗi cột bằng cột khác. Phép biến đổi này c ó thể biểu diễn dưới dạng phép nhân ma trận, ở đấy mỗi byte được coi như một phần t ử c ủ a trường hữu hạn GF(2 8 ) : Kết quả của phép nhân là bốn byte trong mỗi cột được thay thế như sau: 5.2.4.8 . Phép biến đổ i AddRoundKey () Trong phép biến đổi AddRoundKey () , khóa vòng được cộng vào Trạng thái bằng phép cộng bit đơn giản XOR. Mỗi khóa vòng gồm bốn từ ( 128 bit) lấy từ lược đồ kh ó a (được mô t ả tại 5.2.5). Bốn từ này được cộng vào cột Trạng thái như sau: [ s' 0, c , s' 1, c , s' 2, c , s' 3, c ] = [ s 0, c , s 1, c , s 2, c , s 3, c ] Å [ w (4 * i + c ) ] với 0 ≤ c ≤ 4 Ở đây, với 0 ≤ c ≤ 4 và w (4 * i + c ) là các từ c ủ a lược đồ khóa thứ c của khóa vòng thứ i W i = [ w (4 * i) , w (4 * i+1) , w (4 * i+2) , w (4 * i+3) ] và i là giá trị thuộc khoảng 0 ≤ I ≤ Nr . Trong phép m ã hóa, phép cộng khóa vòng ban đầu x ả y ra khi i = 0, trước ứng dụng thứ nhất của hàm vòng. Việc áp dụng phép biến đổi AddRoundKey ( ) cho N r vòng của phép mã hóa xảy ra khi 1 ≤ i ≤ Nr . Hoạt động của phép biến đổi AddRoundKey (), được minh họa trên Hình 14. Địa chỉ byte trong các từ của lược đồ khóa được mô tả trong 5.2.5 Hình 14 - AddRoundKey ( ) cộng bit XOR từng cột của Trạng thái với mỗi từ lấy từ lược đồ khóa 5.2.5 . Lược đồ khóa AES Thuật toán AES nhận khóa mật mã K và thực hiện thủ tục m ở rộng khóa để tạo ra lược đồ khóa. Việc m ở rộng khóa tạo ra tổng cộng 4( Nr + 1) từ: Thuật toán đòi h ỏ i tập khởi đầu gồm 4 từ, và mỗi vòng Nr vòng đòi hỏi 4 từ dữ liệu k hóa. Lược đồ khóa nhận được l à một mảng tuyến tính gồm các từ 4-byte, kí hiệu là wj , với j nằm trong khoảng 0 ≤ j <> ( Nr + 1). Việc m ở rộng khóa đầy đủ cho AES-128 và AES-192 có th ể được mô tả như sau: Trong phép toán trên, vòng khóa W 0 đầu tiên được s ử dụng trong phép cộng khóa kh ở i đầu, trực tiếp kết hợp với 4 từ của khóa mật K . Các cột 32-bit w j c ủ a các khóa vòng còn lại được tạo ra theo phương pháp truy hồi. Phép biến đổi SubBytes* () thay thế bytes của từng cột riêng l ẻ , cũng giống như phép biến đ ổ i SubBytes () được mô tả tại ở 5 .2.4.2. Phép biến đ ổ i ShiftColumn () là dịch vòng lên phía trên một byte. Các hằng là những cột 4-b y te cố định, được xác định dưới dạng (02 i- 1 , 00 , 00 , 00) T với {02} biểu diễn phần t ử x trong trường GF(2 8 ) (sử dụng cùng đa thức bất khả qui x 8 + x 4 + x 3 + x + 1). Phép m ở rộng khóa đầy đ ủ cho AES-256 c ó thể được mô tả như sau: Trong phép toán trên K 0 và K 1 biểu thị hai nửa c ủ a khóa mật mã K 256-bit. 5.3 . Camellia 5.3.1 . Thuật toán Camellia Thuật toán Camellia là mã đối x ứ ng có thể xử lí các khối 128 bit, sử dụng khóa mật m ã độ dài 128,192 và 256 b i t. Giao diện cũng tương tự như của thuật toán AES. 5.3.2 . Phép mã hóa Camellia 5.3.2.1. Kh ó a 128-bit Quá trình mã hóa với khóa 128 bit làm việc trên 18 vòng, được chỉ ra trên Hình 15. Phép biến đổi khối 128-bit P vào khối 128-bit C được xác định như sau ( L và R là các biến với độ dài 64-bit, kw , k và k l l à các kh ó a vòng độ dài 64-bit): Hình 15 - Thủ tục mã h ó a c ủ a Camellia cho khóa 128 b i t 5 .3.2.2 . Khóa 192-bit và 256-bit Quá tr ì nh mã hóa với khóa 192 bit hoặc khóa 256-bit làm việc trên 24 vòng, được chỉ ra trên Hình 16. Phép biến đổi khối 128 bit P vào khối 128-bit C được định nghĩa như sau ( L và R là các biến độ dài 64 bit, kw , k và kl là các khóa vòng 64 bit): 5.3.3 . Phép g i ải mã Camellia 5.3.3.1 . Khóa 128-b i t Quá tr ì nh giải mã cho khóa 128 bit được chỉ ra trên H ì nh 17, và cũng giống như trong phép giải mã, chỉ khác là vị trí và thứ tự các khóa vòng được đảo lại. Phép giải mã được xác định như sau: Hình 16 - Thủ tục mã hóa Camellia cho khóa 192 và 256 bit H ì nh 17 - Thủ tục giải mã Camell i a cho khóa 128 bit 5.3.3.2 . Khóa 192 và 256 bit Quá tr ì nh giải mã cho khóa 192 b i t và 256 bit được ch ỉ ra trên Hình 18, và là như nhau trong phép mã hóa, ch ỉ khác là vị trí và thứ tự các khóa vòng được đảo lại. Phép giải mã được xác định như sau: 5.3.4 . Các hàm Camellia 5.3.4.1 . Các hàm xác định Thuật toán Camellia sử dụng một số hàm, cụ thể là các hàm F, FL, FL - 1 và các S-box. 5.3.4.2 . F-hàm F-hàm được chỉ ra trên Hình 19. F-hàm bao g ồ m phép toán cộng bit XOR, tiếp đó áp dụng tám S-box song song kích thước 8x8 bit, tiếp theo tầng khuếch tán (P-hàm). x j , y j , z j , z' j l à các biến, mỗi biến 8 bit; các biến L i , k i , L' i là các biến 64 bit. Đầu vào 64 bit L i trước hết được cộng XOR với khóa vòng 64-bit k i , sau đó được chia thành 8 đoạn 8-bit y j , như sau: y 1 ║ y 2 ║ y 3 ║ y 4 ║ y 5 ║ y 6 ║ y 7 ║ y 8 ║ = L i Å k i ở đây, L i = x 1 ║ x 2 ║ x 3 ║ x 4 ║ x 5 ║ x 6 ║ x 7 ║ x 8 ║ Mỗi y j sau đó được đi qua S-box kích thước 8x8 bit s t để đưa ra 8 phân đoạn độ dài 8 bit z j , ở đây z 1 = s 1 [ y 1 ], z 2 = s 2 [ y 2 ], z 3 = s 3 [ y 3 ], z 4 = s 4 [ y 4 ], z 5 = s 2 [ y 5 ], z 6 = s 3 [ y 6 ], z 7 = s 4 [ y 7 ], z 8 = s 1 [ y 8 ]. 8 ph â n đoạn 8-bit z j được tác động bởi P-hàm, l à lớp khuếch tán cho ra 8 phân đoạn 8-bit z ' j , trong đó Hình 18 - Thủ tục giải mã Camella cho khóa 192 và 256 bit Hình 19 - F-hàm P-hàm có thể được biểu diễn cách khác, dưới dạng véc tơ ma trận như sau: ở đây: Sau đó đầu ra 64-bit c ủ a F-hàm L' i được thiết lập bằng cách ghép các biến 8-bit z' j : L' i = z' 1 ║ z' 2 ║ z' 3 ║ z' 4 ║ z' 5 ║ z' 6 ║ z' 7 ║ z' 8 ║ 5.3.4.3. FL-hàm FL-hàm được ch ỉ ra trên Hình 20. FL-h à m được xác định như sau ( X và Y là dữ liệu 64-bit, k l là khóa vòng 64 bit, X L , X R , Y L , Y R , kl iL , kl i R có độ dài 32-bit) Hình 20- Hàm FL 5.3.4.4. FL -1 -hàm FL -1 -hàm được chỉ ra trên H ì nh 21. FL - 1 -hàm được xác định như sau ( X và Y là dữ liệu 64-bit, kl là khóa vòng, X L , X R , Y L , Y R , kl iL , kl i R có độ dài 32-bit) Hình 21 - FL - 1 -hàm 5.3.4.5. Các S-box 5.3.4.5.1. Các S-box s 1 đến s 4 . S-box s 1 , s 2 , s 3 và s 4 được đưa ra tại các Điều khoản con dưới đây. Các S-box này nhận đầu vào 8-bit và cho đầu ra 8-bit, c ó thể được mô tả dưới dạng đại số đơn giản. Dạng đại số của s 1 , được cho tại Điều C.3. 5.3.4.5.2. S-box s 1 s 1 được đưa ra như sau: s 1: y = h ( g ( f ( c5 Å x))) Å 6e ở đây các phép toán f , g và h nhận đầu và 8-bit a = a 1 ║ a 2 ║ a 3 ║ a 4 ║ a 5 ║ a 6 ║ a 7 ║ a 8 , và cho các giá tr ị đầu ra 8-bit b = b 1 ║ b 2 ║ b 3 ║ b 4 ║ b 5 ║ b 6 ║ b 7 ║ b 8 , ở đây a i và b i là các giá trị 1-bit, f là hoán v ị affine của đầu vào, g là phép nghịch đảo trên trường GF(2 8 ) và h là phép biến đ ổ i a f ine của đầu ra. Ví dụ, đầu vào của s 1 là {53}, thì giá trị thay thế có thể được xác định b ở i giao của dòng ‘5’ và cột ‘3’ trên Bảng 7, kết quả cho giá trị s 1 = {c 2 }. 5.3.4.5.3. S-box s 2 s 2 được ch ỉ ra trên Bảng 8 và có cấu trúc như sau: s 2 : y = s 1 (x) 1 . 5.3.4.5.4. S-box s 3 s 3 được chỉ ra trên Bảng 9 và có cấu trúc như sau: s 3 : y = s 1 (x) 7 5.3.4.5. 5. S-box s 4 s 4 được ch ỉ ra trên B ả ng 10 và có cấu trúc như sau: s 4 : y = s 1 (x 1 ) . 5.3.5. Lược đ ồ tạo khóa Camellia Lược đồ tạo khóa được chỉ ra trên Hình 22 và các Bảng 12 và 13. Với phiên b ả n 128 b i t khóa, khóa K là kh ó a 128-bit K L , khóa 128-bit K R đ ược đặt tất cả các bit bằng 0, như vậy: K = K L K R = 0 Với phiên b ả n 192 bit khóa, khóa K là khóa 128-bit K L và 64 bit trái nhất K R , K RL , với 64 bit phải nhất K R , K RR đ ược đặt phủ định theo từng bit của 64 bit tr á i nhất c ủ a K R và K RL . Như vậy, K = K L ║ K RL , K RR = , K R = K RL ║ K RR Với phiên bản 256 bit, kh ó a K là khóa 128-bit K L và khóa 128-bit K R . Như vậy, K = K L ║ K R Lược đồ tạo khóa s ử dụng F-hàm của mô-đun mã hóa, và là giống nhau cho cả phép mã h ó a và giải mã. Khóa K được m ã bằng các phương tiện của F-hàm, sử dụng các hằng của lược đ ồ tạo khóa, ở đấy các hằng å i , được xác định như những giá tr ị liên tục từ biểu diễn trong hệ Hexa của căn bậc hai số nguyên tố thứ i . Tiếp đó các khóa vòng được tạo, một phần t ử những giá trị được dịch vòng của khóa K ( ở đây K bằng K L , K = K L ║ K RL or K L ║ K R tương ứng với phiên bản khóa 128-bit, 192-bit hoặc 256- bit) và phần còn lại từ các giá tr ị được dịch vòng c ủ a các khóa “được mã hóa” K A và K B (ở đây K A , K B c ó độ dài 128 bit). Hình 22 - Phần chính c ủ a lược đồ khóa Đối v ớ i phiên b ả n khóa 128-bit, đầu ra của phần chính c ủ a lược đồ tạo khóa là khóa con 128-b i t K A , tương ứng bỏ qua phía phải của hình 22 và khóa K B không được tạo ra hoặc không được sử dụng. Đối với phiên bản khóa 192-b i t và 256-bit, đầu ra c ủ a phần chính của lược đồ tạo khóa là khóa con 128 bit K A và với khóa con 128-bit K B . Lược đồ tạo khóa bao gồ m hai hoặc ba phép toán 2-vòng cho các phiên bản khóa 128 bit hoặc 192/256 bit tương ứng. Mỗi phép toán 2 vòng được " khóa hóa" bằng một cặp hằng å i . Đầu vào 128-bit của phép toán 2-vòng thứ nhất nằm bên trái c ủ a H ì nh 22 là K L Å K R và phép toán này được " khóa h ó a " bởi hai hằng 64-bit å 1 và å 2 . Tiếp đó đầu ra 128-bit từ phép toán 2-v ò ng thứ nhất được cộng bit XOR v ớ i K L trước khi l à đầu vào của phép toán 2-vòng thứ hai ở bên trái Hình 22. Phép toán 2-vòng thứ hai này được " khóa hóa" bởi các hằng 64 bit là å 3 và å 4 . Đầu ra 128-bit của phép toán 2-vòng thứ hai là K A . Với các phiên bản khóa 192-bit hoặc 256-bit thì sau đó K A lại được XOR với khóa con 128-bit trước khi kết quả thu được làm đầu vào của phép toán 2-vòng thứ ba được chỉ ra ở phía phải c ủ a Hình 22. Phép toán 2-vòng thứ ba này được " khóa hóa " b ở i hai hằng 64 bit là å 5 và å 6 . Đ ầ u ra 128 bit của phép toán 2-vòng thứ ba này là K B . Phép toán lập lược đồ tạo khóa đầy đủ được mô tả như sau ( K a , K A và K B có độ dà i 128 bit): ở đây đầu vào 128-bit cho 2RoundFeistel là tách thành hai phần 64-bit L 0 ║ R 0 đầu ra 128-bit từ 2RoundFeistel cũng được tách thành hai phần 64 bit L 2 ║ R 2 và cả hai đầu vào " khóa vòng " 64-bit của 2Ro u ndFeistel là å i và å i+1 . 2Roun d Feistel được mô tả như sau: Các hằng của lược đồ khóa 64-bit được xác định trên Bảng 11 Cuối cùng, các khóa vòng 64-bit, k , kw ,và k l đ ược dẫn xuất từ các khóa con 128-bit, K L , K R , K A và K B . B ả ng 12 dành cho phiên b ả n 128-bit và Bảng 13 - phiên bản 192 hoặc 256-bit Bảng 12 - Khóa vòng cho khóa bí mật 128 b i t Bảng 13 - Kh ó a vòng cho khóa bí mật 192/256 b i t 5.4. SEED 5.4.1. Thuậ t toán SEED Thuật toán SEED là mã khối đối xứng có thể xử lí khối dữ liệu 128 bit, sử dụng kh ó a mật mã độ dài 128 b i t. 5.4.2. Phép mã hóa SEED Phép toán mã hóa được chỉ ra trên H ì nh 23. Phép biến đổi khối dữ liệu 128-bit P thành khối dữ liệu 128-bit C được xác định như sau ( K l à khóa): Hình 23 - Cấ u trúc của SEED 5.4.3. Phép giải mã SEED Giải mã cũng giống như phép mã hóa đã mô tả ở trên, ch ỉ khác là các vòng (và các khóa con) được sử dụng theo thứ tự ngược lại để t í nh ( L 0 , R 0 ) từ ( R 16 , L 16 ) 5.4.4. Các hàm c ủ a SEED 5.4.4.1. Hàm vòng F Hàm vòng F ch ỉ ra trên Hình 24 và được định nghĩa như sau ( C và D l à dữ liệu, K là khóa) H ì nh 24 - Hàm vòng F 5.4.4.2. Hàm G Hàm G chỉ ra trên Hình 25 có hai tầng: một tầng c ủ a hai S-box kích thước 8x8 và một tầng hoán vị khối của 16 khối con 8 bit. Đầu ra a' , b' , c' , d' của hàm G với bốn đầu vào 8-bit a , b , c , d được xác định như sau: Ở đây, m 0 = {fc}, m 1 = { f3 }, m 2 = { cf }, m 3 = {3 f }, Hình 25 - Hàm G 5.4.4.3 . S -box Hai S-box S 1 , S 2 là một phần của hàm G và được định nghĩa như sau: Trong đó n 1 = 247, n 2 = - 251, b 1 = 169, b 2 = 56 và Lưu ý rằng A ( i) • Å b i là phép biến đ ổ i a fi ne của . Với x bất kì thuộc , x có thể biểu diễn dưới dạng véc tơ nhị phân x = ( x 7 ,..., x 0 ) ( do đó x = x 7 2 7 + x 6 2 6 +...+ x 1 2 + x 0 ). Chúng ta s ử dụng đa thức nguyên thủy p(x) = x 8 + x 6 +...+ x + 1 để biểu diễn lại trong . Các S-box S 1 và S 2 được mô tả tại Bảng 14 và 15. B ả ng 14 - S 1 - hộp Bảng 15 - S 2 - hộp 5.4.5. Lược đồ tạo khóa SEED Lược đồ t ạ o khóa tạo các khóa con cho mỗi vòng. Lược đ ồ khóa sử dụng hàm G, các phép cộng/trừ và các phép d ị ch vòng (sang trái/ sang ph ả i). Khóa đầu vào 128-bit được chia thành thành bốn khối 32- bit ( a , b , c , d ) và hai khóa con 32-bit của vòng thứ nhất k 1, 0 và k 1,1 đư ợ c tạo như sau: k 1,0 = G ( a + c - KC 0 ), k 1,1 = G ( b + k C 0 - d ) Hai khóa con 32-bit của vòng thứ hai, k 2 , 0 và k 2 , 1 được tạo từ khóa đầu vào bằng cách dịch vòng 64 bi t đầu tiên ( a ║ b ) sang phải 8-bit như sau: Hai khóa con của vòng thứ ba, k 3 , 0 và k 3 ,1 được tạo từ khóa đầu vào bằng cách dịch vòng 64-bit cuối cùng ( c ║ d ) sang trái 8-bit như sa u: Các khóa con còn lại được tạo theo phương pháp lặp như sau: (1) với i =1 đến 16 Ở đây các hằng KC i (được mô t ả ở Bảng 16 ) được tạo từ một phần c ủ a tỉ số vàng B ả ng 16 - Các hằng KC i (ở dạng Hexa thập phân) PHỤ LỤC A (Quy định) MÔ TẢ DES A.1 . M ở đầu Thuật toán DES l à mã khối đối xứng có thể xử lí các khối dữ liệu 64 bit, sử dụng khóa b í mật độ dài 64 bit. Mỗi b i t th ứ tám của khóa mật mã thường được sử dụng để kiểm tra tính chẵn lẻ và được bỏ qua. A.2 . Phép mã hóa DES Phép mã h ó a được chỉ ra trên Hình A.1 Bản rõ 64-bit trước hết được biến đổi qua hoán vị ban đầu I P . Sau đó khối được chia thành hai nửa L 0 và R 0 , mỗi nửa gồm 32 bit. Tiếp đ ó thực hiện 16 v ò ng biến đ ổ i giống nhau được gọi là hàm f, trong đó dữ liệu được k ế t hợp với khóa. Trong mỗi vòng, nửa phải là đầu vào của h à m f được khóa hóa, hàm này nhận đầu vào 32 bit và khóa con 48 bit K i và cho đầu ra 32-bit. Đầu ra này tiếp đ ó được XOR với nửa trái để tạo ra nửa trái mới đã được biến đổi. Tại phần cuối của mỗi vòng, trừ vòng cuối cùng, hai nửa trái và phải đổi chỗ cho nhau để tạo ra L i và R i tương ứng. Sau khi thực hiện vòng cuối cùng, hai nửa trái và phải được ghép lại với nhau và kh ố i 64-bit nhận được lại được bi ế n đổi qua phép hoán vị cuối I P -1 là hoán v ị nghịch đ ả o của hoán vị ban đầu IP . Đầu ra l à bản mã 64-bit. Phép mã hóa được xác định như sau ( P và C là dữ liệu, K i khóa). A.3 . Phép giải mã DES Phép giải mã cũng giống như phép mã hóa. Sự khác nhau ch ỉ ở chỗ, các khóa con K i được sử dụng theo thứ tự ngược lại. A.4 . Các hàm DES A.4.1 . Phép hoán vị ban đầu IP Phép hóa vị ban đầu IP được chỉ ra tại B ả ng A.1. Hoán vị này nhận đầu v à o 64-bit v à cho đầu ra 64-bit, theo đó bit thứ nhất được hoán v ị thành bit thứ 58, bit thứ hai thành bit thứ 50 , v . v , bit cuối cùng th à nh bit thứ 7. B ả ng A.1 - Hoán vị kh ở i tạo Hình A1 - Th ủ tục mã hóa A.4.2 . Hoán vị nghịch đảo I P - 1 Hoán v ị nghịch đảo IP -1 được chỉ ra trên Bảng A.2, nhận đầu vào 64-bit và cho đầu ra 64-bit. Đầu ra của Thuật toán nhận bit thứ 40 của khối đầu ra trước đó làm bit th ứ nhất, bit thứ 8 làm bit thứ hai , v.v và bit thứ 25 của khối đầu ra trước đó làm bit cuối cùng. Bảng A.2 - Hoán vị đầu nghịch đảo IP -1 A.4.3 . Hàm f Hàm f được chỉ ra trên Hình A.2 Hàm f nhận đầu vào 32 b i t R và mở rộng thành R' có độ dài 48-bit bằng cách sử dụng phép hoán vị m ở rộng E . Sau đó 48-bit R ' được XOR với khóa con 48-bit K , thu được dữ liệu 48-bit, d ữ li ệ u này được viết thành 8 khối, mỗi khối 6-bit, bằng cách chọn các bit đầu vào c ủ a nó theo một thứ tự được qui định trên bảng. Các hàm được chọn duy nhất đó được gọi là các S - hộp, S 1 , S 2 ,…, S 8 , nhận đầu vào là các khố i 6-bit r i và cho đầu ra l à các khối 4-bit S i ( r i ). Hàm hoán vị P cho đầu ra 32-bit R '''' t ừ đầu vào 32-b i t R ''' bằng cách hoán v ị các bit của khối đầu vào. R '''' là đầu ra của hàm f . Hàm f do đ ó được xác định như sau ( P và C l à d ữ liệu, K i l à khóa) Hình A.2 - T í nh f(R, K) A.4.4 . Hoán vị m ở rộng E Hoán v ị mở rộng E được chỉ ra trên Bảng A . 3. Hoán v ị E nhận đầu vào 32- bit và cho đầu ra 48-bit. Ba bit đầu tiền của E là các bit ở các vị trí 32, 1 và 2, hai bit cuối ở các vị tr í 32 và 1. Bảng A.3 - Hoán vị m ở rộng E A.4.5 . Hoán v ị P Hoán v ị P được chỉ ra trên Bảng A.4. Hoán vị P nhận đầu vào 32-bit và cho đầu ra 32-bit. Đầu ra P ( L ) c ủ a hàm P được x á c định b ở i Bảng A.4, thu được từ đầu vào L bằng cách lấy bit thứ 16 của L làm bit thứ nhất c ủ a P ( L ), bit thứ b ả y làm bit thứ hai c ủ a P ( L ), v.v và bit thứ 25 c ủ a L làm bit thứ 32 của P ( L ). Bảng A.4 - Hoán vị P A.4.6 . S-box S-box được ch ỉ ra trên Bảng A.5. Mỗi S-box c ó 6- bit đầu vào và 4-bit đầu ra. Nếu S 1 là hàm được xác định trên bảng và B là khối 6-bit, thì S 1 ( B ) được xác định như sau: các bit đầu tiên và cuối cùng của B được biểu diễn theo cơ số 2 là một số nằm trong khoảng từ 0 đến 3. Giả sử số đ ó l à i . Bốn bit giữa c ủ a B được biểu diễn theo cơ số 2 l à số nằm trong khoảng từ 0 đến 15. Giả sử số đó là j . Trên b ả ng đó là số nằm trên hàng thứ i và cột thứ j . Đ ó là số nằm trong khoảng t ừ 0 đến 15, và được biểu diễn duy nhất b ở i khối 4-bit. Khối này là đầu ra S 1 ( B ) của S 1 ứng với đầu vào B . Ví dụ, với đầu vào 011011, hàng được biểu diễn b ở i 01 l à hàng 1, cột được xác định b ở i 1101 l à cột 13. Nằm trên giao của hàng 1 và cột 13 là số 5, do đ ó đầu ra là 0101. Bảng A.5 - Các S-box A.5 . Lược đồ tạo khóa DES Phần lược đồ khóa DES được ch ỉ ra trên Hình A.3. Lược đồ này nhận kh ó a 64-bit khóa KEY và cho ra 16 khóa con 48-bit K 1 , K 2 , ……, K 16 . Trong đó K n , với 1 ≤ n < 16="" là=""> k hối 48-bit trong bước (2) của thuật toán. B ở i vậ y để mô tả KS chỉ cần mô tả việc tính toán c ủ a K n từ KEY với n = 1,2..., 16. Việc tính toán này được mô tả trên Hình A.3. Do đó để xác định đầy đủ KS , chỉ cần mô tả hai lựa chọn hoán vị, cũng gi ố ng như lược đồ chuyển dịch sang trái. Một bit trong byte 8-bit của KEY có thể được kh ở i động để phát hiện lỗi trong tạo khóa, phân ph ố i v à lưu trữ khóa. Các bit 8, 16 ,…, 64 được sử dụng để bảo đảm l à mỗi byte c ó tính chất lẻ. Lựa chọn hoán vị 1 được xác định bởi Bảng A.6 B ả ng A.6 - Hoán vị khóa PC-1 Bảng trên đ ược chia thành hai phần, phần thứ nhất xác định cách chọn các bit trong C 0 , phần thứ hai xác định cách chọn các bit trong D 0 . Các bit c ủ a KEY được đánh số từ 1 đến 64. Các bit trong C 0 tương ứng là 57, 49, 41 ,…, 44 và 36 của KEY , còn các bit trong D 0 là các bit 63, 55, 47,.., 12 và 4 của KEY . Với C 0 và D 0 đã xác định, có thể xác định được C n và D n từ C n- 1 và D n- 1 , tương ứng với n = 1, 2,..., 16. Điều này đạt được bằng cách tuân thủ vào lược đồ phép dịch sang trái các khối riêng lẻ sau: B ả ng A.7 - Số các bit khóa được dịch chuyển của mỗi vòng Số lần lặp Số lần dịch trái 1 1 2 1 3 2 4 2 5 2 6 2 7 2 8 2 Số lần lặp Số lần dịch trái 9 1 10 2 11 2 12 2 13 2 14 2 15 2 15 1 Ví dụ, C 3 và D 3 thu được t ừ C 2 và D 2 tương ứng bằng hai dịch chuyển sang trái, và C 16 và D 16 thu được từ C 15 và D 15 tư ơ ng ứng bằng một lần dịch sang trái. Trong tất cả các trường hợp, việc dịch một lần sang trái được hiểu là d ị ch các bit sang trái một v ị trí sao cho sau một lần dịch các bit ở 28 vị tr í là các bit trước đó ở vị trí 2, 3,..., 28, 1. Việc chọn hoán vị 2 được xác định trên Bảng A.8 Bảng A.8 - Hoán vị nén PC-2 B ở i vậy bit thứ nhất của K n là bit thứ 14 của C n D n , bit thứ hai là bit thứ 17 , v . v , bit thứ 47 là bit thứ 29, bit thứ 48 là bit thứ 32. H ì nh A.3 - Tính toán lược đồ khóa PHỤ LỤC B (Quy định) ĐỊNH DANH ĐỐI TƯỢNG Phụ lục này liệt kê các đ ị nh đanh đối tượng được gán cho các Thuật toán đ ã được mô tả trong tiêu chu ẩ n này c ủ a bộ TCVN 11367 (ISO/IEC 18033). CH Ú THÍCH Trong các ứng d ụng, nơi tổ hợp các thuật to á n được s ử dụng đ ể cung c ấ p dịch vụ an toàn hoặc khi thuật toán được tham s ố h ó a bằng sự lựa ch ọ n t ổ hợp các thuật toán khác th ì tổ hợp này c ó thể được xác định như là d ã y các đ ị nh danh đối tượng được gán cho các thuật to á n này hoặc bao gồm cả các định đanh của các thuật toán ở t ầ ng th ấ p hơn (v í dụ bằng việc xác định đ ị nh danh đ ố i t ượ ng c ủ a cơ ch ế bọc khóa như một tham số tr o ng c ấ u trúc đ ị nh danh thuật toán xác định thuật toán mã hóa lai). Cấu trúc định danh thuật toán được xác đ ị nh tr ong ISO/IEC 9594-8. PHỤ LỤC C (Quy định) DẠNG ĐẠI SỐ CỦA MISTY1 VÀ CÁC S-BOX CAMELLIA C.1 . M ở đầu Trong M I STY1 và các thuật toán Camellia, các S-box có thể được mô tả tương ứng bằng các dạng đại số sau đây. C. 2 . S-box trong MISTY1 C .2.1 . Các S-box S 7 và S 9 Điều này mô tả các dạng đại số trên trường GF(2) của S 7 và S 9 trong thuật toán MISTY1 V í dụ, nếu đầu vào của S 7 là {53}, khi đó X = ( x 6 , x 5 , x 4 , x 3 , x 2 , x 1 , x 0 ) = (1, 0, 1, 0, 0, 1, 1). Giá trị thay thế có thể lấy b ằ ng dạng đại số trên Hình C .1 và từ Y = ( y 6 , y 5 , y 4 , y 3 , y 2 , y 1 , y 0 ) = (1 , 0, 1, 0, 1, 1, 1). Kết quả cho ta giá tr ị S 7 = {57} C .2.2 . MISTY1 S -box S 7 Bảng C.1 - Dạng đại số của S 7 C.2.3. MISTY1 S-box S 9 Bảng C.2 - Dạng đại số của S 9 C. 3 . Các S-box Camellia Điều này mô t ả các dạng đại số trên trường GF(2 8 ) của S-box trong Thuật toán Camellia. s 1 được cho như sau (đầu v à o là x và đầu ra là y) : s 1 : y = h ( g ( f (c5 Å x))) Å 6e Ở đây các phép toán f , g v à h nhận đầu vào 8-bit a = a 1 ║ a 2 ║ a 3 ║ a 4 ║ a 5 ║ a 6 ║ a 7 ║ a 8 ║ và 8-bit đầu ra b = b 1 ║ b 2 ║ b 3 ║ b 4 ║ b 5 ║ b 6 ║ b 7 ║ b 8 ║, a i và b i là các giá trị 1-bit, f là hoán v ị affine của đầu vào, g là phép nghịch đảo trên trư ờ ng GF(2 8 ) và h là bi ế n đổi afine của đầu ra. Trong phương trình trên, các phép toán f , g và h được mô tả dưới dạng đại số như sau: f : g : g l à phép ngh ị ch đảo trong trường GF(2 8 ), gi ả thiết = 0, ở đây b là ph ầ n tử trong trường GF(2 8 ) thỏa mãn điều kiện b 8 + b 6 + b 5 + b 3 + 1 = 0 và a = b 238 = b 6 + b 5 + b 3 + b 2 là ph ầ n tử trong trường GF(2 4 ) thỏa mã n a 4 + a + 1 = 0 h : PHỤ LỤC D (Tham khảo) VÉC TƠ KIỂM TRA D.1 . M ở đầu Phụ lục này cung cấp các véc tơ kiểm tra cho TDEA, MISTY1, CAST-128, HIGHT, AES, Camellia và SEED. Trong các v í dụ này, tất cả dữ liệu được biểu diễn dưới dạng Hexa. D.2 . Véc tơ kiểm tra TDEA D.2.1 . Mã hóa TDEA V ớ i đầu vào đã cho (b ả n rõ và khóa), đầu ra (bản mã) được mô t ả như sau: Bảng D.1 - Các ví dụ của mã hóa TDEA D.2.2 . Mã hóa và giải mã DES D.2.2.1 . Đầu vào và khóa đầu ra Đầu vào và đầu ra của mỗi thuật toán DES được mô t ả với các khóa sau: D.2.2.2 . Phép mã hóa TDEA (DES mã hóa - giải mã - mã hóa) B ả ng D.2 - Ví dụ thứ nhất của phép mã hóa TDEA Bảng D.3 - V í dụ thứ hai c ủ a phép m ã hóa TDEA B ả ng D.4 - Ví dụ thứ ba của phép mã hóa TDEA D.2.2.3 . Phép giải mã TDEA (DES giải mã - mã hóa - gi ải mã) Bảng D.5 - Ví dụ thứ nh ấ t của phép m ã hóa TDEA Bảng D.6 - Ví dụ thứ hai của ph é p mã hóa TDEA Bảng D.7 - Ví dụ thứ ba của phép mã hóa TDEA D.3 . Véc tơ kiểm tra MISTY1 Với đầu v à o đã cho (bản rõ và khóa), đầu ra (bản mã và khóa con) được mô tả như sau: Bảng D.8 - Ví dụ của ph é p mã hóa MISTY1 D.4 . Véc tơ kiểm tra CAST-128 Với đầu vào đã cho (bản rõ và khóa), đầu ra (bản mã) được mô tả như sau: B ả ng D.9 - Ví dụ c ủ a phép mã hóa CAST-128 D.5 . Véc tơ kiểm tra HIGHT B ả ng D.10 - Ví dụ của ph é p mã h ó a HIGHT D.6 . Véc tơ kiểm tra AES D.6.1 . Mã hóa AES D.6.1 . 1 . M ở đầu Với đầu vào đã cho (bản rõ và khóa), đầu ra (bản mã) được mô tả như sau: D.6.1.2 . Khóa 128 b i t Bảng D.11 - V í dụ của phép mã hóa AES với 128 bit khóa D.6.1.3 . Khóa 192 b i t Bảng D.12- Ví dụ của phép mã hóa với 192 bit khóa D.6.1.4 . Khóa 256 b i t Bảng D.13 - Ví dụ c ủ a phép mã hóa với 256 bit khóa D.6.2 . Ví dụ m ở rộng khóa Điều này chỉ ra sự phát triển của việc sử dụng lược đồ khóa Các giá trị trung gian c ủ a khóa được đưa sinh ra trong quá trình phát triển của lược đồ kh ó a như sau (tất cả các được định dạng Hexa, trừ cột chỉ số ( I )). Bảng D.14 - Ví dụ m ở rộng của khóa D.6.3 . Ví dụ mật mã Biểu đồ sau chỉ ra các giá trị mảng Trạng thái như một tiến tr ì nh mật mã cho mỗi khối, khóa mật mã 16 byte. Các giá trị v ò ng khóa được lấy từ ví dụ mở rộng khóa trong D.6.2 Bảng D.15 - Ví dụ mật mã D.7 . Véc tơ kiểm tra Camellia D.7.1 . M ở đầu Với đầu vào đã cho (bản rõ và khóa), đầu ra (bản mã và khóa con) được mô tả như sau: D.7.2 . Phép mã hóa Camellia D. 7.2.1 . Khóa 128 bit Bảng D.16 - Ví dụ c ủ a phép mã hóa Camellia với 128 bit kh ó a D.7.2.2 . Khóa 192 bit Bảng D.17 - Ví dụ c ủ a phép mã hóa Camel l ia với 192 bit khóa D.7.2.3 . Khóa 256 bit Bảng D.18 - Ví dụ của phép mã hóa Camellia v ớ i 256 bit khóa D. 8 . Véc tơ kiểm tra SEED Bảng D.19 - Ví dụ c ủ a phép mã hóa SEED PHỤ LỤC E (Tham khảo) BẢNG ĐẶC TÍNH TT Tên thuật toán Đặc tính Các tiêu chuẩn 1 TDEA [4] · Tốc độ xử l í phần mềm chậm · Chuẩn công nghiệp ngân hàng · ANSI X9.52, FIPS46-3 · Thuật toán chính phủ điện tử Nhật B ản (CRYPTREC)-chỉ dùng 3-khóa 2 M I STY1 [11] · Phần cứng giới hạn · Thuật toán đa nền tảng (Hiệu năng phần mềm tốt trên các nền t ả ng khác nhau) · Chuẩn công nghiệp di động (3GPP&GSM:KASUMI dựa trên MISTY1) · IETF RFC 2994 · Thuật toán chọn NESSIE · Thuật toán chính phủ điện tử Nhật B ản (CRYPTREC)-ch ỉ dùng 3-khóa 3 CAST-128 [8] · Thuật toán đa nền tảng (Hiệu năng phần mềm tốt trên các phông khác nhau) · [ Hiệu năng phần cứng không được bên thứ ba đánh giá ] · IETF RFC 2144 (xem RFCs 2984, 2451, và 2400 s ử dụng trong S/MINE, lpsec và OpenPGP) · Mật mã chính phủ điện tử Canada 4 HIGHT [7],[10] · Mã hóa tốc độ c a o với phần cứng giới hạn · Chuẩn công nghiệp Hàn qu ố c (TTAS.KO-12.0040) 5 AES [5] · Phần cứng giới hạn · Thuật toán đa n ề n t ả ng (Hiệu năng phần mềm tốt trên các nền tảng khác nhau) · FIPS 197 · Thuật toán chọn NESIE · Thuật toán chính phủ điện tử Nhật B ản (CRYPTREC) 6 Camellia [9] · Phần cứng giới hạn · Thuật toán đa nền tảng (hiệu năng phần mềm tốt trên các nền tảng khác nhau) · Giao diện giống như AES · I ETF RFC 3657, 3713 · Thuật toán chọn NESIE · Thuật toán chính ph ủ điện tử Nhật B ản (CRYPTREC) 7 SEED [6] · Tốc độ xử II phần mềm modem chậm · [ Hiệu năng phần c ứ ng không được đánh giá bởi bên thứ ba] · IETF RFC 4269 (xem RFCs 4010, 41622451, v à 4196 sử dụng trong S/MINE, TLS và IPsec) · Thuật toán công nghiệp Hàn Q uốc (TTAS.KO.12-0004) · Thuật toán ch í nh phủ điện tử Hàn Q u ố c THƯ MỤC TÀI LIỆU THAM KHẢO [1] ANSI X9.52-1998: Triple Data Encryption Algorithm Modes of Operation, 1999 [2] FIPS197: Advanced Encryption Standard (AES), November 26, 2001 [3] ISO/IEC JTC 1/SC 27 S tanding Document No. 12 (SD12) on the Assessment of Cryptographic Algorithms and Key-Lengths [4] ISO/IEC 9594-8, In f ormation technology — Open Systems Interconnection — The Directory: Public-key and attribute certi f icate frameworks [5] ISO/IEC 9834 (all parts,), In f ormation technology — O pen Systems I nt erconnection — Procedures for the operation of OSI Registration Authorities [6] ISO/IEC 18033-1, lnformation technology — Security techniques — Encryption algorithms — Part 1: General [7] TTAS.KO-12.0004: A 128-bit Block Encryption Algorithm Standard, Telecommunication Technology Association, 1999 [8] TTAS.K O 12.0040/R1: 64-bit Block Cipher MIGHT, Telecommunication Technology Association, 2009 [9] C . Adams, "Constructing Symmetric Ciphers Using the CAST Design Procedure", Designs, Codes and Cryptography , vol.12, no.3, pp.283-316, November 1997 [10] K. Aoki, T. Ichika w a, M. Kanda, M. Matsui, S . Moriai, J. Nakajima and T. Tokita, " The 128-Bit Block Cipher Camellia " , IEICE Transaction, vol .E85-A, no.1, pp.11-24, January 2002 [11] D. Hong, J. Sung, S . Hong, J. Lim, S . Lee, B . Koo, C . Lee, D. Chang, J. Lee, K. Jeong, H. Kim, J. Kim and S . Chee, "HIGHT: A New Block Cipher Suitable for Low-Resource Device", Proceedings of the 8 th Cryptographic Hardware and Embedde d Systems W orkshop, Lecture Notes in Computer Science 4249, Springer-Verlag, pp.46-59, 2006 [12] M. Matsui, "New Block Encryption A l gorithm MISTY " , Proceedings of the 4th Fast Software Encryption W orkshop, Lecture Notes in Computer Science 1267, pp.54-68, 1997 MỤC LỤC Lời nói đầu 1. Phạm vi áp dụng 2. Thuật ngữ và định nghĩa 3. Các ký hiệu 4. Mã khối 64 bit 4.1. Mở đầu 4.2 . TDEA 4.3 . MISTY1 4.4 . CAST-128 4.5 . HIGHT 5 . Mã khối 128 bit 5.1 . M ở đầu 5.2 . AES 5.3 . Camellia 5.4 . SEED Phụ lục A (Quy định) Mô tả DES A.1. Mở đầu A.2 . Mã hóa DES A.3 . Phép giải mã DES A.4 . Các hàm DES A.5. Lược đồ tạo khóa DES Phụ lục B (Quy định) Định danh đối tượn g Phụ lục C (Quy định) Dạng đại số c ủ a các S-box trong Thuật toán MISTY1 và Camellia C.1. Mở đầu C.2 . S-box trong MISTY1 C.3 . Các S-box Camellia Phụ lục D (Tham khảo) Véc tơ kiểm tra D.1 . M ở đầu D.2 . Véc tơ ki ể m tra TDEA D.3 . Véc tơ kiểm tra MISTY1 D.4 . Véc tơ kiểm tra CAST-128 D.5 . Véc tơ kiểm tra HIGHT D.6 . Véc tơ kiểm tra AES D.7 . Véc tơ kiểm tra Camellia D.8 . Véc tơ kiểm tra SEED Phụ lục E (Tham khảo) B ả ng đặc tín h Thư mục tài liệu tham khảo