1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO Chủ đề Hàm băm MD5

27 0 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 796,51 KB

Nội dung

Đây là một trong những thuật toán băm phổ biến nhất trong lĩnh vực mật mã học, được thiết kế để chuyển đổi dữ liệu với độ dài bất kỳ thành một chuỗi mã băm có độ dài cố định, giúp bảo vệ

Trang 1

KHOA VIỄN THÔNG I

BÁO CÁOChủ đề : Hàm băm MD5

Nguyễn Mạnh Nam – B21DCVT311Nguyễn Vũ Minh Việt –

B21DCVT463Nguyễn Việt Hoàng- B21DCVT207

 Hà Nội – 2024

Trang 2

DANH MỤC HÌNH ẢNH 2

LỜI MỞ ĐẦU 2

Chương I Tổng quan 4

1.1 Mục tiêu tìm hiểu đề tài 4

1.2 Giới thiệu về mã hóa 5

1.3 Giới thiệu về hàm băm 6

1.4 Lịch sử hàm băm MD5 7

Chương II Thuật Toán 9

2.1 Khái niệm 9

2.2 Thuật toán 9

Chương III Ứng dụng 16

3.1 Xác thực và Kiểm tra Tính Toàn vẹn của Dữ liệu 16

3.2 Mã hóa Mật khẩu 16

3.3 Chống Trùng Lặp Dữ liệu và Quản lý Phiên bản 16

3.4 Tạo UUID và Nhận Diện Dữ Liệu Duy Nhất 17

3.5 Xác Thực Chữ Ký Điện Tử và Chứng Thực Tài Liệu 17

3.6 Ứng dụng trong Trò Chơi Trực Tuyến và Ứng dụng Khác 17

Chương IV So Sánh 19

4.1 Ưu điểm của MD5 19

4.2 Nhược điểm của MD5 20

4.3 So sánh hàm băm MD5 và một số hàm băm khác 21

Tài liệu tham khảo 22

Trang 3

DANH MỤC HÌNH ẢNH

Hình 1.1 Hoạt động của hàm băm 6

Hình 2.1 Sơ đồ thuật toán… 9

Hình 2.2 Cấu trúc hàm F… 10

Hình 2.3 Quá trình biến đổi… 11

Hình 2.4 Quá trình dịch vòng… 12

Hình 4.1 So sánh hàm băm MD5 với các hàm băm khác 21

Trang 4

LỜI MỞ ĐẦU

 Hàm băm MD5, viết tắt của Message Digest Algorithm 5, ra đời nhằm mục đích tạo

ra một cách thức băm dữ liệu đơn giản, nhanh chóng nhưng vẫn đảm bảo tính duy nhất Đây là một trong những thuật toán băm phổ biến nhất trong lĩnh vực mật mã học, được thiết kế để chuyển đổi dữ liệu với độ dài bất kỳ thành một chuỗi mã băm

có độ dài cố định, giúp bảo vệ tính toàn vẹn của thông tin trong quá trình lưu trữ và truyền tải Điểm đặc biệt của MD5 là khả năng tạo ra một mã băm 128 bit cho bất 

kỳ dữ liệu đầu vào nào, giúp nó trở thành công cụ lý tưởng cho các ứng dụng như   xác thực dữ liệu, tạo chữ ký số, và kiểm tra sự thay đổi của tập tin.

Tuy nhiên, với sự phát triển của công nghệ và kỹ thuật tấn công, tính bảo mật của  MD5 đã trở thành một vấn đề gây tranh cãi Những tiến bộ trong kỹ thuật phá mã

đã giúp các nhà nghiên cứu tìm ra các phương pháp tấn công va chạm, làm giảm đáng kể tính an toàn của MD5 Các lỗ hổng này tạo điều kiện cho việc tạo ra các giá trị băm trùng lặp từ những dữ liệu đầu vào khác nhau, gây ra rủi ro trong các ứng dụng đòi hỏi bảo mật cao Dù vậy, MD5 vẫn là một công cụ hữu ích trong những môi trường không đòi hỏi tính bảo mật nghiêm ngặt nhưng yêu cầu tốc độ xử 

lý nhanh.

Trang 5

Chương I Tổng quan

1.1 Mục tiêu tìm hiểu đề tài

