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Ư
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-functions 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 Hj 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 Hj
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 Hq có độ dài Lϕ để tạo ra mã băm H với độ dài Lp.
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
Bj | Khối thứ j được chia từ xâu dữ liệu D sau quá trình đệm, tách và mở rộng. |
Dj | Một nửa khối thứ j từ xâu dữ liệu D sau quá trình đệm và tách. Dq+1 đến Dq+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. |
Hj | Đầu ra vòng thứ j của hàm vòng. Hj có độ dài Lϕ |
LD | Độ dài của xâu đầu vào D tính theo bit. |
Lϕ | Độ dài đầu ra Hj của hàm vòng ϕ. Nó là bội số nguyên của 16. |
LN | Độ dài của số đồng dư N sử dụng trong hàm vòng. |
Lp | Độ dài của số nguyên tố p sử dụng trong hàm rút gọn. |
mod | Nếu Z1 là một số nguyên và Z2 là một số nguyên dương thì Z1 mod Z2 thì số nguyên duy nhất Z3 thỏa mãn |
a) | a) 0 ≤ Z3 < Z2, và |
b) | b) Z1 – Z3 là một số nguyên và là bội của Z2. |
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 giá 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 Hq có độ dài Lϕ để nhận được mã băm H có chiều dài Lp. |
Yj | 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ỉ 2Lp/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ỉ 2Lp 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 Lp của số nguyên tố p lớn nhất là bằng một nửa độ dài của N, Lp ≤ 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 2Lϕ/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 Hj có liên quan theo cách thức sau:
Lϕ + 1 ≤ LN ≤ Lϕ + 16
Độ dài Lϕ của khối Hq là bội số nguyên của 16.
CHÚ THÍCH 1: Nếu độ dài Lϕ được chọn, thì độ dài LN ràng buộc theo bất đẳng thức ở trên. Nếu độ dài LN được chọn thì độ dài Lϕ sẽ là bội số lớn nhất của 16 mà nhỏ hơn LN.
CHÚ THÍCH 2: Sự hiểu biết về N đủ để xác định LN 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ả thi 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 Lp 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 Lp lớn nhất là bằng một nửa độ dài của N, Lp <Lϕ/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 vi 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 LD 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 LD 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: D1, D2,..,Dq.
7.1.4 Khai triển
Mỗi nửa khối Dj, 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 Dj thành các nửa byte và đặt vào trước mỗi nửa byte của Dj 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 Dj được ký hiệu là Bj, 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 Hj-1 và Bj, cả hai có độ dài Lϕ. Nó trả về một khối Hj độ dài Lϕ. Được định nghĩa như sau:
ϕ(Bj, Hj-1) = ((((Hj-1Å Bj) Ú E)e mod N)~Lϕ)Å Hj-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 Bj như sau:
H0:= IV
Hj:= ϕ(Bj, Hj-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ừ Hq. Mã băm H được tính toán bởi bốn bước sau: tách khối Hq, mở rộng xâu dữ liệu, xử lý các khối dữ liệu bổ sung và rút gọn khối Hq+8.
7.3.1 Việc tách khối Hq
Khối Hq được chia thành 4 xâu độ dài Lϕ/4 bit, kí hiệu Hq1, Hq2, Hq3, Hq4
Hq:= Hq1 || Hq2 || Hq3 || Hq4
7.3.2 Mở rộng xâu dữ liệu
Định nghĩa Y0 := Hq3, Y1 := Hq1, Y2 := Hq4, và Y3 := Hq2. Với i = 4 tới 15 đặt:
Yi := Yi-1 Å Yi–4
Sau đó xác định 8 nửa khối dữ liệu bổ sung Dq+1 tới Dq+8 như sau:
Với i = 1 đến 8 đặt
Dq+i := Y2i-2 || Y2i-1
7.3.3 Xử lý các nửa khối
Tám nửa khối Dq+1 tới Dq+8 được xử lý như trong 7.1.4 và 7.2, nhưng với IV = Hq, nhận được kết quả là Hq+8.
7.3.4 Rút gọn
Mã băm H với độ dài Lp được tính toán như sau:
H:= Hq+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:
ϕ(Bj, Hj-1) = ((((Hj-1 Å Bj) Ú E)2 mod N) ~ Lϕ) Å Hj-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
ϕ(Bj, Hj-1) = ((((Hj-1 Å Bj) Ú E)257 mod N) ~ Lϕ) Å Hj-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ể LD 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 LD. |
A | bộ đệm để lưu giữ 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 = H0 = 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:= Be 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 Hq đượ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, C0, C1, C2, C3, i.
A | lưu giữ khối Hq để 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. |
C0, C1, C2, C3 | 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 Hq)
Khối Hq được chứa trong bộ đệm A được chia thành 4 phần Hq1, Hq2, Hq3, Hq4 mỗi phần độ dài Lϕ/4 (xem Hình 1) và được lưu:
C0 := Hq3
C1 := Hq1
C2 := Hq4
C3 := Hq2
A.1.5.3 Bước 4c (Mở rộng và bước lặp)
Tính | C:= C0 || C1 | (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:=C2 || C3 | (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 | C0 := C0 Å C3 | (kết hợp) |
C1 := C1 Å C0 | ||
Tính | C:= C0|| C1 | (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 | C2 := C2 Å C1 | (kết hợp) |
C3 := C3 Å C2 | ||
Tính | C:= C2 || C3 | (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à Lp 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 LN . Độ 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, | LN = 10ch = 268d |
Độ dài của khối Hj, | Lϕ = 100h = 256d |
Độ dài của số nguyên tố p, | Lp = 80h = 128d |
Độ dài của mã băm H, | Lp = 80h = 128d |
Xâu dữ liệu D = ‘Now is the time for all’
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, LD = c0h = 192d
CHÚ THÍCH: – Mã ISO 646 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à C0, C1, C2, C3 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 tra 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à | LN = 780d = 30Ch |
Chiều dài đầu ra của hàm vòng là | Lϕ = 768d = 300h |
Chiều dài của số nguyên tố p sử dụng trong hàm rút gọn là | Lp = 160d = A0h |
Chiều dài của mã băm là | Lp = 160d = A0h |
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 |
Hq | 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 |
Hq+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, Vol. 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- 672
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ổ sung
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
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Ư | |||
Số, ký hiệu văn bản | TCVN11816-4:2017 | Ngày hiệu lực | |
Loại văn bản | Tiêu chuẩn Việt Nam | Ngày đăng công báo | |
Lĩnh vực |
Giao dịch điện tử |
Ngày ban hành | 01/01/2017 |
Cơ quan ban hành | Tình trạng | Còn hiệu lực |
Các văn bản liên kết
Văn bản được hướng dẫn | Văn bản hướng dẫn | ||
Văn bản được hợp nhất | Văn bản hợp nhất | ||
Văn bản bị sửa đổi, bổ sung | Văn bản sửa đổi, bổ sung | ||
Văn bản bị đính chính | Văn bản đính chính | ||
Văn bản bị thay thế | Văn bản thay thế | ||
Văn bản được dẫn chiếu | Văn bản căn cứ |