1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo mã hóa và cracking MD5

21 617 2

Đ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 21
Dung lượng 1,5 MB

Nội dung

Báo cáo mã hóa và cracking MD5

Trang 1

TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

THỰC HIỆN BỞI CÁC NHÓM SINH VIÊN 08DTHM:

Trang 3

Vì sao chúng ta cần phải mã hóa?

- Nhu cầu riêng tư, tính bảo mật

- Toàn vẹn của thông tin

Mã hóa cũng là nền tảng của chữ ký điện tử, hệ thống PKI…

 Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video ) nhằm mục đích xác định người chủ của dữ liệu đó

 Khóa công khai (PKI) thường được dùng để chỉ toàn bộ hệ thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan đồng thời với toàn bộ việc sử dụng các thuật toán mật mã hóa khóa công khai trong trao đổi thông tin

2 MD 5 LÀ GÌ?

MD5 (Message - Digest - algorithm 5) giải thuật tiêu hóa tập tin là một

chuẩn Internet (RFC 1321) Có khả năng băm

mã hóa tập tin bất kỳ thành chuỗi HEX 32 ký

tự, tương đương 128-bit (mỗi ký tự hex 4-bit

x 32 ký tự = 128 bit)

Hoặc có thể định nghĩa theo cách khác

MD5 là cách căn bản để lấy chùm ký tự ( là

digest, alphabeic hay gì khác ), được gọi là

string nhập vào và cho ra là 32 ký tự hexa

(0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)

MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 Vào năm 1996, người ta phát hiện ra một lỗ hổng trong MD5; trong khi vẫn chưa biết nó có phải là lỗi nghiêm trọng hay không, những chuyên

Trang 4

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 an toà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ải thuật này cho mục đích bảo mật đang bị đặt nghi vấn.

3 ĐẶC ĐIỂM MD5

• Việc tính MD đơn giản, có khả năng xác định được file có kích thước nhiều Gb

• Không có khả năng tính ngược, khi tìm ra MD

• Do bản chất ngẫu nhiên của hàm băm và số lượng cực lớn các giá trị hash

có thể, nên hầu như không có khả năng hai bản tin phân biệt có cùng giá trị hash

• Giá trị MD phụ thuộc vào bản tin tương ứng

• Một chuổi chỉ có duy nhất một hash

• Giá trị MD phụ thuộc vào tất cả các bit của bản tin tương ứng

Ví dụ :

love is blue  03d4ad6e7fee3f54eb46b5ccde58249c

love is Blue  82b76f8eeb4a91aa640f9a23016c7b1c

II ỨNG DỤNG

1 BẢO TOÀN THÔNG TIN

MD5 được dùng rộng rãi trong các phần mềm trên toàn thế giới để đảm bảo việc truyền tập tin được nguyên vẹn Các nhà phát triển ứng dụng thường dùng MD5 trong việc cho phép download file Họ sẽ cho “xuất bản” một tín hiệu MD của file download Khi chúng ta tải file về , thì file chúng ta vừa download sẽ có một chuỗi MD:

• Nếu tín hiệu này khớp với tín hiệu các nhà phát triển ứng dụng đã “xuất

Trang 5

Để tăng tính bảo mật, ta có thể thêm key vào mật khẩu trước khi băm chúng Băm nhiều lần hơn,

Tuy nhiên, hiện nay dễ dàng tạo ra xung đột MD5, một người có thể tạo ra một tập tin để tạo ra tập tin thứ hai với cùng một checksum, do đó kỹ thuật này không thể chống lại một vài dạng giả mạo nguy hiểm Ngoài ra, trong một số trường hợp checksum không thể tin tưởng được (ví dụ, nếu nó được lấy từ một lệnh như tập tin đã tải về), trong trường hợp đó MD5 chỉ có thể có chức năng kiểm tra lỗi: nó sẽ nhận ra một lỗi hoặc tải về chưa xong, rất dễ xảy ra khi tải tập tin lớn

2 BẢO MẬT

Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn

mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phải mất một khoảng thời gian vô tận (đủ để làm nản lòng các hacker)

Trang 6

Quá trình chứng thực của một User với Webserver

Trang 7

III THUẬT TOÁN

Giải thuật MD5 chính hoạt động trên trạng thái 128-bit, được chia thành 4 từ 32-bit, với ký hiệu A, B, C và D Chúng được khởi tạo với những hằng số cố định Giải thuật chính sau đó sẽ xử lý các khối tin 512-bit, mỗi khối xác định một trạng thái Quá trình xử

lý khối tin bao gômg bốn giai đoạn giống nhau, gọi là vòng; mỗi vòng gồm có 16 tác vụ giống nhau dựa trên hàm phi tuyến F, cộng Module, và dịch trái

Thực hiện qua các bước sau:

Bước 1: Thêm các bit vào chuổi

Thực hiện nối dài thông điệp (theo hình vẽ thông điệp là B) để chi nhỏ thành các module 512.

• Thêm bit ‘1’ vào cuối thông điệp để đánh dấu

Thêm vào k bit ‘0’ sao cho (b bit + bit 1 + k bit 0)mod 512=448

Trang 8

• 64 bit tiếp theo sẽ được thêm vào biểu thị chiều dài của chuổi bit ban đầu

(B bit + bit ‘1’ + k bit ‘0’ + 64 bit chiều dài) mod 512 = 0

Ví dụ: Ta có chuỗi 384bit

Quá trình thêm bit

Bước 2: Khởi tạo bộ đệm MD

Một bộ đệm 4 word (A,B,C,D) được dùng để tính mã số thông điệp Ở đây mỗi A,B,C,D là một thanh ghi 32 bit Những thanh ghi này được khởi tạo theo những giá trị hex sau ( các byte thấp trước ) :

word A : 01 23 45 67 word B : 89 ab cd ef word C : fe dc ba 98 word D : 76 54 32 10

Bước 3: Xử lý thông điệp theo từng khối 16 word

Trước hết ta định nghĩa các hàm phụ, các hàm này nhận đầu vào là 3 word 32 bit và tạo

ra một word 32 bit

Trang 9

Với lần lượt là XOR, AND, OR, NOT

Đây là quá trình thực hiện xử lý của 4 hàm F ở trên:

Quá trình này sử dụng một bảng có 64 giá trị T[1 64] được tạo ra từ hàm sin Gọi T[i] là phần tử thứ i của bảng, thì T[i]là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian

Trang 10

Quá trình thực hiện qua các vòng

Trang 12

/* Then perform the following additions (That is increment each

of the four registers by the value it had before this block was started.) */

/* Sau đó làm các phép cộng sau ( Nghĩa là cộng vào mỗi thanh ghi giá trị của nó trước khi vào vòng lặp ) */

Trang 13

MÃ GIẢ

Mã giả cho giải thuật MD5 như sau.

//Chú ý: Tất cả các biến đều là biến không dấu 32 bit và bao phủ mô đun 2^32

khi tính toán

var int[64] r, k

//r xác định số dịch chuyển mỗi vòng

r[ 0 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}

//Sử dụng phần nguyên nhị phân của sin của số nguyên làm hằng số:

for i from 0 to 63

k[i] := floor(abs(sin(i + 1)) × (2 pow 32))

//Khởi tạo biến:

var int h0 := 0x67452301

var int h1 := 0xEFCDAB89

var int h2 := 0x98BADCFE

var int h3 := 0x10325476

//Tiền xử lý:

append "1" bit to message

append "0" bits until message length in bits ≡ 448 (mod 512)

append bit (bit, not byte) length of unpadded message as 64-bit little-endian integer to message

//Xử lý mẩu tin trong đoạn 512-bit tiếp theo:

for each 512-bit chunk of message

break chunk into sixteen 32-bit little-endian words w[i], 0 ≤ i ≤ 15

//Khởi tạo giá trị băm cho đoạn này:

Trang 14

(0 ≤ i ≤ 15): f := d xor (b and (c xor d))