Trong những năm đầu của thời đại số, hàm băm MD5 (Message Digest Algorithm 5)

đã đóng một vai trò quan trọng trong việc bảo vệ tính toàn vẹn và bảo mật của dữ liệu

kỹ thuật số Được thiết kế vào đầu những năm 1990, MD5 nhanh chóng trở thành mộttrong những thuật toán băm phổ biến nhất nhờ tính đơn giản và hiệu suất cao, đặc biệt

là trong các hệ thống yêu cầu xác thực dữ liệu và mã hóa mật khẩu Khả năng củaMD5 trong việc chuyển đổi một chuỗi dữ liệu bất kỳ thành một mã băm cố định dài

128 bit đã giúp nó trở thành công cụ lý tưởng cho các ứng dụng như bảo vệ mật khẩu,tạo chữ ký số, và kiểm tra tính toàn vẹn của tập tin trong môi trường mạng

Tuy nhiên, với sự phát triển không ngừng của công nghệ và các kỹ thuật tấn côngmạng, tính bảo mật của MD5 dần bị thách thức Các nhà nghiên cứu bảo mật đã pháthiện ra rằng MD5 dễ bị tổn thương trước các cuộc tấn công va chạm (collision attack) – một kỹ thuật trong đó kẻ tấn công có thể tạo ra hai đoạn dữ liệu khác nhau nhưng lạicho ra cùng một mã băm MD5 Điều này có thể dẫn đến những hậu quả nghiêm trọng,đặc biệt trong các ứng dụng bảo mật quan trọng như chứng thực tài liệu, mã hóa mậtkhẩu, và hệ thống thanh toán điện tử Khi hai tài liệu khác nhau có cùng mã băm,người dùng hoặc hệ thống có thể bị đánh lừa, tưởng rằng hai tài liệu này là giống nhau

về nội dung

Do những hạn chế này, MD5 dần mất đi vị trí trong lĩnh vực an ninh mạng Hiện nay,các tổ chức và chuyên gia bảo mật khuyến cáo không nên sử dụng MD5 trong các hệthống đòi hỏi mức độ bảo mật cao Thay vào đó, các thuật toán băm mạnh mẽ hơn như SHA-256 và SHA-3 được khuyến nghị sử dụng do khả năng chống lại các cuộc tấncông va chạm tốt hơn, và được thiết kế để đáp ứng các tiêu chuẩn bảo mật hiện đại.SHA- 256, một phần của họ hàm băm SHA-2, cung cấp độ dài mã băm 256 bit, giúpgiảm đáng kể khả năng xảy ra các cuộc tấn công va chạm SHA-3, một tiêu chuẩnđược phát triển sau SHA-2, cũng được xem là một lựa chọn an toàn nhờ kiến trúc vàkhả năng kháng cự trước nhiều dạng tấn công tiên tiến

Bài báo cáo này nhằm cung cấp một cái nhìn tổng quát và chi tiết về hàm băm MD5,bao gồm các khái niệm cơ bản, đặc điểm chính, nguyên lý thuật toán, và những ứngdụng nổi bật đã từng gắn liền với nó trong quá khứ Ngoài ra, báo cáo cũng sẽ phântích những lý do khiến MD5 không còn được coi là một giải pháp bảo mật lý tưởng,đặc biệt là trước các yêu cầu khắt khe của các hệ thống bảo mật hiện đại Thông quaviệc phân tích này, người đọc sẽ hiểu rõ hơn về sự phát triển của các thuật toán băm,

Trang 6

cũng như lý

Trang 7

do tại sao các phương pháp băm mới như SHA-256 hay SHA-3 đang dần thay thế MD5trong nhiều ứng dụng quan trọng ngày nay.

1.2.Giới thiệu về mã hóa

  Khái niệm: Mã hóa là phương pháp biến đổi thông tin từ dạng bình thường sang dạngthông tin không thể hiểu được nếu không có phương tiện giải mã Hay nói đơn giảnhơn thì mã hóa chính là cách xáo trộn dữ liệu một cách lộn xộn mà chỉ 2 bên trao đổithông tin mới có thể hiểu

  Tính riêng tư: chỉ chủ sở hữu và người nhận dữ liệu mới có thể đọc, giúp ngănchặn những kẻ tấn công, ISP, thậm chí cả chính phủ khỏi dữ liệu nhạy cảm

  Tính bảo mật:mã hóa giúp ngăn chặn vi phạm dữ liệu; nếu một thiết bị của công ty

