TCVN11816-3:2017

Tiêu chuẩn quốc gia TCVN 11816-3:2017 (ISO/IEC 10118-3:2004 with amendment 1:2006) về Công nghệ thông tin - Các kỹ thuật an toàn - Hàm băm - Phần 3: Hàm băm chuyên dụng TIÊU CHUẨN QUỐC GIA TCVN 11816-3:2017 ISO/IEC 10118-3:20041 WITH AMENDMENT 1:2006 CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - HÀM BĂM - PHẦN 3: HÀM BĂM CHUYÊN DỤNG Information technology - Security techniques - Hash-functions - Part 3: Dedicated hash-functions Lời nói đầu TCVN 11816-3:2017 hoàn toàn tương đương với ISO/IEC 10118-3:2004 với sửa đổi 1:2006 và đính chính kỹ thuật 1:2011. TCVN 11816-3:2017 do 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 11816 (ISO/IEC 10118) Công nghệ thông tin - Các kỹ thuật an toàn - Hàm băm gồm các tiêu chuẩn sau: - TCVN 11816-1:2017 (ISO/IEC 10118-1:2016), Phần 1: Tổng quan. - TCVN 11816-2:2017 (ISO/IEC 10118-2:2010), Phần 2: Hàm băm sử dụng mã khối n-bit. - TCVN 11816-3:2017 (ISO/IEC 10118-3:2004), Phần 3: Hàm băm chuyên dụng. - TCVN 11816-4:2017 (ISO/IEC 10118-4:1998), Phần 4: Hàm băm sử dụng số học đồng dư. CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - HÀM BĂM - PHẦN 3: CÁC HÀM BĂM CHUYÊN DỤNG Information technology - Security techniques - Hash-functions - Part 3: Dedicated hash-functions 1 Phạm vi áp dụng TCVN 11816-3 đặc tả các hàm băm chuyên dụng, nghĩa là các hàm băm được thiết kế một cách riêng biệt. Các hàm băm trong phần này dựa trên cơ sở sử dụng việc lặp của một hàm vòng. Bảy hàm vòng khác nhau được đặc tả đem đến sự khác biệt của các hàm băm chuyên dụng. Hàm băm chuyên dụng thứ nhất và thứ ba tại Điều 7 và 9 cung cấp lần lượt các mã băm có độ dài lên tới 160 bit. Hàm băm thứ hai tại Điều 8 cung cấp độ dài của mã băm lên tới 128 bit. Hàm băm thứ tư tại Điều 10 cung cấp độ dài của mã băm lên tới 256 bit. Hàm băm thứ sáu tại Điều 12 cung cấp độ dài cố định của mã băm là 384 bit. Hàm băm thứ năm và thứ bảy tại các Điều 11 và 13 cung cấp mã băm có độ dài lên đến 512 bit. 2 Tài liệu viện dẫn Các tài liệu tham chiếu sau đây rất cần thiết cho việc áp dụng tài liệu này. Đối với những tài liệu tham chiếu đã ghi ngày tháng, chỉ áp dụng tài liệu đã dẫn đó. Đối với những tài liệu tham chiếu không ghi ngày tháng, thì áp dụng phiên bản mới nhất (bao gồm các tài liệu đã sửa đổi). TCVN 11816-1:2017 (ISO/IEC 10118-1:2016), Công nghệ thông tin - Các kỹ thuật an toàn - Hàm băm a - Phần 1: Tổng quan. 3 Các thuật ngữ và định nghĩa Trong phần này các thuật ngữ và định nghĩa được đưa ra trong TCVN 11816-1:2017 và các thuật ngữ sau đây được sử dụng. 3.1 Khối (block) Xâu bit có độ dài L 1 , tức là độ dài đầu vào đầu tiên của hàm vòng. 3.2 Từ (word) Một xâu 32 bit được sử dụng trong hàm băm chuyên dụng 1, 2, 3 và 4 tại các Điều 7, 8, 9 và 10 tương ứng, hoặc một xâu 64 bit được sử dụng trong hàm băm chuyên dụng 5 và 6 tại các Điều 11 và 12 tương ứng. 3.3 Ma trận (matrix) Ma trận 8x8 trong đó mỗi phần tử là một xâu có 8 bit được sử dụng trong hàm băm chuyên dụng 7 tại Điều 13. 4 Các ký hiệu (và thuật ngữ viết tắt) 4.1 Các ký hiệu trong TCVN 11816-1 (ISO/IEC 10118-1) Trong phần này các ký hiệu dưới đây và các ký hiệu trong TCVN 11816-1:2016 được sử dụng. B i Một byte D Dữ liệu H Mã băm IV Giá trị khởi tạo L 1 Độ dài (theo bit) của xâu đầu tiên trong hai xâu đầu vào của hàm vòng ϕ L 2 Độ dài (theo bit) của xâu thứ hai trong hai xâu đầu vào của hàm vòng ϕ , đó cũng là độ dài của xâu đầu ra của hàm vòng ϕ và của IV. L X Độ dài (theo bit) của xâu bit X ϕ Hàm vòng, ví dụ, nếu X, Y là các xâu bit có độ dài lần lượt là L 1 và L 2 thì ϕ ( X, Y ) là xâu nhận được từ việc sử dụng ϕ cho X và Y X Å Y Phép xor của các xâu bit X và Y (với L X = L Y ) 4.2 Các ký hiệu của phần này Trong phần này, các ký hiệu sau đây được sử dụng. a i , a’ i Dãy các chỉ số được sử dụng để đặc tả một hàm vòng A i Một dãy các ma trận hằng số được sử dụng trong việc đặc tả hàm vòng tại Điều 13 c 0 Hàm nhận đầu vào là một xâu 64 phần tử của trường GF(2 8 ), và đưa ra ma trận 8x8 với các phần tử từ trường GF(2 8 ), được sử dụng trong việc đặc tả hàm vòng tại Điều 13 c 1 , c 2 , c 3 Các hàm nhận đầu vào là một ma trận 8x8 gồm các phần tử từ trường GF(2 8 ) và đưa ra một ma trận 8x8 gồm các phần tử từ trường GF(2 8 ) , được sử dụng trong việc đặc tả hàm vòng tại Điều 13 c 4 Hàm nhận đầu vào là 2 ma trận 8x8 gồm các phần tử từ trường GF(2 8 ) và đưa ra một ma trận 8x8 gồm các phần tử từ trường GF(2 8 ) , được sử dụng trong việc đặc tả hàm vòng tại Điều 13 C i , C’ i Các từ được sử dụng trong các hàm vòng C” Ma trận vòng 8x8 với các phần tử được chọn từ trường GF(2 8 ) được sử dụng trong việc đặc tả hàm vòng tại Điều 13 D i Khối nhận được từ xâu dữ liệu sau quá trình đệm. d i , e i , f i , g i Các hàm lấy đầu vào là một hoặc ba từ và đầu ra là một từ đơn được sử dụng trong việc đặc tả các hàm vòng. H i Một xâu L 2 bit được sử dụng trong phép toán băm để lưu trữ kết quả trung gian GF (2 8 ) Trường được định nghĩa như là GF(2)[ x ]/ p 8 ( x ) với p 8 ( x ) = x 8 + x 4 + x 3 + x 2 + 1. Các phần tử trong trường là các xâu 8 bit. M Ma trận 8x8 có các phần tử được chọn từ trường GF(2 8 ) . q Số khối trong xâu dữ liệu sau quá trình đệm và tách R n () Phép dịch phải n bit, nghĩa là nếu A là một từ và n là một số nguyên dương thì R n ( A ) là kết quả của phép dịch phải nội dung của A sang phải n vị trí. s Hộp thế phi tuyến thay mỗi phần tử x Î GF(2 8 ) bằng một phần tử khác s [ x ] Î GF(2 8 ). S n () Phép dịch vòng trái n bit. Nghĩa là nếu A là một từ và n là một số nguyên dương thì khi đó S n (A) là kết quả của phép dịch vòng sang trái nội dung của A n vị trí S ’n () Phép dịch vòng phải n bit. Nghĩa là nếu A là một từ và n là một số nguyên dương thì khi đó S ’n () là kết quả của phép dịch vòng sang phải nội dung của A n vị trí t i , t’ i Giá trị dịch chuyển được sử dụng để đặc tả một hàm vòng. W, X i , X’ i , Y i , Z i Các từ được sử dụng để lưu trữ các kết quả tính toán trung gian. W’, X”, K i , Y’, Z’ Các ma trận với các phần tử được chọn từ trường GF(2 8 ) được sử dụng để lưu trữ các kết quả tính toán trung gian. Ù Phép toán logic AND trên xâu bit, nghĩa là nếu A và B là các từ thì A Ù B là từ nhận được bằng phép toán logic AND của A và B. Ú Phép toán logic OR trên xâu bit, nghĩa là nếu A và B là các từ thì A Ú B là một từ nhận được bằng phép toán logic OR của A và B Ø Phép toán logic NOT trên xâu bit, nghĩa là nếu A là từ thì Ø A là một từ nhận được bằng phép toán logic NOTcủa A Phép cộng mô đun 2 w , trong đó w là số bit trong một từ nghĩa là nếu A và B là các từ thì A B là một từ nhận được bằng cách phát triển A và B như các biểu diễn nhị phân của số nguyên và tính tổng theo mô đun 2 w . Khi đó kết quả sẽ nằm trong khoảng từ 0 đến 2 w -1. Giá trị của w là 32 để đặc các hàm băm chuyên dụng 1 đến 4 được xác định trong Điều 7-10 và là 64 để đặc tả các hàm băm 5 và 6 xác định trong Điều 11 và 12 ● Phép nhân của các ma trận 8x8 với các phần tử được chọn từ trường GF(2 8 ), có nghĩa là, nếu A và B là các ma trận như trên, thì A●B là ma trận nhận được bởi phép nhân A và B theo cách sau: khai triển mỗi phần tử của A hoặc B dưới dạng đa thức nhị phân của số nguyên (ví dụ, biểu diễn đa thức nhị phân của số nguyên 89 (hệ thập lục phân) là x 7 + x 3 + 1); thực hiện phép của 2 phần tử như là phần dư khi tích của hai đa thức được chia bởi đa thức p 8 ( x ), với p 8 ( x ) = x 8 + x 4 + x 3 + x 2 + 1; và lấy tổng bằng phép toán Å := Ký hiệu “đặt bằng” được sử dụng trong mô tả tiến trình của các hàm vòng. Ở đó xác định một từ (hoặc một ma trận tại Điều 13) ở vế trái phải bằng với giá trị của vế phải 5 Các yêu cầu Người dùng muốn sử dụng một hàm băm của TCVN 11816-3 phải tiến hành lựa chọn sau: - Một trong những hàm băm chuyên dụng được đặc tả dưới đây; và - Độ dài L H của mã băm H . CHÚ THÍCH: Các hàm băm chuyên dụng 1 và 2 được mô tả sao cho thuận tiện cho việc tích hợp phần mềm đối với máy tính ‘little-endian’, nghĩa là byte có địa chỉ thấp nhất trong một từ được mô tả như trọng số thấp nhất; và ngược lại các hàm chuyên dụng 3, 4, 5, 6 được mô tả sao cho thuận tiện cho việc tích hợp mềm đối với các máy tính ‘big-endian’ nhưng byte có địa chỉ thấp nhất trong từ lại được mô tả như trọng số cao nhất. Tuy nhiên, nếu điều chỉnh phù hợp thì bất kỳ hàm nào trong 6 hàm trên đều có tích hợp cho máy tính ‘little-endian’ hoặc ‘big-endian’. Hàm chuyên dụng thứ 7 được xác định cho ‘endian-neutral’ mà trong việc tính toán nó không sử dụng phép toán số học (như các phép cộng số nguyên). Nếu dãy các phần tử từ trường GF(2 8 ) (có nghĩa là byte) được ánh xạ tới các từ của máy tính để thực hiện các phép toán song song như phép XOR thì việc phân bố byte trong từ là không cần thiết miễn là phù hợp với ánh xạ ngược. Tất cả các hàm băm đặc tả trong TCVN 11816-3, nhận đầu vào và đưa ra đầu ra là một xâu bit; Điều này không phụ thuộc vào quy định trật tự byte bên trong mỗi hàm băm. CHÚ THÍCH: Việc lựa chọn L H ảnh hưởng đến tính an toàn của hàm băm. Tất cả hàm băm được đặc tả trong TCVN 11816-3 được tin là hàm băm kháng va chạm trong các môi trường mà ở đó việc thực hiện tính toán mã băm 2 là không thể được về mặt tính toán. 6 Mô hình hàm băm chuyên dụng Các hàm băm được đặc tả trong TCVN 11816-3 dựa trên mô hình tổng quát cho hàm băm được đưa ra ở TCVN 11816-1. Trong đặc tả của các hàm băm ở phần này, giả định rằng đầu vào của hàm băm là xâu dữ liệu đã được đệm theo khuôn dạng của chuỗi các byte. Nếu xâu dữ liệu đã được đệm ở dạng chuỗi của 8n bit x 0 , x 1 ,... x 8n-1 thì sau đó nó sẽ được biểu diễn như một xâu của n byte, B 0 , B 1 ,... B n-1 như sau. Mỗi một nhóm 8 bit liên tiếp được coi như là một byte, bit đầu tiên của nhóm là bit có trọng số cao nhất trong byte đó. Từ đó B i = 2 7 X 8i + 2 6 X 8i+1 +...+X 8i+7 , với i(0 ≤ i <> Phép biến đổi đầu ra của các hàm băm đặc tả trong TCVN 11816-3 là các mã băm H nhận được bằng cách lấy L H bit tận cùng bên trái của L 2 bit cuối của xâu đầu ra H q . Các định danh được xác định cho mỗi hàm băm chuyên dụng được đặc tả trong chuẩn này. Các định danh hàm băm đối với các hàm băm chuyên dụng được đặc tả tại các Điều 7, 8, 9, 10, 11, 12 và 13 lần lượt tương ứng với 31, 32, 33, 34, 35, 36 và 37 (theo hệ thập lục phân). Khoảng giá trị từ 38 tới 3F (theo hệ thập lục phân) được dành riêng để sử dụng sau này như định danh các hàm băm của TCVN 11816-3. Các định danh hàm băm còn được sử dụng trong các định danh đối tượng của OSI trong Phụ lục C. 7 Hàm băm chuyên dụng 1 (RIPEMD-160) Điều này đặc tả phương pháp đệm, giá trị khởi tạo và hàm vòng sử dụng trong các mô hình tổng quát cho hàm băm được mô tả trong TCVN 11816-1: 2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 1. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 64 -1 bit. Trong TCVN 11816, định danh của hàm băm chuyên dụng 1 là 31 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 1 trong điều này được gọi với tên chung là RIPEMD-160, [3]. 7.1 Các tham số, hằng số và hàm số 7.1.1 Các tham số Đối với hàm băm này L 1 = 512, L 2 = 160 và L H có thể đến 160. 7.1.2 Quy ước thứ tự byte Đặc tả hàm vòng ở điều này được giả định một khối đầu vào là một dãy các từ 32 bit, mỗi khối 512 bit được tạo thành từ 16 từ như vậy. Một dãy 64 byte B 0 , B 1 ,…, B 63 được biểu diễn là một dãy 16 từ Z 0 , Z 1 ,…., Z 15 như sau. Mỗi nhóm 4 byte liên tiếp được coi là một từ, byte đầu tiên của từ có trọng số thấp nhất. Vì vậy Z i = 2 24 B 4i+3 + 2 16 B 4i+2 + 2 8 B 4i+1 + B 4i (0 ≤ i ≤ 15) Thực hiện phép biến đổi ngược để chuyển đổi mã băm từ một dãy các từ thành một dãy byte. CHÚ THÍCH: Thứ tự byte được đặc tả ở đây khác với Điều 9.1.2. 7.1.3 Các hàm số Để thuận lợi cho việc cài đặt phần mềm, hàm vòng ϕ được mô tả theo thuật ngữ các phép toán trên các từ 32 bit. Một dãy các hàm số g 0 , g 1 ,..., g 79 được sử dụng trong hàm vòng này, mỗi một hàm g i , 0 ≤ i ≤ 79, nhận ba từ X 0 , X 1 và X 2 làm đầu vào và đưa ra duy nhất một từ. Các hàm số g i được xác định như sau: g i (X 0 , X 1 , X 2 ) = X 0 Å X 1 Å X 2 0≤ i ≤15 g i (X 0 , X 1 , X 2 ) = (X 0 Ù X 1 ) Ú ( Ø X 0 Ù X 2 ) 16≤ i ≤31 g i (X 0 , X 1 , X 2 ) = (X 0 Ù Ø X 1 ) Å X 2 32≤ i ≤47 g i (X 0 , X 1 , X 2 ) = (X 0 Ù X 2 ) Ú (X 1 Ù Ø X 2 ) 48≤ i ≤63 g i (X 0 , X 1 , X 2 ) = X 0 Å (X 1 Ú Ø X 2 ) 64≤ i ≤79 7.1.4 Các hằng số Hai dãy các từ hằng số C 0 , C 1 ,..., C 79 và C’ 0 , C’ 1 ,…, C’ 79 được sử dụng trong hàm vòng này. Trong biểu diễn hệ thập lục phân chúng được xác định như sau (bit có trọng số cao nhất tương ứng với bit trái nhất): C i = 00000000, C’ i = 50 A 28 BE 6, 0 ≤ i ≤ 15, C i = 5 A 827999, C’ i = 5 C 4 DD 124, 16 ≤ i ≤ 31, C i = 6 ED 9 EBA 1, C’ i = 6 D 703 EF 3, 32 ≤ i ≤ 47, C i = 8 F 1 BBCDC , C’ i = 7 A 6 D 76 E 9, 48 ≤ i ≤ 63, C i = A 953 FD 4 E , C’ i = 00000000, 64 ≤ i ≤ 79, Hai dãy của 80 giá trị dịch được sử dụng trong hàm vòng này, mỗi một giá trị dịch có giá trị từ 5 đến 15. Ký hiệu những dãy này là ( t 0 , t 1 ,...,t 79 ), ( t’ 0 , t’ 1 ,...,t’ 79 ). Ngoài ra hai dãy của 80 chỉ số được sử dụng trong hàm vòng này, mỗi một giá trị trong dãy là từ 0 đến 15. Ký hiệu những dãy này là ( a 0 , a 1 ,...,a 79 ), ( a’ 0 , a’ 1 ,...,a’ 79 ). Bốn dãy được xác định trong Bảng 1 sau: Bảng 1 i 0 1 2 3 4 5 6 7 t i 11 14 15 12 5 8 7 9 t’ i 8 9 9 11 13 15 15 5 a i 0 1 2 3 4 5 6 7 a’ i 5 14 7 0 9 2 11 4 i 8 9 10 11 12 13 14 15 t i 11 13 14 15 6 7 9 8 t’ i 7 7 8 11 14 14 12 6 a i 8 9 10 11 12 13 14 15 a’ i 13 6 15 8 1 10 3 12 i 16 17 18 19 20 21 22 23 t i 7 6 8 13 11 9 7 15 t’ i 9 13 15 7 12 8 9 11 a i 7 4 13 1 10 6 15 3 a’ i 6 11 3 7 0 13 5 10 i 24 25 26 27 28 29 30 31 t i 7 12 15 9 11 7 13 12 t’ i 7 7 12 7 6 15 13 11 a i 12 0 9 5 2 14 11 8 a’ i 14 15 8 12 4 9 1 2 i 32 33 34 35 36 37 38 39 t i 11 13 6 7 14 9 13 15 t’ i 9 7 15 11 8 6 6 14 a i 3 10 14 4 9 15 8 1 a’ i 15 5 1 3 7 14 6 9 i 40 41 42 43 44 45 46 47 t i 14 8 13 6 5 12 7 5 t’ i 12 13 5 14 13 13 7 5 a i 2 7 0 6 13 11 5 12 a’ i 11 8 12 2 10 0 4 13 i 48 49 50 51 52 53 54 55 t i 11 12 14 15 14 15 9 8 t’ i 15 5 8 11 14 14 6 14 a i 1 9 11 10 0 8 12 4 a’ i 8 6 4 1 3 11 15 0 i 56 57 58 59 60 61 62 63 t i 9 14 5 6 8 6 5 12 t’ i 6 9 12 9 12 5 15 8 a i 13 3 7 15 14 5 6 2 a’ i 5 12 2 13 9 7 10 14 i 64 65 66 67 68 69 70 71 t i 9 15 5 11 6 8 13 12 t’ i 8 5 12 9 12 5 14 6 a i 4 0 5 9 7 12 2 10 a’ i 12 15 10 4 1 5 8 7 i 72 73 74 75 76 77 78 79 t i 5 12 13 14 11 8 5 6 t’ i 8 13 6 5 15 13 11 11 a i 14 1 3 8 11 6 15 13 a’ i 6 2 13 14 0 3 9 11 7.1.5 Giá trị khởi tạo Đối với hàm vòng này giá trị khởi tạo IV luôn phải là xâu 160 bit, được biểu diễn dưới dạng một dãy của 5 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 ở hệ thập lục phân, trong đó Y 0 là 32 bit trái nhất của 160 bit. Y 0 = 67452301, Y 1 = EFCDAB89, Y 2 = 98BADCFE, Y 3 = 10325476, Y 4 = C3D2E1F0. 7.2 Phương pháp đệm Xâu dữ liệu D cần phải đệm thêm vào để số bit của nó là bội nguyên của 512. Quá trình đệm được thực hiện như sau: 1. D được nối với duy nhất một bit ‘1’. 2. Kết quả của bước trước được nối với bit 0 giữa 0 và 511 sao cho độ dài thu được (theo bit) của xâu là đồng dư với 448 theo mô đun 512. Một cách rõ ràng hơn, nếu chiều dài ban đầu của D là L D , và r là số dư khi L D chia cho 512, thì số các số 0 cần thêm là hoặc 447- r (nếu r ≤ 447) hoặc 959 - r (nếu r > 447). Kết quả là một xâu bit có độ dài là 64 bit là bội nguyên của 512. 3. Chia biểu diễn 64 bit nhị phân của L D thành hai xâu 32-bit, một nửa là xâu có trọng số cao nhất của L D , và một nửa là một xâu có trọng số thấp nhất. Ghép xâu kết quả từ bước trước đó với hai xâu 32 bit trên bằng cách ghép xâu có trọng số thấp nhất trước xâu có trọng số cao nhất. Trong mô tả hàm vòng dưới dây, mỗi một khối dữ liệu 512 bit D i , 1 ≤ i ≤ q , được khai triển thành một dãy 16 từ Z 0 , Z 1 ,…, Z 15 , trong đó Z 0 tương ứng với 32 bit tận cùng bên trái của D i . CHÚ THÍCH: Việc nối hai xâu 32-bit của L 0 ở bước 3 sao cho hai xâu 32-bit này được sử dụng trực tiếp như các từ Z 14 và Z 15 của khối dữ liệu cuối cùng, dựa trên cơ sở quy ước thứ tự byte tại Điều 7.1.2, 8 bit tận cùng bên trái của L D có trọng số thấp nhất và 8 bit tận cùng bên phải có trọng số cao nhất. 7.3 Mô tả hàm vòng Hàm vòng ϕ hoạt động như sau. Chú ý rằng, trong mô tả này, các ký hiệu W, X 0 , X 1 , X 2 , X 3 , X 4 , X’ 0 , X’ 1 , X’ 2 , X’ 3 , X’ 4 , để ký hiệu 11 từ có giá trị khác nhau cần thiết trong các tính toán. 1. Giả sử 512 bit đầu vào (đầu tiên) của ϕ là Z 0 , Z 1 ,...,Z 15 trong đó Z 0 là 32 bit trái nhất của 512 bit. Cũng giả sử rằng 160 bit đầu vào (thứ 2) của ϕ là 5 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 2. Đặt X 0 := Y 0 , X 1 := Y i , X 2 := Y 2 , X 3 := Y 3 , X 4 := Y 4 3. Đặt X’ 0 := Y 0 , X’ 1 := Y 1 , X’ 2 := Y 2 , X’ 3 := Y 3 , X’ 4 := Y 4 4. Với i từ 0 đến 79 thực hiện 4 bước theo thứ tự sau: 5. Đặt 6. Năm từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 là đầu ra của hàm vòng ϕ . Sau vòng lặp cuối cùng của hàm vòng các giá trị Y 0 , Y 1 , Y 2 , Y 3 , Y 4 được chuyển thành dãy 20 byte sử dụng phép biến đổi ngược được đặc tả tại Điều 7.1.2, ở đó Y 0 tạo ra 4 byte đầu tiên, Y 1 sẽ tạo ra 4 byte tiếp theo, tiếp tục như vậy. Như vậy byte đầu tiên (trái nhất) tương ứng với byte có trọng số thấp nhất của Y 0 và byte thứ 20 (phải nhất) tương ứng với byte có trọng số cao nhất của Y 4 . 20 byte phải được biến đổi thành một xâu 160 bit sử dụng phép biến đổi ngược được đặc tả tại Điều 6. Nghĩa là bit đầu tiên (trái nhất) tương ứng với bit có trọng số cao nhất của byte đầu tiên (trái nhất) và bit thứ 160 (phải nhất) tương ứng với bit có trọng số thấp nhất của byte thứ 20 (phải nhất). Hình 1 dưới đây mô tả bước a và b của mục 4 của hàm vòng ϕ trong hàm băm chuyên dụng 1 (RIPEMD-160) (một nửa khác, tức là, bước c và d là tương tự). Trong hàm vòng ϕ , các bước từ a tới c của mục 4 được sử dụng 80 lần (i = 0,.... 79). Hình 1: Một phần của hàm vòng trong Hàm băm chuyên dụng 1 8 Hàm băm chuyên dụng 2 (RIPEMD-128) Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong các mô hình tổng quát cho hàm băm được mô tả ở TCVN 11816-1: 2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 2. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 64 -1 bit. Trong TCVN 11816, định danh của hàm băm đối với hàm băm chuyên dụng 2 là 32 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 2 được định nghĩa trong Điều này còn được gọi theo tên RIPEMD-128, [3]. Hàm băm này chỉ được sử dụng trong các ứng dụng có mã băm chứa 128 bit hoặc nhỏ hơn được coi là an toàn. 8.1 Các tham số, hàm số và hằng số 8.1.1 Các tham số Đối với hàm băm này L 1 = 512, L 2 = 128 và L H có thể đến 128. 8.1.2 Quy ước thứ tự byte Quy ước thứ tự byte của hàm băm này tương tự như quy ước thứ tự byte tại Điều 7. 8.1.3 Các hàm số Để thuận lợi cho việc cài đặt phần mềm, hàm vòng ϕ được mô tả theo thuật ngữ của các phép toán trên các từ 32-bit. Một dãy các hàm số g 0 , g 1 ,..., g 63 được sử dụng trong hàm vòng này, mỗi một hàm g i , 0 ≤ i ≤ 63 , nhận ba từ X 0 , X 1 và X 2 làm đầu vào và đưa ra duy nhất một từ. Các hàm g i được xác định giống như 64 hàm đầu tiên được quy định tại Điều con 7.1.3. 8.1.4 Các hằng số Hai dãy từ hằng số C 0 , C 1 ,..., C 63 và C’ 0 , C’ 1 ,…, C’ 63 được sử dụng trong hàm vòng này. Chúng được biểu diễn dưới dạng hệ thập lục phân (các bit trọng số cao nhất tương ứng với các bít bên trái nhất) chúng được xác định như sau: C i = 00000000 C’ i = 50 A 28 BE 6 0 ≤ i ≤ 15 C i = 5 A 827999 C’ i = 5 C 4 DD 124 16 ≤ i ≤ 31 C i = 6 ED 9 EBA 1 C’ i = 6 D 703 EF 3 32 ≤ i ≤ 47 C i = 8 F 1 BBCDC C’ i = 00000000 48 ≤ i ≤ 63 Hai dãy 64 giá trị dịch được sử dụng trong hàm vòng này, mỗi một giá trị dịch tự 5 đến 15. Ký hiệu những dãy này là ( t 0 , t 1 ,...,t 63 ), ( t’ 0 , t’ 1 ,...,t’ 63 ). Chúng được xác định bằng với 64 giá trị đầu tiên của dãy tương ứng được quy định tại Điều con 7.1.4. Cuối cùng, hai dãy thêm của 64 chỉ số được sử dụng trong hàm vòng này, mỗi một giá trị của dãy từ 0 đến 15. Ký hiệu những dãy này như là ( a 0 , a 1 ,...,a 63 ), ( a’ 0 , a’ 1 ,...,a’ 63 ), và chúng được định nghĩa bằng với 64 giá trị đầu tiên tương ứng với dãy được quy định tại Điều con 7.1.4. 8.1.5 Giá trị khởi tạo Đối với hàm vòng này, giá trị khởi tạo IV luôn phải là xâu 128 bit, được biểu diễn dưới dạng một dãy của 4 từ Y 0 , Y 1 , Y 2 , Y 3 , ở hệ thập lục phân, trong đó Y 0 là 32 bit trái nhất của 128 bit: Y 0 = 67452301, Y 1 = EFCDAB89, Y 2 = 98BADCFE, Y 3 = 10325476. 8.2 Phương pháp đệm Phương pháp đệm dữ liệu được dùng với hàm băm này tương tự với phương pháp được quy định tại Điều 7.2. 8.3 Mô tả hàm vòng Hàm vòng ϕ hoạt động như sau. Lưu ý, trong mô tả này sẽ sử dụng các ký hiệu W, X 0 , X 1 , X 2 , X 3 , và X’ 0 , X’ 1 , X’ 2 , X’ 3 để ký hiệu 9 từ có giá trị khác nhau cần thiết trong các tính toán. 1. Giả sử 512 bit đầu vào đầu tiên của ϕ là Z 0 , Z 1 ,..., Z 15 với Z 0 chứa 32 bit trái nhất của 512 bit. Cũng giả sử rằng 128 bit đầu vào thứ hai của ϕ là 4 từ Y 0 , Y 1 , Y 2 , Y 3 . 2. Đặt X 0 := Y 0 , X 1 := Y 1 , X 2 := Y 2 , và X 3 := Y 3 3. Đặt X’ 0 := Y 0 , X’ 1 := Y 1 , X’ 2 := Y 2 , và X’ 3 := Y 3 4. Với i chạy từ 0 đến 63 thực hiện 4 bước sau đây theo thứ tự xác định 5. Đặt 6. Bốn từ Y 0 , Y 1 , Y 2 , Y 3 là đầu ra của hàm vòng ϕ . Sau vòng lặp cuối cùng của hàm vòng các giá trị Y 0 , Y 1 , Y 2 , Y 3 được chuyển thành dãy 16 byte sử dụng phép biến đổi ngược được đặc tả tại Điều 7.1.2, ở đó Y 0 tạo ra 4 byte đầu tiên, Y 1 sẽ tạo ra 4 byte tiếp theo, tiếp tục như vậy. Như vậy byte đầu tiên (trái nhất) tương ứng với byte có trọng số thấp nhất của Y 0 và byte thứ 16 (phải nhất) tương ứng với byte có trọng số cao nhất của Y 3 . 16 byte phải được biến đổi thành một xâu 128 bit sử dụng phép biến đổi ngược được đặc tả tại Điều 6. Nghĩa là bit đầu tiên (trái nhất) tương ứng với bit có trọng số cao nhất của byte đầu tiên (trái nhất) và bit thứ 128 (phải nhất) tương ứng với bit có trọng số thấp nhất của byte thứ 16 (phải nhất). Hình 2 dưới đây mô tả bước a và b của mục 4 của hàm vòng ϕ trong hàm băm chuyên dụng 2 (RIPEMD-128) (một nửa khác, tức là, bước c và d là tương tự). Trong hàm vòng ϕ các bước bước từ a tới c của mục 4 được sử dụng 64 lần ( i = 0,.... 63 ). Hình 2: Một phần hàm vòng trong hàm băm chuyên dụng 2 9 Hàm băm chuyên dụng 3 (SHA-1) Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong các mô hình tổng quát cho hàm băm được mô tả ở TCVN 11816-1:2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 3. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 64 -1 bit. Định danh của hàm băm trong TCVN 11816 đối với hàm băm chuyên dụng 3 là 33 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 3 được xác định trong Điều này còn được gọi với tên chung SHA-1, [2]. 9.1 Các tham số, hàm số và hằng số 9.1.1 Các tham số Đối với hàm băm này L 1 = 512, L 2 = 160 và L H có thể đến 160. 9.1.2 Quy ước thứ tự byte Đặc tả hàm vòng ở điều này được giả định một khối đầu vào là một dãy các từ 32 bit, mỗi khối 512 bit được tạo thành từ 16 từ như vậy. Một dãy 64 byte B 0 , B 1 ,..., B 63 được biểu diễn là một dãy 16 từ Z 0 , Z 1 ,…, Z 15 như sau. Mỗi nhóm 4 byte liên tiếp được coi là một từ, byte đầu tiên của từ có trọng số cao nhất. Vì vậy Z i = 2 24 B 4i + 2 16 B 4i+1 + 2 8 B 4i+2 + B 4i+3 (0 ≤ i ≤ 15) Thực hiện phép biến đổi ngược để chuyển đổi mã băm từ một dãy các từ thành một dãy byte. CHÚ THÍCH: Thứ tự byte được đặc tả ở đây khác với Điều 7.1.2. 9.1.3 Các hàm số Để thuận lợi trong việc cài đặt phần mềm, hàm vòng ϕ được mô tả theo thuật ngữ của các phép toán trên các từ 32-bit. Một dãy các hàm f 0 , f 1 ,.... f 79 được sử dụng trong hàm vòng này ở đó mỗi hàm f i 0 ≤ i ≤ 79 nhận ba từ X 0 , X 1 và X 2 làm đầu vào và đưa ra một từ duy nhất. Các hàm số f i được xác định như sau: f i (X 0 , X 1 , X 2 ) = (X 0 Ù X 1 ) Ú ( Ø X 0 Ù X 2 ), (0 ≤ i ≤ 19), f i (X 0 , X 1 , X 2 ) = X 0 Å X 1 Å X 2 (20 ≤ i ≤ 39), f i (X 0 , X 1 , X 2 ) = (X 0 Ù X 1 ) Ú (X 0 Ù X 2 ) Ú (X 1 Ù X 2 ), (40 ≤ i ≤ 59), f i (X 0 , X 1 , X 2 ) = X 0 Å X 1 Å X 2 . (60 ≤ i ≤ 79), 9.1.4 Các hằng số Một dãy từ hằng số C 0 , C 1 ,..., C 79 được sử dụng trong hàm vòng này. Trong biểu diễn hệ thập lục phân chúng được xác định như sau (bit có trọng số cao nhất tương ứng với bit trái nhất): C i = 5 A 4827999, (0 ≤ i ≤ 19), C i = 6 ED 9 EBA 1, (20 ≤ i ≤ 39), C i = 8 F 1 BBCDC , (40 ≤ i ≤ 49), C i = CA 62 C 1 D 6, (60 ≤ i ≤ 79). 9.1.5 Giá trị khởi tạo Đối với hàm vòng này giá trị khởi tạo IV luôn phải luôn là xâu 160 bit được biểu diễn dưới dạng một dãy 5 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 ở hệ thập lục phân, trong đó Y 0 là 32 bit trái nhất của 160 bit. Y 0 = 67452301, Y 1 = EFCDAB89, Y 2 = 98BADCFE, Y 3 = 10325476, Y 4 = C3D2E1F0. 9.2 Phương pháp đệm Xâu dữ liệu D cần phải đệm thêm vào để số bit của nó là bội nguyên của 512. Quá trình đệm diễn ra như sau: 1. D được nối với duy nhất một bit ‘1’. 2. Kết quả của bước trước được nối với bit 0 giữa 0 và 511 sao cho độ dài thu được (theo bit) của xâu là đồng dư với 448 theo mô đun 512. Một cách rõ ràng hơn, nếu chiều dài ban đầu của D là L D , và r là số dư khi L D chia cho 512, thì số các số 0 cần thêm là hoặc 447- r (nếu r ≤ 447) hoặc 959 - r (nếu r > 447). Kết quả là một xâu bit có độ dài là 64 bit là bội nguyên của 512. 3. Ghép xâu kết quả từ bước trước đó với 64-bit nhị phân của L D , bit có trọng số cao nhất đầu tiên. Trong mô tả hàm vòng này, mỗi một khối dữ liệu D i 512-bit, 1 ≤ i ≤ q , được khai triển thành một dãy 16 từ Z 0 , Z 1 ,…, Z 15 , ở đó Z 0 tương ứng với 32 bit trái nhất của D i . CHÚ THÍCH: Việc nối xâu 64-bit của L D ở bước 3 sao cho xâu 32-bit có trọng số cao nhất và xâu 32-bit có trọng số thấp nhất của L D được sử dụng tương ứng với các từ Z 14 và Z 15 của khối dữ liệu cuối cùng, được dựa trên cơ sở quy ước thứ tự byte tại Điều 9.1.2, byte có trọng số cao nhất của L D là byte trái nhất và byte có trọng số thấp nhất của L D là byte phải nhất. 9.3 Mô tả hàm vòng Hàm vòng ϕ thực hiện như sau. Lưu ý, trong mô tả này sử dụng các ký hiệu W, X 0 , X 1 , X 2 , X 3 , X 4 , Z 0 , Z 1 , Z 2 ,.... Z 79 , để ký hiệu 86 từ có giá trị khác nhau cần thiết trong các tính toán. 1. Giả sử 512 bit đầu vào (đầu tiên) của ϕ là Z 0 , Z 1 ,..., Z 15 với Z 0 là 32 bit trái nhất của 512 bit. Cũng giả sử rằng 160 bit đầu vào thứ 2 của ϕ là 5 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 . 2. Với i = 16 đến 79 đặt Z i := S 1 (Z i-3 Å Z i-8 Å Z i-14 Å Z i-16 ). 3. Đặt X 0 := Y o , X 1 := Y 1 , X 2 := Y 2 , X 3 := Y 3 và X 4 := Y 4 4. Với i = 0 đến 79 thực hiện hai bước sau: 5. Đặt 6. Năm từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 là đầu ra của hàm vòng ϕ . Sau vòng lặp cuối cùng của hàm vòng các giá trị Y 0 , Y 1 , Y 2 , Y 3 , Y 4 được chuyển thành dãy 20 byte sử dụng phép biến đổi ngược được đặc tả tại Điều 9.1.2, ở đó Y 0 tạo ra 4 byte đầu tiên, Y 1 sẽ tạo ra 4 byte tiếp theo, tiếp tục như vậy. Như vậy byte đầu tiên (trái nhất) tương ứng với byte có trọng số cao nhất của Y 0 và byte thứ 20 (phải nhất) tương ứng với byte có trọng số thấp nhất của Y 4 . 20 byte phải được biến đổi thành một xâu 160 bit sử dụng phép biến đổi ngược được đặc tả tại Điều 6. Nghĩa là bit đầu tiên (trái nhất) tương ứng với bit có trọng số cao nhất của byte đầu tiên (trái nhất) và bit thứ 160 (phải nhất) tương ứng với bit có trọng số thấp nhất của byte thứ 20 (phải nhất). Hình 3 dưới đây mô tả bước a và b của mục 4 của hàm vòng ϕ trong hàm băm chuyên dụng 3 (SHA-1). Trong hàm vòng ϕ , các bước từ a và b của mục 4 được sử dụng 80 lần ( i = 0,.... 79 ). Hình 3 - Một phần hàm vòng trong hàm băm chuyên dụng 3 10 Hàm băm chuyên dụng 4 (SHA-256) Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong các mô hình tổng quát cho hàm băm được mô tả ở TCVN 11816-1:2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 4. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 64 -1 bit. Trong TCVN 11816, định danh của hàm băm đối với hàm băm chuyên dụng 4 là 34 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 4 được xác định trong Điều này còn được gọi với tên chung SHA-256, [2]. 10.1 Các tham số, hàm số và hằng số 10.1.1 Các tham số Đối với hàm băm này L 1 = 512, L 2 = 256 và L H có thể đến 256. 10.1.2 Quy ước thứ tự byte Quy ước thứ tự byte của hàm băm này tương tự như quy ước thứ tự byte tại Điều con 9.1.2. 10.1.3 Các hàm số Để thuận lợi trong việc cài đặt phần mềm, hàm vòng ϕ được mô tả theo thuật ngữ của các phép toán trên các từ 32-bit. Một dãy các hàm số e 0 , e 1 , e 2 , e 3 , e 4 , e 5 được dùng trong hàm vòng này, hàm e 0 và e 1 mỗi hàm nhận 3 từ X 0 , X 1 và X 2 làm đầu vào, e 2 , e 3 , e 4 , e 5 mỗi hàm nhận 1 từ X 0 làm đầu vào, và mỗi một hàm trong sáu hàm này đưa ra duy nhất một từ 32 bit. Các hàm số e 0 , e 1 , e 2 , e 3 , e 4 , e 5 được xác định như sau: e 0 ( X 0 , X 1 , X 2 ) = ( X 0 Ù X 1 ) Å ( Ø X 0 Ù X 2 ), e 1 ( X 0 , X 1 , X 2 ) = ( X 0 Ù X 1 ) Å ( X 0 Ù X 2 ) Å ( X 1 Ù X 2 ), e 2 ( X 0 ) = S’ 2 (X 0 ) Å S’ 13 (X 0 ) Å S’ 22 (X 0 ), e 3 ( X 0 ) = S’ 6 (X 0 ) Å S’ 11 (X 0 ) Å S’ 25 (X 0 ), e 4 ( X 0 ) = S’ 7 (X 0 ) Å S’ 18 (X 0 ) Å R 3 (X 0 ), e 5 ( X 0 ) = S’ 17 (X 0 ) Å S’ 19 (X 0 ) Å R 10 (X 0 ), 10.1.4 Các hằng số Một dãy từ hằng số C 0 , C 1 ,…, C 63 được sử dụng trong hàm vòng này. Trong biểu diễn hệ thập lục phân chúng được xác định như sau (bit có trọng số cao nhất tương ứng với bit trái nhất) và theo thứ tự C 0 , C 1 ,..., C 63 . CHÚ THÍCH: Những giá trị này là 32 bit đầu tiên của phần phân số của căn bậc ba của 64 số nguyên tố đầu tiên. 10.1.5 Giá trị khởi tạo Đối với hàm vòng này giá trị khởi tạo IV phải luôn là xâu 256 bit được biểu diễn dưới dạng một dãy 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 ở hệ thập lục phân, trong đó Y 0 là 32 bit trái nhất của 256 bit. Y 0 = 6a09e667, Y 1 = bb67ae85, Y 2 = 3c6ef372, Y 3 = a54ff53a, Y 4 = 510e527f, Y 5 = 9b05688c, Y 6 = 1f83d9ab, Y 7 = 5be0cd19. CHÚ THÍCH: Những giá trị này nhận được bằng cách lấy các phần phân số của căn bậc hai của tám số nguyên tố đầu tiên. 10.2 Phương pháp đệm Phương pháp đệm dữ liệu được sử dụng cho hàm băm này tương tự với phương pháp đệm được quy định tại Điều 9.2. 10.3 Mô tả hàm vòng Hàm vòng ϕ thực hiện như sau. Lưu ý, trong mô tả này, sử dụng các ký hiệu W 1 , W 2 , X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 , Z 0 , Z 1 , Z 2 ,..., Z 63 để ký hiệu 74 từ có giá trị khác nhau cần thiết trong các tính toán. 1. Giả sử 512 bit đầu vào đầu tiên của ϕ là Z 0 , Z 1 ,...,Z 15 trong đó Z 0 là 32 bit trái nhất của 512 bit. Cũng giả sử rằng 256 bit đầu vào thứ 2 của ϕ là 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 . 2. Với i = 16 đến 63 đặt 3. Đặt X 0 := Y 0 , X 1 := Y 1 , X 2 := Y 2 , X 3 := Y 3 , X 4 := Y 4 , X 5 := Y 5 , X 6 := Y 6 , X 7 := Y 7 4. Với i = 0 đến 63 thực hiện ba bước sau: 6. Tám từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 là đầu ra của hàm vòng ϕ . Sau vòng lặp cuối cùng của hàm vòng 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 được chuyển thành một dãy 32 byte sử dụng phép biến đổi ngược được đặc tả tại Điều 10.1.2, ở đó Y 0 tạo ra 4 byte đầu tiên, Y 1 sẽ tạo ra 4 byte tiếp theo, tiếp tục như vậy. Như vậy byte đầu tiên (trái nhất) tương ứng với byte có trọng số cao nhất của Y 0 và byte thứ 32 (phải nhất) tương ứng với byte có trọng số thấp nhất của Y 7 . 32 byte phải được biến đổi thành một xâu 256 bit sử dụng phép biến đổi ngược được đặc tả tại Điều 6. Nghĩa là bit đầu tiên (trái nhất) tương ứng với bit có trọng số cao nhất của byte đầu tiên (trái nhất) và bit thứ 256 (phải nhất) tương ứng với bit có trọng số thấp nhất của byte thứ 32 (phải nhất). Hình 4 dưới đây mô tả các bước a, b và c của 4 của hàm vòng ϕ trong hàm băm chuyên dụng 4 (SHA-256). Trong hàm vòng ϕ các bước a, b và c của mục 4 được sử dụng 64 lần ( i = 0,..., 63) . Hình 4: Một phần của hàm vòng trong hàm băm chuyên dụng 4 11 Hàm băm chuyên dụng 5 (SHA-512) Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong các mô hình tổng quát cho hàm băm được mô tả ở TCVN 11816-1: 2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 5. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 128 -1 bit. Trong TCVN 11816, định danh của hàm băm đối với hàm băm chuyên dụng 5 là 35 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 5 được xác định trong Điều này còn được gọi với tên chung SHA-512, [2]. 11.1 Các tham số, hàm số và hằng số 11.1.1 Các tham số Đối với hàm băm này L 1 = 1024, L 2 = 512 và L H có thể đến 512. 11.1.2 Quy ước thứ tự byte Đặc tả hàm vòng ở điều này được giả định một khối đầu vào là một dãy các từ 64 bit, mỗi khối 1024 bit được tạo thành từ 16 từ như vậy. Một dãy 128 byte B 0 , B 1 ,..., B 127 được biểu diễn là một dãy 16 từ Z 0 , Z 1 ,..., Z 15 như sau. Mỗi nhóm 8 byte liên tiếp được coi là một từ, byte đầu tiên của từ có trọng số cao nhất. Vì vậy Z i = 2 56 B 8i + 2 48 B 8i+1 + 2 40 B 8i+2 + 2 32 B 8i+3 + 2 24 B 8i+4 + 2 16 B 8i+5 + 2 8 B 8i+6 + B 8i+7 (0 ≤ i ≤ 15) Thực hiện phép biến đổi ngược để chuyển đổi mã băm từ một dãy các từ thành một dãy các byte. 11.1.3 Các hàm số Để thuận lợi trong việc cài đặt phần mềm, hàm vòng ϕ được mô tả theo thuật ngữ của các phép toán trên các từ 64-bit. Một dãy các hàm số d 0 , d 1 , d 2 , d 3 , d 4 , d 5 được dùng trong hàm vòng này, hàm d 0 và d 1 mỗi hàm nhận 3 từ 64 bit X 0 , X 1 và X 2 làm đầu vào, d 2 , d 3 , d 4 và d 5 mỗi hàm nhận 1 từ 64 bit làm đầu vào, và mỗi một hàm tròng sáu hàm này đưa ra duy nhất một từ 64 bit. Các hàm d 0 , d 1 , d 2 , d 3 , d 4 , d 5 được xác định như sau: d 0 ( X 0 , X 1 , X 2 ) = ( X 0 Ù X 1 ) Å ( Ø X 0 Ù X 2 ), d 1 ( X 0 , X 1 , X 2 ) = ( X 0 Ù X 1 ) Å ( X 0 Ù X 2 ) Å ( X 1 Ù X 2 ), d 2 ( X 0 ) = S’ 28 (X 0 ) Å S’ 34 (X 0 ) Å S’ 39 (X 0 ), d 3 ( X 0 ) = S’ 14 (X 0 ) Å S’ 18 (X 0 ) Å S’ 41 (X 0 ), d 4 ( X 0 ) = S’ 1 (X 0 ) Å S’ 8 (X 0 ) Å R 7 (X 0 ), d 5 ( X 0 ) = S’ 19 (X 0 ) Å S’ 61 (X 0 ) Å R 6 (X 0 ), 11.1.4 Các hằng số Một dãy từ hằng số C 0 , C 1 ,.... C 79 được sử dụng trong hàm vòng này. Trong biểu diễn hệ thập lục phân chúng được xác định như sau (bit có trọng số cao nhất tương ứng với bit trái nhất) và theo thứ tự C 0 , C 1 ,..., C 79 . CHÚ THÍCH: Những giá trị này là những 64 bit đầu tiên của các phần phân số của căn bậc ba của 80 số nguyên tố đầu tiên. 11.1.5 Giá trị khởi tạo Đối với hàm vòng này giá trị khởi tạo IV phải luôn là xâu 512 bit được biểu diễn dưới dạng một dãy 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 ở hệ thập lục phân, trong đó Y 0 là 64 bit trái nhất của 512 bit. Y 0 = 6a09e667f3bcc908, Y 1 = bb67ae8584caa73b, Y 2 = 3c6ef372fe94f82b, Y 3 = a54ff53a5f1d36f1, Y 4 = 510e527fade682d1, Y 5 = 9b05688c2b3e6c1f, Y 6 =1f83d9abfb41bd6b, Y 7 = 5be0cd19137e2179. CHÚ THÍCH: Những giá trị trên nhận được bằng cách lấy các phần phân số của căn bậc hai của tám số nguyên tố đầu tiên. 11.2 Phương pháp đệm Xâu dữ liệu D cần phải đệm thêm vào để số bit của nó là bội nguyên của 1024. Quá trình đệm diễn ra như sau: 1. D được nối với duy nhất một bit ‘1’. 2. Kết quả của bước trước được nối với bit 0 giữa 0 và 1023 sao cho độ dài thu được (theo bit) của xâu là đồng dư với 896 theo mô đun 1024. Một cách rõ ràng hơn, nếu chiều dài ban đầu của D là L D , và r là số dư khi L D chia cho 1024, thì số các số 0 cần thêm là hoặc 895- r (nếu r ≤ 895) hoặc 1919 - r (nếu r > 895). Kết quả là một xâu bit có độ dài là 128 bit là bội nguyên của 1024. 3. Ghép xâu kết quả từ bước trước đó với 128-bit nhị phân của L D , bit có trọng số cao nhất đầu tiên. Trong mô tả hàm vòng này, mỗi một khối dữ liệu D i 1024-bit, 1 ≤ i ≤ q , được khai triển thành một dãy 16 từ Z 0 , Z 1 ,… ,Z 15 , ở đó Z 0 tương ứng với 64 bit trái nhất của D i . CHÚ THÍCH: Việc nối xâu 128-bit của L D ở bước 3 sao cho xâu 64-bit có trọng số cao nhất và xâu 64-bit có trọng số thấp nhất của L D được sử dụng tương ứng với các từ Z 14 và Z 15 của khối dữ liệu cuối cùng, được dựa trên cơ sở quy ước thứ tự byte tại Điều 11.1.2, byte có trọng số cao nhất của L D là byte trái nhất và byte có trọng số thấp nhất của L D là byte phải nhất. 11.3 Mô tả hàm vòng Hàm vòng ϕ hoạt động như sau. Chú ý rằng, các ký hiệu W 1 , W 2 , X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 , Z 0 , Z 1 , Z 2 ,..., Z 79 , để ký hiệu 90 từ có giá trị khác nhau cần thiết trong các tính toán. 1. Giả sử 1024 bit đầu vào (đầu tiên) của ϕ là Z 0 , Z 1 ,...,Z 15 trong đó Z 0 chứa 64 bit trái nhất của 1024 bit. Cũng giả sử rằng 512 bit đầu vào (thứ 2) của ϕ là 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 . 3. Đặt X 0 := Y 0 , X 1 := Y 1 , X 2 := Y 2 , X 3 := Y 3 , X 4 := Y 4 , X 5 := Y 5 , X 6 := Y 6 , X 7 := Y 7 4. Với i = 0 đến 79 thực hiện ba bước sau: 6. Tám từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 là đầu ra của hàm vòng ϕ . Sau vòng lặp cuối cùng của hàm vòng 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 được chuyển thành một dãy 64 byte sử dụng phép biến đổi ngược được đặc tả tại Điều 11.1.2, ở đó Y 0 tạo ra 8 byte đầu tiên, Y 1 sẽ tạo ra 8 byte tiếp theo, tiếp tục như vậy. Như vậy byte đầu tiên (trái nhất) tương ứng với byte có trọng số cao nhất của Y 0 và byte thứ 64 (phải nhất) tương ứng với byte có trọng số thấp nhất của Y 7 . 64 byte phải được biến đổi thành một xâu 512 bit sử dụng phép biến đổi ngược được đặc tả tại Điều 6. Nghĩa là bit đầu tiên (trái nhất) tương ứng với bit có trọng số cao nhất của byte đầu tiên (trái nhất) và bit thứ 512 (phải nhất) tương ứng với bit có trọng số thấp nhất của byte thứ 64 (phải nhất). Hình 5 dưới đây mô tả các bước a, b và c của mục 4 của hàm vòng ϕ trong hàm băm chuyên dụng 5 (SHA-512). Trong hàm vòng ϕ, các bước a, b và c của mục 4 được sử dụng 80 lần (i = 0,..., 79) Hình 5: Một phần hàm vòng trong hàm băm chuyên dụng 5 12 Hàm băm chuyên dụng 6 (SHA-384) Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong các mô hình tổng quát cho hàm băm được mô tả ở TCVN 11816-1: 2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 6. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 128 -1 bit. Trong TCVN 11816, định danh của hàm băm đối với hàm băm chuyên dụng 6 là 36 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 6 được xác định trong Điều này còn được gọi với tên chung SHA-384, [2]. 12.1 Các tham số, hàm số và hằng số 12.1.1 Các tham số Đối với hàm băm này L 1 = 1024, L 2 = 512 và L H có thể đến 384. 12.1.2 Quy ước thứ tự byte Quy ước thứ tự byte của hàm băm này giống với quy ước thứ tự byte tại Điều 11. 12.1.3 Các hàm số Các hàm số của hàm băm này giống với các hàm số đối với hàm băm tại Điều 11. 12.1.4 Các hằng số Các hằng số của hàm băm này giống với các hằng số của hàm băm tại Điều 11. 12.1.5 Giá trị khởi tạo Đối với hàm vòng này giá trị khởi tạo IV phải luôn là xâu 512 bit được biểu diễn dưới dạng một dãy 8 từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 ở hệ thập lục phân, trong đó Y 0 là 64 bit trái nhất của 512 bit. Y 0 =cbbb9d5dc1059ed8, Y 1 = 629a292a367cd507, Y 2 = 9159015a3070dd17, Y 3 = 152fecd8f70e5939, Y 4 = 67332667ffc00b31, Y 5 = 8eb44a8768581511, Y 6 = db0c2e0d64f98fa7, Y 7 = 47b5481dbefa4fa4. CHÚ THÍCH: Những giá trị trên nhận được từ các phần phân số của căn bậc hai của các số nguyên tố thứ 9 tới thứ 16. 12.2 Phương pháp đệm Phương pháp đệm dùng trong hàm băm này giống với phương pháp đệm được đặc tả trong Điều 11.2. 12.3 Mô tả hàm vòng Hàm vòng dùng với hàm băm này giống với hàm vòng được xác định trong Điều 11.3. Giá trị băm 384 bit cuối cùng nhận được bằng cách cắt bớt đầu ra của SHA-512 để lấy được 384 bit trái nhất của nó. 13 Hàm băm chuyên dụng 7 (WHIRLPOOL) Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong các mô hình tổng quát cho hàm băm được mô tả ở TCVN 11816-1: 2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng được đặc tả ở đây khi sử dụng trong mô hình tổng quát để xác định hàm băm chuyên dụng 7. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 258 -1 bit. Trong TCVN 11816, định danh của hàm băm đối với hàm băm chuyên dụng 7 là 37 (theo hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 7 được xác định trong Điều này còn được gọi với tên chung WHIRLPOOL, [4]. 13.1 Các tham số, hàm số và hằng số 13.1.1 Các tham số Đối với hàm băm này L 1 = 512, L 2 = 512 và L H có thể đến 512. 13.1.2 Quy ước thứ tự byte Đặc tả hàm vòng ở điều này được giả định một khối đầu vào là ma trận M (tất cả các ma trận có kích thước 8x8 với các phần tử được chọn từ trường GF(2 8 )) , mỗi khối 512 bit được tạo thành từ một ma trận như vậy. Dãy 64 byte B = (B 0 , B 1 , .... B 63 ) được biểu diễn như một ma trận M theo cách sau. Phần tử ở hàng đầu tiên và cột đầu tiên của ma trận là byte trái nhất (byte trái nhất tương ứng với byte trọng số lớn nhất) của dãy B (tức B 0 ), phần tử ở hàng đầu và cột thứ hai của ma trận sẽ là byte thứ 2 trái nhất của B (tức B 1 ), …., và phần tử ở hàng thứ 8 và cột thứ 8 của ma trận sẽ là byte phải nhất của B (tức B 63 ). Sử dụng hàm c 0 được chỉ ra tại Điều con 13.1.3 để thực hiện điều này. Thực hiện phép biến đổi ngược để chuyển đổi mã băm từ một ma trận như vậy thành một dãy các byte. 13.1.3 Các hàm số Để thuận lợi trong việc cài đặt phần mềm, hàm vòng ϕ được mô tả theo thuật ngữ của các phép toán trên ma trận M . Một dãy các hàm số c 0 , c 1 , c 2 , c 3 , c 4 được dùng trong hàm vòng này. Chúng được xác định như sau Hàm c 0 nhận một dãy 64 byte B = (B 0 , B 1 , .... B 63 ) là đầu vào, và đưa ra ma trận Z’ = (z’ ij ) trong đó z’ ij = B 8i+j (0 ≤ i, j ≤ 7) . Điều này có nghĩa là Z’ = c 0 (B) khi và chỉ khi z’ ij = B 8i+j (0 ≤ i, j ≤ 7) . Hàm c 1 nhận ma trận X” = (x” ij ) là đầu vào và đưa ra một ma trận W’ = (w’ ij ) trong đó w’ ij = s[x” ij ] (0 ≤ i, j ≤ 7) . và s là hộp thế phi tuyến. Nghĩa là W’ = c 1 (X”) khi và chỉ khi w’ ij = s[x” ij ] (0 ≤ i, j ≤ 7) . Hộp thế s thay thế phần tử x Î GF(2 8 ) bằng một phần tử khác s[x] Î GF(2 8 ) như được đặc tả ở Bảng 2 (các phần tử trong cột đầu tiên là “nửa trọng số cao nhất” của x , và các phần tử trong hàng đầu là “nửa trọng số thấp nhất” của x ; ví dụ, nếu x = 01010110 = 56 (hệ thập lục phân), s[x] = 49 (hệ thập lục phân) = 01001001. Bảng 2 - Hộp thế S 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 18 23 C6 E8 87 B8 01 4F 36 A6 D2 F5 79 6F 91 52 1 60 BC 9B 8E A3 0C 7B 35 1D E0 D7 C2 2E 4B FE 57 2 15 77 37 E5 9F F0 4A DA 58 C9 29 0A B1 A0 6B 85 3 BD 5D 10 F4 CB 3E 05 67 E4 27 41 8B A7 7D 95 D8 4 FB EE 7C 66 DD 17 47 9E CA 2D BF 07 AD 5A 83 33 5 63 02 AA 71 C8 19 49 D9 F2 E3 5B 88 9A 26 32 B0 6 E9 0F D5 80 BE CD 34 48 FF 7A 90 5F 20 68 1A AE 7 B4 54 93 22 64 F1 73 12 40 08 C3 EC DB A1 8D 3D 8 97 00 CF 2B 76 82 D6 1B B5 AF 6A 50 45 F3 30 EF 9 3F 55 A2 EA 65 BA 2F C0 DE 1C FD 4D 92 75 06 8A A B2 E6 0E 1F 62 D4 A8 96 F9 C5 25 59 84 72 39 4C B 5E 78 38 8C D1 A5 E2 61 B3 21 9C 1E 43 C7 FC 04 C 51 99 6D 0D FA DF 7E 24 3B AB CE 11 8F 4E B7 EB D 3C 81 94 F7 B9 13 2C D3 E7 6E C4 03 56 44 7F A9 E 2A BB C1 53 DC 0B 9D 6C 31 74 F6 46 AC 89 14 E1 F 16 3A 69 09 70 B6 D0 ED CC 42 98 A4 28 5C F8 86 Hàm c 2 nhận đầu vào là ma trận X” = (x” ij ) và đưa ra ma trận W’ = (w’ ij ) với w” ij = X” (i-j)mod 8j , (0 ≤ i, j ≤ 7) . Điều này có nghĩa là W’ = c 2 (X”) khi và chỉ khi w” ij = X” (i-j)mod 8j , (0 ≤ i, j ≤ 7) . Hàm c 3 nhận ma trận X” là đầu vào và đưa ra ma trận W’ trong đó W’ = X” • C” , và ở đây C” là ma trận vòng 8x8 với các phần tử được chọn từ trường GF(2 8 ) , như được đặc tả dưới đây: Điều này có nghĩa là W’ = c 3 (X”) khi và chỉ khi W” = X” • C”. Hàm c 4 nhận đầu vào là 2 ma trận X” = (x” ij ) và Y” = (y” ij ) và đưa ra một ma trận duy nhất W” = (w” ij ) trong đó w’ ij = x” ij Å y’ ij , (0 ≤ i, j ≤ 7). Điều này có nghĩa là W’ = c 4 ( X” ) khi và chỉ khi w’ ij = x” ij Å y’ ij , (0 ≤ i, j ≤ 7). 13.1.4 Các hằng số Một dãy các ma trận hằng số A r = ( A r ij ) ( 0 <> r ≤ 10) được sử dụng trong hàm vòng này. Hằng số vòng cho vòng thứ r là một ma trận, được xác định như sau: A r 0j = s[8(r-1) + j] , (0 ≤ j ≤ 7), A r ij = 0, (1 ≤ i ≤ 7, 0 ≤ j ≤ 7). 13.1.5 Giá trị khởi tạo Giá trị khởi tạo IV là một xâu có 512 bit ‘0’. 13.2 Phương pháp đệm Xâu dữ liệu D cần phải đệm thêm vào để số bit của nó là bội nguyên của 512. Quá trình đệm diễn ra như sau: 1. D được nối với duy nhất một bit ‘1’. 2. Kết quả của bước trước được nối với bit 0 giữa 0 và 511 sao cho độ dài thu được (theo bit) của xâu là bội lẻ của 256. 3. Nếu độ dài ban đầu của D là L D , ghép xâu thu được từ bước trước đó với 256 nhị phân bit của L D , bit trọng số lớn nhất ở đầu. Trong mô tả của hàm vòng này, mỗi khối dữ liệu D i 512 bit, 1 ≤ i ≤ q , được khai triển thành ma trận Z’ = (z’ ij ) (0 ≤ i, j ≤ 7), được đặc tả tại Điều 13.1.2, ở đó z’ 00 tương ứng với 8 bit trái nhất của D i và z’ 77 tương ứng với 8 bit phải nhất của D i . CHÚ THÍCH: Việc nối xâu 256 bit của L D trong bước 3 sao cho xâu 256-bit được sử dụng trực tiếp như nửa thứ hai của ma trận dữ liệu cuối cùng, dựa trên quy ước thứ tự byte ở Điều 13.1.2, byte có trọng số lớn nhất của L D ở hàng thứ 5 và cột đầu tiên, byte có trọng số thấp nhất của L D ở dòng thứ 8 và cột thứ 8. 13.3 Mô tả hàm vòng Hàm vòng ϕ hoạt động như sau. Chú ý rằng, các ký hiệu W’, X”, K 0 , K 1 , …, K 10 để ký hiệu 13 ma trận khác nhau, các phần tử được lựa chọn từ trường GF(2 8 ) với các giá trị cần thiết trong các tính toán. 1. Giả sử 512 bit đầu vào (đầu tiên) của ϕ là ma trận Z' với các phần tử được chọn từ trường GF(2 8 ) được định dạng bằng cách sử dụng quy ước trật tự byte được đặc tả trong Điều 13.1.2. Cũng giả sử rằng 512 bit đầu vào thứ hai của ϕ là ma trận Y' với các phần tử được chọn từ trường GF(2 8 ) . 2. Đặt K 0 := Y' và với i từ 1 đến 10, đặt: K i := c 4 ( c 3 ( c 2 ( c 1 ( K i-1 )))), A i ) CHÚ THÍCH: Bước này mở rộng ma trận Y’ thành dãy các khoá vòng K 0 ,…, K 10 . 3. Đặt X” := c 4 ( Z’, K 0 ); và với j từ 1 đến 10 thực hiện hai bước sau (a) W’:= c 4 (c 3 (c 2 (c 1 (X”))), K j ); (b) X”:=W’. 4. Đặt Y’ := W’ Å K 0 Å Z’ . 5. Ma trận Y’ biểu diễn đầu ra của hàm vòng ϕ . Sau vòng lặp cuối cùng của hàm vòng, ma trận Y’ được chuyển thành dãy 64 byte sử dụng phép biến đổi ngược được đặc tả tại Điều 13.1.2, ở đó phần tử ở hàng đầu tiên và cột đầu tiên của ma trận tạo ra byte đầu tiên, phần tử ở hàng đầu tiên và cột thứ hai của ma trận sẽ tạo ra byte tiếp theo,..., phần tử ở hàng thứ 8 và cột thứ 8 của ma trận tạo ra byte cuối cùng. 64 byte được chuyển thành một xâu 512 bit sử dụng phép biến đổi ngược được đặc tả trong Điều 6, có nghĩa là, bit thứ nhất (trái nhất) tương ứng với bit có trọng số cao nhất của byte đầu tiên (trái nhất), và bit thứ 512 (phải nhất) tương ứng với bit có trọng số thấp nhất của byte thứ 64 (phải nhất). Hình 6 dưới đây chỉ ra các bước a) và b) của mục 3 trong hàm vòng ϕ của hàm băm chuyên dụng 7 (WHIRLPOOL). Trong hàm vòng ϕ các bước được chỉ ra dưới hình 6 được thực hiện 10 lần ( j = 1, …, 10). Hình 6. Một phần của hàm vòng trong hàm băm chuyên dụng 7 14 Hàm băm chuyên dụng 8 (SHA-224) Hàm băm chuyên dụng 8 được bổ sung bởi ISO/IEC 10118-3:2004/Amd. 1:2006. Điều này đặc tả một phương pháp đệm, một giá trị khởi tạo và một hàm vòng để sử dụng trong mô hình tổng quát đối với các hàm băm được mô tả trong TCVN 11816-1:2017. Phương pháp đệm, giá trị khởi tạo và hàm vòng đặc tả tại đây được sử dụng trong mô hình tổng quát trên cùng với định nghĩa hàm băm chuyên dụng 8. Hàm băm chuyên dụng này có thể được áp dụng cho tất cả các xâu dữ liệu D có nội dung lớn nhất là 2 64 -1 bit. Trong TCVN 11816, định danh hàm băm đối với hàm băm chuyên dụng 8 là 38 (hệ thập lục phân). CHÚ THÍCH: Hàm băm chuyên dụng 8 được định nghĩa trong mục này được gọi chung là SHA-224, [2]. 14.1 Các tham số, hàm số và hằng số 14.1.1 Các tham số Đối với hàm băm này L 1 = 512, L 2 = 256 và L H = 224. 14.1.2 Quy ước thứ tự byte Quy ước xếp thứ tự byte đối với hàm băm này giống với quy ước đối với hàm băm của Điều 10. 14.1.3 Các hàm số Các hàm số đối với hàm băm này giống với các hàm số đối với hàm băm của điều 10. 14.1.4 Các hằng số Các hằng số đối với hàm băm này giống các hằng số đối với hàm băm của điều 10. 14.1.5 Giá trị khởi tạo Đối với hàm vòng này giá trị khởi tạo IV luôn là xâu 256 bit sau đây được biểu diễn như một dãy tám từ Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 cơ số 16 ở đó Y 0 biểu diễn 32 bit bên trái nhất của 256 bit. Y 0 = c1059ed8 Y 1 = 367cd507 Y 2 = 3070dd17 Y 3 =f70e5939 Y 4 = ffc00b31 Y 5 = 68581511 Y 6 = 64f98fa7 Y 7 = befa4fa4 CHÚ THÍCH: Các giá trị này là 32 bit thứ tự thấp của các giá trị được đặc tả trong 12.1.5. 14.2 Phương pháp đệm Phương pháp đệm sẽ được dùng với hàm băm này cần phải là giống như phương pháp đệm được định nghĩa trong Điều 10.2. 14.3 Mô tả hàm vòng Hàm vòng được dùng với hàm băm này cần phải giống hàm vòng được định nghĩa trong Điều 10.3. Giá trị băm 224 bit cuối cùng nhận được bằng cách cắt bớt đầu ra của SHA-256 để lấy được 224 bit trái nhất của nó Phụ lục A (Tham khảo) Các ví dụ Phụ lục này đưa ra một số ví dụ cho việc tính toán của hàm băm chuyên dụng 1-8. Với mỗi hàm băm, các giá trị trung gian nhận được trong quá trình thực hiện hàm băm cũng được đưa ra đối với một số ví dụ. Trong phụ lục này, đề cập đến mã ASCII của xâu dữ liệu; chúng tương đương với loại mã sử dụng ISO 646. A.1 Hàm băm chuyên dụng 1 CHÚ THÍCH: Tài liệu tham khảo [3] chứa mô tả dạng mã giả của hàm băm chuyên dụng 1. A.1.1 Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 160-bit dưới đây. A.1.2 Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là bản mã ASCII của ký tự ‘a’. Mã băm là xâu 160-bit dưới đây: A.1.3 Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu 3 byte là bản mã ASCII của ‘abc’. Nó tương ứng với xâu bit: 01100001 01100010 01100011’ Sau quá trình đệm, khối 16 từ đơn nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X’ 0 , X’ 1 , X’ 2 , X’ 3 , X’ 4 nhận được lần lượt như sau (biểu diễn dưới dạng thập lục phân): Mã băm là xâu 160 bit sau: A.1.4 Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Mã băm là xâu 160 bit sau: A.1.5 Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 26 byte là bản mã ASCII của ‘abcdefghijklmnopqrstuvwxyz’ Mã băm là xâu 160 bit sau: A.1.6 Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Mã băm là xâu 160 bit sau: A.1.7 Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 80 byte là bản mã ASCII của tám lần lặp xâu ‘1234567890’ Mã băm là xâu 160 bit sau: A.1.8 Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Sau quá trình đệm, hai khối 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X’ 0 , X’ 1 , X’ 2 , X’ 3 , X’ 4 (biểu diễn dưới dạng thập lục phân) nhận được lần lượt như sau đối với việc tính khối đầu tiên: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X’ 0 , X’ 1 , X’ 2 , X’ 3 , X’ 4 (biểu diễn dưới dạng thập lục phân) nhận được lần lượt như sau đối với việc tính khối thứ hai: Mã băm là xâu 160 bit sau: A.1.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu 1000000 byte là bản mã ASCII của 10 6 kí tự ‘a’ Mã băm là xâu 160 bit sau: A.1.10. Ví dụ 10 Trong ví dụ này xâu dữ liệu là xâu 112 byte là bản mã ASCII của Mã băm là xâu 160 bit sau: A.1.11. Ví dụ 11 Trong ví dụ này xâu dữ liệu là xâu 32 byte là bản mã ASCII của Mã băm là xâu 160 bit sau: A.2. Hàm băm chuyên dụng 2 A.2.1. Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 128-bit dưới đây: A.2.2. Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là mã ASCII của ký tự ‘a’. Mã băm là xâu 128-bit dưới đây: A.2.3. Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu có 3 byte là bản mã ASCII của ‘abc’. Tương ứng với xâu bit: ‘01100001 01100010 01100011’ Sau quá trình đệm, khối đơn 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X’ 0 , X’ 1 , X’ 2 , X’ 3 (biểu diễn dưới dạng hệ thập lục phân) nhận được lần lượt như sau: Mã băm là xâu 128 bit sau: A.2.4. Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của 'message digest' Mã băm là xâu 128 bit sau: A.2.5. Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 26 byte là bản mã ASCII của ‘abcdefghijklmnopqrstuvwxyz’ Mã băm là xâu 128 bit sau: A.2.6. Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Mã băm là xâu 128 bit sau: A.2.7. Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 80 byte là bản mã ASCII lặp 8 lần xâu ‘1234567890’ Mã băm là xâu 128 bit sau: A.2.8. Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Sau quá trình đệm, hai khối 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X’ 0 , X’ 1 , X’ 2 , X’ 3 (biểu diễn dưới dạng hệ thập lục phân) nhận được trong quá trình tính toán đối với khối thứ nhất lần lượt như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X’ 0 , X’ 1 , X’ 2 , X’ 3 (biểu diễn dưới dạng hệ thập lục phân) nhận được trong quá trình tính toán đối với khối thứ hai lần lượt như sau: Mã băm là xâu 128 bit sau: A.2.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu 1000000 byte là bản mã ASCII của 10 6 lần kí tự ‘a’. Mã băm là xâu 128 bit sau: A.2.10. Ví dụ 10 Trong ví dụ này xâu dữ liệu là xâu 112 byte là bản mã ASCII của Mã băm là xâu 128 bit sau: A.2.11. Ví dụ 11 Trong ví dụ này xâu dữ liệu là xâu 32 byte là ba3n mã ASCII của Mã băm là xâu 128 bit sau: A.3. Hàm băm chuyên dụng 3 A.3.1. Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 160-bit dưới đây: A.3.2. Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là bản mã ASCII của ký tự ‘a’. Mã băm là xâu 160-bit dưới đây: A.3.3. Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu 3 byte là bản mã ASCII của ‘abc’. Nó tương ứng với xâu bit: ‘01100001 01100010 01100011’ Sau quá trình đệm, khối đơn 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 (biểu diễn dưới dạng hệ thập lục phân) nhận được như sau: Mã băm là xâu 160 bit sau: A.3.4. Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Mã băm là xâu 160 bit sau: A.3.5. Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 26 byte là bản mã ASCII của ‘abcdefghijklmnopqrstuvwxyz’ Mã băm là xâu 160 bit sau: A.3.6. Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Mã băm là xâu 160 bit sau: A.3.7. Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 80 byte là bản mã ASCII lặp 8 lần của xâu ‘1234567890’ Mã băm là xâu 160 bit sau: A.3.8. Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Sau quá trình đệm, hai khối 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 (biểu diễn dưới dạng thập lục phân) nhận được trong quá trình tính toán khối đầu tiên như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 (biểu diễn dưới dạng thập lục phân) nhận được trong quá trình tính toán khối thứ hai như sau: Mã băm là xâu 160 bit sau: A.3.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu 1000000 byte là bản mã ASCII lặp 10 6 lần kí tự ‘a’ Mã băm là xâu 160 bit sau: A.3.10. Ví dụ 10 Trong ví dụ này xâu dữ liệu là xâu 112 byte là bản mã ASCII của (không có xuống dòng sau n đầu tiên) Mã băm là xâu 160 bit sau: A.3.11. Ví dụ 11 Trong ví dụ này xâu dữ liệu là xâu 32 byte là bản mã ASCII của Mã băm là xâu 160 bit sau: A.4. Hàm băm chuyên dụng 4 A.4.1. Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 256-bit dưới đây: A.4.2. Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là bản mã ASCII của ký tự ‘a’. Mã băm là xâu 256-bit dưới đây: A.4.3. Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu 3 byte là bản mã ASCII của ‘abc’. Nó tương ứng với xâu bit: ‘01100001 01100010 01100011’. Sau quá trình đệm, khối đơn 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 (biểu diễn dưới dạng thập lục phân) nhận được như sau: Các giá trị 8 từ tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của vòng lặp cuối cùng của hàm vòng. Giá trị băm là xâu 256 bit sau: A.4.4. Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Giá trị băm là xâu 256 bit sau: A.4.5. Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 26 byte là bản mã ASCII của Giá trị băm là xâu 256 bit sau: A.4.6. Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Giá trị băm là xâu 256 bit sau: A.4.7. Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 80 byte là bản mã ASCII lặp 8 lần của xâu ‘1234567890’ Mã băm là xâu 256 bit sau: A.4.8. Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Sau quá trình đệm, hai khối 16 từ tiếp theo nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 (biểu diễn dưới dạng thập lục phân) lần lượt thu được trong quá trình thực hiện trên khối đầu tiên như sau: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của hàm vòng trong quá trình tính toán khối đầu tiên: Các giá trị Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 (biểu diễn dưới dạng thập lục phân) lần lượt thu được trong quá trình thực hiện trên khối thứ hai như sau: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của vòng lặp cuối cùng của hàm vòng. Giá trị băm đối với bản tin này là: A.4.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu 1000000 byte gồm mã ASCII của kí tự ‘a’ được lặp 10 6 lần. Mã băm là xâu 256 bit sau: A.4.10. Ví dụ 10 Trong ví dụ này xâu dữ liệu là xâu 112 byte là bản mã ASCII của (không có xuống dòng sau n đầu tiên). Mã băm là xâu 256 bit sau: A.4.11.Ví dụ 11 Trong ví dụ này xâu dữ liệu là xâu 32 byte là bản mã ASCII của Mã băm là xâu 256 bit sau: A.5. Hàm băm chuyên dụng 5 A.5.1. Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 512-bit dưới đây: A.5.2. Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là mã ASCII của ký tự ‘a’. Mã băm là xâu 512-bit dưới đây: A.5.3. Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu 3 byte là bản mã ASCII của ‘abc’. Nó tương ứng với xâu bit: ‘01100001 01100010 01100011’ Sau quá trình đệm, khối đơn 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 (biểu diễn dưới dạng thập lục phân) lần lượt thu được như sau: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của vòng lặp cuối cùng của hàm vòng. Giá trị băm là xâu 512 bit sau: A.5.4. Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Giá trị băm là xâu 512 bit sau: A.5.5. Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 26 byte là bản mã ASCII của ‘abcdefghijklmnopqrstuvwxyz’ Giá trị băm là xâu 512 bit sau: A.5.6. Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Giá trị băm là xâu 512 bit sau: A.5.7. Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 80 byte là bản mã ASCII lặp 8 lần xâu ‘1234567890’ Mã băm là xâu 512 bit sau: A.5.8. Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Mã băm là xâu 512 bit sau: A.5.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu 1000000 byte là bản mã ASCII kí tự ‘a’ lặp 10 6 lần. Mã băm là xâu 512 bit sau: A.5.10. Ví dụ 10 Trong ví dụ này xâu dữ liệu là xâu 112 byte là bản mã ASCII của (không có xuống dòng sau n đầu tiên). Sau quá trình đệm, hai khối 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 (biểu diễn dưới dạng thập lục phân) thu được trong tiến trình khối đầu tiên: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của hàm vòng trong tiến trình khối đầu tiên: Các giá trị Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 (biểu diễn dưới dạng thập lục phân) thu được trong tiến trình khối thứ hai: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra bước lặp cuối cùng của hàm vòng: Giá trị băm thu được đối với bản tin này là: A.5.11. Ví dụ 11 Trong ví dụ này xâu dữ liệu là xâu 32 byte là bản mã ASCII của Mã băm là xâu 512 bit sau: A.6. Hàm băm chuyên dụng 6 A.6.1. Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 384-bit dưới đây: A.6.2. Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là mã ASCII của ký tự ‘a’. Mã băm là xâu 384-bit dưới đây: A.6.3. Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu 3 byte gồm mã ASCII của ‘abc’. Nó tương ứng với xâu bit: ‘01100001 01100010 01100011’ Sau quá trình đệm, khối đơn 16 từ nhận được từ xâu dữ liệu như sau: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 (biểu diễn dưới dạng thập lục phân) thu được: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của vòng lặp cuối cùng của hàm vòng: Giá trị băm là xâu 384 bit sau: A.6.4. Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Giá trị băm là xâu 384 bit sau: A.6.5. Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 26 byte là bản mã ASCII của ‘abcdefghijklmnopqrstuvwxyz’ Giá trị băm là xâu 384 bit sau: A.6.6. Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Giá trị băm là xâu 384 bit sau: A.6.7. Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 80 byte bao gồm 8 phép lặp của bản mã ASCII của ‘1234567890’ Mã băm là xâu 384 bit sau: A.6.8. Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Mã băm là xâu 384 bit sau: A.6.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu 1000000 byte là bản mã ASCII tương ứng kí tự ‘a’ được lặp 10 6 lần. Mã băm là xâu 384 bit sau: A.6.10. Ví dụ 10 Trong ví dụ này xâu dữ liệu là xâu 112 byte là bản mã ASCII của Sau quá trình đệm, hai khối 16 từ sau nhận được từ xâu dữ liệu: Các giá trị X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 (biểu diễn dưới dạng thập lục phân) thu được trong tiến trình khối đầu tiên: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của hàm vòng trong tiến trình khối đầu tiên: Các giá trị Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 (biểu diễn dưới dạng thập lục phân) thu được trong tiến trình khối thứ hai: Tám giá trị tiếp theo Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của vòng lặp cuối cùng của hàm vòng: Giá trị băm đối với bản tin này là: A.6.11. Ví dụ 11 Trong ví dụ này xâu dữ liệu là xâu 32 byte là bản mã ASCII của Mã băm là xâu 384 bit sau: A.7. Hàm băm chuyên dụng 7 A.7.1. Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 512-bit dưới đây: A.7.2. Ví dụ 2 Trong ví dụ này, xâu dữ liệu gồm một byte duy nhất, chính là mã ASCII của ký tự ‘a’. Mã băm là xâu 512-bit dưới đây: A.7.3. Ví dụ 3 Trong ví dụ này, xâu dữ liệu là xâu 3 byte là bản mã ASCII của ‘abc’. Sau quá trình đệm, ma trận Z’ kích thước 8 xã 8 nhận được từ xâu dữ liệu là như sau. Ma trận K 0 (từ giá trị khởi tạo IV ) và ma trận X ” là như sau. Sau đây là các giá trị liên tiếp (biểu diễn ở dạng thập lục phân) của các biến K i với i = 1 tới 10 và W ’ Giá trị đầu ra Y’ từ hàm vòng là như sau. Mã băm là 512 bit sau. A.7.4. Ví dụ 4 Trong ví dụ sau, xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Mã băm là xâu 512 bit sau. A.7.5. Ví dụ 5 Trong ví dụ sau, xâu dữ liệu là xâu 26 byte gồm mã ASCII của ‘abcdefghijklmnopqrstuvwxyz’. Mã băm là xâu 512 bit sau. A.7.6. Ví dụ 6 Trong ví dụ sau, xâu dữ liệu là xâu có 62 byte là bản mã ASCII của ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Mã băm là xâu 512 bit sau. A.7.7. Ví dụ 7 Trong ví dụ sau, xâu dữ liệu là xâu có 80 byte gồm mã ASCII của 8 lần lặp lại của ‘1234567890’ Mã băm là xâu 512 bit sau. A.7.8. Ví dụ 8 Trong ví dụ sau, xâu dữ liệu là xâu 32 byte gồm mã ASCII của Sau quá trình đệm, hai ma trận 8x8 nhận được từ xâu dữ liệu là như sau. Ma trận Z’ thứ nhất như sau. Đối với ma trận Z’ thứ nhất, ma trận K 0 (từ giá trị khởi tạo IV ) và ma trận X ” là như sau. Sau đây là các giá trị liên tiếp (biểu diễn theo hệ thập lục phân) của các biến K i với i = 1 tới 10 và W ’. Giá trị đầu ra Y ’ của hàm vòng đối với ma trận Z ’ thứ nhất là như sau. Ma trận Z ’ thứ hai là như sau. Đối với ma trận Z ’ thứ hai, ma trận K 0 và ma trận X ’ là như sau. Sau đây là giá trị liên tiếp (biểu diễn thập lục phân) của các biến K i với i = 1 tới 10 và W ’. Giá trị đầu ra Y’ từ hàm vòng cho mẫu trận Z’ thứ hai là Mã băm là xâu 512 bit sau A.7.9. Ví dụ 9 Trong ví dụ này xâu dữ liệu là xâu có 1000000 byte là bản mã ASCII của ‘a’ được lặp lại 10 6 lần. Mã băm là xâu 512 bit sau. A.8 Hàm băm chuyên dụng 8 A.8.1 Ví dụ 1 Trong ví dụ này, xâu dữ liệu là một xâu rỗng, tức là xâu có độ dài bằng không. Mã băm là xâu 224-bit dưới đây: A.8.2 Ví dụ 2 Trong ví dụ này xâu dữ liệu bao gồm một byte đơn là bản mã ASCII của chữ ‘a’. Mã băm là xâu 224 bit sau đây A.8.3 Ví dụ 3 Trong ví dụ này xâu dữ liệu là xâu ba byte bản mã ASCII của ‘abc’. Xâu này tương đương với xâu bit ‘01100001 01100010 01100011’. Sau quá trình đệm 16 khối từ đơn nhận được từ xâu dữ liệu như sau: Sau đây là (biểu diễn ở hệ thập lục phân của) các giá trị liên tiếp của các biến số Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 Tám từ sau đây Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của phép lặp sau cùng của hàm vòng: Mã băm là xâu 224 bit sau: A.8.4 Ví dụ 4 Trong ví dụ này xâu dữ liệu là xâu 14 byte là bản mã ASCII của ‘message digest’ Mã băm là xâu 224 bit sau: A.8.5 Ví dụ 5 Trong ví dụ này, xâu dữ liệu là xâu 62 byte là bản mã ASCII của ‘ABCDEFGHlJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’ Mã băm là xâu 224 bit sau: A.8.6 Ví dụ 6 Trong ví dụ này xâu dữ liệu là xâu 80 byte bao gồm 8 phép lặp của bản mã ASCII của ‘1234567890’ Mã băm là xâu 224 bit sau: A.8.7 Ví dụ 7 Trong ví dụ này xâu dữ liệu là xâu 56 byte là bản mã ASCII của Sau quá trình đệm, hai khối 16 từ nhận được từ xâu dữ liệu như sau Sau đây là (biểu diễn hệ thập lục phân) của các giá trị liên tiếp của các biến số Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 trong xử lý khối đầu tiên: Tám từ sau đây Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra của hàm vòng trong xử lý khối đầu tiên Sau đây là (biểu diễn hệ thập lục phân) các giá trị liên tiếp của các biến số Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 trong xử lý khối thứ hai. Tám từ sau đây Y 0 , Y 1 , Y 2 , Y 3 , Y 4 , Y 5 , Y 6 , Y 7 biểu diễn đầu ra phép lặp cuối cùng của hàm vòng. Giá trị băm là xâu 224 bit sau đây: A.8.8 Ví dụ 8 Trong ví dụ này xâu dữ liệu là xâu 1.000.000 byte là bản mã ASCII của ‘a’ lặp lại 10 6 lần. Mã băm là xâu 224 bit sau đây. A.8.9 Ví dụ 9 Trong ví dụ này xâu dữ liệu chỉ là một bit 0. Mã băm là xâu 224 bit sau đây. A.8.10 Ví dụ 10 Trong ví dụ này xâu dữ liệu chỉ là một bit 1. Mã băm là xâu 224 bit sau đây. A.8.11. Ví dụ 11 Trong ví dụ này xâu dữ liệu bao gồm 101 bit là 1010101...01. Mã băm là xâu 224 bit sau đây. A.8.12 Ví dụ 12 Trong ví dụ này xâu dữ liệu bao gồm 256 octet, là 00 01 02 03 ...FE FF. Mã băm là xâu 224 bit sau đây. A.8.13 Ví dụ 13 Trong ví dụ này xâu dữ liệu là H 0 bao gồm 224 bit 0. Đối với i = 1 đến 100 gọi H i là mã băm của H i-1 . Mã băm H 100 là xâu 224 bit sau đây. A.9 Các véctơ kiểm tra hoàn chỉnh đối với các hàm băm chuyên dụng 4, 5, 6 và 8 Các hàm băm chuyên dụng SHA-256, SHA-384, SHA-512 và SHA-224 được đặc tả như là một phần của TCVN 11816-3:2017 (ISO/IEC 10118-3). Phụ lục A.4, A.5, A.6 và A.8 tương ứng cung cấp các véctơ kiểm tra đối với bốn hàm băm này. Một thiếu sót quan trọng của các ví dụ này là tất cả các giá trị đầu vào được kết hợp riêng rẽ từ các ký tự đánh số theo bảng chữ cái mã ASCII. Bổ sung này chứa một tập đầy đủ hơn các véctơ kiểm tra đối với các hàm băm này. Lựa chọn các véctơ kiểm tra là dựa trên các xem xét sau đây: 1. Các đầu vào độ dài từ 1 đến 512 (đối với SHA-224 và SHA-256) hoặc 1024 (đối với SHA-384 và SHA-512) đã được định nghĩa để kiểm tra lược đồ đệm. (Các ví dụ trong Phụ lục A.4 - A.6 và A.8 chỉ chứa các thông báo với các độ dài là bội của 8). Một số nhỏ các véctơ kiểm tra với độ dài lớn hơn được đưa vào. 2. Đảm bảo rằng tất cả các từ 32 bit (SHA-224 và SHA-256) hoặc tất cả các từ 64 bit (SHA-384 và SHA-512) với trọng số Hamming 1 xảy ra ít nhất một lần như là một phần của đầu vào. Điều này được thực hiện để kiểm tra các hàm mở rộng thông báo. 3. Xử lý tràn nhớ cờ carry từ một byte sang byte khác được kiểm tra bằng cách đảm bảo rằng các phép cộng sau đây xảy ra ít nhất một lần: a. Đối với SHA-224 và SHA-256 b. Đối với SHA-384 và SHA-512 Danh sách đầy đủ các véctơ kiểm tra có thể được tìm thấy tại địa chỉ URL sau đây: http://www.iaik.tu-graz.ac.at/research/sha2_testvectors.zip CHÚ THÍCH: Các véctơ kiểm tra hoàn chỉnh đối với các hàm băm còn lại được chứa trong phần này của ISO/IEC 10118 không có tại địa chỉ tham chiếu trên. Phân tích hiện đang tiếp tục để xác định xem các véctơ kiểm tra bổ sung có được yêu cầu hay không đối với các hàm băm còn lại và nếu có thì các yêu cầu nào sẽ được xem xét. Nếu các véctơ kiểm tra bổ sung là cần thiết thì sửa đổi thứ hai đối với phần này của TCVN 11816-3:2017 (ISO/IEC 10118) có thể được xem xét. Phụ lục B (Tham khảo) Đặc tả hình thức B.0 Giới thiệu Trong các phần này là các đặc tả hoàn chỉnh của hàm băm chuyên dụng 1, 2 và 3 theo ngôn ngữ đặc tả Z . Các ký hiệu cho Z được mô tả trong mục [1]. Đặc tả Z vẫn giữ được tên, cấu trúc, ... được sử dụng trong phần chính của TCVN 11816 (ISO/IEC 10118). Đặc tả Z được viết hoàn toàn trong Z , bao gồm cả các bình luận. Các bình luận trỏ đến các phần của văn bản chính trong TCVN 11816 (ISO/IEC 10118). Đặc tả Z mô hình hóa thông điệp như một xâu tuần tự các số tự nhiên 0 và 1 (xâu) . B.1 Đặc tả của hàm băm chuyên dụng 1 #3 Các thuật ngữ và định nghĩa hàm vòng Từ #4 Kí hiệu (và thuật ngữ viết tắt) S n () - Chỉ cần để xác định S như S n (lặp quan hệ) được định nghĩa trong Z . Ù Ú Å Được định nghĩa cho các từ chỉ khi có tất cả các yêu cầu #5 Các yêu cầu #6 Mô hình cho hàm băm chuyên dụng Quá trình băm Bước 1 (đệm) StringMultiple_L 1 == { s: String | #s mod L 1 = 0 } | pad: String → StringMultiple_L 1 Bước 2 (phân tách) Bước 3 (lặp) Bước 4 (phép cắt) #7 Hàm băm chuyên dụng 1 Maximum_Length_of_String = (2 ↑ 64) -1 #7.1 Các tham số, hàm số và hằng số #7.1.1 Các tham số L 1 = 512 L 2 = 160 L H = 160 #7.1.2 Quy ước thứ tự byte #7.1.3 Các hàm số Indexed_g == { g :seq ( Word x Word x Word → Word ) | # g = 80} #7.1.4 Các hằng số CHÚ THÍCH: giá trị a và a’ là lớn hơn một số với tài liệu quy định theo thứ tự trong Z bắt đầu từ 1. #7.1.5 Giá trị khởi tạo #7.2 Phương pháp đệm #7.3 Mô tả hàm vòng B.1.1. Các hàm bổ trợ B.2. Đặc tả của hàm băm chuyên dụng 2 Các phần #3, #4, #5, #6 và B.1.1 của Phụ lục B.1 được lặp lại trong phần này của Phụ lục. #8 Hàm băm chuyên dụng 2 Maximum_Length_of_String = (2 ↑ 64) -1 #8.1 Các tham số, hàm số và hằng số #8.1.1 Các tham số L 1 = 512 L 2 = 128 L H = 128 #8.1.2 Quy ước thứ tự byte Phần # 7.1.2 của Phụ lục B.1 được lặp lại tại phần này. #8.1.3 Các hàm số Phần # 7.1.3 của Phụ lục B.1 được lặp lại tại phần này. g 2 == (1...64) 1 g #8.1.4 Các hằng số Phần # 7.1.4 của Phụ lục B.1 được lặp lại tại phần này chỉ đối với t, t’ a, a’. #8.1.5 Giá trị khởi tạo #8.2 Phương pháp đệm Phần #7.2 của Phụ lục B.1 được lặp lại tại phần này. #8.3 Mô tả hàm vòng Phần #7.3 của Phụ lục B.1 được lặp lại tại phần này đối với việc xác định của StringWord và Split_String_to_StringWord B.3 Đặc tả của hàm băm chuyên dụng 3 Các phần #3, #4, #5, #6 và B.1.1 của Phụ lục B.1 được lặp lại trong phần này của Phụ lục. #9 Hàm băm chuyên dụng 3 Maximum_Length_of_String = (2 ↑ 64)-1 #9.1 Các tham số, hàm số và hằng số #9.1.1 Các tham số L 1 = 512 L 2 = 160 L H =160 #9.1.2 Trật tự byte #9.1.3 Các hàm số #9.1.4 Các hằng số #9.1.5 Giá trị khởi tạo #9.2 Phương pháp đệm # 9.3 Mô tả hàm vòng Phụ lục C (Quy định) Mô đun ASN.1 Phụ lục này liệt kê mô đun ASN.1 được gán cho hàm băm chuyên dụng được đặc tả trong TCVN 11816-3. Thư mục tài liệu tham khảo [1] J.M. Spivey, The Z Notation - A Reference Manual, Prentice-Hall, 1992 (2nd edition) [2] U.S. Department of Commerce/National Institute of Standards and Technology, Secure Hash Standard, Federal Information Processing Standards Publication (FIPS PUB) 180-2, 1st August 2002 [3] Bosselaers, H. Dobbertin and B. Preneel, The new cryptographic hash function RIPEMD-160, Dr. Dobbs, Vol. 22 No.1, pp.24-28, January 1997 [4] P.S.L.M. Barreto and V. Rijmen. The Whirlpool Hashing Function, First open NESSIE Workshop, Leuven, 13-14 November 2000 MỤC LỤC Lời nói đầu 1 Phạm vi áp dụng 2 Tài liệu viện dẫn 3 Các thuật ngữ và định nghĩa 4 Các ký hiệu (và thuật ngữ viết tắt) 5 Các yêu cầu 6 Mô hình hàm băm chuyên dụng 7 Hàm băm chuyên dụng 1 (RIPEMD-160) 7.1 Các tham số, hằng số và hàm số 7.2 Phương pháp đệm 7.3 Mô tả hàm vòng 8 Hàm băm chuyên dụng 2 (RIPEMD-128) 8.1 Các tham số, hàm số và hằng số 8.2 Phương pháp đệm 8.3 Mô tả hàm vòng 9 Hàm băm chuyên dụng 3 (SHA-1) 9.1 Các tham số, hàm số và hằng số 9.2 Phương pháp đệm 9.3 Mô tả hàm vòng 10 Hàm băm chuyên dụng 4 (SHA-256) 10.1 Các tham số, hàm số và hằng số 10.2 Phương pháp đệm 10.3 Mô tả hàm vòng 11 Hàm băm chuyên dụng 5 (SHA-512) 11.1 Các tham số, hàm số và hằng số 11.2 Phương pháp đệm 11.3 Mô tả hàm vòng 12 Hàm băm chuyên dụng 6 (SHA-384) 12.1 Các tham số, hàm số và hằng số 12.2 Phương pháp đệm 12.3 Mô tả hàm vòng 13 Hàm băm chuyên dụng 7 (WHIRLPOOL) 13.1 Các tham số, hàm số và hằng số 13.2 Phương pháp đệm 13.3 Mô tả hàm vòng 14 Hàm băm chuyên dụng 8 (SHA-224) 14.1 Các tham số, hàm số và hằng số 14.2 Phương pháp đệm 14.3 Mô tả hàm vòng Phụ lục A (Tham khảo) Các ví dụ Phụ lục B (Tham khảo) Đặc tả hình thức Phụ lục C (Quy định) Mô đun ASN.1 Thư mục tài liệu tham khảo