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

Hiệu lực: Còn hiệu lực

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 L1, 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 8×8 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.

Bi

Một byte

D

Dữ liệu

H

Mã băm

IV

Giá trị khởi tạo

L1

Độ dài (theo bit) của xâu đầu tiên trong hai xâu đầu vào của hàm vòng ϕ

L2

Độ 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.

LX

Độ 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à L1 và L2 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 LX = LY)

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.

ai, a’i

Dãy các chỉ số được sử dụng để đặc tả một hàm vòng

Ai

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

c0

Hàm nhận đầu vào là một xâu 64 phần tử của trường GF(28), và đưa ra ma trận 8×8 với các phần tử từ trường GF(28), được sử dụng trong việc đặc tả hàm vòng tại Điều 13

c1c2c3

Các hàm nhận đầu vào là một ma trận 8×8 gồm các phần tử từ trường GF(28) và đưa ra một ma trận 8×8 gồm các phần tử từ trường GF(28), được sử dụng trong việc đặc tả hàm vòng tại Điều 13

c4

Hàm nhận đầu vào là 2 ma trận 8×8 gồm các phần tử từ trường GF(28) và đưa ra một ma trận 8×8 gồm các phần tử từ trường GF(28), được sử dụng trong việc đặc tả hàm vòng tại Điều 13

Ci, C’i

Các từ được sử dụng trong các hàm vòng

C”

Ma trận vòng 8×8 với các phần tử được chọn từ trường GF(28) được sử dụng trong việc đặc tả hàm vòng tại Điều 13

Di

Khối nhận được từ xâu dữ liệu sau quá trình đệm.

di, ei, fi, gi

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.

Hi

Một xâu L2 bit được sử dụng trong phép toán băm để lưu trữ kết quả trung gian

GF(28)

Trường được định nghĩa như là GF(2)[x]/p8(x) với p8(x) = x8 + x4 + x3 + x2 + 1. Các phần tử trong trường là các xâu 8 bit.

M

Ma trận 8×8 có các phần tử được chọn từ trường GF(28).

q

Số khối trong xâu dữ liệu sau quá trình đệm và tách