bị mất hoặc bị đánh cắp nhưng nội dung đã được mã hóa, dữ liệu sẽ vẫn được bảomật

  Tính toàn vẹn dữ liệu: mã hóa cũng ngăn chặn hành vi nguy hiểm như tấn côngtrên đường dẫn truyền dữ liệu (chặn thông tin trong quá trình truyền dữ liệu), vìkhông thể xem hoặc giả mạo dữ liệu được mã hóa trên đường truyền dữ liệu

  Mã hóa đối xứng:là loại mã hóa sử dụng khóa bí mật mà người gửi mà người gửi

và người nhận đồng nhất với nhau Ngày nay các thuật toán mã hóa xứng đôi sử dụng rộng rãi trên nhiều hệ thống máy tính giúp tăng cường bảo mật cho dữ liệu.Với những ưu điểm nổi bật như :mức độ bảo mật cao, cho phép mã hóa và giải mãhóa tin nhắn tốc độ cao và thuật toán thực thi ít phức tạp hơn

  Mã hóa bất đối xứng:là một dạng kỹ thuật mã hóa sử dụng cặp khóa công khai vàkhóa bí mật để mã hóa – giải mã hóa Trong đó khóa công khai sẽ là khóa đượcdùng để mã hóa còn khóa bí mật được dùng để giải mã Đặc điểm của mã hóa là việcthực thi thuật toán mã hóa rất chậm Lý do là vì thuật toán mã hóa bất đối xứng cóbản chất phức tạp và có gánh nặng tính toán cao Chính vì thế, loại mã hóa này đượcdùng cho trao đổi chìa khóa một cách an toàn thay vì truyền dữ liệu số lượng lớn.Ngoài ra, loại mã hóa này còn thường được dùng để thiết lập kênh bảo mật trênphương tiện bảo mật

  Mã hóa một chiều:Loại mã hóa này dùng để mã hóa những thứ không cần dịch lạinguyên bản gốc tạo thành một chuỗi dữ liệu Chuỗi này sẽ được lưu vào cơ sở dữ liệu chứ không lưu mật khẩu thô nên tính bảo mật rất cao Nếu các hacker muốntrộm dữ liệu được mã hóa cũng không thể nào biến đổi thành văn bản khi không biết

Trang 8

mật khẩu.

Trang 9

Đặc điểm của chuỗi mã hóa 1 chiều là trong cùng 1 điều kiện, dữ liệu đầu vào như nhau thì kết quả sau khi chuyển đổi sẽ giống hệt nhau Chỉ cần chuyển đổi 1 ký tự trong chuỗi mã hóa thì chuỗi kết quả sẽ sai lệch sang một hướng khác Mã hóa mộtchiều hiện nay sử dụng 2 dạng thuật toán đó là SHA và MD5.

  Nguồn: FPT Cloud - Nền tảng Cloud cho sáng tạo đột phá

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

(có thể là một chuỗi ký tự, một đối tượng trong lập trình hướng đối tượng, v.v ) Giátrị băm đóng vai gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người tachấp nhận hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giảithuật để giảm thiểu sự đụng độ đó Hàm băm thường được dùng trong bảng băm nhằmgiảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh

thư viện ứng dụng bảng băm, thường gọi là thư viện collection trong đó có các vấn đề

điển (dictionary) Thông thường, các lập trình viên chỉ cần viết hàm băm cho các đốitượng nhằm tích hợp với thư viện bảng băm đã được xây dựng sẵn

Một hàm băm tốt phải thỏa mãn các điều kiện sau:

Hình 1.1, Hoạt động của hàm băm

Trang 10

  Các hàm băm được ứng dụng trong nhiều lĩnh vực, chúng thường được thiết kế phùhợp với từng ứng dụng Ví dụ, các hàm băm mật mã học giả thiết sự tồn tại của mộtđối phương - người có thể cố tình tìm các dữ liệu vào với cùng một giá trị băm Mộthàm băm tốt là một phép biến đổi "một chiều", nghĩa là không có một phương phápthực tiễn để tính toán được dữ liệu vào nào đó tương ứng với giá trị băm mong muốn,khi đó việc giả mạo sẽ rất khó khăn Một hàm một chiều mật mã học điển hình không

