Hàm băm an toàn và ứng dụng

  • Số trang: 69 |
  • Loại file: PDF |
  • Lượt xem: 25 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THANH HƯNG HÀM BĂM AN TOÀN VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ Hà Nội-2011 2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THANH HƯNG HÀM BĂM AN TOÀN VÀ ỨNG DỤNG Ngành: CÔNG NGHỆ THÔNG TIN Chuyên ngành: CÔNG NGHỆ PHẦN MỀM Mã số: 60 48 10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. LÊ PHÊ ĐÔ Hà Nội-2011 3 THUẬT NGỮ VIẾT TẮT Số thứ tự Tên đầy đủ Thuật ngữ 1 MAC Message Authentication Code 2 HMAC Keyed-Hash Message Authentication Code 3 opad Outer pad 4 ipad Inner pad 5 SHA Secure Hash Algorithm 6 MD Merkle-Damgård 7 TLS Transport Layer Security 8 CA Certification Authority 9 IPSec Internet Protocol Security 4 Ý NGHĨA CÁC KÝ HIỆU Số thứ tự Ký hiệu Ý nghĩa 1  Phép toán XOR 2 <<< Phép dịch bít vòng 3 || Phép cộng chuỗi 4  Phép OR 5  Phép AND 6 ⌐ Phép phủ định 7 + Phép cộng module 2 32 8 ROTR n (x) Dịch xoay vòng x sang bên phải n bít 9 SHR n (x) Dịch bít của số x sang bên phải n bít [j[[pơ;;’; 5 MỤC LỤC 1. Đặt vấn đề bài toán .................................................................................. 11 2. Tổng quan về hàm băm ........................................................................... 12 2.1. Định nghĩa hàm băm................................................................................................. 12 2.2. Xung đột băm .......................................................................................................... 13 2.2.1. Tấn công theo nguyên lý vét cạn ............................................................................. 13 2.2.2. Tấn công dựa trên lý thuyết ngày sinh ..................................................................... 13 2.3. Một số hàm băm phổ biến ......................................................................................... 14 2.3.1. Hàm băm MD5..................................................................................................... 15 2.3.2. Hàm băm SHA-1 .................................................................................................. 21 2.3.3. Hàm băm SHA-256 .............................................................................................. 22 2.3.4. Hàm băm SHA-384, SHA-512 ............................................................................... 24 3. Tấn công hàm băm .................................................................................. 26 3.1. Tấn công hàm băm ................................................................................................... 26 3.1.1. Tấn công MD5 ..................................................................................................... 27 3.1.2. Tấn công SHA-1 ................................................................................................... 36 3.2. Tìm hiểu một số hàm băm mới nhất ............................................................................ 36 3.2.1. Hàm băm NESHA-256 .......................................................................................... 36 3.2.2. Hàm băm SHA-3 .................................................................................................. 39 4. Ứng dụng của hàm băm an toàn trong giao dịch điện tử ...................... 53 4.1. Chữ ký điện tử ......................................................................................................... 53 4.2. MAC ...................................................................................................................... 64 4.3. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỀN.................................................................... 70 4.4. TÀI LIỆU THAM KHẢO ......................................................................................... 71 6 DANH MỤC HÌNH VẼ Hình 1: Minh họa về hàm băm ................................................................................................. 12 Hình 2: Cấu trúc lặp của hàm băm MD ..................................................................................... 15 Hình 3: Thuật toán mô tả MD5/SHA-1 ..................................................................................... 18 Hình 4: Thuật toán NESHA-256 .............................................................................................. 37 Hình 5: Các bước làm việc của NESHA-256.............................................................................. 38 Hình 6: Sự làm việc của hàm nén BLAKE ................................................................................. 40 Hình 7: Update cột 1 và cột 2 của ma trận v i ............................................................................. 43 Hình 8: Update cột 3 và cột 4 của ma trận v i ............................................................................. 43 Hình 9: Update tất cả các cột của ma trận v i ............................................................................. 43 Hình 10: Update tất cả các đường chéo của ma trận v i ............................................................... 43 Hình 11: Các bước làm việc của BLAKE-256 ............................................................................ 44 Hình 12: Kết quả chạy chương trình- phần 1 .............................................................................. 48 Hình 13: Kết quả chạy chương trình- phần 2 .............................................................................. 49 Hình 14: Kết quả chạy chương trình- phần 3 .............................................................................. 50 Hình 15: Kết quả chạy chương trình- phần 4 .............................................................................. 51 Hình 16: Ký tài liệu với BLAKE-256........................................................................................ 52 Hình 17: Việc sử dụng chữ ký trong thực tế ............................................................................... 53 Hình 18: Bên gửi ký vào tài liệu cần gửi.................................................................................... 54 Hình 19: Bên nhận xác minh tài liệu ......................................................................................... 54 Hình 20: Cấu trúc X.509 cerfiticate .......................................................................................... 56 Hình 21: Việc quản lý X.509 cerfiticate trong windows .............................................................. 58 Hình 22: Màn hình thông báo sau khi tạo private key .................................................................. 59 Hình 23: Thông tin Cerfiticate ................................................................................................. 59 Hình 24: Màn hình giao diện command toolsign ........................................................................ 59 Hình 25: Màn hình Digital Signature Wizard ............................................................................. 60 Hình 26: Chọn tên file cần ký .................................................................................................. 60 Hình 27: Lựa chọn Cerfiticate nguồn ........................................................................................ 61 Hình 28: Lựa chọn public key .................................................................................................. 61 Hình 29: Lựa chọn private key file ........................................................................................... 62 Hình 30: Lựa chọn thuật toán dùng cho chữ ký .......................................................................... 62 Hình 31: Digital Signature Wizard............................................................................................ 63 Hình 32: Digital Signature Wizard-1 ......................................................................................... 63 Hình 33: Verify a file-1 ........................................................................................................... 64 Hình 34: MAC ....................................................................................................................... 65 Hình 35: MAC dùng để xác thực thông điệp .............................................................................. 67 Hình 36: MAC dùng để xác thực và bảo đảm tính bí mật của thông điệp ....................................... 67 7 Hình 37: Thuật toán tính HMAC ............................................................................................. 68 Hình 38: Sử dụng HMAC trong IPSec ..................................................................................... 69 8 DANH MỤC HÌNH VẼ Bảng 1: Kiểu tấn công các hàm băm ......................................................................................... 14 Bảng 2: Bảng so sánh các loại hàm băm MD ............................................................................. 26 Bảng 3: Modify multiple message m 5 ....................................................................................... 30 Bảng 4: Một sự đụng độ MD5 ................................................................................................. 31 Bảng 5: Mô tả các bước ở vòng 1-phần 1 .................................................................................. 31 Bảng 6: Mô tả các bước ở vòng 1-phần 2 .................................................................................. 32 Bảng 7: Mô tả các bước ở vòng 1-phần 3 .................................................................................. 32 Bảng 8: Mô tả các điều kiện ở vòng 1-phần 1............................................................................. 33 Bảng 9: Mô tả các bước ở vòng 1-phần 2 .................................................................................. 33 Bảng 10: Mô tả các bước ở vòng 1-phần 3 ................................................................................. 33 Bảng 11: Mô tả các bước ở vòng 2-phần 1 ................................................................................. 34 Bảng 12: Mô tả các bước ở vòng 2-phần 2 ................................................................................. 34 Bảng 13: Mô tả các bước ở vòng 2-phần 3 ................................................................................. 34 Bảng 14: Mô tả điều kiện bước ở vòng 2-phần 1 ........................................................................ 35 Bảng 15: Mô tả điều kiện bước ở vòng 2-phần 2 ........................................................................ 35 Bảng 16: Mô tả điều kiện bước ở vòng 2-phần 3 ........................................................................ 35 Bảng 17: Các hoán vị của hàm băm NESHA-256 ...................................................................... 37 Bảng 18: 16 hằng số của phép cộng của hàm băm NESHA-256 ................................................... 39 Bảng 19: Các nhánh sử dụng các giá trị hoán vị của hàm băm NESHA-256 ................................... 39 Bảng 20: Các thuật toán BLAKE .............................................................................................. 40 Bảng 21: Các hoán vị của hàm băm BLAKE ............................................................................. 41 11 1. Đặt vấn đề bài toán Trong thời đại ngày nay các giao dịch thương mại qua mạng internet trở nên rất phổ biến, và do đó cần có biện pháp để đảm bảo an toàn cho các giao dịch thương mại qua mạng. và khi các giao dịch thương mại qua mạng được đảm bảo an toàn thì đồng nghĩa với việc số lượng giao dịch ngày càng tăng và do đó hạn chế được các giao dịch thương mại truyền thống và do đó tiết kiệm được chi phí, thúc đẩy sự giao thương rộng rãi hơn. Trong việc đảm bảo an toàn cho các giao dịch qua mạng internet thì hàm băm đóng vai trò rất quan trọng, nó không những đảm bảo được sự toàn vẹn của các giao dịch mà còn có thể đảm bảo sự bí mật về dữ liệu của các bên giao dịch, điều này là rất quan trọng. 12 2. Tổng quan về hàm băm 2.1. Định nghĩa hàm băm Hàm băm H nhận đầu vào là chuỗi dữ liệu M có chiều dài bất kỳ vào tạo ra chuỗi đầu ra (hay còn gọi là message degits, hash value) có chiều dài cố định theo công thức sau. h = H (M). Ví dụ minh họa về hàm băm. Hình 1: Minh họa về hàm băm - h được gọi là giá trị đầu ra của hàm băm, có chiều dài cố định( h còn gọi là message digest hoặc hash value). - M là bức thông điệp có chiều dài bất kỳ hữu hạn (chiều dài của M không vượt quá 2 64 bít, nếu chiều dài của M vượt quá 2 64 bít thì chỉ có 2 64 bít đầu được sử lý, còn tất cả các bít được bỏ qua trong quá trình tính toán của hàm băm). - H là hàm băm. - Hàm băm được sử dụng trong việc mã hóa password, giao dịch điện tử, kiểm tra sự toàn vẹn của một file..... Hàm băm được sử dụng phổ biến là hàm băm một chiều (one-way) MD5. Các tính chất của hàm băm - Hàm băm H phải có phi xung đột yếu (weak-collision) cao, điều đó có nghĩa là cho trước M ta không thể tìm được bức thông điệp M’  M sao cho H(M) = H(M’) . - Hàm băm H có tính phi đụng độ cao (strong collision), điều đó có nghĩa là ta không thể tìm được cặp thông điệp (M, M’) M’  M sao cho H(M)=H(M’). - Hàm băm H có tính một chiều (one-way) có nghĩa là cho giá trị H(M) sẽ là không thể tìm được giá trị M. 13 2.2. Xung đột băm Có nghĩa là hai thông điệp khác nhau khi băm thì chúng tạo ra cùng giá trị băm. Gọi M, M’ là hai thông điệp sao cho M  M’, H là hàm băm, xung đột băm xảy ra khi H(M)=H(M’). Về mặt lý thuyết thì hoàn toàn ta có thể tìm được hai thông điệp khác nhau nhưng chúng cho ra cùng một giá trị băm, nhưng thực tế việc này làm rất khó khăn, và ngay cả khi chúng ta tạo được hai thông điệp với nội dung khác nhau nhưng chúng cùng tạo ra giá trị băm, nhưng nội dung đó không có ý nghĩa với con người có nghĩa là nếu cho trước một thông điệp ta hoàn toàn có thể tìm được thông điệp thứ hai khác tạo ra cùng giá trị băm nhưng chúng ta không thể điều khiển được nội dung thông điệp thứ này sao cho nó có ý nghĩa với con người, do vậy có thể kết luận các hàm băm hiện tại vẫn đủ an toàn. 2.2.1. Tấn công theo nguyên lý vét cạn Trong khoa học máy tính tấn công vét cạn là một cách rất tổng quát, nội dung chính của kiểu tấn công này trong việc tấn công hàm băm là kiểm tra tất cả đầu vào sau đó băm giá trị này bằng một hàm băm, sau đó kiểm tra giá trị này với giá trị băm cho trước, nếu chúng bằng nhau có nghĩa là attacker đã tấn công thành công, còn nếu không thì attacker tìm một bức thông điệp khác và băm chúng bằng hàm băm cho đến khi nào chúng tạo ra giá trị băm mong muốn. Ta thấy kiểu tấn công này không phụ thuộc vào cấu trúc của hàm băm mà nó chỉ phụ thuộc vào chiều dài đầu ra của hàm băm, do đó để nâng cao tính bảo mật chúng ta cần cho đầu ra càng càng dài thì tính bảo mật càng cao. Tuy nhiên cách tấn công này không hiệu quả vì không gian đầu vào quá lớn, trong trường hợp xấu nhất thuật toán duyệt qua tất cả các đầu vào có thể để tìm được nghiệm, điều này là không thể. Yêu cầu tài nguyên cho việc tấn công này bùng nổ tổ hợp với chiều dài đầu ra của hàm băm, như vậy có nghĩa là nếu ta tăng chiều dài đầu ra càng lớn thì khả năng để tấn n công thành công càng thấp, gọi chiều dài đầu ra là n  chúng ta cần thử 2 lần để tìm được một tấn công thành công. 2.2.2. Tấn công dựa trên lý thuyết ngày sinh Nội dung của kiểu tấn công này được minh họa bằng ví dụ sau: trong một phòng họp có k người hãy tìm xác xuất để ít nhất có 2 người có cùng ngày sinh, bằng toán học người ta đã chứng minh được rằng nếu có 23 người trong một phòng thì xác xuất để 2 người có cùng ngày sinh là  0.5. Một cách tổng quát , giả sử một hàm băm có n giá trị (tức n là chiều dài của chuỗi đầu ra) băm khác nhau, nếu chúng ta có k giá trị (input) băm từ k thông tin khác nhau đ ược chọn ngẫu nhiên, thì xác suất để không xảy ra đụng độ là : k 1 1 k 1 2 (1- n )(1- n )....(1- n ) =  (1  i 1 i n ) 14 i Với n <<1 thì k 1 k 1  (1  ni ) i 1  e n i Do đó xác xuất để xảy ra đụng độ là k 2 - k  2nlog 1 , suy ra k  1  =e i 1  k ( k 1) 2n =1-e 2n log  k (k  1)  2n 1 1  128 Do đó ta thấy với hàm băm có chiều dài đầu ra là 128 bít thì chúng ta cần k  ln 2 * 2 2  ln2* 2 64  10 38 đầu vào để tìm được hai thông điệp khác nhau nhưng cho cùng giá trị băm (hash value) với xác xuất là 0.5. Có nghĩa là cho trước giá trị băm, chúng ta cần thử 1038 giá trị M để hash value = H(M). Để làm được điều này với máy tính có tốc độ sử lý 1 phép tính mất 1 microsecond mất 1024 năm. Bằng sự suy luận chúng ta cũng thấy rằng với chiều dài giá trị băm là 128 bít chúng ta cần thử 1019 đầu vào M, M’ sao cho H(M) = H(M’). Để làm được điều này với máy tính có tốc độ sử lý 1 phép tính mất 1 microsecond mất 317000 năm. Thống kê 1 số kiểu tấn công hàm băm. Bảng 1: Kiểu tấn công các hàm băm Ngày nay người ta đã tìm được cách tấn công các hàm băm hiệu quả hơn nhiều, chủ yếu bằng phương pháp different attack (sẽ trình bày ở phần tấn công hàm băm), người ta có thể tấn công hàm băm MD5 trong khoảng 1 phút bằng máy tính để bàn. 2.3. Một số hàm băm phổ biến Các hàm băm chúng ta xem xét dưới đây có hai thành phần chính. Thành phần đầu tiên là hàm nén nhận đầu vào là một chuỗi có chiểu dài bất kì và giá trị chaining variable (giá trị khởi tạo) và cho đầu ra là chuỗi có chiều dài cố định. Thành phần thứ 2 là hàm chuẩn chuỗi đầu vào, hàm này có nhiệm vụ biến chuỗi đầu vào có chiều dài 15 bất kì thành chuỗi các bít, mà chuỗi này là có chiều dài là bội số của các khối message block(có chiều dài là 512 hoặc 1024 bit). Ở thời điểm bắt đầu các chaining variable có giá trị khởi tạo (giá trị khởi tạo này là tùy thuộc vào hàm băm), và giá trị cuối cùng của các chaining variable chính là giá trị của hàm băm. Thuật toán chung cho các hàm băm này như sau. Thuật toán trên hàm băm C được lặp nhiều lần, đầu vào của lần lặp sau là khối block message có chiều dài là 512 hoặc 1024 bít (chiều dài các block message là 512 hay 1024 bít là tùy thuộc vào thuật toán) và giá trị của chainging variable của vòng trước, ta có thể mô hình như sau: Hình 2: Cấu trúc lặp của hàm băm MD 2.3.1. Hàm băm MD5 Ronald Rivest đã sáng tạo ra các hàm băm MD2, MD4, MD5. Hàm băm MD5 được tạo ra để thay thế những lỗ hổng trong bảo mật của hàm băm MD4. Hàm băm MD5 chuyển thông điệp đầu vào có chiều dài bất kì thành chuỗi đầu ra có chiều dài cố định 128 bit. Thông điệp đầu vào được chia thành nhiều block message 512 bit sau đó được truyền vào hàm băm MD5, sau đó thông điệp đầu vào được đệm (padding) sao cho chiều dài của nó chia hết cho 512, điều đó có nghĩa là, giả sử chiều dài của bức thông điệp là l bit, chúng ta cần đệm thêm k bit sao cho thỏa mãn điều kiện l+k+64=n*512(l, k, n là các số nguyên không âm, 64 là số biểu diễn chiều dài của 16 chiều dài thông điệp điều đó có nghĩa là chiều dài của bức thông điệp không vượt quá 2 64 bít). Việc đệm được thực hiện như sau, đầu tiên thêm bit 1, tiếp theo là dãy các bit 0 được thêm vào sao cho thỏa mãn điều kiện l+k+64=n*512. Giải thuật MD5 thực hiện như sau: i. Thực hiện việc đệm vào thông điệp (việc đệm này luôn được thực hiện, ngay cả khi chiều dài bức thông điệp đã là bội số của 512bit). ii. Đầu vào là các khối 512 bit, các khối 512 bit này được chia thành 16 khối 32 bit. iii. Khởi tạo 4 biến A, B, C, D(người ta thường gọi các biến A, B, C, D là các chaining variable)có giá trị như sau:  A = 0x67452301  B = 0xefcdab89  C = 0x98badcfe  D = 0x10325476 iv. Ta định nghĩa 4 hàm phi tuyến như sau: F(X, Y, Z) = (X  Y)  (⌐X  Z) G(X, Y, Z) = (X  Z)  (Y  ⌐Z) H(X, Y, Z) = X  Y  Z I(X, Y, Z) = Y  (X  ⌐Z) v. Thực hiện các bước tính toán như sau: Trước tiên chúng ta xây dựng mảng hằng số sau: t i = int ( 2 32 * abs (sin (i))) 1  i  64. Vòng 1: Ký hiệu [abcd k s t] là bước thực hiện của phép toán a = b + ((a + F(b, c, d) + X[k] + T[t]) <<< s) chi tiết như sau: [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 2 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11][BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16] Nhận xét về vòng 1: Vòng 1 dùng hàm F, Với giá trị t từ 1  16 và k từ 1  15. Vòng 2: Tương tự, ký hiệu [abcd k s t] là của biểu thức: a = b + ((a + G (b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước: [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29][DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] 17 Nhận xét vòng 2: dùng hàm G, với t từ 17  32 và k = (1 + 5k) mod 16. Vòng 3: Tương tự, ký hiệu [abcd k s t] là của biểu thức: a = b + ((a + H (b, c, d) + X[k] + T[t]) <<< s). Quá trình thực hiện 16 bước: [ABCD 5 4 33] [DABC 8 11 34] [CDAB 1 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 5 16 47] [BCDA 2 23 48] Nhận xét vòng 3: dùng hàm H, với t từ 33  48 và k = (5 + 3k) mod 16. Vòng 4: Tương tự, ký hiệu [abcd k s t] là của biểu thức: a = b + ((a + I (b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước: [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCDb 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] Nhận xét vòng 4: dùng hàm I, với t từ 49  64 và k =7k mod 16. Sau đó thực hiện phép cộng sau: A = A + AA B = B + BB C = C + CC D = D + DD Trong đó: T[t]= 2 32 *|sin(t+1)|(1  t  64), x[k] là các khối dữ liệu 32 bít. Ta có thể tóm tắt quá trình làm việc của MD5 như hình sau [6]: 18 Hình 3: Thuật toán mô tả MD5/SHA-1 Một số ví dụ về việc thực hiện hàm MD5. MD5 (“”) = d41d8cd98f00b204e9800998ecf8427e MD5(“ ”) = 7215ee9c7d9dc229d2921a40e899ec5f MD5 (“Md5”) = 8d6c0760e7dae464f181d5fb9f6d3cb0 Để minh họa quá trình làm việc của thuật toán, chúng ta xem xét ví dụ. M=”” (chuỗi rỗng, có chiều dài l=0). Trước tiên chúng ta thực hiện việc đệm vào bức thông điệp để thỏa mãn điều kiện l+k+64=n*512, do l=0 do đó chúng ta có k+64=n*512, chúng ta chọn n là số nguyên nhỏ nhất thảo mãn điều kiện trên tức k+64=512, điều này có nghĩa là chúng ta cần đệm 448 bit vào bức thông điệp. Việc đệm được thực hiện như sau, trước tiên chúng ta thêm một bit 1 vào message, sau đó chúng ta thực hiện thêm 448-1=447 bit 0 vào bức thông điệp, như vậy việc đệm đã được thực hiện xong. Tiếp theo chúng ta thêm 64 bit diễn tả chiều dài bức thông điệp vào thông điệp trên. Do đó bức thông điệp được sử lý sẽ như sau: 80000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000. 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Tiếp theo chúng ta chia (break) bức thông điệp này thành 16 khối 32 bít theo hệ hexan theo định dạng little-endian (có nghĩa là các bít quan trọng nhất sẽ ở vị trí cuối). Vậy ta có X[k] như sau: X [0] = 0x00000080 X [1] = 0x00000000, X [2] = 0x00000000, 19 X [3] = 0x00000000, X [4] = 0x00000000, X [5] = 0x00000000, X [6] = 0x00000000, X [7] = 0x00000000, X [8] = 0x00000000, X [9] = 0x00000000, X [10] = 0x00000000, X [11] = 0x00000000, X [12] = 0x00000000, X [13] = 0x00000000, X [14] = 0x00000000(message block mô tả chiều dài của thông điệp), X [15] = 0x00000000(message block mô tả chiều dài của thông điệp). Sau đó chúng ta thực hiện thao tác đầu tiên cho vòng 1 như sau: A = 0xefcdab89 + ((0x67452301 + 0x98badcfe + 0x00000080 + 0xd76aa478) <<< 7) = 0xefcdab89 + (0xd76aa4f7 <<< 7) = 0xefcdab89 + 0xb5527beb = 0xa5202774 Sau bước đầu tiên thì các giá trị của chaining variable như sau. A B C D = a5202774 efcdab89 98badcfe 10325476 Tương tự cho các bước của vòng 1, 2, 3, 4 chúng ta có kết quả sau: a5202774 efcdab89 98badcfe 10325476 a5202774 efcdab89 98badcfe f59592dd a5202774 efcdab89 e7f06b23 f59592dd a5202774 1b163203 e7f06b23 f59592dd 32033344 1b163203 e7f06b23 f59592dd 32033344 1b163203 e7f06b23 2f35d494 32033344 1b163203 f5b158db 2f35d494 32033344 9bc13ce9 f5b158db 2f35d494 3893b991 9bc13ce9 f5b158db 2f35d494 3893b991 9bc13ce9 f5b158db fce4a312 3893b991 9bc13ce9 e1ef0576 fce4a312 3893b991 70768a29 e1ef0576 fce4a312 f56c7cf1 70768a29 e1ef0576 fce4a312 f56c7cf1 70768a29 e1ef0576 374943a7 20 f56c7cf1 70768a29 5aa53f75 374943a7 f56c7cf1 d6819c6a 5aa53f75 374943a7 1c7d7513 d6819c6a 5aa53f75 374943a7 1c7d7513 d6819c6a 5aa53f75 7bd57a3a 1c7d7513 d6819c6a c095f13a 7bd57a3a 1c7d7513 bd782e17 c095f13a 7bd57a3a 3d1e3e6c bd782e17 c095f13a 7bd57a3a 3d1e3e6c bd782e17 c095f13a 68b7b3e3 3d1e3e6c bd782e17 eb41643e 68b7b3e3 3d1e3e6c e422531a eb41643e 68b7b3e3 306ec122 e422531a eb41643e 68b7b3e3 306ec122 e422531a eb41643e d28c77c2 306ec122 e422531a a3c663da d28c77c2 306ec122 a0572807 a3c663da d28c77c2 13707036 a0572807 a3c663da d28c77c2 13707036 a0572807 a3c663da ae7813db 13707036 a0572807 1c31c384 ae7813db 13707036 a2205f1f 1c31c384 ae7813db df63eaa1 a2205f1f 1c31c384 ae7813db df63eaa1 a2205f1f 1c31c384 c3689f5b df63eaa1 a2205f1f 12f3e755 c3689f5b df63eaa1 004b6669 12f3e755 c3689f5b 5f7a9b2e 004b6669 12f3e755 c3689f5b 5f7a9b2e 004b6669 12f3e755 abc34e16 5f7a9b2e 004b6669 91ca4cb7 abc34e16 5f7a9b2e c5dc8c15 91ca4cb7 abc34e16 4497169d c5dc8c15 91ca4cb7 abc34e16 4497169d c5dc8c15 91ca4cb7 76fd93d4 4497169d c5dc8c15 fd95f243 76fd93d4 4497169d 0fe32453 fd95f243 76fd93d4 3f55edfd 0fe32453 d95f243 76fd93d4 3f55edfd 0fe32453 fd95f243 22a31f54 3f55edfd 0fe32453 68d84ea2 22a31f54 3f55edfd ca7d2dbd 68d84ea2 22a31f54 21 93aa2577 ca7d2dbd 68d84ea2 22a31f54 93aa2577 ca7d2dbd 68d84ea2 1688dc85 93aa2577 ca7d2dbd cd85b8cb 1688dc85 93aa2577 561e0689 cd85b8cb 1688dc85 5625a114 561e0689 cd85b8cb 1688dc85 5625a114 561e0689 cd85b8cb 3450f42b 5625a114 561e0689 392ad0d0 3450f42b 5625a114 1e77fa61 392ad0d0 3450f42b 474a9c8c 1e77fa61 392ad0d0 3450f42b 474a9c8c 1e77fa61 392ad0d0 dfce00bc 474a9c8c 1e77fa61 36594b14 dfce00bc 474a9c8c 30130182 36594b14 dfce00bc 7246fad3 30130182 36594b14 dfce00bc 7246fad3 30130182 36594b14 6e10a476 7246fad3 30130182 ff4ea3eb 6e10a476 7246fad3 14e45506 ff4ea3eb 6e10a476 Và kết quả cuối cùng chúng ta có: 7246fad3 14e45506 ff4ea3eb 6e10a476 + 67452301 efcdab89 98badcfe 10325476 ---------------------------------------------------------------------------d98c1dd4 04b2008f 2.3.2. Hàm băm SHA-1 980980e9 7e42f8ec Thuật toán cho hàm băm này nhận chiều vào là bức thông điệp có chiều dài hữu hạn bất kỳ cho đầu ra là chuỗi có chiều dài cố định, hàm băm SHA-1 có chiều dài đầu ra là 160 bit. - Việc đệm được thực hiện tương tự việc đệm trong thuật toán cho hàm băm MD5. - Chia bức thông điệp thành các khối 512 bit. - Thực hiện việc khởi tạo cho các biến chaining variable như sau: ( 0) H 0 =0x67452301 (0) H 1 =0xefcdab89 (0) H 2 =0x98badcfe ( 0) H 3 =0x10325476 (0) H 4 =0xc3d2e1f0. 22 - Thực hiện sử lý các khối. Xây dựng hàm biến đổi khối đầu vào theo công thức sau. 𝑊t = - 𝑀 t(t ) , 𝑅𝑂𝐿𝑇 l 𝑊 t  3  𝑊 t  8  𝑊 t 14  𝑊 t 16 , 0  t  15 16  t  79 Khởi tạo các biến làm việc như sau ở vòng thứ i-1. ( i 1) a=H 0 ( i 1) b=H 1 ( i 1) c=H 2 ( i 1) d=H 3 ( i 1) e=H 4 - Thực hiện việc biến đổi như sau. For (t=0; t<=79; t++) { T = ROLT 5 (a) + f t (b, c, d) + e + K t +W t e=d d=c c= ROLT 30 (b) b=a a=T } - Tính toán chuỗi đầu ra như sau. H (0i ) = a + H (0i 1) H 1( i ) = b + H 1(i 1) H (2i ) = c + H (2i 1) H 3(i ) = d + H 3(i 1) H (4i ) = e + H (4i 1) 2.3.3. Hàm băm SHA-256 Thuật toán này nhận chiều vào là bức thông điệp có chiều dài bất kì hữu hạn cho đầu ra là chuỗi có chiều dài cố định là 256 bít. - Việc đệm được thực hiện tương tự việc đệm trong thuật toán cho hàm băm MD5. - Chia bức thông điệp thành các khối 512 bit.
- Xem thêm -