Rn()

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ì Rn(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(28) bằng một phần tử khác s[x] Î GF(28).

Sn()

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 đó Sn(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í

ti, t’i

Giá trị dịch chuyển được sử dụng để đặc tả một hàm vòng.

W, Xi, X’i, Yi, Zi

Các từ được sử dụng để lưu trữ các kết quả tính toán trung gian.

W’, X”, Ki, Y’, Z’

Các ma trận với các phần tử được chọn từ trường GF(28) đượ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 2w, trong đó w là số bit trong một từ nghĩa là nếu A và B là các từ thì AB 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 2w. Khi đó kết quả sẽ nằm trong khoảng từ 0 đến 2w -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 8×8 với các phần tử được chọn từ trường GF(28), 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à x7 + x3 + 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 p8(x), với p8(x) = x8 + x4 + x3 + x2 + 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 LH 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(28) (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 LH ả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 x0, x1,… x8n-1 thì sau đó nó sẽ được biểu diễn như một xâu của n byte, B0, B1,… Bn-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ừ đó

Bi = 27X8i+ 26X8i+1 +…+X8i+7, với i(0 ≤ i <n)

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 LH bit tận cùng bên trái của L2 bit cuối của xâu đầu ra Hq.

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à 264-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 L1 = 512, L2 = 160 và LH 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 B0B1,…, B63 được biểu diễn là một dãy 16 từ Z0Z1,…., Z15 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

Zi = 224B4i+3 + 216B4i+2 + 28B4i+1 + B4i (0 ≤ ≤ 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ố g0, g1,…, g79 được sử dụng trong hàm vòng này, mỗi một hàm gi, 0 ≤ i ≤ 79, nhận ba từ X0, X1 và X2 làm đầu vào và đưa ra duy nhất một từ.

Các hàm số gi được xác định như sau:

gi(X0, X1, X2) = X0 Å X1 Å X2

0≤ i ≤15

gi(X0, X1, X2) = (X0 Ù X1Ú (Ø XÙ X2)

16≤ i ≤31

gi(X0, X1, X2) = (X0 Ù ØX1Å X2

32≤ i ≤47

gi(X0, X1, X2) = (X0 Ù X2Ú (XÙ ØX2)

48≤ i ≤63

gi(X0, X1, X2) = X0 Å (X1 Ú Ø X2)

64≤ i ≤79

7.1.4  Các hằng số

Hai dãy các từ hằng số C0, C1,…, C79 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):

Ci = 00000000, C’i = 50A28BE6, 0 ≤ i ≤ 15,
Ci = 5A827999, C’i = 5C4DD124, 16 ≤ i ≤ 31,
Ci = 6ED9EBA1, C’i = 6D703EF3, 32 ≤ i ≤ 47,
Ci = 8F1BBCDC, C’i = 7A6D76E9, 48 ≤ i ≤ 63,
Ci = A953FD4E, 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à (t0, t1,…,t79), (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à (a0, a1,…,a79), (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

ti

11

14

15

12

5

8

7

9

t’i

8

9

9

11

13

15

15

5

ai

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

ti

11

13

14

15

6

7

9

8

t’i

7

7

8

11

14

14

12

6

ai

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

ti

7

6

8

13

11

9

7

15

t’i

9

13

15

7

12

8

9

11

ai

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

ti

7

12

15

9

11

7

13

12

t’i

7

7

12

7

6

15

13

11

ai

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

ti

11

13

6

7

14

9

13

15

t’i

9

7

15

11

8

6

6

14

ai

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

ti

14

8

13

6

5

12

7

5

t’i

12

13

5

14

13

13

7

5

ai

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

ti

11

12

14

15

14

15

9

8

t’i

15

5

8

11

14

14

6

14

ai

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

ti

9

14

5

6

8

6

5

12

t’i

6

9

12

9

12

5

15

8

ai

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

ti

9

15

5

11

6

8

13

12

t’i

8

5

12

9

12

5

14

6

ai

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

ti

5

12

13

14

11

8

5

6

t’i

8

13

6

5

15

13

11

11

ai

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ừ Y0, Y1, Y2, Y3, Y4 ở hệ thập lục phân, trong đó Y0 là 32 bit trái nhất của 160 bit.

Y0 = 67452301,

Y1 = EFCDAB89,

Y2 = 98BADCFE,

Y3 = 10325476,

Y4 = 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à LD, và r là số dư khi LD 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 LD thành hai xâu 32-bit, một nửa là xâu có trọng số cao nhất của LD, 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 Di1 ≤ i ≤ q, được khai triển thành một dãy 16 từ Z0, Z1 ,…, Z15, trong đó Z0 tương ứng với 32 bit tận cùng bên trái của Di.

CHÚ THÍCH: Việc nối hai xâu 32-bit của L0 ở bước 3 sao cho hai xâu 32-bit này được sử dụng trực tiếp như các từ Z14 và Z15 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 LD 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, X0, X1, X2, X3, X4, 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à Z0, Z1,…,Z15 trong đó Z0 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ừ Y0, Y1, Y2, Y3, Y4

2. Đặt X0 := Y0, X1 := Yi, X2 := Y2, X3 := Y3, X4 := Y4

3. Đặt X’0 := Y0, X’1 := Y1, X’2 := Y2, X’3 := Y3, X’4 := Y4

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ừ Y0, Y1, Y2, Y3, Y4 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ị Y0, Y1, Y2, Y3, Y4 đượ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, ở đó Y0 tạo ra 4 byte đầu tiên, Y1 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 Y0 và byte thứ 20 (phải nhất) tương ứng với byte có trọng số cao nhất của Y4. 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à 264-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 L1 = 512, L2 = 128 và LH 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ố g0, g1,…, g63 được sử dụng trong hàm vòng này, mỗi một hàm gi, 0 ≤ i ≤ 63, nhận ba từ X0, X1 và X2 làm đầu vào và đưa ra duy nhất một từ.

Các hàm gi đượ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ố C0, C1,…, C63 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:

Ci = 00000000 C’i = 50A28BE6 0 ≤ i ≤ 15
Ci = 5A827999 C’i = 5C4DD124 16 ≤ i ≤ 31
Ci = 6ED9EBA1 C’i = 6D703EF3 32 ≤ i ≤ 47
Ci = 8F1BBCDC 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à (t0, t1,…,t63), (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à (a0, a1,…,a63), (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ừ Y0, Y1, Y2, Y3, ở hệ thập lục phân, trong đó Y0 là 32 bit trái nhất của 128 bit:

Y0 = 67452301,

Y1 = EFCDAB89,

Y2 = 98BADCFE,

Y3 = 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, X0, X1, X2, X3, 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à Z0, Z1,…, Z15 với Z0 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ừ Y0, Y1, Y2, Y3.

2. Đặt X0 := Y0, X1 := Y1, X2 := Y2, và X3 := Y3

3. Đặt X’0 := Y0, X’1 := Y1, X’2 := Y2, và X’3 := Y3

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ừ Y0, Y1, Y2, Y3 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ị Y0, Y1, Y2, Y3 đượ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, ở đó Y0 tạo ra 4 byte đầu tiên, Y1 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 Y0 và byte thứ 16 (phải nhất) tương ứng với byte có trọng số cao nhất của Y3. 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à 264-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 L1 = 512, L2 = 160 và LH 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 B0B1,…, B63 được biểu diễn là một dãy 16 từ Z0, Z1,…, Z15 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

Zi = 224B4i + 216B4i+1 + 28B4i+2 + B4i+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 f0, f1,…. f79 được sử dụng trong hàm vòng này ở đó mỗi hàm fi 0 ≤ i ≤ 79 nhận ba từ X0, X1 và X2 làm đầu vào và đưa ra một từ duy nhất.

Các hàm số fi được xác định như sau:

fi(X0, X1, X2= (X0 Ù X1Ú (ØX0ÙX2),

(0 ≤ i ≤ 19),

fi(X0, X1, X2= X0 Å X1 Å X2

(20 ≤ i ≤ 39),

fi(X0, X1, X2= (X0 Ù X1Ú (X0ÙX2Ú (X1ÙX2),

(40 ≤ i ≤ 59),

fi(X0, X1, X2= X0 Å X1 Å X2.

(60 ≤ i ≤ 79),

9.1.4  Các hằng số

Một dãy từ hằng số C0, C1,…, C79 đượ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):

Ci = 5A4827999, (0 ≤ i ≤ 19),

Ci = 6ED9EBA1, (20 ≤ i ≤ 39),

Ci = 8F1BBCDC, (40 ≤ i ≤ 49),

Ci = CA62C1D6, (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ừ Y0, Y1, Y2, Y3, Y4 ở hệ thập lục phân, trong đó Y0 là 32 bit trái nhất của 160 bit.

Y0 = 67452301,

Y1 = EFCDAB89,

Y2 = 98BADCFE,

Y3 = 10325476,

Y4 = 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à LD, và r là số dư khi LD 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 LD, 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 Di 512-bit, 1 ≤ i ≤ q, được khai triển thành một dãy 16 từ Z0, Z1,…, Z15, ở đó Z0 tương ứng với 32 bit trái nhất của Di.

CHÚ THÍCH: Việc nối xâu 64-bit của LD ở 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 LD được sử dụng tương ứng với các từ Z14 và Z15 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 LD là byte trái nhất và byte có trọng số thấp nhất của LD 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, X0, X1, X2, X3, X4, Z0, Z1, Z2,…. Z79, để 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à Z0, Z1,…, Z15 với Z0 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ừ Y0, Y1, Y2, Y3, Y4.

2. Với i = 16 đến 79 đặt

Zi := S1 (Zi-3 Å Zi-8 Å Zi-14 Å Zi-16).

3. Đặt X0:= Yo, X1:= Y1, X2:= Y2, X3:= Y3 và X4:= Y4

4. Với i = 0 đến 79 thực hiện hai bước sau:

5. Đặt 

6. Năm từ Y0, Y1, Y2, Y3, Y4 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ị Y0, Y1, Y2, Y3, Y4 đượ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, ở đó Y0 tạo ra 4 byte đầu tiên, Y1 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 Y0 và byte thứ 20 (phải nhất) tương ứng với byte có trọng số thấp nhất của Y4. 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à 264-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 L1 = 512, L2 = 256 và LH 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ố e0, e1, e2, e3, e4, e5 được dùng trong hàm vòng này, hàm e0 và e1 mỗi hàm nhận 3 từ X0, X1 và X2 làm đầu vào, e2e3e4e5 mỗi hàm nhận 1 từ X0 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ố e0e1e2e3e4e5 được xác định như sau:

e0(X0X1X2) = (X0 Ù X1)Å(ØX0ÙX2),

e1(X0X1X2) = (X0 Ù X1)Å(X0ÙX2)Å(X1ÙX2),

e2(X0) = S’2(X0)ÅS’13(X0)ÅS’22(X0),

e3(X0) = S’6(X0)ÅS’11(X0)ÅS’25(X0),

e4(X0) = S’7 (X0)ÅS’18 (X0)ÅR3 (X0),

e5(X0) = S’17 (X0)ÅS’19 (X0)ÅR10 (X0),

10.1.4  Các hằng số

Một dãy từ hằng số C0, C1,…, C63 đượ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ự C0, C1,…, C63.

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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 ở hệ thập lục phân, trong đó Y0 là 32 bit trái nhất của 256 bit.

Y0 = 6a09e667,

Y1 = bb67ae85,

Y2 = 3c6ef372,

Y3 = a54ff53a,

Y4 = 510e527f,

Y5 = 9b05688c,

Y6 = 1f83d9ab,

Y7 = 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 W1, W2, X0, X1, X2, X3, X4, X5, X6, X7, Z0, Z1, Z2,…, Z63 để 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à Z0, Z1,…,Z15 trong đó Z0 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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7.

2. Với i = 16 đến 63 đặt

3. Đặt X0 := Y0, X1 := Y1, X2 := Y2, X3 := Y3, X4 := Y4, X5 := Y5, X6 := Y6, X7 := Y7

4. Với i = 0 đến 63 thực hiện ba bước sau:

6. Tám từ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 đượ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, ở đó Y0 tạo ra 4 byte đầu tiên, Y1 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 Y0 và byte thứ 32 (phải nhất) tương ứng với byte có trọng số thấp nhất của Y7. 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à 2128-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 L1 = 1024, L2 = 512 và LH 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 B0B1,…, B127 được biểu diễn là một dãy 16 từ Z0, Z1,…, Z15 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

Zi = 256B8i + 248B8i+1 + 240B8i+2 + 232B8i+3 + 224B8i+4 + 216B8i+5 + 28B8i+6 + B8i+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ố d0, d1, d2, d3, d4, d5 được dùng trong hàm vòng này, hàm d0 và d1 mỗi hàm nhận 3 từ 64 bit X0, X1 và X2 làm đầu vào, d2, d3, d4 và d5 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 d0, d1, d2, d3, d4, d5 được xác định như sau:

d0(X0X1X2) = (X0 Ù X1)Å(ØX0ÙX2),

d1(X0X1X2) = (X0 Ù X1)Å(X0ÙX2)Å(X1ÙX2),

d2(X0) = S’28(X0)ÅS’34(X0)ÅS’39(X0),

d3(X0) = S’14(X0)ÅS’18(X0)ÅS’41(X0),

d4(X0) = S’1 (X0)ÅS’8 (X0)ÅR7 (X0),

d5(X0) = S’19 (X0)ÅS’61 (X0)ÅR6 (X0),

11.1.4  Các hằng số

Một dãy từ hằng số C0, C1,…. C79 đượ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ự C0, C1,…, C79.

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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 ở hệ thập lục phân, trong đó Y0 là 64 bit trái nhất của 512 bit.

Y0 = 6a09e667f3bcc908,

Y1 = bb67ae8584caa73b,

Y2= 3c6ef372fe94f82b,

Y3 = a54ff53a5f1d36f1,

Y4= 510e527fade682d1,

Y5 = 9b05688c2b3e6c1f,

Y6 =1f83d9abfb41bd6b,

Y7 = 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à LD, và r là số dư khi LD 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 LD, 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 Di 1024-bit, 1 ≤ i ≤ q, được khai triển thành một dãy 16 từ Z0, Z1,… ,Z15, ở đó Z0 tương ứng với 64 bit trái nhất của Di.

CHÚ THÍCH: Việc nối xâu 128-bit của LD ở 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 LD được sử dụng tương ứng với các từ Z14 và Z15 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 LD là byte trái nhất và byte có trọng số thấp nhất của LD 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 W1, W2, X0, X1, X2, X3, X4, X5, X6, X7, Z0, Z1, Z2,…, Z79, để 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à Z0, Z1,…,Z15 trong đó Z0 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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7.

3. Đặt X0 := Y0, X1 := Y1, X2 := Y2, X3 := Y3, X4 := Y4, X5 := Y5, X6 := Y6, X7 := Y7

4. Với i = 0 đến 79 thực hiện ba bước sau:

6. Tám từ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 đượ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, ở đó Y0 tạo ra 8 byte đầu tiên, Y1 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 Y0 và byte thứ 64 (phải nhất) tương ứng với byte có trọng số thấp nhất của Y7. 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à 2128-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 L1 = 1024, L2 = 512 và LH 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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 ở hệ thập lục phân, trong đó Y0 là 64 bit trái nhất của 512 bit.

Y0 =cbbb9d5dc1059ed8,

Y1 = 629a292a367cd507,

Y2 = 9159015a3070dd17,

Y3 = 152fecd8f70e5939,

Y4 = 67332667ffc00b31,

Y5 = 8eb44a8768581511,

Y6 = db0c2e0d64f98fa7,

Y7 = 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à 2258-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 L1 = 512, L2 = 512 và LH 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 8×8 với các phần tử được chọn từ trường GF(28)), 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 = (B0, B1, …. B63) đượ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 B0), 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 B1), …., 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 B63). Sử dụng hàm c0 đượ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ố c0, c1, c2, c3, c4 được dùng trong hàm vòng này. Chúng được xác định như sau

Hàm c0 nhận một dãy 64 byte B = (B0, B1, …. B63) là đầu vào, và đưa ra ma trận Z’ = (z’ij) trong đó

z’ij = B8i+j (0 ≤ i, j ≤ 7).

Điều này có nghĩa là Z’ = c0(B) khi và chỉ khi z’ij = B8i+j (0 ≤ i, j ≤ 7).

Hàm c1 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’ = c1(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(28) bằng một phần tử khác s[x] Î GF(28) 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 c2 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’ = c2(X”) khi và chỉ khi w”ij = X”(i-j)mod 8j, (0 ≤ i, j ≤ 7).

Hàm c3 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 8×8 với các phần tử được chọn từ trường GF(28), như được đặc tả dưới đây:

Điều này có nghĩa là W’ = c3(X”) khi và chỉ khi W” = X” • C”.

Hàm c4 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’ = c4(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ố Ar = (Arij) ( 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:

Ar0j = s[8(r-1) + j], (0 ≤ j ≤ 7),

Arij = 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à LD, ghép xâu thu được từ bước trước đó với 256 nhị phân bit của LD, 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 Di 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 Di và z’77 tương ứng với 8 bit phải nhất của Di.

CHÚ THÍCH: Việc nối xâu 256 bit của LD 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 LD ở hàng thứ 5 và cột đầu tiên, byte có trọng số thấp nhất của LD ở 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”, K0, K1,…, K10 để ký hiệu 13 ma trận khác nhau, các phần tử được lựa chọn từ trường GF(28) 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(28) đượ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(28).

2. Đặt K0 := Y’ và với i từ 1 đến 10, đặt:

Ki := c4(c3(c2(c1(Ki-1)))), Ai)

CHÚ THÍCH: Bước này mở rộng ma trận Y’ thành dãy các khoá vòng K0,…, K10.

3. Đặt X” := c4(Z’, K0); và với j từ 1 đến 10 thực hiện hai bước sau

(a) W’:= c4(c3(c2(c1(X”))), Kj);

(b) X”:=W’.

4. Đặt Y’ := W’ Å K0 Å 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à 264-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 L1 = 512, L2 = 256 và LH = 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ừ Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 cơ số 16 ở đó Y0 biểu diễn 32 bit bên trái nhất của 256 bit.

Y0 = c1059ed8

Y1= 367cd507

Y2 = 3070dd17

Y3=f70e5939

Y4 = ffc00b31

Y= 68581511

Y= 64f98fa7

Y= 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ị X0, X1, X2, X3, X4, 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ị X0, X1, X2, X3, X4, 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ị X0, X1, X2, X3, X4, 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 106 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ị X0, X1, X2, X3, 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ị X0, X1, X2, X3, 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ị X0, X1, X2, X3, 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 106 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ị X0, X1, X2, X3, X4 (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ị X0, X1, X2, X3, X4 (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ị X0, X1, X2, X3, X4 (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 106 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ị X0, X1, X2, X3, X4, X5, X6, X7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ị X0, X1, X2, X3, X4, X5, X6, X7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ị Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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 106 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ị X0, X1, X2, X3, X4, X5, X6, X7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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 106 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ị X0, X1, X2, X3, X4, X5, X6, X7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ị Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ị X0, X1, X2, X3, X4, X5, X6, X7 (biểu diễn dưới dạng thập lục phân) thu được:

Tám giá trị tiếp theo Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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 106 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ị X0, X1, X2, X3, X4, X5, X6, X7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ị Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 (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 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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 K0 (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 Ki 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 8×8 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 K0 (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 Ki 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 K0 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 Ki 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 106 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ố Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7

Tám từ sau đây Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ố Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 trong xử lý khối đầu tiên:

Tám từ sau đây Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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ố Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 trong xử lý khối thứ hai.

Tám từ sau đây Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7 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 106 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à H0 bao gồm 224 bit 0. Đối với i = 1 đến 100 gọi Hi là mã băm của Hi-1.

Mã băm H100 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)

Sn() – Chỉ cần để xác định S như Sn (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_L1 == {s: String | #s mod L1 = 0}

pad: String → StringMultiple_L1

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ố

L1 = 512

L2 = 160

LH = 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ố

L1 = 512

L2 = 128

LH = 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.

g2 == (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ố

L1 = 512

L2 = 160

LH =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

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
Số, ký hiệu văn bản TCVN11816-3: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ứ

Tải văn bản