có tính chất hàm đơn ánh và tạo nên một hàm băm hiệu quả; một hàm trapdoor mật mãhọc điển hình là hàm đơn ánh và tạo nên một hàm ngẫu nhiên hiệu quả

bí mật như trong mật mã học, nhưng cả hai đều được dùng để "mở khóa" hoặc để truynhập thông tin.) Ví dụ, các khóa trong một từ điển điện tử Anh-Anh có thể là các từ tiếng Anh, các bản ghi tương ứng với chúng chứa các định nghĩa Trong trường hợpnày, hàm băm phải ánh xạ các xâu chữ cái tới các chỉ mục của mảng nội bộ của bảngbăm

mà dữ liệu đã bị làm nhiễu bởi các quá trình ngẫu nhiên Khi các hàm băm được dùngcho các giá trị tổng kiểm, giá trị băm tương đối nhỏ có thể được dùng để kiểm chứngrằng một file dữ liệu có kích thước tùy ý chưa bị sửa đổi Hàm băm được dùng để pháthiện lỗi truyền dữ liệu Tại nơi gửi, hàm băm được tính cho dữ liệu được gửi, giá trịbăm này được gửi cùng dữ liệu Tại đầu nhận, hàm băm lại được tính lần nữa, nếu cácgiá trị băm không trùng nhau thì lỗi đã xảy ra ở đâu đó trong quá trình truyền Việcnày được gọi là kiểm tra dư (redundancy check)

1.4 Lịch sử hàm băm MD5

Message-Digest(Tiêu hoá Tin nhắn) là một loạt các thuật toán đồng hóa thông tin đượcthiết kế bởi Giáo sư Ron Rivest của trường MIT (Rivest, 1994) Khi công việc phân tíchchỉ ra rằng giải thuật trước MD5-MD4- có vẻ không an toàn, ông đã thiết kế ra MD5 vàonăm 1991 để thay thế an toàn hơn (Điểm yếu của MD4 sau đó đã được Hans Dobbertintìm thấy)

Vào năm 1993, Den Boer và Bosselaers đã tìm ra, tuy còn giới hạn, một dạng "xung độtảo" của hàm nén MD5; đó là, với hai véc-tơ khởi tạo I và J khác nhau 4 bit, dẫn đến:MD5compress(I,X) = MD5compress(J,X)

Trang 11

Trong năm 1996, Dobbertin đã thông báo có xung đột của hàm nén MD5 (Dobbertin,1996) Dù nó không phải là một cuộc tấn công vào toàn bộ hàm băm MD5, nhưng nó đủgần để các chuyên gia mã hóa đề nghị sử dụng kỹ thuật khác để thay thế, như WHIRLPOOL, SHA- 1 hay RIPEMD-160.

Kích thước của bảng băm-128 bit-đủ nhỏ để bị tấn công bruteforce MD5CRK là một dự 

án phân bố bắt đầu vào tháng 3 năm 2004 với mục tiêu chứng tỏ rằng MD5 không an toàntrên thực tế bằng cách tìm ra những xung đột sử dụng tấn công bruteforce

MD5CRK kết thúc nhanh chóng sau ngày 17 tháng 8 năm 2004, khi xung đột đối với toàn

bộ MD5 được công bố bởi Xiaoyun Wang, Dengguo Feng, Xuejia Lai, và HongboYuCuộc tấn công phân tích của họ được báo cáo là chỉ diễn ra có một giờ trên nhóm máyIBM p690

Vào ngày 1 tháng 3 năm 2005, Arjen Lenstra, Xiaoyun Wang, và Benne de Weger đã biểudiễn việc xây dựng hai giấy phép X.509 với các khóa công cộng khác nhau và cùng bảngbăm MD5, một sự xung đột thực thế đáng được trình diễn Sự xây dựng bao gồm nhữngkhóa riêng tư cho cả hai khóa công cộng Vài ngày sau, Vlastimil Klima đã mô tả mộtgiải thuật nâng cao, có thẻ xây dựng những xung đột MD5 trong vài giờ với một máy tínhxách tay Vào ngày 18 tháng 3 năm 2006, Klima đã phát hành một giải thuật có thể tìmthấy đụng độ trong vòng một phút bằng một máy tính xách tay, sử dụng một phương thức

