Tiểu luận MẬT MÃ VÀ AN TOÀN THÔNG TIN Hàm băm MD4

10 1.8K 7
Tiểu luận MẬT MÃ VÀ AN TOÀN THÔNG TIN Hàm băm MD4

Đang tải... (xem toàn văn)

Thông tin tài liệu

Tiểu luận MẬT MÃ VÀ AN TOÀN THÔNG TIN Hàm băm MD4 Hàm băm (Hash function) là một hàm toán học chuyển đổi một thông điệp đầu vào có độ dài bất kỳ thành một dãy bit có độ dài cố định (tuỳ thuộc vào thuật toán băm). Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu.

ĐẠI HỌC CÔNG NGHỆ ĐẠI HỌC QUỐC GIA HÀ NỘI BÁO CÁO MÔN HỌC MẬT MÃ VÀ AN TOÀN THÔNG TIN Giảng viên: PGS.TS. Trịnh Nhật Tiến Học viên: Phan Thị Thơm HÀ NỘI – 2013 Hàm băm MD4 Page 1 Mục Lục Hàm băm MD4 Page 2 I. Giới thiệu về hàm băm 1. Giới thiệu Hàm băm (Hash function) là một hàm toán học chuyển đổi một thông điệp đầu vào có độ dài bất kỳ thành một dãy bit có độ dài cố định (tuỳ thuộc vào thuật toán băm). Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu. Hàm băm (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra. 2. Tính chất cơ bản của hàm băm • Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả, điều này tương tự như việc bạn không thể chỉ dựa vào một dấu vân tay lạ mà suy ra ai là chủ của nó được. Hàm băm MD4 Page 3 • Tính duy nhất: xác suất để có một vụ va chạm (hash collision), tức là hai thông điệp khác nhau có cùng một kết quả hash là cực kỳ nhỏ. 3. Ứng dụng của hàm băm • Xác thực mật khẩu Mật khẩu thường không được lưu dưới dạng văn bản rõ (clear text), mà ở dạng tóm tắt. Để xác thực một người dùng, mật khẩu do người đó nhập vào được băm ra bằng hàm Hash và so sánh với kết quả băm được lưu trữ. • Xác thực thông điệp (Message authentication – Thông điệp tóm tắt -message digests) Giá trị đầu vào(tin nhắn, dữ liệu ) bị thay đổi tương ứng giá trị băm cũng bị thay đổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết ngay lập tức. • Bảo vệ tính toàn vẹn của tập tin, thông điệp được gửi qua mạng Hàm băm mật mã có tính chất là hàm 1 chiều. Từ khối dữ liệu hay giá trị đầu vào chỉ có thể đưa ra 1 giá trị băm duy nhất. Như chúng ta đã biết đối với tính chất của hàm 1 chiều. Một người nào đó dù bắt được giá trị băm họ cũng không thể suy ngược lại giá trị, đoạn tin nhắn băm khởi điểm. Ví dụ: việc xác định xem một file hay một thông điệp có bị sửa đổi hay không có thể thực hiện bằng cách so sánh tóm tắt được tính trước và sau khi gửi (hoặc một sự kiện bất kỳ nào đó). Còn có thể dùng tóm tắt thông điệp làm một phương tiện đáng tin cậy cho việc nhận dạng file. Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp. Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu. • Tạo chữ ký điện tử (Digital signatures) Chữ ký số có được bằng cách đem mã hoá bản tóm tắt của thông điệp bằng khoá bí mật của người ký. Hàm băm MD4 Page 4 • Chứng thực bằng chữ ký số Nếu kết quả băm giống nhau, Thông điệp được xác thực. Đây là một ứng dụng cực kỳ quan trọng của hàm Hash, đặc biệt là trong thương mại điện tử. Hàm băm MD4 Page 5 II. Hàm băm MD4 1. Giới thiệu Hàm hash MD4 được Rivest đề xuất năm 1990. Hàm băm MD4 được mô tả như sau: Đầu vào: Bản tin M có chiều dài nhỏ hơn 2 64 . Mở rộng bản tin: Thêm các bít vào bản tin để bản tin có chiều dài là bội của 512. Quá trình thêm diễn ra như sau. Thêm bít 1 vào cuối bản tin, sau đó thêm vào một số bít 0 để nhận bản tin có chiều dài là đồng dư với 448 modulo 512, và cuối cùng thêm vào 64 bít, 64bít này biểu diễn chiều dài của bản tin ban đầu. Bản tin được thêm vào bao gồm các khối M 1 , M 2 , … , M n , chiều dài mỗi khối là 32 bít. Đầu ra: 128 bít là liên kết của 4 từ 32 bít:A|B|C|D. Hàm băm MD4 chủ yếu thực hiện nhờ các phép toán logic và một phép cộng theo modulo 2 32 nên thuật toán chạy rất nhanh, thích ứng với việc sử lý bản tin có độ lớn. Tuy nhiên thuật toán MD4 tồn tại một số hạn chế. Cụ thể là có thể tìm thấy va chạm nếu sử dụng 2 vòng. Vì điểm yếu này mà MD5 ra đời thay thế cho MD4. 2. Nội dung thuật toán “Thông điệp đệm” (Messege Padding) là xâu bit có độ dài chia hết cho 512. “Thông điệp đệm” được lưu trong mảng M = M[0] M[1] … M[N-1]. Trong đó M[i] là xâu bit có độ dài 32 bit, gọi là word. N ≡ 0 mod 16. (32 bit x 16 đoạn = 512 bit). M được xây dựng từ Bản tin gốc a bằng thuật toán: 1/. d = 447 – ( |a| mod 512) ≥ 0. (d = 512 nếu 447< |a| mod 512). 2/. Kí hiệu l là biểu diễn nhị phân của |a| mod 2 64 , tl: | l | = 64. 3/. M = a || 1 || 0 d || l, d là số bit 0 ghép thêm vào M cho đủ độ dài 512. Hàm băm MD4 Page 6 * Độ dài của xâu a || 1 || 0 d là |a| + 1 + d = 448 mod 512. * Độ dài của “Thông điệp đệm” M là (|a| + 1 + d) +| l | = 448 mod 512 + 64 = 512 mod 512. Chú ý: Vì M = a || 1 || 0 d || l nên d = |M| - ( |a| + 1 + | l | ) = d = 512 - ( |a| + 1 + 64 ) = 512 - (|a| +65) = 447 – ( |a| mod 512). Ví dụ: Xâu đầu vào là a = “ABC”, xây dựng M như sau: a: = “ABC” = "01000001 01000010 01000011". (Chú ý theo bảng mã: ‘A’ =65, ‘B’ =66, ‘C’ =67= 2 6 + 2 1 + 2 0 ). * Độ dài tính theo bit của xâu a: |a| = 24 bit => d = 447 – (|a| mod 512) = 447 – 24 = 423. |a| + 1 + d = 24 + 1 + 423 = 448 mod 512. * Biểu diễn nhị phân của độ dài xâu a là l: l = |a| mod 2 64 = 24 mod 2 64 = 24 = 2 4 + 2 3 = (11000 ) 2 = (   so59 00 00 11000 ) 2 => Độ dài của l là |l| = |   so59 00 00 11000| = 59 + 5 = 64. M = a || 1 || 0 d || l => M = 01000001 01000010 01000011 || 1 ||   so423 00 00 ||   so59 00 00 11000 M = M[0] M[1] … M[N-1], N ≡ 0 mod 16, mỗi đoạn M[i] là word 32 bit. Hàm băm MD4 Page 7 M[0] = 01000001 01000010 01000011 10000000 M[1] = M[2] = … = M[13] = M[14] =   so32 00 00 M[15] = 00000000 00000000 00000000 00011000 Trong việc xây dựng M, ta gắn số 1 đơn lẻ vào sau a, sau đó thêm tiếp các số 0 vào đủ để độ dài của M đồng dư với 448 modulo 512. Cuối cùng nối thêm 64 bit (chính là |l|) chứa biểu diễn nhị phân về độ dài ban đầu của a (được rút gọn theo modulo 2 64 nếu cần). Xâu M có độ dài chia hết cho 512, vì thế khi chặt M thành các word 32 bit, số word nhận được là N, sẽ chia hết cho 16. Mục đích việc tạo ra “thông điệp đệm” M là để các hàm băm xử lý trên từng khối (block) 512 bit (16 word) cùng một lúc. Hàm băm MD4 Page 8 III. Chương trình hàm băm MD4 1. Môi trường và công cụ làm thử nghiệm Bảng 3.1. Cấu hình hệ thống thử nghiệm Thành phần Chỉ số CPU 2.2 GHz Core Duo Intel RAM 4GB OS Windows7 Bộ nhớ ngoài 500GB Bảng 3.2. Các phần mềm sử dụng STT Tên phần mềm Tác giả Chức năng Nguồn 1 NetBeans IDE 7.0 Môi trường phát triển https://netbeans.org/c ommunity/releases/ 2. Tiến hành thực thi và kết quả • Chương trình được xây dựng gồm các file sau:  Md4.java: File chương trình chính bao gồm thuật toán MD4  HamBamDongMD4AboutBox.java : File giao diện About của chương trình  HamBamDongMD4App.java và HamBamDongMD4View.java: File giao diện chính của chương trình • Giao diên chương trình như sau: Hàm băm MD4 Page 9 Hàm băm MD4 Page 10 . HỌC MẬT MÃ VÀ AN TOÀN THÔNG TIN Giảng viên: PGS.TS. Trịnh Nhật Tiến Học viên: Phan Thị Thơm HÀ NỘI – 2013 Hàm băm MD4 Page 1 Mục Lục Hàm băm MD4 Page 2 I. Giới thiệu về hàm băm 1. Giới thiệu Hàm. tử. Hàm băm MD4 Page 5 II. Hàm băm MD4 1. Giới thiệu Hàm hash MD4 được Rivest đề xuất năm 1990. Hàm băm MD4 được mô tả như sau: Đầu vào: Bản tin M có chiều dài nhỏ hơn 2 64 . Mở rộng bản tin: . đích việc tạo ra thông điệp đệm” M là để các hàm băm xử lý trên từng khối (block) 512 bit (16 word) cùng một lúc. Hàm băm MD4 Page 8 III. Chương trình hàm băm MD4 1. Môi trường và công cụ làm

Ngày đăng: 24/10/2014, 16:06

Từ khóa liên quan

Mục lục

  • I. Giới thiệu về hàm băm

    • 1. Giới thiệu

    • 2. Tính chất cơ bản của hàm băm

    • 3. Ứng dụng của hàm băm

    • II. Hàm băm MD4

      • 1. Giới thiệu

      • 2. Nội dung thuật toán

      • III. Chương trình hàm băm MD4

        • 1. Môi trường và công cụ làm thử nghiệm

        • 2. Tiến hành thực thi và kết quả

Tài liệu cùng người dùng

Tài liệu liên quan