TCVN11816-4:2017

Tiêu chuẩn quốc gia TCVN 11816-4:2017 (ISO/IEC 10118-4:1998 with amendment 1:2014) về Công nghệ thông tin - Các kỹ thuật an toàn - Hàm băm - Phần 4: Hàm băm sử dụng số học đồng dư TIÊU CHUẨN QUỐC GIA TCVN 11816-4:2017 ISO/IEC 10118-4:1998 WITH AMENDMENT 1:2014 CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - HÀM BĂM - PHẦN 4: HÀM BĂM SỬ DỤNG SỐ HỌC ĐỒNG DƯ Information technology - Security techniques - Hash-functions - Part 4: Hash-function using modular arithmetic Lời nói đầu TCVN 11816-4:2017 hoàn toàn tương đương với ISO/IEC 10118-4:1998 và sửa đổi 1:2014. TCVN 11816-4: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 4: HÀM BĂM SỬ DỤNG SỐ HỌC ĐỒNG DƯ Information technology - Security techniques - Hash-functions - Part 4: Hash-function s using modular arithmetic 1 Phạm vi áp dụng TCVN 11816-4 đặc tả 2 hàm băm sử dụng số học đồng dư. Những hàm này, được cho là kháng va chạm, nén thông điệp có độ dài bất kì, nhưng giới hạn độ dài mã băm, độ dài đ ó được xác định b ở i độ dài của số nguyên t ố được sử dụng trong hàm rút gọn được đ ị nh nghĩa trong 7.3. Do đó, mã băm dễ dàng được m ở rộng (scaled) với độ dài đầu vào của bất kỳ cơ chế nào (v í dụ thuật toán chữ ký, lược đồ định danh). Các hàm băm được đặc tả trong tiêu chuẩn này là MASH-1 và MASH-2 (hàm băm an toàn số học đồng dư) phù hợp riêng cho các môi trường thực hiện s ố học đồng dư với đủ các chiều dài. Hai hàm băm chỉ khác nhau ở số mũ được sử dụng trong hàm vòng. 2 Tài liệu viện dẫn Tiêu chuẩn sau bao gồm các điều khoản mà thông qua tài liệu viện dẫn này chứa đựng các điều khoản của TCVN 11816-4. Vào thời đi ể m xuất bản, ấn phẩm này là hợp lệ. Tất cả các tiêu chuẩn được hiệu chỉnh và thỏa thuận dựa trên TCVN 11816-4 đều được khuyến khích nghiên cứu khả năng áp dụng ấ n phẩm mới nhất của tiêu chuẩn được chỉ r õ dưới đây. Các phần của IEC và ISO duy trì đăng ký của các tiêu chuẩn quốc tế hợp lệ hiện hành. TCVN 11816-1:2016 (ISO/IEC 10118-1:2016), Công nghệ thông tin - Các kỹ thuật an toàn - Hàm băm - 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 sau đây được áp dụng. 3.1 Thuật ngữ từ TCVN 11816-1 3.1.1 Hàm băm kháng va chạm (collision-resistant hash-function) Hàm băm thỏa mãn t í nh chất sau: không thể tìm được 2 đầu vào khác nhau với cùng một giá trị đầu ra. 3.1.2 Xâu dữ liệu (data string) Xâu bit được dùng làm đầu vào cho hàm băm. 3.1.3 Mã băm (hash-code) Xâu bit là đầu ra của hàm băm. 3.1.4 Hàm băm (hash-function) Hàm mà ánh xạ một xâu bit tới một xâu bit có độ dài xác định thỏa mãn 2 tính chất sau: - Không thể t ì m được một giá trị đầu vào ứng với một giá trị đầu ra cho trước. - Không thể tìm được một đầu vào thứ 2 khác với đầu vào cho trước mà có cùng đầu ra. 3.1.5 Giá trị kh ở i tạo (initializing value) Một giá trị sử dụng để định nghĩa điểm bắt đầu của một hàm băm. 3.1.6 Đệm (padding) Bit mở rộng đính kèm cho xâu dữ liệu. 3.2 Duy nhất cho TCVN 11816-4 3.2.1 Khối (block) Một xâu bit c ó độ dài L ϕ l à bội số nguyên của 16 (xem trong điều 6.1). VÍ DỤ: Độ dà i đầu ra H j của hàm v ò ng. 3.2.2 Nửa khối (half-block) Một xâu bit có độ dài L ϕ /2 VÍ DỤ: Nửa độ dài của khối H j 3.2.3 Định danh của hàm băm (hash-function identifier) Một byte xác định một hàm băm cụ thể 3.2.4 Số đồng dư (modulus) Tham số là một số nguyên dương và là tích của 2 số nguyên t ố riêng biệt. 3.2.5 Hàm rút gọn (reduction-function) Một hàm RED được áp dụng cho khối H q c ó độ dài L ϕ để tạo ra mã băm H với độ dài L p . 3.2.6 Hàm vòng (round-fucntion) Hàm ϕ( ˙,˙ ) chuyển 2 xâu nhị phân độ dài L ϕ thành một xâu nhị phân độ dài L ϕ . CHÚ TH Í CH: Nó được dùng lặp đi lặp l ạ i như một phần của hàm băm, trong đ ó , nó kết hợp lại một khối dữ liệu ‘m ở rộng ’ có độ dài L ϕ với đầu ra trước đó có độ dà i L ϕ 3.3 Các quy ước 3.3.1 Sự sắp thứ tự bit (bit ordering) Trong TCVN 11816-4, thứ tự bit được mô tả trong điều 3 của TCVN 11816-1. 3.3.2 Biến đổi một số thành một xâu (converting a number to a string) Trong quá trình tính hàm vòng, các số nguyên được biến đ ổ i thành các xâu L bit. Ở nơi mà điều này được yêu cầu, xâu bit được tạo ra bằng sự biểu diễn nhị phân của số nguyên, với bit ở bên tr á i nhất của xâu tương ứng với bit quan trọng nhất của sự biểu diễn nhị phân. Nếu xâu bit cuối cùng có ít hơn L bit th ì xâu sẽ được bổ sung vào bên trái số 0 phù h ợ p để tạo ra xâu có độ dài L . 3.3.3 Biến đổi một xâu thành một số nguy ê n (converting a string to a number) Trong quá trình tính hàm vòng, các xâu bit cần được chuyển thành số nguyên . Ở đ ó , số nguyên sẽ được tạo ra bằng số mà có biểu diễn nhị phân bằng xâu nhị phân, ở đó bit trái nhất của xâu được coi như bit có nghĩa nhất của biểu diễn nhị phân. 3.4 Các định danh của hàm băm (hash-function identifier) Các định danh được định nghĩa cho 2 hàm băm MASH được đặc tả trong TCVN 11816-4. Các định danh hàm băm cho các hàm băm quy định trong điều 8.1 và 8.2 là tương đương 41 và 42 (hệ thập lục phân). Dải các giá trị từ 43 tớ i 4f (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. 4 Các ký hiệu và các thuật ngữ viết tắt Trong TCVN 11816-4, các ký hiệu sau đây được sử dụng. D Data Dữ liệu H Hash-code Mã băm IV Initializing value Giá trị khởi tạo X Å Y Exclusive-or of strings of bits X and Y Phép toán XOR của xâu bit X và Y 4.2 Duy nhất cho TCVN 11816-4 B j Khối thứ j được chia từ xâu dữ liệu D sau quá trình đệm, tách và m ở rộng. D j Một nửa khối thứ j từ xâu dữ liệu D sau quá trình đệm và t á ch. D q +1 đến D q+ 8 là các khối dữ liệu bổ sung được tính toán trong hàm rút gọn. e Số mũ được dùng trong hàm vòng. E Một khối hằng s ố tương đương 4 khối (ở vị trí trái nhất) theo sau L ϕ - 4 số 0. H j Đầu ra vòng th ứ j của hàm vòng. H j có độ dài L ϕ L D Độ dài của xâu đầu vào D tính theo bit. L ϕ Độ dài đầu ra H j của hàm vòng ϕ . Nó là bội số nguy ê n của 16. L N Độ dài của số đồng dư N sử dụng trong hàm vòng. L p Độ dài của số nguyên tố p sử dụng trong hàm rút gọn. mod Nếu Z 1 là một số nguyên và Z 2 là một số nguyên dương thì Z 1 mod Z 2 thì số nguyên duy nhất Z 3 thỏa mãn a) a) 0 ≤ Z 3 <> 2 , và b) b) Z 1 - Z 3 là một số nguyên và là bộ i của Z 2 . N Một số nguyên hợp số được dùng như số đồng dư trong hàm vòng. CHÚ THÍCH: Để xác định giá trị N , xem điều 5. p Một số nguyên t ố được sử dụng trong hàm rút gọn. CHÚ THÍCH: Để xác định g i á tr ị p , xem điều 5. q Số lượng nửa khối trong xâu dữ liệu D sau các quá trình đệm và tách, và cũng là s ố các khối sau qu á trình đệm, tách và mở rộng. RED Hàm rút gọn, mà được áp dụng như thao tác cuối cùng của quá trình băm để r ú t gọn khối H q có độ dài L ϕ đ ể nhận được m ã băm H c ó chi ề u dài L p . Y j Xâu con thứ j có độ d à i L ϕ / 4 bit được dùng trong hàm rút gọn. ϕ Một hàm vòng. Nếu X và Y biểu thị các xâu L ϕ bit, th ì ϕ ( X, Y ) biểu thị một xâu L ϕ bit thu được bằng cách áp dụng ϕ tới X và Y . Ú Phép toán OR trên các xâu bit, tức là nếu X và Y là các xâu c ó cùng độ dài th ì X Ú Y biểu thị xâu có được là kết quả phép OR của X và Y . ~ Một ký hiệu biểu th ị phép toán cắt. Nếu X là một xâu bit th ì X ~ j biểu th ị xâu bit có được là j bit bên phải tận cùng của X . := Một ký hiệu biểu thị phép toán “thiết lập bằng”. Nó được sử dụng trong bản đặc tả kỹ thuật theo thủ tục của hàm v ò ng và của hàm rút gọn, trong đó nó chỉ ra rằng khối ở bên trái của ký hiệu sẽ được thay đổi để bằng với giá trị biểu thức ở bên phải của ký hiệu. X || Y Phép nối các xâu bit X và Y theo thứ tự xác định. 5 Các yêu cầu 5.1. Để sử dụng một trong các hàm băm được đặc tả trong TCVN 11816-4, hai số nguyên sẽ được lựa chọn: số đồng dư N được sử dụng trong hàm vòng và số nguyên tố p được sử dụng trong hàm rút gọn. Cả hai số nguyên, N và p được xác định b ở i các yêu cầu an toàn của ứng dụng sử dụng những hàm băm này. 5.1.1 Việc phân tích thành thừa số của N được chọn là không khả thi về mặt t í nh toán. 5.1.2 N được tạo ra bằng cách duy trì các thừa số bí mật. Điều này có thể được thực hiện bởi một bên thứ 3 đáng tin cậy hoặc bởi sự tính toán nhiều bên an toàn. CH Ú TH Í CH 1: Việc tạo ra một số N v ới thuộc t í nh m à các thừa số của nó được giữ bí mật có thể được thực hiện bằng việc sử dụng một bên th ứ ba đáng tin cậy, phần cứng đáng tin, và/hoặc sự t í nh toán nhiều bên an toàn. Các v í dụ có thể được tìm thấy trong Boneh [1], Cocks [2] và Frankel [3] . CHÚ TH Í CH 2: Nếu các thừa số của s ố đồng dư được giữ b í mật, và nếu kích thước của số nguyên t ố p là đủ lớn th ì thuật toán tốt nhất để t ì m sự va chạm x ấ p xỉ 2 Lp /2 các ước lượng của h à m vòng và thuật toán tốt nhất đ ể t ì m một tiền ảnh thứ 2 cần xấp xỉ 2 Lp các ước lượng của hàm vòng. Do vậy, trong các t ì nh huống đó, MASH-1 và MASH-2 này được tin tưởng là các hàm băm không va chạm. 5.1.3 Số nguyên tố p của hàm rút gọn sẽ không phải là một thừa số của N của hàm vòng. 5.1.4 Độ dài L p của s ố nguyên tố p lớn nhất là bằng một nửa độ dài của N, L p ≤ L ϕ /2. 5.1.5 Ba bit bậc cao của số nguyên tố p phải bao gồm các số 1. 5.2 Đ ể sử dụng một trong các hàm băm, MASH-1 và MASH-2, người d ù ng phải chọn một trong hai số mũ e được dùng trong hàm vòng ϕ . 5.3 MASH-1 và MASH-2 có th ể được áp dụng cho tất cả các xâu dữ liệu D chứa nhiều nhất 2 Lϕ /2 - 1 bit. 6 Các biến và giá trị cần thiết cho phép băm 6.1 Độ dài của mã băm và của N Độ dài của N và độ dài của các khối H j có liên quan theo cách thức sau: L ϕ + 1 ≤ L N ≤ L ϕ + 16 Độ dài L ϕ của khối H q là bội số nguyên của 16. CHÚ TH Í CH 1: Nếu độ dài L ϕ được chọn, th ì độ dài L N ràng buộc theo bất đẳng thức ở trên. Nếu độ dà i L N được chọn th ì độ dài L ϕ sẽ là bội số lớn nhất của 1 6 m à nhỏ hơn L N . CHÚ TH Í CH 2: Sự hiểu biết về N đ ủ để xác định L N và hệ quả là L ϕ . 6.2 Đồng d ư của hàm vòng Số đồng dư N được dùng trong hàm vòng là một số nguyên hợp số được tạo ra bởi một tích của hai số nguyên tố có cùng độ dài sao cho việc t í nh toán để tìm thừa s ố của N là không khả thi. CHÚ TH Í CH 1: Ngoài tính không khả th i của việc t ì m thừa số đồng dư, độ an toàn của hàm băm MASH được dựa trên một phần độ khó của việc khai căn các số đồng dư . CHÚ TH Í CH 2: Việc lựa chọn một số đồng dư riêng N với độ dà i phù hợp nằm ngoài phạm vi của TCVN 11816-4. 6.3 Giá trị kh ởi tạo Giá trị khởi tạo IV được định nghĩa là xâu của L ϕ các s ố nhị phân 0. 6.4 Số mũ Đối với MASH-1, giá trị của số mũ e trong hàm vòng bằng 2. Đối với MASH-2, giá trị của số mũ e trong hàm vòng bằng 257. 6.5 Số nguyên tố của hàm rút gọn Hàm rút gọn được đặc tả trong Điều 7.3 yêu cầu một số nguyên tố p . Độ dài L p của số nguyên tố p được xác định bởi các yêu cầu an toàn, và bằng độ dài đầu vào của bất kỳ cơ chế nào sử dụng mã băm. Độ dài L p lớn nhất là bằng một nửa độ dài của N, L p <> ϕ /2. CHÚ TH Í CH 1: Việc lựa chọn một s ố nguyên tố cụ thể p với độ dài thích hợp nằm ngoài phạm v i của TCVN 11816-4. CHÚ THÍCH 2: Đ ể tránh các kết quả không cân bằng b ở i rút gọn p , số nguyên tố p phải được chọn v ớ i ba bit cao là các số 1. 7. Quy trình băm Mã băm H của xâu dữ liệu D được tính toán theo các bước sau (xem H ì nh 1): 7.1 Chuẩn bị xâu dữ liệu Xâu dữ liệu D được chuyển th à nh một chuỗi các khối đầu vào cho hàm vòng ϕ . Việc chu ẩ n bị gồm việc đệm, tách và khai triển chi tiết trong các phần sau . 7.1.1 Đệm xâu dữ liệu Nếu độ dài L D của xâu dữ liệu D không phải là một bội số nguyên của L ϕ /2, th ì D được đệm bên phải với các bit 0 nhị phân tuân theo phương pháp đệm 1 được mô tả trong Phụ lục B của TCVN 11816-1:2017 (ISO/IEC 10118-1). 7.1.2 Nối thêm độ dài Một nửa khối bổ sung là được đệm thêm bên phải của xâu dữ liệu. Nó bao gồm biểu diễn nhị phân với độ dài L D của xâu dữ liệu gốc D (chưa đệm thêm), được đệm bên trái với các bit nhị phân 0 (xem 3.3.2). CH Ú TH Í CH: Nếu khối dữ liệu D rỗng, th ì chỉ c ó độ dài kh ố i là đầu v à o của quy tr ì nh băm. 7.1.3 Tách xâu dữ liệu Xâu kết quả được chia thành một chuỗi các nửa khối q: D 1 , D 2 ,..,D q . 7.1.4 Khai triển Mỗi nửa khối D j , j = 1,2, .. ...,q được nhân đôi độ dài từ L ϕ /2 bit thành Lϕ bit. Điều này đạt được bằng cách chia D j thành các n ử a byte và đặt vào trước mỗi nửa byte của D j với một nửa byte gồm 4 bit 1 (1111), cho j = 1,2, …. , q . Kết quả của quá trình này khi áp dụng với nửa khối D j được ký hiệu là B j , j = 1, 2,.., q . 7.2 Ứng dụng của hàm vòng Hàm vòng ϕ , hàm mà các hàm băm MASH dựa vào để l ấ y hai khối đầu vào H j-1 và B j , cả hai có độ dài L ϕ . Nó trả về một khối H j độ dà i L ϕ . Được định nghĩa như sau: ϕ(B j , H j-1 ) = ((((H j-1 Å B j ) Ú E ) e mod N)~L ϕ ) Å H j-1 Hàm v ò ng được áp dụng lần lượt liên tục tới các khối dữ liệu B j như sau: H 0 := IV H j := ϕ(B j , H j- 1 ) j = 1,2,..., q 7.3 Hàm rút gọn Hàm rút gọn RED gồm tám ứng dụng của hàm vòng với một đầu vào dữ liệu được lấy từ H q . Mã băm H được tính toán bởi bốn bước sau: tách khối H q , mở rộng xâu dữ liệu, xử lý các khối dữ liệu bổ s ung và rút gọn khối H q+ 8 . 7.3.1 Việc tách khối H q Kh ố i H q được chia thành 4 xâu độ dài L ϕ /4 bit, kí hiệu H q 1 , H q2 , H q3 , H q4 H q := H q1 || H q2 || H q3 || H q4 7.3.2 Mở rộng xâu dữ li ệu Định nghĩa Y 0 := H q 3 , Y 1 := H q 1 , Y 2 := H q4 , và Y 3 : = H q2 . Với i = 4 t ớ i 15 đặt: Y i := Y i -1 Å Y i - 4 Sau đó xác đ ị nh 8 nửa kh ố i dữ liệu bổ sung D q+1 tới D q+ 8 như sau: V ớ i i = 1 đến 8 đặt D q +i := Y 2 i -2 || Y 2 i -1 7.3.3 Xử lý các nửa khối Tám nửa khối D q+1 tới D q+ 8 được xử lý như trong 7.1.4 và 7.2, nhưng v ới IV = H q , nhận được kết quả là H q +8 . 7.3.4 Rút gọn Mã băm H với độ d à i L p được tính toán như sau: H:= H q+ 8 mod p 8 Các hàm băm Hai hàm băm được đặc tả trong TCVN 11816-4 khác nhau về giá trị của số mũ e được sử dụng trong hàm vòng ϕ . 8.1 MASH-1 Đối với MASH-1, hàm vòng ϕ đã quy định trong điều 7 tr ở thành: ϕ(B j , H j-1 ) = ((((H j-1 Å B j ) Ú E ) 2 mod N) ~ L ϕ ) Å H j-1 Định danh của hàm băm MASH-1 là 41 (hệ thập lục phân). 8.2 MASH-2 Đối với MASH-2, hàm vòng ϕ đã quy định trong điều 7 trở thành ϕ(B j , H j-1 ) = ((((H j-1 Å B j ) Ú E ) 257 mod N) ~ L ϕ ) Å H j-1 Định danh của hàm băm MASH-2 là 42 (hệ thập lục phân). Hình 1: Hàm băm MASH Phụ lục A (Tham kh ả o) Các ví dụ A.1 Quy trình băm Thực tế, xâu dữ liệu có thể được cung cấp như một luồng. Độ dài tổng thể L D có th ể không được biết trước kết thúc luồng cuối cùng. Khi luồng đi qua, việc tính toán hàm băm được thực hiện. Đ ể thuận lợi cho việc mô tả, một hằng s ố k = L ϕ /2 được đưa ra. Ch ỉ b ố n thanh ghi sau đây được yêu cầu cho các biến: i, A, B, C. i bộ đếm bit cho độ dài L D . A bộ đệm để lưu g i ữ mã băm. B bộ cộng tích lũy để giữ các kết quả trung gian. C giữ nửa khối dữ liệu Mã băm H của dữ liệu D được tính toán theo các bước sau: A.1.1 Bước 1 (Kh ở i tạo) Bộ đệm A được thiết lập về 0: A := 0 (giá trị khởi tạo IV = H 0 = 0 ) Bộ cộng tích lũy B được đặt về 0: B := 0 Bộ đếm bit được đặt về 0: i := 0 (đếm số các bit dữ liệu hiệu dụng đã được băm) A.1.2 Bước 2a (Đọc một khối dữ liệu) Nếu dữ liệu còn lại í t nhất k bit, đọc k bit của dữ liệu D vào C . Nếu dữ liệu còn lại là k ’ (với 0 k’ <> k ) đọc k’ bit của dữ liệu D vào C và và lấp đầy C v ớ i k-k ’ các bit 0 nhị phân vào bên phải . k (tương ứng với k ’ ) được cộng vào i . Nếu không có thêm dữ liệu nào ( k’ = 0) thì đi tới bước 3a. Bước 2b (Khai triển) Mỗi byte của C được tách thành các nửa và mỗi nửa được đứng trước v ớ i bốn bit 1 nhị phân. Kết quả được đặt vào trong bộ cộng tích lũy B . Bước 2c (Kết hợp với giá trị băm trước đó) Tính: B:= B Å A (kết hợp) Bước 2d B:= B Ú E (bốn bit giá trị cao nhất được đặt về 1) Bước 2e (Nâng lũy thừa) Tính: B:= B e mod N trong đó e = 2 (phép bình phương) v ớ i MASH-1 và e = 257 với MASH-2 Bước 2f (Phép cắt) (Các bit bên trái cùng của C vượt quá độ dài L ϕ b ị x ó a) Bước 2g (Tiếp với giá trị băm trư ớ c đó) Tính: A := B Å A Bước 2h: Quay tr ở lại bước 2a. A.1.3 Bư ớ c 3a (Đọc bộ đếm độ dài) C := i (nội dung của bộ đếm độ dài được đặt vào trong C ). Số nguyên được biến đổi thành một xâu như đã quy định ở 3.3.2. Bước 3b (Băm với bộ đếm độ dài) Thực hiện các bư ớ c 2b, 2c, 2d, 2e, 2f và 2g, sau đó chuyển sang bước 4. A.1.4 Bư ớ c 4 (Đưa ra kết quả) Khối H q được chứa trong bộ đệm A là Lϕ các bit tận cùng bên phải. A.1.5 Quá trình rút gọn Các thanh ghi sau được yêu cầu cho các biến: A, B, C, C 0 , C 1 , C 2 , C 3 , i. A lưu giữ khối H q đ ể rút gọn. B bộ đệm được dùng trong hàm vòng . C bộ cộng tích lũy của độ dài L ϕ /2 để lưu giữ nửa khối. C 0 , C 1 , C 2 , C 3 bốn bộ đệm độ dài L ϕ /4. i bộ đếm. Mã băm H được tính toán theo các bước sau. A.1.5.1 Bư ớ c 4a (Kh ởi tạo) Bộ đếm được đặt về 8: i : = 8 (s ố nửa khối được xử lý) A.1.5.2 Bước 4b (Tách khối H q ) Khối H q được ch ứ a trong bộ đệm A được chia thành 4 phần H q 1 , H q 2 , H q3 , H q4 mỗi phần độ dài L ϕ /4 (xem Hình 1) và được lưu: C 0 := H q3 C 1 := H q1 C 2 := H q4 C 3 := H q2 A.1.5.3 Bước 4c ( Mở rộng và bư ớ c lặp) Tính C: = C 0 || C 1 (phép nối) Và thực hiện các bước 2b tới 2g (áp dụng hàm vòng ϕ ) (số vòng q+1) Tính i:= i - 1. giảm bộ đếm Bước 4d (M ở rộng và bước lặp) Tính C := C 2 || C 3 (phép nối) Và thực hiện các bước 2b tới 2g (áp dụng hàm vòng ϕ ) (số vòng q+2) Tính i:= t - 1. giảm bộ đếm A.1.5.4 Bước 4e (Kết hợp, m ở rộng và phép lặp) T í nh C 0 := C 0 Å C 3 (kết hợp) C 1 := C 1 Å C 0 Tính C : = C 0 || C 1 (phép nố i ) Và thực hiện các bước 2b tới 2g (áp dụng hàm vòng ϕ ) (số vòng q+3, q+5, q+7) Tính i:= i - 1. giảm bộ đếm Bước 4f (Kết hợp các khối đã tách) Tính C 2 := C 2 Å C 1 (kết hợp) C 3 : = C 3 Å C 2 Tính C : = C 2 || C 3 (phép nối) Và thực hiện các bước 2b tới 2g (áp dụng hàm vòng ϕ ) (số vòng q+4, q+6, q+8) Tính i:= i - 1. Nếu i khác 0, quay lại bước 4e. A.1.6 Bước 5 (Phép rút gọn cuối cùng) Tính: A: = A mod p A.1.7 Bước 6 (Đưa ra kết quả) Mã băm H được chứa trong bộ đệm A là L p bit ở tận cùng bên phải. A.2 Các ví dụ tính toán băm Trong ví dụ sau, N là một hợp số, lớn hơn L ϕ 12 bit. L ϕ là một bội số của 16 ngay dưới L N . Độ dài của số đồng dư N được chọn chỉ để minh họa quy trình băm từng bước một và không nhất thiết đáp ứng các yêu cầu an toàn. Để phân biệt giữa các s ố thập phân và các số hệ thập lục phân, ký hiệu d hay h được thêm vào tương ứng. Dữ liệu sau được dùng: Độ dài của s ố đồng dư N , L N = 10c h = 268 d Độ dài của khối H j , L ϕ = 100 h = 256 d Độ dài của s ố nguyên tố p , L p = 80 h = 128 d Độ dài của m ã băm H , L p = 80 h = 128 d Xâu dữ liệu D = ‘Now is the time for a ll’ Xâu dữ liệu D được mã hóa theo ISO 646 trong định dạng cơ số 16: Độ dài của xâu dữ liệu D, L D = c 0 h = 192 d CHÚ THÍCH: - M ã ISO 64 6 thư ờ ng được gọi chung l à m ã ASCII v ì nó tương đương v ớ i mã ASCII 7 bit. Mã ASCII 7 bit được m ở rộng thành 8 bit bằng cách chèn một bit 0 ở v ị tr í đầu ti ê n . Mỗi bước được ghi lại để chỉ ra các giá trị thay đổi của các biến i, A, B, C và C 0 , C 1 , C 2 , C 3 trong suốt giai đoạn tính toán. Cột đầu tiên tham chiếu tới các bước được mô tả trong phụ lục A.1. A.2.1 Ví dụ tính toán băm dùng MASH-1 Bước khởi tạo: A : = 0 B := 0 i := 0 Vòng đầu Vòng thứ 2 Vòng thứ q (Bộ đếm độ dài) Hàm rút gọn RED Phân t á ch M ở rộng Vòng thứ q+1 M ở rộng Vòng thứ q+2 Vòng thứ q+3 Vòng thứ q+4 Vòng thứ q+5 Vòng thứ q+6 Vòng thứ q+7 Vòng thứ q+8 Rút gọn mod p A.2.2 Ví dụ tính giá trị băm sử dụng MASH-2 Bước khởi tạo: A := 0 B := 0 i := 0 Vòng đầu Vòng thứ 2 Vòng thứ q (Bộ đếm độ dài) Hàm rút gọn RED Phân tách Mở rộng Vòng thứ q+1 Mở rộng Vòng thứ q+2 Vòng thứ q+3 Vòng thứ q+4 Vòng thứ q+5 Vòng thứ q+6 Vòng thứ q+7 Vòng thứ q+8 Rút gọn mod p A.3 Thông điệp kiểm t ra mẫu và giá tr ị băm của chúng Theo tính toán của mã băm cho tập hợp các thông điệp kiểm tra (A.3.1 tới A.3.9), các s ố nguyên sau đây được sử dụng: 1) Hợp số đồng dư 2) Số nguyên tố Chiều dài của số đồng dư N sử dụng trong hàm vòng là L N = 780 d = 30C h Chiều dài đầu ra của hàm vòng là L ϕ = 768 d = 300 h Chiều dài của số nguyên tố p sử dụng trong hàm rút gọn là L p = 160 d = A0 h Chiều dài của mã băm l à L p = 160 d = A0 h Những nội dung của các trường: leng of text Số bit của thông điệp. Được đưa ra theo dạng thập phân đầu ti ê n (vớ i kí hiệu là d) tiếp theo là biểu diễn dạng thập lục phân tư ơ ng đương (v ớ i ký hiệu là h) text Chứa thông điệp sẽ được băm phân định bởi các dấu ngoặc đơn text in ASCII Chứa thông điệp theo mã ASCII. Những khoảng trống được chèn vào cho dễ đọc H q Chứa đầu ra của hàm vòng theo định dạng thập lục phân sau q ứng dụng H q+ 8 Chứa đầu ra của hàm vòng theo định dạng thập lục phân sau q+8 ứng dụng H Chứa mã băm theo định dạng thập lục phân sau phép rút gọn modulo p A.3.1 Ví dụ 1 A.3.2 Ví dụ 2 A.3.3 Ví dụ 3 A.3.4 Ví dụ 4 A.3.5 Ví dụ 5 A.3.6 Ví dụ 6 A.3.7 Ví dụ 7 A.3.8 Ví dụ 8 A.3.9 Ví dụ 9 Phụ lục B (Tham khảo) Thông tin bổ sung B.1 Xác định các giá trị của tham số TCVN 11816-4 không chỉ r õ các giá trị sẽ được sử dụng để tiếp cận đến một mức an toàn đã đề ra. Tuy nhiên, TCVN 11816-4 được đặc tả theo cách để tố i thiểu hóa những sự thay đổi yêu cầu trong việc sử dụng nó nếu một trong các tham số này phải được sửa đổi. Số nguyên tố p nên được lựa chọn cẩn thận, v ì chiều dài bit của nó xác định kích c ỡ của mã băm . B.2 Sự khác nhau giữa MASH-1 và MASH-2 Lý do cho việc giới thiệu một phiên bản bổ sung của hàm băm với số mũ cao hơn (MASH-2) là để triệt tiêu bất kỳ tính chất thống kê nào có thể có với MASH-1. Đối với các yêu cầu an toàn rất cao, nên lựa chọn MASH-2 thay cho MASH-1 B.3 Hàm rút gọn Hàm rút gọn RED được định nghĩa trong 7.3 để điều chỉnh chiều dài mã băm cho phù hợp v ớ i các yêu cầu về ứng dụng tiếp theo của mã băm H , và để tăng cường mức an toàn. Phụ lục C (Quy định) Định danh đối tượng Phụ lục này liệt kê các định danh đối tượng chỉ định cho hàm băm sử dụng số học đồng dư được đặc tả trong TCVN 11816-4. Thư mục tài liệu tham khảo [1] BONEH D ., & FRANKLIN M. Efficient Generation of Shared RSA Keys . Advances in Cryptology - CRYPTO '97 (BURTON s., & KALISKI Jr. ed.] Lecture Notes in Computer Science, Vol, 1294, Springer- Verlag, 1997, pp. 425-439. [2] COCKS C. Split knowledge generation of RSA parameters. Cryptography and Coding. (DARELL M. ed.). Lecture Notes in Computer Science, Vo l . 1355, Springer-Verlag, 1997, pp. 89-95. [3] FRANKEL Y.,MACKENZIE P.D. , YUNG M.Robustefficientdistributed RSA-keygeneration. Proceedings of the 30th Annual ACM Symposium on theTheory of Computing [STOC '98], ACM, 1998, pp. 663- 67 2 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 3.1 Thuật ngữ từ TCVN 11816-1 3.2 Duy nhất cho TCVN 11816-4 3.3 Các quy ước 3.4 Các định danh của hàm băm (hash-function identifier) 4 Các ký hiệu và các thuật ngữ viết tắt 4.1 Từ TCVN 11816-1:2017 (ISO/IEC 10118-1) 4.2 Duy nhất cho TCVN 11816-4 5 Các yêu cầu 6 Các biến và giá tr ị cần thiết cho phép băm 6.1 Độ dài của mã băm và của N 6.2 Đồng dư của hàm vòng 6.3 Giá tr ị khởi tạo 6.4 S ố mũ 6.5 Số nguyên tố của hàm r ú t gọn 7. Quy trình băm 7.1 Chuẩn bị xâu dữ liệu 7.2 Ứng dụng của hàm vòng 7.3 Hàm rút gọn 8 Các hàm băm 8.1 MASH-1 8.2 MASH-2 Phụ lục A (Tham khảo) Các v í dụ A.1 Quy tr ì nh băm A.2 Các ví dụ tính toán băm A.3 Thông điệp kiểm tra mẫu và giá trị băm của chúng Phụ lục B (Tham khảo) Thông tin bổ s u ng B.1 Xác định các giá trị của tham số B.2 Sự khác nhau giữa MASH-1 và MASH-2 B.3 Hàm rút gọn Ph ụ lục C (Quy định) Định danh đối tượng Thư mục tài liệu tham khảo