Tìm hiểu mã hóa thông tin, tổng quan về hàm băm nói chung, chi tiết về hàm băm MD5 và ứng dụng trong bảo mật thông tin, an toàn thông tin. Đưa ra kết quả chương trình mô phỏng và các kết quả thu được đúng với các tài liệu tiêu chuẩn về thuật toán MD5
Ý KIẾN CỦA GIẢNG VIÊN Mục Lục DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT LỜI MỞ ĐẦU CHƯƠNG GIỚI THIỆU ĐỀ TÀI 1.1 Mục đích 1.2 Đối tượng nghiên cứu 1.3 Phạm vi nghiên cứu 1.4 Ý nghĩa đề tài CHƯƠNG TỔNG QUAN VỀ MẬT MÃ HÓA .6 2.1 Khái niệm mã hóa .6 CHƯƠNG TỔNG QUAN VỀ HÀM BĂM VÀ THUẬT TOÁN 11 3.1 Đặt vấn đề 11 3.2 Giới thiệu hàm băm mật mã 11 CHƯƠNG HÀM BĂM MD5 .23 4.1 Giới thiệu 23 4.2 Khái niệm .23 4.3 Ứng dụng 23 4.4 Thuật giải .24 4.5 MD5 (Message Digest) 25 4.6 Sự khác MD4 MD5 30 CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN MD5 31 5.1 Nhiệm vụ chương trình 31 5.2 Thuật toán sơ đồ khối 31 5.3 Kết chương trình mô thuật toán MD5 37 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 41 DANH MỤC TÀI LIỆU THAM KHẢO 42 DANH MỤC HÌNH VẼ Hình 2.1 Mô hình hệ thống mã hóa quy ước .7 Hình 2.2 Nguyên lý hệ thống mã hoá đối xứng Hình 2.3 Kênh nguyên lý hệ thống mã hoá đối xứng .8 Hình 2.4 Nguyên lý mã hoá khoá công khai thuật toán RSA 10 Hình 3.5Cấu trúc băm Merkle-Damgård 16 Hình 4.6 Sơ đồ vòng lặp chính của MD5 26 Hình 4.7 Sơ đồ vòng lặp của MD5 .26 DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT Các từ viết tắt phải liệt kê theo thứ tự bảng chữ Các từ viết tắt tiếng Việt liệt kê trước, từ viết tắt tiếng nước liệt kê sau Viết tắt Giải thích MD5 Message Digest CSDL Cơ Sở Dữ Liệu RSA Republic of South Africa AES Advanced Encryption Standard CRC Cyclic Redundancy Check WEP Wired Equivalent Privacy HMAC Hash-based Message Authentication Code NIST HyperText Transfer Protocol MAC Mandatory Access Control LỜI MỞ ĐẦU Ngày nay, ứng dụng Công nghệ thông tin ngày phổ biến rộng rãi ảnh hưởng lớn đến diện mạo đời sống, kinh tế, xã hội Mọi công việc hàng ngày thực từ xa với hổ trợ máy vi tính mạng internet (từ việc học tập, giao dịch,… đến việc gửi thư) Tất thông tin liên quan đến công việc máy vi tính quản lý truyền hệ thống mạng Đối với thông tin bình thường ý đến, thông tin mang tính chất sống số cá nhân (hay tổ chức) vấn đề bảo mật thật quan trọng, vấn đề khó khăn đặt giữ thông tin bí mật giữ địa cần đến Nhiều tổ chức, cá nhân tìm kiếm đưa nhiều giải pháp bảo mật phương pháp mã hóa khóa công khai xem phương pháp có tính an toàn cao Như việc đảm bảo an toàn thông tin, tránh nguy bị thay đổi, chép mát liệu ứng dụng mạng vấn đề xúc, nhiều người quan tâm Trong báo cáo này, nhóm em trình bày vấn đề liên quan mã hóa thông tin, thuật toán băm MD5 CHƯƠNG GIỚI THIỆU ĐỀ TÀI 1.1 Mục đích Tìm hiểu hàm băm, sâu vào thuật toán MD5 Hàm băm (Hash Function): Cho đầu vào thông báo có kích thước thay đổi, đầu mã băm có kích thước cố định Giải thuật băm MD5 (Message Digest 5): sử dụng để kiểm tra tính toàn vẹn khối liệu lớn Thuật toán nhận đầu vào đoạn tin có chiều dài bất kỳ, băm thành khối 512 bit tạo đầu đoạn tin 128 bit Xây dựng chương trình mô hàm băm MD5 Đưa kết chương trình mô kết thu với tài liệu tiêu chuẩn thuật toán MD5 1.2 Đối tượng nghiên cứu - phương pháp mật mã hóa - Các thuật toán hàm băm 1.3 Phạm vi nghiên cứu Bài báo cáo tập trung nghiên cứu thuật toán băm MD5 1.4 Ý nghĩa đề tài MD5 ứng dụng rộng rãi nhiều lĩnh vực bảo mật, kể sơ lược như: thông tin password tính giá trị băm (MD5) lưu trữ giá trị vào CSDL (cơ sở liệu)=> mục đích để bảo mật tốt hacker có lấy mật mã CSDL thông tin password CHƯƠNG TỔNG QUAN VỀ MẬT MÃ HÓA 2.1 Khái niệm mã hóa Mã hoá tiến trình biến đổi thông tin, sử dụng thuật toán nhằm mục đích không cho người khác nắm bắt thiếu vốn thông số định (key) để dịch ngược Đi kèm với mã hoá giải mã Có nhiều loại thuật toán mã hoá cho liệu máy tính, chúng gọi tên theo thuật toán so sánh trực tiếp với nhau, ví dụ mã hoá 128bit, Triple-DES, 2048-bit RSA Trong loại, dĩ nhiên phép mã hoá 2048-bit RSA mạnh mẽ phép mã hoá 1024-bit RSA.Nhưng nghĩa phép mã hoá với độ dài dãy bit lớn xem an toàn Thử liên tưởng đến biệt thự bạn, với cổng khoá ổ khoá chân, chân nằm 10 vị trí, ổ khoá mở chân theo mã khoá chủ nhà, để vượt qua, tên trộm cần phải dùng tối đa 10.000 phép thử (brute-force attack) Nhưng tăng ổ khoá lên 10 chân, tạo nên 10 triệu khe cắm khoá hợp lệ, không đủ thông minh (hay ngu dốt) để mở khoá cách công thuật toán Họ phá cửa sổ, hay chí phá cổng, giả danh quyền, thợ nước… để đột nhập vào nhà bạn Một ổ khoá tốt chống lại kiểu công Điều cho thấy thuật toán mã hoá cực mạnh hữu sử dụng ở nơi cần thiết, lúc tối ưu Cái cần bảo vệ nhà bạn đặt hàng rào bẫy hi vọng kẻ trộm dính vào bẫy Với phát triển mạnh mẽ mình, hầu hết kênh thông tin lấy Internet làm tảng để phát triển Điều tất yếu nảy sinh vấn đề An toàn thông tin, ngày đó, bạn nhận rằng, thông tin bạn bị theo dõi Để vừa đảm bảo thông tin kết nối, vừa đảm bảo yếu tố bảo mật thông tin phương pháp tốt mã hoá thông tin Ngày việc mã hoá trở nên phổ cập, quốc gia công ty lớn có sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho thông tin họ Trên giới có nhiều loại thuật toán, khuôn khổ báo cáo, tìm hiểu thuật toán ứng dụng phổ biển Internet Mật mã hóa Hình 2.1 Mô hình hệ thống mã hóa quy ước sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc Các thuộc tính yêu cầu là: Bí mật: Chỉ có người nhận xác thực lấy nội dung thông tin chứa đựng dạng mật mã hóa Nói khác đi, cho phép thu lượm thông tin đáng kể nội dung thông điệp Nguyên vẹn: Người nhận cần có khả xác định thông tin có bị thay đổi trình truyền thông hay không Xác thực: Người nhận cần có khả xác định người gửi kiểm tra xem người gửi có thực gửi thông tin hay không 2.1.1 Các thuật toán mã hóa 2.1.1.1 Mã hóa đối xứng Hình 2.2 Nguyên lý hệ thống mã hoá đối xứng Nguyên lý hệ thống mã hoá khoá đối xứng (hình 2.2) Có thể thấy chất mã hoá đối xứng phía thu phía phát sử dụng khoá bí mật (SK), thuật toán hai phía giống Mã hoá đối xứng dựa vào việc phân phối khoá cách bảo mật hai phía Nhưng thực tế khoá chung lại phân phối tới tất người mạng, vấn đề “kênh bảo mật” làm đau đầu nhà quản trị mạng Điều nguy hiểm chiếm khoá trình phân phối có toàn quyền truy nhập tới liệu khoá bảo vệ Do đó, trình phân phối khoá phải “kênh bảo mật”, kênh logic hay kênh vật lý Hình 2.3 Kênh nguyên lý hệ thống mã hoá đối xứng 2.1.2 Mã hoá bất đối xứng Ngược lại với mã hoá đối xứng, thuật toán bất đối xứng hoạt động theo hai khoá, hay xác cặp khoá (hình 1.2) Khoá sử dụng biết đến khoá bí mật khoá công khai có khái niệm mã hoá khoá công khai Mỗi khoá sử dụng để mã hoá hay giải mã, khác với thuật toán đối xứng, giá trị khoá phía khác Trong hệ thống RSA, liệu mã hoá khoá bí mật (KXu) giải mã khoá công khai cặp khoá Cặp khoá tạo có liên quan trực tiếp với Mặc dù có quan hệ với biết hay truy nhập khoá công khai tính toán giá trị khoá bí mật Do đó, công khai khoá mã không làm ảnh hưởng tới tính bảo mật hệ thống, địa thư tín khoá bí mật giữ kín Bản chất mã hoá khoá công khai RSA tin mật mã nhận thực mã hoá khoá bí mật giải mã khoá công khai Từ đó, phía thu xác định nguồn gốc tin Bất người giữ khoá công khai nghe trộm tin mật mã cách tính toán với kho bí mật, không đảm bảo tính tin cậy tin (trong nhóm) mà nhận thực, hay gọi từ chối, ví dụ người gửi từ chối họ tác giả tin Nó hoàn toàn trái ngược với hoạt động khoá đối xứng, tin mật mã đảm bảo tính toàn vẹn phía mã hoá giải mã, có khoá chung phát tin từ chối phát nó, phía thu biết đâu tác giả tin Thuật toán đối xứng yêu cầu khả tính toán lớn đó, tốc độ trình mã hoá chậm so với mã hoá đối xứng Đó trở ngại hệ thống cho phép tỷ lệ lỗi lớn truyền thông thoại Do đó, mã hoá khoá công khai không phù hợp với tin có chiều dài thông thường, nhiên kết hợp hai chế độ đảm bảo tính nhận thực, tin cậy toàn vẹn tin Nói chung, ứng dụng sử dụng thuật toán bất đối xứng là: • Sử dụng giá trị “băm” nhỏ làm chữ ký điện tử • Mã hoá khoá bí mật sử dụng thuật toán đối xứng • Thỏa thuận khóa mã bí mật phía truyền thông Hình 2.4 Nguyên lý mã hoá khoá công khai thuật toán RSA 10 GG (b, c, d, a, M12, 20, 0x8d2a4c8a) Vòng 3: HH (a, b, c, d, M5, 4, 0xfffa3942) HH (d, a, b, c, M8, 11, 0x8771f681) HH (c, d, a, b, M11, 16, 0x6d9d6122) HH (b, c, d, a, M14, 23, 0xfde5380c) HH (a, b, c, d, M1, 4, 0xa4beea44) HH (d, a, b, c, M4, 11, 0x4bdecfa9) HH (c, d, a, b, M7, 16, 0xf6bb4b60) HH (b, c, d, a, M10, 23, 0xbebfbc70) HH (a, b, c, d, M13, 4, 0x289b7ec6) HH (d, a, b, c, M0, 11, 0xeaa127fa) HH (c, d, a, b, M3, 16, 0xd4ef3085) HH (b, c, d, a, M6, 23, 0x04881d05) HH (a, b, c, d, M9, 4, 0xd9d4d039) HH (d, a, b, c, M12, 11, 0xe6db99e5) HH (c, d, a, b, M15, 16, 0x1fa27cf8) HH (b, c, d, a, M2, 23, 0xc4ac5665) Vòng 4: II (a, b, c, d, M0, 6, 0xf4292244) II (d, a, b, c, M7, 10, 0x432aff97) II (c, d, a, b, M14, 15, 0xab9423a7) II (b, c, d, a, M5, 21, 0xfc93a039) II (a, b, c, d, M12, 6, 0x655b59c3) II (d, a, b, c, M3, 10, 0x8f0ccc92) II (c, d, a, b, M10, 15, 0xffeff47d) II (b, c, d, a, M1, 21, 0x85845dd1) II (a, b, c, d, M8, 6, 0x6fa87e4f) II (d, a, b, c, M15, 10, 0xfe2ce6e0) II (c, d, a, b, M6, 15, 0xa3013414) II (b, c, d, a, M13, 21, 0x4e0811a1) II (a, b, c, d, M4, 6, 0xf7537e82) II (d, a, b, c, M11, 10, 0xbd3af235) II (c, d, a, b, M2, 15, 0x2ad7d2bb) II (b, c, d, a, M9, 21, 0xeb86d391) Những số ti được chọn theo quy luật sau: bước thứ i giá trị ti là 29 phần nguyên của 232*abs(sin(i)), i = [0 63] được tính theo radian Sau tất cả bước a, b, c và d lần lượt được cộng với A, B, C và D để cho kết quả đầu và thuật toán tiếp tục với khối liệu 512-bit tiếp theo cho đến hết bức điện Đầu cuối là một khối 128-bit của A, B, C và D, chính là hàm Băm nhận được 4.6 Sự khác MD4 MD5 • MD4 có ba chu kỳ biến đổi MD5 bổ sung thêm chu kỳ thứ tư giúp tăng mức độ an toàn • Mỗi thao tác chu kỳ biến đổi MD5 sử dụng số ti phân biệt MD4 sử dụng số chung cho thao tác chu kỳ biến đổi (Trong MD4, số ti sử dụng chu kỳ 0, 0x5a827999, 0x6ed9eba1) • Hàm G chu kỳ hai MD4: G(X, Y, Z)=((X ∧ Y)∨(X ∧ Z)∨(Y ∧ Z)) thay ((X ∧ Z) ∨ (Y ∧ Z)) nhằm giảm tính đối xứng • Mỗi bước biến đổi chu kỳ chịu ảnh hưởng kết bước biến đổi trước nhằm tăng nhanh tốc độ hiệu ứng lan truyền (avalanche) • Các hệ số dịch chuyển xoay vòng chu kỳ tối ưu hóa nhằm tăng tốc độ hiệu ứng lan truyền Ngoài ra, chu kỳ sử dụng bốn hệ số dịch chuyển khác 30 CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN MD5 5.1 Nhiệm vụ chương trình - Đưa thuật toán MD5 - Sơ đồ khối thuật toán MD5 - Kết mô chương trình - Kết thực nghiệm 5.2 Thuật toán sơ đồ khối 5.2.1 Thuật toán Khởi gán biến: h0 := 0x67452301 h1 := 0xEFCDAB89 h2 := 0x98BADCFE h3 := 0x10325476 Hệ số quay trái R[i]của chu kỳ: R[ 15] := { 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22} R[16 31] := { 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20} R[32 47] := { 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23} R[48 63] := { 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21} 31 Hằng số K[i] for i from to 63 K[i] := floor(abs(sin(i + 1)) × (2 pow 32)) Tiền xử lý: • Thêm bit vào cuối thông điệp • Thêm vào k bit cho độ dài thông điệp nhận đồng dư 448 (mod 512) • Thêm 64 bit biểu diễn độ dài thông điệp gốc(giá trị lưu dạng bigendian) Quá trình xử lý: • Chia thông điệp (đã padding) thành khối 512 bit • Với khối 512-bit: o Chia thành 16 word (32 bit, little-endian) w[0 15] o A= h0, B= h1, C= h2, D= h3 o 64 chu kỳ xử lý o h0+=A, h1+=B, h2+=C, h3+=D • Kết quả:= h0 | h1 | h2 | h3 Chu kỳ xử lý MD5 32 Trong đó: • t số thứ tự chu kỳ • A, B, C, D, word (32 bit) trạng thái • F hàm phi tuyến (thay đổi tùy theo chu kỳ) • Đầu tiên, bốn biến A, B, C, D khởi tạo Những biến gọi chaining variables Bốn chu kỳ biến đổi MD5 hoàn toàn khác sử dụng hàm F, G, H I Mỗi hàm có tham số X, Y, Z từ 32 bit kết từ 32 bit •