Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin, an toàn thông tin trở thành một nhu cầu gắn liền với nó như hình với bóng. Đặc biệt trong thời đại mà thương mại điện tử đang lên ngôi thì việc có được các công cụ đầy đủ để đảm bảo cho sự an toàn trao đổi thông tin liên lạc là vô cùng cần thiết. Chính vì vậy mà chữ ký số đã ra đời với nhiều tính năng ưu việt. Bằng việc sử dụng chữ ký số mà những giao dịch liên quan đến lĩnh vực kinh tế (như giao dịch tài chính –ngân hàng, thuế, hải quan, bảo hiểm ) và những giao dịch yêu cầu tính pháp lý cao (các dịch vụ hành chính công, đào tạo từ xa) có thể thực hiện qua mạng máy tính.
38 trang |
Chia sẻ: vietpd | Lượt xem: 1529 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Chuẩn ký chữ số và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lời mở đầu.
Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin, an toàn thông tin trở thành một nhu cầu gắn liền với nó như hình với bóng. Đặc biệt trong thời đại mà thương mại điện tử đang lên ngôi thì việc có được các công cụ đầy đủ để đảm bảo cho sự an toàn trao đổi thông tin liên lạc là vô cùng cần thiết. Chính vì vậy mà chữ ký số đã ra đời với nhiều tính năng ưu việt. Bằng việc sử dụng chữ ký số mà những giao dịch liên quan đến lĩnh vực kinh tế (như giao dịch tài chính –ngân hàng, thuế, hải quan, bảo hiểm…) và những giao dịch yêu cầu tính pháp lý cao (các dịch vụ hành chính công, đào tạo từ xa) có thể thực hiện qua mạng máy tính.
Ngày nay, chữ ký số đóng một vai trò quan trọng trong kế hoạch phát triển Thương mại điện tử và Chính phủ điện tử ở nước ta. Chính vì vậy em đã chọn lĩnh vực “chuẩn chữ ký số” làm đề tài nghiên cứu cho bài luận văn tốt nghiệp của mình. Nội dung của bài báo cáo tóm tắt này em xin trình bày hai phần chính:
Chương 1 – Chuẩn hàm băm an toàn. Mục đích của chương này là trang bị cho người đọc các kiến thức cần thiết về hàm băm cũng như giới thiệu các hàm băm an toàn được sử dụng trong giải thuật tạo và xác nhận chữ ký số được trình bày trong chương 3.
Chương 2 – Chuẩn chữ ký số. Đây là nội dung trọng tâm của bài luận văn trong đó trình bày chi tiết về chuẩn chữ ký số, giải thuật tạo và xác nhận chữ ký số DSA, các giải thuật tạo và xác nhận các tham số cần thiết được sử dụng trong giải thuật tạo và xác nhận chữ ký số DSA đó.
Do hạn chế về kiến thức cũng như về thời gian nghiên cứu, bài luận văn này chắc chắn không tránh khỏi những sai sót. Em rất mong nhận được ý kiến đóng góp của các thầy cô giáo và bạn bè.
Cuối cùng em xin chân thành cảm ơn sự hỗ trợ của các thầy cô trong khoa, đặc biệt tới thầy giáo TS. Lê Phê Đô, người đã luôn tận tình hướng dẫn, theo dõi em trong quá trình thực hiện đề tài.
Sinh viên thực hiện:
Nguyễn Đình Lượng
Danh sách các từ viết tắt
DSA: Digital Signature Standard.
DSS: Digital Signature Algorithm.
FIPS: PUB Federal Information Processing Standards Publication.
NIST: the National Institute of Standards and Technology.
SHS: Secure Hash Standard
SHA: Secure Hash Algorithm.
Các ký hiệu toán học
Phép toán và theo bít.
Phép toán hoặc theo bít .
Phép toán XOR theo bít.
Trả về số nguyên nhỏ nhất thỏa mãn ≥ a.
Ví dụ: =5, = 6, = -2.
ROTLn(x) Phép quay trái từ x đi n bít, được thực hiện bằng cách bỏ đi n bít trái nhất của từ x và sau đó lại thêm đúng n bít trái nhất vừa bỏ đi đó vào phía bên phải của x.
ROTRn(x) Phép quay phải từ x đi n bít, được thực hiện bằng cách bỏ đi n bít phải nhất của từ x và sau đó lại thêm đúng n bít phải nhất vừa bỏ đi đó vào phía bên trái của x.
Chương 1
CHUẨN HÀM BĂM AN TOÀN
(SHS - FIPS PUB 180-2)
1.1 Giới thiệu về NIST.
Viện chuẩn và công nghệ quốc gia NIST (the National Institute of Standards and Technology), được thành lập năm 1901, là một cơ quan quản trị công nghệ của bộ thương mại Hoa Kì. Nhiệm vụ của Viện này là thúc đẩy các đổi mới và nâng cao tính cạnh tranh công nghệ bằng cách đưa ra khoa học đo lường, các chuẩn và công nghệ tiên tiến theo cách làm tăng tính an toàn kinh tế và cải thiện chất lượng cuộc sống.
Với một phần nhiệm vụ này, các nhà khoa học và kỹ sư của NIST đã không ngừng cải tiến khoa học đo lường, làm cho công nghệ và chế tạo siêu chính xác, cái mà rất cần thiết cho các công nghệ tiên tiến nhất ngày nay, trở nên có thể thực hiện được. Họ còn quan tâm trực tiếp đến việc nghiên cứu và phát triển các chuẩn, được thực hiện bởi các cơ quan của chính phủ Mỹ và của tư nhân. Sự đổi mới và các tiến bộ về công nghệ phụ thuộc vào các kỹ năng và khả năng độc nhất của NIST, đặc biệt trong 4 lĩnh vực trọng yếu là: công nghệ sinh học, công nghệ nano, công nghệ thông tin và chế tạo tiên tiến.
NIST thực hiện nhiệm vụ của mình trong 4 chương trình hợp tác sau:
Thư Viện NIST: thực hiện các nghiên cứu có vai trò thúc đẩy cơ sở công nghệ của quốc gia và điều này là cần thiết cho nền công nghiệp của nước Mỹ để có thể cải tiến liên tục các sản phẩm và dịch vụ.
Chương trình chất lượng quốc gia Baldrige: thúc đẩy hoạt động của các nhà sản xuất, công ty dịch vụ, Viện giáo dục và các cơ sở y tế chăm sóc sức khỏe; chỉ đạo thực hiện các chương trình lớn và quản lý giải thưởng chất lượng quốc gia Malcolm Baldrige hàng năm để ghi nhận các kết quả hoạt động xuất sắc và chất lượng đã đạt được.
Đối tác sản xuất mở rộng Hollings: là một mạng bao gồm các trung tâm địa phương nhằm hỗ trợ về mặt kỹ thuật và kinh doanh cho các nhà sản xuất nhỏ.
Chương trình công nghệ nâng cao: nhằm tạo ra sự phát triển của các công nghệ mới để mang lại lợi nhuận lớn cho quốc gia bằng cách cùng với các khu vực tư nhân đồng tài trợ cho đối tác R&D (Reseach and Development).
NIST đã có một quỹ hoạt động trị giá khoảng 930 triệu USD cho năm tài chính 2006 của mình. NIST sở hữu khoảng 2800 các nhà khoa học, kỹ sư, kỹ thuật viên, hỗ trợ viên và nhân viên hành chính. Ngoài ra NIST còn có khoảng 1800 công tác viên (là những người tìm kiếm khách hàng và các kỹ sư của các công ty ở Mỹ và ở nước ngoài). Hơn nữa, NIST còn có đội ngũ hội viên đông đảo với khoảng 1400 chuyên gia và nhân viên sản xuất của gần 350 trung tâm chi nhánh trên toàn quốc.
Một số tài liệu công nghệ mà NIST đã công bố là:
FIPS 113
Tháng 3 năm 1985, xác thực dữ liệu máy tính.
FIPS 140-1
Tháng 1 năm 1994, Các yêu cầu bảo mật cho các module mã hóa.
FIPS 140-2
Tháng 3 năm 2001, Các yêu cầu bảo mật cho các module mã hóa.
FIPS 140-3
Tháng 7 năm 2007, Các yêu cầu bảo mật cho các module mã hóa.
FIPS 140-3 là một phiên bản sửa đổi của FIPS 140-2. Nó đưa ra 5 mức độ bảo mật thay vì là 4 như trong FIPS 140-2 và có một phần giành riêng cho bảo mật phần mềm.
FIPS 180-2
Ngày 1 tháng 8 năm 2002, chuẩn hàm băm an toàn SHS.
FIPS 186-2
Tháng 1 năm 2000, chuẩn chữ ký số DSS.
FIPS 188
Tháng 9 năm 1994, chuẩn các mức độ bảo mật cho truyền tin.
FIPS 190
Tháng 9 năm1994, nguyên tắc sử dụng các lựa chọn công nghệ mật mã tiên tiến.
FIPS 196
Tháng 2 năm 1997, thực thể xác nhận sử dụng mật mã khóa công khai.
FIPS 197
Tháng 11 năm 2001, chuẩn mật mã tiên tiến.
FIPS 199
Tháng 2 năm 2004, các chuẩn về phân loại mức an toàn của các hệ thống thông tin liên bang.
FIPS 31
Tháng 6 năm1974, các nguyên tắc về tính bảo mật của việc xử lý dữ liệu tự động và quản lý rủi ro.
FIPS 41
Tháng 5 năm 1975, các nguyên tắc bảo mật máy tính cho việc thực hiện các hoạt động riêng tư.
FIPS 46-3
Tháng 10 năm1999, chuẩn mã hóa dữ liệu DES.
FIPS 73
Tháng 6 năm 1980, các nguyên tắc bảo mật cho các ứng dụng máy tính.
FIPS 74
Tháng 8 năm 1981, các nguyên tắc thực thi và sử dụng chuẩn mật mã dữ liệu NBS.
FIPS 102
Tháng 9 năm 1983, các nguyên tắc cấp chứng thực và xác nhận sự an toàn của máy tính.
FIPS 171
Tháng 8 năm 1992, quản lý khóa có sử dụng ANSI X9.17.
1.2. Sơ lược về hàm băm
1.2.1. Giới thiệu
Theo các sơ đồ chữ ký ở trên thì chữ ký của thông điệp cũng có độ dài bằng độ dài của thông điệp, đó là một điều bất tiện. Ta mong muốn như trong trường hợp chữ ký viết tay, chữ ký có độ dài ngắn và hạn chế cho dù văn bản có độ dài bằng bao nhiêu. Vì chữ ký số được ký cho từng bit của thông điệp, nếu muốn chữ ký có độ dài hạn chế trên thông điệp có độ dài tùy ý thì ta phải tìm cách rút gọn độ dài thông điệp. Nhưng bản thân thông điệp không thể rút ngắn được, nên chỉ còn cách là tìm cho mỗi thông điệp một thông điệp thu gọn có độ dài hạn chế và thay việc ký trên thông điệp, ta ký trên thông điệp thu gọn.
Để giải quyết vấn đề này ta sử dụng hàm băm, chấp nhận một thông điệp có độ dài tuỳ ý làm đầu vào. Hàm băm sẽ biến đổi thông điệp này thành một thông điệp rút gọn và sau đó sẽ dùng lược đồ ký để ký lên thông điệp rút gọn đó.
1.2.2. Định nghĩa hàm băm
Hàm băm là một hàm h có ít nhất hai tính chất sau:
Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tùy ý tới một đầu ra h(x) có độ dài n bit hữu hạn.
Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x, có thể dễ dàng tính được h(x).
Hàm băm yếu:
Hàm băm h được gọi là yếu nếu:
Với y cho trước và không có biến đầu vào tương ứng thì không có khả năng tính toán để tìm thông điệp x sao cho:
h(x) = y
Cho một thông điệp x thì về mặt tính toán không tìm ra được thông điệp x’ khác x sao cho:
h(x’) = h(x)
Hàm băm mạnh:
Hàm băm h được gọi là mạnh nếu:
Cho một thông điệp x thì về mặt tính toán không tìm ra được thông điệp x’ khác x sao cho:
h(x’) = h(x)
Không có khả năng về mặt tính toán để tìm hai thông điệp khác nhau bất kỳ x và x’ sao cho:
h(x) = h(x’)
1.3 Chuẩn hàm băm an toàn
1.3.1. Giới thiệu
Chuẩn hàm băm an toàn SHS-FIPS PUB 180 (Secure Hash Standard) được NIST đưa ra lần đầu vào 11/5/1993. Nội dung chỉ có một giải thuật hàm băm được đưa ra là SHA-1. Và phiên bản thứ 2 của chuẩn hàm băm an toàn là FIPS PUB 180-2, được đưa ra vào ngày 1/8/2002.
Trong FIPS PUB 180-2 chỉ rõ 4 giải thuật hàm băm an toàn là SHA-1, SHA-256, SHA-384, and SHA-512. Cả 4 giải thuật này đều là các hàm băm một chiều có thể xử lý thông điệp để tạo ra một thông điệp thu gọn của thông điệp ban đầu. Các giải thuật này đều đảm bảo được tính toàn vẹn của thông điệp: bất cứ sự thay đổi nào với thông điệp M thì đều dẫn tới sự thay đổi của thông điệp rút gọn H(M)- với một xác suất là rất lớn. Đặc điểm này rất có ích trong việc tạo và xác nhận chữ ký số cũng như trong việc tạo ra các số ngẫu nhiên.
Mỗi một giải thuật đều gồm 2 bước: bước tiền xử lý và bước tính toán băm. Bước tiền xử lý bao gồm các công việc như độn tin, chia khối, thiết lập giá tri khởi tạo dùng cho tính toán băm. Bước tính toán băm sẽ tạo ra một danh sách thông định sẵn từ bản tin độn và sử dụng cơ chế đó với các hàm, hằng và các phép toán để tạo ra một chuỗi các giá trị băm. Giá trị băm cuối cùng được tạo bởi bước tính toán băm sẽ chính là thông điệp rút gọn.
Bốn giải thuật này khác nhau chủ yếu ở số bít bảo mật. Số bít bảo mật có liên quan trực tiếp tới độ dài của thông điệp rút gọn. Khi một giải thuật hàm băm được sử dụng cùng với một giải thuật khác thì ta cần phải chỉ ra hàm băm cần sử dụng có số bít bảo mật là bao nhiêu. Ví dụ, nếu một thông điệp được ký bằng giải thuật chữ ký số với 128 bít bảo mật thì giải thuật chữ ký số đó có thể yêu cầu sử dụng một hàm băm an toàn có 128 bít bảo mật (ví dụ SHA-256).
Ngoài ra, 4 giải thuật khác nhau ở kích thước của khối và từ dữ liệu được dùng trong quá trình băm. Bảng dưới đây sẽ trình bày các đặc điểm cơ bản của 4 giải thuật hàm băm an toàn.
Giải thuật
Kích thước thông điệp (bits)
Kích thước khối
(bits)
Kích thước từ
(bits)
Kích thước thông điệp thu gọn
(bits)
Bit
an toàn
(bits)
SHA-1
< 264
512
32
160
80
SHA-256
< 264
512
32
256
128
SHA-384
< 2128
1024
64
384
192
SHA-512
< 2128
1024
64
512
256
Bảng 2.1. Đặc điểm của các giải thuật hàm băm an toàn.
1.3.2. Các hàm sử dụng trong SHA
Trong quá trình tính toán băm thì mỗi một giải thuật hàm băm sẽ sử dụng các hàm được định sẵn cho từng giải thật như sau:
Các hàm của SHA-1:
SHA-1 sử dụng một danh sách các hàm logic f0, f1,…, f79. Mỗi hàm toán học ft, trong đó 0 ≤ t ≤ 79 đều được thực hiện trên các từ dữ liệu 32 bít x, y, z và đầu ra của nó cũng là một từ có kích thước 32 bít. Hàm ft(x, y, z) được định nghĩa như sau:
ft (x, y, z) = (2.1)
Các hàm của SHA-256:
SHA-256 sử dụng 6 hàm logic, trong đó mỗi hàm đều thực hiện trên các từ 32 bít được biểu diễn bởi x, y, z. Kết quả đầu ra của các hàm cũng đều là từ nhớ 32 bít.
Ch( x, y, z) = ( x y) (x z) (2.2)
Maj( x, y, z) = ( x y) ( x z) ( y z) (2.3)
(2.4)
(2.5)
(2.6)
(2.7)
Các hàm của SHA-384 và SHA-512:
SHA-384 và SHA-512 đều sử dụng 6 hàm logic, trong đó mỗi hàm đều thực hiện trên các từ 64 bít x, y, z. Kết quả đầu ra của các hàm này cũng đều là một từ 64 bít.
Ch( x, y, z) = ( x y) (x z) (2.8)
Maj( x, y, z) = ( x y) ( x z) ( y z) (2.9)
(2.10)
(2.11)
(2.12)
(2.13)
1.3.3 Các hằng được sử dụng trong SHA
Các hằng của SHA-1:
SHA-1 sử dụng một dãy 80 hằng 32 bít K0, K1,…, K79. Công thức tính chúng như sau:
(2.14)
Các hằng của SHA-256:
SHA-256 sử dụng 64 hằng số 32 bít như sau: K0{256}, K1{256},… , K63{256} . Dưới đây là 64 hằng số của SHA-256 biểu diễn ở dạng hexa:
428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5
d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174
e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da
983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967
27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c92e 92722c85
a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070
19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3
748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2
Các hằng của SHA-384 và SHA-512:
SHA-384 và SHA-512 cùng sử dụng một dãy 80 hằng số 64 bít K0{512}, K1{512},…, K79{512}. Dưới đây là 80 hằng số của SHA-384 và SHA-512 biểu diễn ở dạng hexa:
428a2f98d728ae22 7137449123ef65cd b5c0fbcfec4d3b2f e9b5dba58189dbbc
3956c25bf348b538 59f111f1b605d019 923f82a4af194f9b ab1c5ed5da6d8118
d807aa98a3030242 12835b0145706fbe 243185be4ee4b28c 550c7dc3d5ffb4e2
72be5d74f27b896f 80deb1fe3b1696b1 9bdc06a725c71235 c19bf174cf692694
e49b69c19ef14ad2 efbe4786384f25e3 0fc19dc68b8cd5b5 240ca1cc77ac9c65
2de92c6f592b0275 4a7484aa6ea6e483 5cb0a9dcbd41fbd4 76f988da831153b5
983e5152ee66dfab a831c66d2db43210 b00327c898fb213f bf597fc7beef0ee4
c6e00bf33da88fc2 d5a79147930aa725 06ca6351e003826f 142929670a0e6e70
27b70a8546d22ffc 2e1b21385c26c926 4d2c6dfc5ac42aed 53380d139d95b3df
650a73548baf63de 766a0abb3c77b2a8 81c2c92e47edaee6 92722c851482353b
a2bfe8a14cf10364 a81a664bbc423001 c24b8b70d0f89791 c76c51a30654be30
d192e819d6ef5218 d69906245565a910 f40e35855771202a 106aa07032bbd1b8
19a4c116b8d2d0c8 1e376c085141ab53 2748774cdf8eeb99 34b0bcb5e19b48a8
391c0cb3c5c95a63 4ed8aa4ae3418acb 5b9cca4f7763e373 682e6ff3d6b2b8a3
748f82ee5defb2fc 78a5636f43172f60 84c87814a1f0ab72 8cc702081a6439ec
90befffa23631e28 a4506cebde82bde9 bef9a3f7b2c67915 c67178f2e372532b
ca273eceea26619c d186b8c721c0c207 eada7dd6cde0eb1e f57d4f7fee6ed178
06f067aa72176fba 0a637dc5a2c898a6 113f9804bef90dae 1b710b35131c471b
28db77f523047d84 32caab7b40c72493 3c9ebe0a15c9bebc 431d67c49c100d4c
4cc5d4becb3e42b6 597f299cfc657e2a 5fcb6fab3ad6faec 6c44198c4a475817
1.3.4 Tiền xử lý
Bước tiền xử lý được thực hiện trước khi tính toán băm được bắt đầu. Tiền xử lý bao gồm 3 bước: độn tin, phân khối bản tin độn và cuối cùng là thiết lập giá trị băm khởi tạo H(0).
a. Độn bản tin
Một bản tin hay thông điệp M trước khi tính toán băm sẽ được độn thêm bít nhằm đảm bảo bản tin sau khi độn (bản tin độn) có kích thước là một bội số của 512 hoặc 1024 bit (kích thước này phụ thuộc vào giải thuật được sử dụng).
Với SHA-1 và SHA-256
Giả thiết rằng chiều dài của bản tin M ban đầu là l bít. Cách độn bản tin sẽ được tiến hành như sau: đầu tiên, ta thêm một bít “1” vào cuối bản tin và ngay tiếp sau bít “1” vừa được thêm vào này, ta thêm k bít “0” liên tiếp, trong đó k là số nguyên nhỏ nhất thỏa mãn l + 1 +k ≡ 448 mod 512. Sở dĩ l +1+k ≡ 448 mod 512 là vì khối 64 bít cuối cùng đã được dành ra để lưu thông tin về kích thước l của bản tin ban đầu. Ví dụ với bản tin hệ mã ASCII-8 bít có nội dung là “abc” thì chiều dài của bản tin này sẽ là l = 8.3 = 24 bít. Vì bản tin được độn thêm một bít “1” nên số bít “0” cần độn thêm vào bản tin sẽ là 448 - (24 +1) = 423. Như vậy từ một bản tin M ban đầu có kích thước là 24 bít, bằng việc độn thêm bít như này, ta thu được một bản tin độn có kích thước là 512 bít, thỏa mãn là bội số của 512.
Với SHA-384 và SHA-512.
Giả sử rằng chiều dài của bản tin M ban đầu là l bít. Các độn bản tin sẽ được tiến hành như sau: đầu tiên, ta thêm một bít “1” vào cuối bản tin và ngay tiếp sau bít “1” vừa được thêm vào này, ta thêm k bít “0” liên tiếp, trong đó k là số nguyên nhỏ nhất thỏa mãn l + 1+ k ≡ 896 mod 1024. Sở dĩ l+1+ k ≡ 896 mod 1024 là vì khối 128 bít cuối cùng đã được dành ra để lưu thông tin về kích thước l của bản tin ban đầu.
Ví dụ với bản tin hệ mã ASCII-8 bít có nội dung là “abc” thì chiều dài của bản tin này sẽ là l = 8.3 = 24 bít. Vì bản tin được độn thêm một bít “1” nên số bít “0” cần độn thêm vào bản tin sẽ là 896 - (24 + 1) = 871. Như vậy từ một bản tin M ban đầu có kích thước là 24 bít, bằng việc độn thêm bít như này, ta thu được một bản tin độn có kích thước là 1024 bít, thỏa mãn là bội số của 1024.
b. Phân phối bản tin độn
Sau khi bản tin được độn thêm bít, nó cần phải được phân ra thành N khối m-bít trước khi quá trình tính toán băm được bắt đầu.
SHA-1 và SHA-256.
Với SHA-1 and SHA-256, bản tin độn sẽ được phân ra thành N khối 512 bít: M(1), M(2),…, M(N). Mỗi khối tin M(i) biểu diễn 16 từ-32 bít: M0(i), M1(i),…, M15(i).
SHA-384 và SHA-512.
Với SHA-384 và SHA-512, bản tin độn được phân ra thành N khối 1024 bít. M(1), M(2),…, M(N). Mỗi khối tin M(i) có độ lớn 1024 bít có thể biểu diễn thánh 16 từ-64 bít M0(i), M1(i),…, M15(i).
c. Thiết lập giá trị băm khởi tạo-H(0)
Trước khi thực hiện tính toán băm cho mỗi một giải thuật băm, giá trị băm khởi tạo-H(0) cần phải được khởi tạo. Kích thước và số lượng từ của H(0) phụ thuộc vào kích thước của thông điệp rút gọn.
SHA-1.
Với SHA-1, giá trị băm khởi tạo H(0) bao gồm 5 từ 32 bít sau:
SHA-256.
Với SHA-256, giá trị băm khởi tạo H(0) bao gồm 8 từ 32 bít sau:
H= 6a09e667
H= bb67ae85
H= 3c6ef372
H= a54ff53a
H= 510e527f
H= 9b05688c
H= 1f83d9ab
H= 5be0cd19
SHA-384.
Với SHA-384, giá trị băm khởi tạo H(0) bao gồm 8 từ-64 bít sau:
SHA-512.
Với SHA-512, giá trị băm khởi tạo H(0) bao gồm 8 từ-64 bít sau:
1.3.5. Các giải thuật hàm băm an toàn
Trong phần này, em xin trình bày giải thuật SHA-512 trước giải thuật SHA-384 bởi vì giải thuật SHA-384 giống hệt giải thuật SHA-512, chỉ có giá trị băm khởi tạo là khác và giá trị băm cuối cùng được cắt lấy 384 bít chứ không phải lấy toàn bộ 512 bít như giải thuật SHA-512 để tạo ra thông điệp rút gọn. Mỗi giải thuật băm an toàn đều có các phương pháp tính luân phiên để tạo ra kết quả.
a. SHA-1
SHA-1 có thể được dùng để tính băm cho các thông điệp M có độ dài là l bít với 0 ≤ l < 264 . Giải thuật sử dụng:
Một danh sách thông định sẵn gồm 80 từ-32 bít.
Năm biến làm việc có độ dài 32 bít.
Một giá trị băm bao gồm 5 từ-32 bít. Kết quả cuối cùng của giải thuật SHA-1 là một thông điệp rút gọn 160 bít.
Các từ của danh sách thông định sẵn được đánh nhãn là W0, W1,…, W79. Năm biến làm việc là a, b, c, d và e. Các từ của giá trị băm được gán nhãn là H0(i), H1(i), …, H4(i) trong đó giá trị băm khởi tạo H(0) liên tiếp được thay thế bởi các giá trị băm trung gian H(i) cho đến giá trị băm cuối cùng H(N). Ngoài ra SHA-1 còn sử dụng một biến trung gian T có kích thước bằng một từ 32 bít.
Qui trình tiền xử lý của SHA-1.
1. Độn tin cho bản tin M.
2. Phân bản tin M ra thành N khối 512 bít M(1), M(2), …, M(N).
3. Thiết lập giá trị khởi tạo H(0).
Qui trình tính toán băm của SHA-1.
Để tính toán băm, giải thuật SHA-1 sử dụng các hàm và các hằng số được cho trong mục 2.3.2 và 2.3.3. Phép cộng (+) được thực hiện trên modulo 232.
Sau khi tiền xử lý, mỗi khối tin M(1), M(2), …, M(N) được xử lý lần lượt theo các bước sau:
For i = 1 to N:
{
Chuẩn bị danh sách thông định sẵn {Wt}:
Khởi tạo 5 biến hoạt động a, b, c, d và e ứng với giá trị băm thứ (i-1).
a = H0(i-1)
b = H1(i-1)
c = H2(i-1)
d = H3(i-1)
e = H4(i-1)
For t = 0 to 79:
{
T = ROTL5(a) + ft(b, c, d) +e + Kt + Wt
e = d
d = c
c = ROTL30(b)
b = a
a = T
}
Tính giá trị băm trung gian thứ i - H(i)
H0(i) = a + H0(i-1)
H1(i) = b + H1(i-1)
H2(i) = c + H2(i-1)
H3(i) = d + H3(i-1)
H4(i) = e + H4(i-1)
}
Sau khi lặp lại các bước từ (1) tới (4) là N lần, thông điệp rút gọn 160 bít của M sẽ là H0(N) || H1(N) || … || H4(N)
b. SHA-256.
SHA-256 có thể được dùng để tính băm cho các thông điệp M có độ dài là l bít với 1 ≤ l ≤ 264. G