(16 ≤ i ≤ 31): f := c xor (d and (b xor c))

Trang 15

SHA-1 được coi là chuẩn mực "vàng" về thuật toán Nó được tích hợp bên trong rất nhiều chương trình thông dụng như PGP và SSL, được chứng thực bởi Viện Chuẩn Công nghệ Quốc gia và là thuật toán chữ ký điện tử duy nhất được Cơ quan Chuẩn Chữ ký Số của chính phủ Mỹ phê chuẩn.

V KẾT LUẬN

Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một dạng

“vân tay“ hay mã số của thông điệp với độ dài tùy ý

Người ta cho rằng độ khó để tìm được 2 thông điệp có cùng mã số là khoảng 2^64 bước tính, và độ khó để tim được một thông điệp với mã số cho trước là 2^128 bước tính

- Với bất kỳ giá trị x, không thể tính được y ≠ x sao cho H(y) = H(x)

- Không thể tính được một cặp (x, y) sao cho H(x) = H(y)

Do đó MD5 được sử dụng rộng rãy trong các ứng dụng, web, bảo mật, và chứng thực…

Tuy nhiên ở một mức độ nào đó thì md 5 vẫn có thể crack được

VI DEMO SNIFF & CRACK MD5:

Tuy mức độ bảo mật của MD5 được đánh giá là khá tốt và không thể dịch ngược Nhưng còn việc crack Đoạn Hash MD5 là có thể thực hiện được Trong bài demo này tôi sẽ thực hiện việc bắc gói tin login đăng nhập của diễn đàn http://ithutech.net với thông tin

password đã được mã hóa bằng MD5

Trang 16

Đồ nghề cần chuẩn bị:

• Trình duyệt internet…

• Wireshark để bắt lưu lượng login

• Cain & Abel

Trang 17

Các bước thực hiện:

B1:

Dùng trình duyệt mở trang web cần tấn công

B2: Mở wireshark và chọn card mạng đang sử dụng

B3: Trở lại trang diễn đàn và tiến hành login

B4: Lọc gói tin http login.php

Trang 18

Xem nội dung bắt được

B4: Tiến hành cracking đoạn password MD5 vừa bắt được bằng cain & Abell dựa

Trang 19

Cho đoạn hash MD5 vào

Định dạng pass có thể là a-z, A-Z, 0-9, !@#

Định dạng pass cần tiềm

Giới hạn chiều dài pass

Trang 20

Và kết quả

Kết quả tiềm được là: 0989612220

Thử nghiệm thành công với một số kiểu password kiểu tên người, số điện thoại, ngày tháng năm sinh…

Trang 21

CƠ CHẾ HOẠT ĐỘNG CỦA GIẢI THUẬT BRUTE-FORCE ATTACK

Brute-force Attack là giải thuật vét cạn Quá trình cracking MD5 được thực hiện bởi cơ chế so sánh MD5 của từng hoán vị password cần tìm với đoạn MD5 sniff được Quá trình này nhanh hay chậm phụ thuộc rất nhiều vào độ nhạy và tư duy của cracker và một điều quan trọng hơn hết là độ manh và phức tạp của password

Ngày nay Công việc cracking này có thể nhanh hơn rất nhiều lầ đối với các siêu máy tính được kết hợ bởi rất nhiều chíp xử lý.

Kết luận: Việc crack MD5 là có thể làm được, nhưng

quá trình tiềm key nhanh hay chập phụ thuộc vào nhiều yếu

tố Nếu ta đặt password đủ mạnh có nghĩa là thỏa mãn các

tiêu chí bảo mật: pass đủ dài, có chữ hoa chữ thường, ký tự

đặt biệt, sô… thì quá trình dò theo giải thuật brute force

attack sẽ mất rất nhiều thời gian và gây nản lòng cho kẻ tấn

công.

Một số cách để cải thiện độ an toàn cho password thực hiện băm hơn một lần, thêm hoặc bớt một thành phần của chuổi băm được

Ngày đăng: 14/02/2016, 10:27

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w