Nghiên cứu về các thuật toán băm dữ liệu từ đó viết đặc tả và vẽ lưu đồ thuật toán
Trang 1Trêng §¹i häc S ph¹m kü thuËt Hng Yªn
Khoa C«ng nghÖ th«ng tin
-TiÓu luËn Môn: AN TOÀN VÀ BẢO MẬT THÔNG TIN
Đề tài: Nghiên cứu về các thuật toán băm dữ liệu từ đó
viết đặc tả và vẽ lưu đồ thuật toán
Giảng viên hướng dẫn: Nguyễn Duy Tân
Sinh viên thực hiện : Trần Thị Thu
Hng yªn 01/2010 I.Các hàm Hash ( hay còn gọi là hàm băm)
I.1 Các yêu cầu
Trang 2Nén mẩu tin bất kỳ về kích thước cố định và giả thiết hàm hash là công khai
và không dung khóa Hash chỉ phụ thuộc mẩu tin
Hash được sử dụng để phát hiện thay đổi của mẩu tin Hash có thể sử dụngnhiều cách khác nhau với mẩu tin, Hash thường được kết hợp dùng để tạo chữ kýtrên mẩu tin
Các yêu cầu của hàm Hash:
Có thể áp dụng cho mọi mẩu tin có kích thước tùy ý.Tuy nhiên phải tạo đầu ra h có kích thước cố định, thường là 128 bit đến
1024 bit
Dễ tính h = HCM cho mọi mẩu tin M, hàm H tínhtoán nhanh, hiệu quả phụ thuộc chặt vào mẩu tin M và không tính tóanngược lại
Cho trước h không thể tìm được ( rất khó ) x sao choH(x) = h Tính chất này gọi là tính chất 1 chiều, tìm chiều nghịch ảnh rấtkhó khăn, tuy chiều tìm ảnh lại dễ
Cho x không tìm được y sao cho H(y) = H(x) Đây
là tính chất chống đỡ va chạm yếu, không tìm được mẩu tin có cùng hashvới mẩu tin đã cho
Và không thể tìm được x,y sao cho H(y) = H(x).Đây là tính chất va chạm mạnh, đây là yêu cầu cao hơn tính chống đỡ vachạm yếu
Trang 3I.2.Các hàm hash đơn giản
Có một số để xuất cho một số hàm hash đơn giản Chẳng hạn biểu diễn mẩutin dưới dạng bit sau đó chia chúng thành các khối bit có kích thước bằng kíchthước mong muốn của Hash rồi dựa trên phép toán XOR các bit thong tin ở cùng vịtrí tương ứng của các khối, kết quả nhận được là Hash của cả mẩu tin Hàm Hashtrên là không an toàn vì đối với mẩu tin bất kì có thể tìm được mẩu tin mà có cùnghàm Hash Cần phải có hàm mạnh hơn, ta không xét ở đây
Tấn công ngày sinh nhật:
Có thể nghĩ hash 64 bit là an toàn, có nghĩa là khó tìm được bản tin có cùng
hash Nhưng không phải vì vậy vì nghịch lý ngày sinh nhật như sau: trong lớp có ít nhất bao nhiêu sinh viên để xác xuất có ít nhất 2 sinh viên trùng ngày sinh nhật là lớn hơn 0,5 Theo thuyết xác xuất thống kê gọi số sinh viên ít nhất trong lớp là k, khi đó xác suất q để không có hai người nào trùng ngày sinh nhật là tỷ số giữa cáchchọn k ngày khác nhau trong 365 ngày trên số cách chọn k ngày bất kì trong 365 ngày
ta gọi đây là nghịch lý ngày sinh nhật
Điều đó muốn nói lên rằng trong nhiều trường hợp xác suất để 2 mẩu tin cócùng bản hash là không nhỏ như chúng ta tưởng
Tấn công ngày sinh nhật hoạt động như sau:
Trang 4Kẻ thám mã tạo ra 2m/2 biến thể của mẩu tin đúng mà tất cả đều có bản chấtngữ nghĩa như nhau, với m ở đây là độ dài của bản mã hash.
Kẻ thám mã cũng có thể tạo ra 2m/2 biến thể khác nhau của mẩu tin lừa dối, là
có ngữ nghĩa ngược lại
Hai tập tin được so sánh với nhau để tìm cặp có cùng bản hash( xác suất
>=0,5 dựa vào nghịch lý ngày sinh nhật)
Người dùng kí vào mẩu tin đúng, sau đó bị thay thế bằng mẩu tin giả mà cũng
có chữ ký đúng
I.3 Mã khối như hàm hash
Có thể sử dụng mã khối như hàm hash
Sử dụng H0 = 0 và bộ đệm không cho khối cuối
Tính Hi = EMi [Hi – 1]
Và sử dụng khối cuối cùng như giá trị hàm hashGiống chế độ CBC nhưng không có khóa
Hash kết quả quá nhỏ (64 bit)
Cả về tấn công sinh nhật trực tiếp
Cả tấn công ở giữa chừng Các phương án khác cũng dễ bị tấn công
Kẻ thám mã cũng có thể tạo ra 2m/2 biến thể khác nhau của mẩu tin
I.4 Tính an toàn của hàm Hash
Giống như đối với mã khối, hàm hash cũng có tấn công vét cạn, cụ thể: Hashchống va chạm mạnh có giá 2m/2, có nghĩa là với m là độ dài mã hash thì 2m/2 xácđịnh sức mạnh của nó chống đối lại tấn công vét cạn Ta cần lựa chọn m đủ lớn đểviệc duyệt tìm 2m/2 phương án là không khả thi Có đề xuất Hash 128 bit cho MD5phần cứng Nhưng có thể tìm được va chạm sau 24 ngày Do đó có thể coi là hash
128 bit có thể có lỗ hổng, không an toàn, tốt hơn dùng hash 160 bit
Thám mã tấn công có cấu trúc:
Trang 5Giống như mã khối muốn dùng tấn công vét cạn có một số các tấn công thám
mã là lựa chọn tôt nhất hiện có
Chẳng hạn:
Nếu CVi = f [CVi – 1,Mi ] ; H(M) = CVN
Thì ở đây thong thường khai thác sự va chạm của hàm f
Giống mã khối thường gồm 1 số vòng lặp
Khi đó tấn công sử dụng các tính chất có hàm vòng
II.Các thuật tóan Hash
Hàm hash: thực hiện việc nén mẩu tin về kích thước cố định bằng cách xử límẩu tin theo từng khối dùng một hàm nén nào đó mà có thể sử dụng mã khối dùngmột hàm nén nào đó và chỉ có thể sử dụng mã khối
Cấu trúc thuật toán Hash
II.1 Thuật toán Hash an toàn SHA ( Secure Hash Algorithm)
SHA có nguồn gốc từ Viện chuẩn công nghệ quốc gia Hoa Kì – NIST & NSAvào năm 1993, sau đó được nâng cấp vào năm 1995 theo chuẩn US và chuẩn là
Trang 6FIPS 180 – 11995 và Internet RFC3174, được nhắc đến như SHA – 1 Nó được sửdụng với sơ đồ chữ kí điện tử DSA ( Digital Signature Algorithm).
Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trịHash 160 bit Các kết quả nghiên cứu 2005 về an toàn cuả SHA – 1 đề xuất sửdụng nó trong tương lai
II.1.1 Thuật toán SHA – 1
II.1.1.1 Mô tả thuật toán
Đầu vào của thuật toán là một thông điệp có chiều dài bất kì nhỏ hơn 264 bit,SHA – 1 cho ra kết quả là một thông điệp rút gọn có độ dài là 160 bit
II.1.1.2 Mở rộng thông điệp
f(t;B,C,D) được định nghĩa như sau:
f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0≤t≤19)
Giả sử độ dài của thông điệp là 1 bit Thêm 1 bit vào cuối thông điệp, theo sau
là k bit 0 ( k là số dương không am nhỏ nhất sao cho 1 + 1 + k = 448(mod 512).Sau đó them cuối 64 bit là biểu diễn nhị phân của 1
Phân tích thông điệp mở rộng :
Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phântích thành N khối 512 bit M(1), M(2),…,M(n) Trong đó 512 bit của khối dữ liệuđầu vào có thể được thể hiện bằng 16 từ 32 bit
Khởi tạo giá trị băm:
Giá trị băm là một chuỗi bit có kích thước của thông điệp băm ( từ SHA– 384) gồm các từ ghép lại Trong đó Hj(i) là từ j trong giá trị băm ở lần lặp i với
Trang 70≤i≤N ( số block có được sau khi chia văn bản được đệm) và 0≤j≤( số từ trong giátrị băm - 1) Trước khi thực hiện giá trị băm, với mỗi thuật toán băm an toàn, giátrị băm ban đầu H(0) phải được thiết lập Kích thước và số lượng từ trong H(0) tùythuộc vào kích thước thông điệp rút gon.
SHA -1 sử dụng dãy hằng số K(0),…,K(79) có giá trị như sau:
K(t) = 5A827999 (0≤t≤19)
K(t) = 6ED9EBA1 (20≤t≤39)
K(t) = 8F1BBCDC (40≤t≤59)
K(t) = CA6 2C1D6 (60≤t≤79)
II.1.1.3 Thuật toán cuả bước tính giá trị băm SHA – 1
SHA – 1 được sử dụng để băm thông điệp M có độ dài l bit thỏa mãn điều kiện 0≤l≤264 Thuật toán sử dụng :
- Một bảng phân bố thông điệp gồm 80 từ 32 bit
- 5 biến 32 bit
- Một giá trị băm gồm 5 từ 32 bit
Kết quả của SHA – 1 là một thông điệp rút gọn có độ dài 160 bit Các từ củabảng phân bố thông điệp được kí hiệu W(0), W(1),…,W(79) 5 biến được kí hiệu làa,b,c,d,e Các từ của giá trị băm kí hiệu H0(i), H1(i), H2(i), H3(i), H4(i) H(0) giữa giá trịbăm ban đầu và được thay thế bằng các giá trị băm thành công H(i) sau mỗi khốithông điệp được xử lí và kết thúc bằng giá trị băm cuối cùng H(N)
Tính toán thông điệp băm
Định nghĩa Sn(X) = (X<<n) or (X >> 32 – n) X <<n có nghĩa là loại bỏ từ tráisang phải n bit và them vào kết quả n số 0 bên phải X>>32 –n có nghĩa là loại bỏ
từ phải qua trái n bit và thêm vào kết quả n số 0 vào bên trái
Khởi tạo H:
H0 = 67452301; H1 = EFCDAB89
H2 = 98BADCEF ; H3 = 103254 76
Trang 8H0 H1 H2 H3 H4
II.1.1.4 Đánh giá thuật toán
SHA – 1 được xem như là an toàn đối với trường hợp đụng độ vìrất khó tìm đuợc 2 thông điệp khác nhau có gía trị băm giống nhau
SHA -1 được coi là chuẩn của việc bảo vệ các kênh liên lạc trựctuyến tồn tại trong 9 năm qua
SHA – 1 được thiết kế cho bộ xử lí 32 bit, thế hệ sắp tới cuả máytính dùng bộ xử lí 64 bit mà SHA – 1 không hiệu quả trên bộ xử lí này
Tháng 2 năm 2005 SHA -1 bị tấn công bởi 3 chuyên gia ngườiTrung Quốc Thuật toán này đã bị giải mã thông qua phương pháp tính phânbổ
II.1.1.4 Các phiên bản
Viện chuẩn công nghệ quôc gia NIST xuất bản sửa FIPS 180 -2 vào năm
2002, đề nghị bổ sung 3 phiên bản mới của SHA : SHA – 256, SHA – 384, SHA –
512 Các phiên bản trên được thiết kế tương thích với việc tăng độ an toàn cung cấp
Trang 9bởi chuẩn mã nâng cao AES Về cấu trúc và chi tiết giống SHA -1, suy ra việc phântích cũng tương tự, nhưng mức độ an toàn cao hơn nhiều so với SHA – 1.
So sánh các phiên bản SHA
Các giá trị có đơn vị là bit
III Tổng quan về SHA – 512
512 384
256 160
Kích thước giá trị băm
256 192
128 80
Độ an toàn
80 80
64 80
Số bước mã hóa
64 64
32 32
Kích thước Word
1024 1024
512 512
384
256 SHA-1
Trang 10SHA-Hàm nén SHA-512
Là trái tim của thuật toán
Nén mỗi khối dữ liệu 1024-bit thành 512 bit
Bao gồm 80 bước, tại mỗi bước:
Cập nhật bộ đệm 512-bit
Sử dụng 64 bit Wt lấy ra từ khối dữ liệu hiện tạiMột hằng số là 64 bit đầu tiên của căn bậc ba của 80 số nguyên
tố đầu tiênĐảm bảo tính ngẫu nhiên
Trang 11Network security 2009
Trang 12SHA-512 Round Function
Trang 13IV Thuật toán MD5
MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trịbăm là 128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụngrông rải trong các chương trình an ninh mạng, và cũng thường được dùng để kiểmtra tính nguyên vẹn của tập tin
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm bămtrước đó, MD4( cũng do ông thiết kế, trước đó nữa là MD2)
MD5 có hai ứng dụng quan trọng:
MD5 được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo rằng tập tintải về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phầnmềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5
Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệđiều hành Windows sử dụng phần mềm của hãng thứ ba
MD5 được dùng để mã hóa mật khẩu 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 1 đ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ộtkhoảng thời gian vô tận( đủ để làm nản lòng các hacker)
IV.1 Thuật giải
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kíchthước cố định 128 bits Thông điệp đưa vào sẽ được cắt thành các khối 512 bits(Thông điệp được đưa vào bộ đệm để chiều dài của nó chia hết cho 512 )
Bộ đệm hoạt động như sau:
-Trước tiên nó được chèn bit 1 vào cuối thông điệp
-Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội
số của 512 một khoảng 64 bit
- Phần còn lại sẻ được lấp đầy bởi một số nguyên 64 bit biểu diển chiềudài ban đầu của thông điệp
Trang 14Thuật toán chính của MD5 hoạt động trên một bộ 128 bit Chia nhỏ nó rathành 4 từ 32 bit, kí hiệu A,B,C và D Các giá trị này là các hằng số cố định.
Sau đó thuật toán chính sẽ luân phiên hoạt động trên các khối thông điệp baogồm 4 bước tương tự nhau, gọi là vòng( “round”) Mỗi vòng lại gồm 16 quá trìnhtương tự nhau được dựa trên hàm một chiều F, phép cộng modul và phép xoay trái.Hình bên dưới mô tả một quá trình trong một vòng Có 4 hàm một chiều F cóthể sử dụng Mỗi vòng sử dụng một hàm khác nhau
Hàm băm MD5 ( còn được gọi là hàm tóm tắt thông điệp – message degests)
sẽ trả về một chuỗi số thập lục phân gồm 32 số liên tiếp Dưới đây là các ví dụ mô
tả các kết quả thu được sau khi băm
MD5(“ The quick brown fox jumps over the lazy dog”) =9e107d9d372bbd81d3542a419d6 Thậm chí một thay đổi nhỏ cũng làm thay đổitoàn kết quả trả về: MD5 The quick brown fox jumps over the lazy cog”)
=1055d3e698d289f2af8663725127bd4b
Ngay cả một chuỗi rỗng cũng cho ra một kết quả phức tạp: MD5(“ ”) =d41d8cd98f00b204e980099aefc8427e
Những lỗ hổng:
Bất cứ thuật toán mã hóa nào rồi cũng bị giải mã Với MD5, ngay từ năm
1996, người ta đã tìm thấy lỗ hổng của nó Mặc dù lúc đó còn chua rõ rang lắmnhưng các chuyên gia mã hóa đã nghĩ đến việc phải đưa ra một thuật giải khác, như
Trang 15phát hành công trình nghiên cứu chỉ ra cách xuyên phá thuật toán thứ 2 có tên SHA– 0 Tuy chỉ mới ở giai đoạn nghiên cứu sơ bộ song những phát hiện này có thể tạođiều kiện để kẻ xấu cài những chương trình cửa sau (backdoor) bí mật vào trong
mã máy tính, hoặc giả mạo chữ kí điện tử Trừ phi một thuật toán mới bảo mật hơnđược xây dựng và đưa vào sử dụng
Một phát hiện thứ ba, được đón đợi và đánh giá rất cao được công bố tronghội thảo Grypto Hai nhà nghiên cứu EliBiham và Rafi Chen của viện công nghệIsrael đã diễn thuyết vễ cách nhận dạng các hình thức tấn công vào chức năng bảomật của thuật toán SHA – 0 một thuật toán có sơ hở
Những lỗ hổng bảo mật được cho là “ nghiêm trọng” bên trong thuật toánSHA – 1, tùy thuộc vào mức độ chi tiết của phần trình bày, có thể làm chấn động cảnghành bảo mật Từ trước tới nay, SHA – 1 vẫn đượ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 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
Cả ba thuật toán MD5,SHA – 0 và SHA – 1 đều được giới khoa học máy tínhcoi là “ đa chức năng” Chúng có thể nhận mọi dạng dữ liệu đầu vào, từ tin nhănemail cho đến hạt nhân(kernel) của hệ điều hành, cũng như tạo ra một dấu vân tay
số duy nhất chỉ thay đổi một kí tự bất kì bên trong file đầu vào cũng tạo ra dấu vântay hoàn toàn khác nhau Các ứng dụng bảo mật đều dựa vào tính năng “dấu vântay duy nhất” này làm nền Tuy nhiên, nếu kẻ tấn công có thể tạo ra một dấu vântay “Dolly” với một dòng dữ liệu đầu vào khác, dấu vân tay “ sinh sản vô tính” này
sẽ khiến phần mềm bị gài backdoor nhận dạng nhầm Kết quả là chúng có thể tạo rachữ kí giả để vét sạch tài khoản ngân hang của người sử dụng không may
Tất nhiên từ rất lâu, giới nghiên cứu đã hiểu rằng không có thuật toán mã hóathực tiễn nào là tuyệt đối an toàn và bảo mật Tuy vậy, họ vẫn nỗ lực thiết kế ranhững thuật toán mà thời gian cần để tạo ra một dấu vân tay “ Dolly” là vô tận, với
Trang 16hy vọng kẻ tấn công sẽ nản lòng Thế nhưng nếu những sơ hở tương tụ như củaSHA – 0 cũng được tìm thấy trong SHA – 1, điều này đồng nghĩa với việc tốc độgiả mạo một dấu vân tay sẽ được đẩy nhanh lên…500 triệu lần, hoàn toàn trongtầm tay của một mạng máy tính tốc độ cao.
Tuy mức độ tác hại ít trầm trọng hơn song sơ hở bảo mật trong thuật toánMD5 có lẽ lại gây hậu quả ngay tức thì Sản phẩm máy chủ Aphache Web nguồn
mở đang sử dụng MD5 để kiểm duyệt những Website có mã nguồn chưa bị chỉnhsửa, từ đó sẽ an toàn khi chạy trong máy tính Tương tự sẽ là cơ sở dữ liệu Solariscủa Sun Microsystems, với khả năng mà theo hãng tự nhận là “ xác minh một fileđích thực chứ không phải phiên bản bị điều chỉnh để hạ gục hệ thống bảo mật”
Lỗ hổng với phát hiện trong MD5 sẽ cho phép kẻ tấn công tạo ra file giả mạotrong vài giờ với một máy tính đạt chuẩn “ Giờ đây, người ta đã chứng minh đượccác thuật toán này có lỗ hổng Trước khi kẻ tấn công lợi dụng khai thác được, đãđến lúc phải thôi dần việc sử dụng MD5” – nhà phân tích Hughes của viện ChuẩnCông nghệ Quốc gia nhận định
IV.2 Mục đích
Tài liệu này mô tả thuật toán số hóa thông điệp MD5 Thuật toán nhận vàomột thông điệp độ dài tùy ý và tạo ra một số 128 bit, là một dạng “ vân tay” hay “
mã số thông điệp” (message digest) của đầu vào
Người ta cho rằng không khả thi về mặt tính toán để tạo ra 2 thông điệp cócùng mã số thông điệp, hoặc tạo ra một thông điệp với mã số cho trước Thuật toánMD5 được dự tính áp dụng cho những ứng dụng chữ kí điện tử, ở đó một file lớnphải được “ nén” một cách an toàn khi mã hóa với một khóa cá nhân ( primary key)dưới một hệ mã hóa công khai như RSA
Thuật toán MD5 là sự mở rộng của thuật toán MD4 MD5 chậm hơn một chút
so với MD4 nhưng an toàn hơn MD5 được thiết kế vì người ta thấy có thể MD4 đãđược chấp nhận trong sử dụng quá nhanh so với sự đánh giá nó MD4 được thiết kế