mà anh gọi là bắt đường hầm

Trang 12

Chương II Thuật Toán2.1 Khái niệm

toán Tiêu hóa-tin nhắn 5) là một hàm băm mật mã học được sử dụng phổ biến với giátrị băm (hash) dài 128-bit Là một chuẩn Internet (RFC 1321), MD5 đã được dùngtrong nhiều ứng dụng bảo mật, và cũng được dùng phổ biến để kiểm tra tính toàn vẹncủa tập tin Một bảng băm MD5 thường được diễn tả bằng một số hệ thập lục phân 32

ký tự

đó, MD4 Vào năm 1996, người ta phát hiện ra một lỗ hổng trong MD5, trong khi vẫnchưa biết nó có phải là lỗi nghiêm trọng hay không, những chuyên gia mã hóa bắt đầu

đề nghị sử dụng những giải thuật khác, như SHA-1 (khi đó cũng bị xem là không antoàn) Trong năm 2004, nhiều lỗ hổng hơn bị khám phá khiến cho việc sử dụng giảithuật này cho mục đích bảo mật đang bị đặt nghi vấn

Nguồn: MD5 - Wikipedia

2.2 Thuật toán

Hình 2.1, Sơ đồ Thuật toán

chọn sao cho thông điệp cuối cùng có thể chia làm N khối 512 bit M1,M2, ,MN.Quá

Trang 13

kết hợp với H1 để cho ra giá trị hash là H2 Khối M3 kết hợp với H2 cho ra giá trị H3.

a, b, c, d là các hằng số như sau (viết dưới dạng thập lục phân):

đến 63 Tại vòng thứ j sẽ có 2 tham số là Kj và Wj đều có kích thước 32 bit Các tham số

Trang 14

Giá trị block Mi 512 bit được biến đổi qua một hàm message schedule cho ra 64 giá trịW0, W1,…, W63 mỗi giá trị 32 bit Block Mi 512 bit được chia thành 16 block 32 bit ứngvới các giá trị W0, W1, …, W15 (16×32=512) Tiếp theo, 16 giá trị này được lặp lại 3 lầntạo thành dãy 64 giá trị

Sau vòng cuối cùng, các giá trị abcde được cộng với các giá trị abcd của Hi-1 để cho racác giá trị abcd của Hi Phép cộng ở đây là phép cộng modulo 232

Tiếp theo tìm hiểu cấu trúc của một vòng Việc biến đổi các giá trị abcd trong vòng thứ iđược thể hiện trong hình bên dưới

Hình 2.3, Quá trình biến đổi

Note: Phép + trong sơ đồ trên là phép cộng modul 2^32

Ở đây c lấy giá trị của b, d lấy giá trị của c, a lấy giá trị của d

Giá trị b được tính qua hàm:

Trang 16

// Khởi tạo với các giá trị được chỉ định

uint32_t A = 0x01234567; // Giá trị a đã cho

uint32_t B = 0x89abcdef; // Giá trị b đã cho

uint32_t C = 0xfedbca98; // Giá trị c đã cho

uint32_t D = 0x76543210; // Giá trị d đã cho

// Các hàm phụ trợ MD5

Trang 17

{ return (X & Y) | (~X & Z);

}

uint32_t G(uint32_t X, uint32_t Y, uint32_t Z)

{ return (X & Z) | (Y & ~Z);

cout << "A = 0x" << hex << setfill('0') << setw(8) << A << "\n";

cout << "B = 0x" << hex << setfill('0') << setw(8) << B << "\n";

cout << "C = 0x" << hex << setfill('0') << setw(8) << C << "\n";

cout << "D = 0x" << hex << setfill('0') << setw(8) << D << "\n\n";

}

void processMD5Block(uint32_t *chunk) {

// Lưu giá trị ban đầu

Trang 18

const uint32_t T[64] = {

0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,

0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,

// (thêm các giá trị còn lại của bảng T)

cout << "Sau bước " << i << " của Vòng 1:\n";

cout << "A = 0x" << hex << AA << "\n";

Ngày đăng: 03/12/2024, 20:12

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w