Kỹ thuật tấn công brute force (Brute force attack)

Một phần của tài liệu Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5 (Trang 37)

Tấn công Brute force dựa trên nguyên lý vét cạn. Nội dung chính của kiểu tấn công này trong việc tấn công hàm băm MD5 là duyệt lần lượt từng thông điệp đầu vào có khả năng là mật khẩu trong bộ ký tự được lựa chọn sau đó băm giá trị này bằng hàm băm MD5 và kiểm tra giá trị này với giá trị băm cho trước, nếu chúng bằng nhau có nghĩa là attacker đã tấn công thành công, còn nếu không thì attacker tìm một bức thông điệp khác và băm chúng bằng hàm băm cho đến khi nào chúng tạo ra giá trị băm mong muốn. Ta thấy kiểu tấn công này không phụ thuộc vào cấu trúc của hàm băm mà nó chỉ phụ thuộc không gian xây dựng mật khẩu. Mật khẩu càng dài và chứa nhiều loại ký tự thì không gian mật khẩu càng lớn. Khi đó thời gian để tìm được mật khẩu mong muốn càng dài. Thời gian này có thể là vài giây, vài phút, vài giờ, vài ngày thậm chí hàng trăm năm phụ thuộc vào chiều dài mật khẩu là 1, 2, 3 ký tự hay lên đến 15 ký tự. Với mật khẩu có chiều dài nhỏ hơn 4 ký tự thuộc tập các chữ cái (a..z), (A...Z), (0...9) thực hiện trên máy tính thông thường (có tốc độ xử lý 1 triệu phép tính/ giây) thì chỉ mất vài giây để tìm ra mật khẩu nhưng nếu mật khẩu có chiều dài là 6 ký tự thì phải mất khoảng 15 giờ đồng hồ mới có khả năng tìm ra. Do vậy với kiểu tấn công này thực hiện trên các máy tính thông thường là không khả thi tức là ở mức độ nào đó việc sử dụng hàm băm trong việc mã hóa mật khẩu vẫn an toàn khi kẻ tấn công sử dụng kiểu tấn công brute force trên máy tính thông thường.

Tuy nhiên hiện nay xu hướng sử dụng phần cứng chuyên biệt với sự kết hợp của các giải thuật xử lý song song phân cụm đã làm tăng tốc độ tính toán của máy tính lên gấp nhiều lần. Chỉ hơn 1 phút kẻ tấn công có thể tìm ra mật khẩu có độ dài tối đa là 6 ký tự khi sử dụng bộ xử lý đồ họa 4GPU. Với việc tăng số lượng các nút tính toán và tăng số card đồ họa xử lý thì ngay cả những mật khẩu có độ dài lớn hơn cũng có thể bị tấn công.

Có nhiều công cụ hỗ trợ kiểu tấn công brute force như md5brute, cain&able, BarsWF.

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

3.3.4 Kỹ thuật tấn công sử dụng bộ xử lý đồ họa GPU.

GPU viết tắt cho Graphics Processing Unit được gọi là Đơn vị xử lý đồ họa (đôi khi được gọi VPU – Visual Processing Unit) là một bộ vi xử lý chuyên dụng nhận nhiệm vụ tăng tốc, xử lý đồ họa cho bộ vi xử lý trung tâm CPU. Các GPU hiện đại có năng suất rất cao trong xử lý đồ họa máy tính. Với cấu trúc mang tính xử lý song song mạnh mẽ của mình, GPU cho thấy nó hiệu quả hơn CPU rất nhiều trong nhiều thuật toán phức tạp.

Trong giải mã MD5, một hệ thống máy tính được cài đặt bộ xử lý đồ họa song song nhiều lõi sẽ khiến cho tốc độ xử lý của máy tính tăng gấp ngàn lần. Điều đó cũng đồng nghĩa với việc mức độ thành công để kẻ tấn công có khả năng tìm ra mật khẩu khi sử dụng công nghệ GPU là rất lớn.

Một thử nghiệm được tiến hành tại trung tâm máy tính hiệu năng cao trường Đại học Bách khoa Hà Nội với việc sử dụng một cụm GPU bao gồm hai nút, một nút được trang bị một card đồ họa kép NVIDIA GeForce GTX 295, một card Tesla C1060, và số còn lại nút được trang bị 2 card đồ họa kép NVIDIA GeForce GTX 295.

Kết quả được kiểm tra bởi các đầu vào: S = {az, AZ ,0-9}, số thread trong một khối là 128, số các khối là 256 (16x16). Các thuật toán song song thực hiện trên môi trường phần cứng nêu trên chỉ ra rằng tốc độ tạo ra và kiểm tra mật khẩu, tốc độ tìm ra mật khẩu tăng đáng kể khi so sánh với phiên bản dựa trên CPU. Bảng sau so sánh tốc độ tạo và kiểm tra mật khẩu trên GPU và trên CPU.

Bảng 3.1 : Minh họa tốc độ kiểm tra khóa MD5 trên CPU và các GPU

Số lượng CPU/GPU Số lượng khóa kiểm tra trong 1s

1 CPU 1.436.192 khóa/1s

1 GPU 194.379.500 khóa/1s

2 GPU 352.468.356 khóa/1s

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

Bảng 3.2 : Minh hoạ hiệu năng thực hiện công việc giải mã MD5 trên CPU và GPU

Độ dài mật khẩu tối đa

Số lượng mật khẩu 1 GPU 2GPU 4GPU

1 62 0.33ms 0.28ms 0.25ms 2 3.906 0.65ms 0.58ms 0.44ms 3 242.234 2 ms 1.4ms 0.88ms 4 15.018.571 76 ms 47ms 22ms 5 931.151.403 5 s 2.9s 1.4 s 6 57.731.386.987 318s 194s 91 s 7 3.579.345.993.195 5h 7m 2h 49m 1h 28m 8 221.919.451.578.091 13d 5h 7d 7h 3d 19h

Theo bảng 3.1 ta có thể thấy, trong 1 giây có thể kiểm tra được 678.091.868 mật khẩu. Nếu so với việc kiểm tra trên các CPU thì tốc độ tạo và kiểm tra mật khẩu tăng khoảng 135 lần (trên một GPU), 472 lần (4 GPU) so với các phiên bản dựa trên CPU. Bảng 3.2 là thời gian để khôi phục mật khẩu (có chiều dài tối đa 1-8 ký tự) trên GPU. Với hệ thống thử nghiệm hiện tại mật khẩu MD5 với độ dài 7 ký tự - thuộc tập hợp{az, AZ ,0-9} có thể coi là không an toàn.

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

Chƣơng 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ 4.1 Xây dựng cơ sở dữ liệu:

Để đánh giá về khả năng tấn công của các kỹ thuật nêu trên tác giả tiến hành khảo sát khả năng khôi phục 100 password được mã bằng MD5 một lần. Các hash password được thu thập từ hai nguồn:

- Từ cơ sở dữ liệu của một số website bị lỗi

- Từ giả thiết của tác giả dựa vào thói quen đặt password của người dùng.

4.2 Bảng kết quả

- Các công cụ sử dụng gồm: Website md5.net/md5-cracker

Website hashkiller.co.uk/md5-decrypter.aspx Công cụ md5 Brute của Tim Wirriner

Bảng 4.1 Khả năng khôi phục mật khẩu trên một số công cụ

STT Password Hash Pass MDh5 md5.net/md5-cracker/ hashkiller.co.uk/md5-decrypter.aspx brute Md5

1 superthin 12e3ace2d25aba44670c9464d529ea96 superthin 2 applelinhkien aac8a5b43601525332bbbcbdf2682c51 (adsbygoogle = window.adsbygoogle || []).push({});

3 tran.trung932 8e302141fb043ea3515648db7c2f4b82

4 star215 a8bad4e8f40e49717f0259eaf7171a92 star215 star215

5 kevin51 e4304968cf12dbfe1a377e2525d370e4 kevin51 kevin51

6 giahuynhdecor f6d2df4b4fe579872e7fd4fd707f7470 7 kaizoz 2d7101248f22fb9c299ff38ddd6082c7 kaizoz 8 baothienkim ea59e28cccbef9336a6156556311ea67 9 trandac_lam 0074bc0ce69cc9cb689e0c84528fa378 10 tamquyen1991 51dd03f6d342b6ddfd5306b72cbade5c 11 H@nhPh$c a08657f968aca250d0d27c2fbe68780b 12 CongChua12BongBong 511ab5f43b679df5396f9aea6628e1a5

13 admin 21232f297a57a5a743894a0e4a801fc3 Admin admin 0 s

14 abc123 e99a18c428cb38d5f260853678922e03 abc123 abc123 1m 20 s

15 p@$$Word 0d2c5b05fd670ce2bc2d2fa4d0d79c7c

16 12/3/75 f45406ea433924f34b63c32f4b8fe7b5 12/3/75 17 t3wahSetyeT4 dada04a164ad34191bdea94553748c84 t3wahSetyeT4 18 4pRte!ai@3 e70d77ae2e8a4b187883e5e8d6851b74

19 MoOoOfIn245679 b7e4e2e02ae0985e5f4328844051091b MoOoOfIn245679 20 Convert_100£ to d4a9ec36c2974a16065f5d982380ed82

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

STT Password Hash Pass MDh5 md5.net/md5-cracker/ hashkiller.co.uk/md5-decrypter.aspx brute Md5

Euros!

21 Tp4tci2s4U2g! 5589920a9cd1aa8af80150af15b6e0e5 22 Tdlvtcc2#hn! 4b7f1d02e102858234da15a505e0b612

23 thanhxuan d3a5da0e0cb0fcdf112cef0ccbef0670 thanhxuan thanhxuan 10h14m 24 Thanhxuan@123 5cc24648d59cca22dcde3ca049a61f92 25 hbuniver 70ed9463b48e1f300e958c1fc644fbab 15h30m 26 bvtcgl f354568744c8eaf5703ad368cdbb5cfb bvtcgl 1m3s 27 21101984 1b88b0c6b20daf2c30af794867df3d51 21101984 21101984 3m51s 28 123456 e10adc3949ba59abbe56e057f20f883e 123456 123456 0s 29 123456789 25f9e794323b453885f5181f1b624d0b 123456789 123456789 40m41s 30 12031983 3492fdd32b556c75ddb109b3d4e56789 12031983 12031983 4m12s 31 31011983 46a467e80d8971d565e6fac90518cc4e 31011983 31011983 3m23s 32 310683 518d69036549b4cdfe688b675ac17eef 310683 310683 0s 33 40414 5aa14e8d74a1e146fa26f5def723032d 40414 40414 0s 34 hamythuat 8630483eaf5223d3e364ba4ff694bf2e 400h

35 xuancongnghe 949e58fd3972d7ef7fd42d229ca6aa99 >400day

36 minhcoban df175c756090657a8ad554b76f9d892f >400day

37 hoakientruc 27f683560dbfd9b32ab8c094ae52d507 >400day

38 chipchip 9c1a685718497a0d0fc994690de145bd chipchip chipchip >400h

39 9xyz12 acc8369b1bff802e3ea7f8f3bc07a886 9xyz12 15m 13s

40 1572014 895408964e2c3ae090c21f5fb9b5a890 1572014 1572014 3s

41 chippi 0919bd42d27b47ed579b84447caa93e8 Chippi chippi 15m30s

42 211710 8e618a2e4757b9a96924cd68eac488e6 211710 211710 0s

43 828412 20186608e6886e67db0a4498c90a321e 828412 828412 0s

44 chimai 11d9ddf776cfa6df18ec85ddc19c1320 Chimai chimai 38s

45 dhhb 31480409bbd0ba6d58f9a4db6f81400f Dhhb dhhb 0s

46 dhqghn be8fa185e4d1d3f6c04faccfaeb4e122 Dhqghn dhqghn 36s

47 HTTT 8823247e8ca93837d44abd6548b74eca HTTT HTTT 1s

48 4share 1b8b03c870c11c4726ed39c3a0c01964 4share 4share 15m

49 tailieuonline 71c408a85eda7fc46c0038a8828f8d06 >400day

50 Svit.net d607cc9fd684f20e690d80a4747d9a52 (adsbygoogle = window.adsbygoogle || []).push({});

51 donghocat e6a7c28cb830aecc8b32b9c63cd27823 donghocat donghocat >400h 52 cast Nazi 786f0545e0d35bcb04e8b8e0a24c494c

53 minus9held 4e63555c5404fb79c26774e334a8301b >400day

54 Lawyer8Skip bc877ef1b735bb34967a7303a0e227c7 >400day

55 tehran5slick 7f6285ebb4072df4566f1ba7bd7dcb4b >400day

56 VienKeoNgot 3964fd0f8c3a78cae1927d8e1816ee97 >400day

57 ViDangTinhYeu 719e59ddea3bcdc04d5939c573500a30 >400day

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

STT Password Hash Pass MDh5 md5.net/md5-cracker/ hashkiller.co.uk/md5-decrypter.aspx brute Md5

59 TinhYeuMauNang 3a90e38a182252e60bd3763631204b3b >400day

60 HanhPhucMongManh 9b9b264b9a0d7bc438a25fbaa740d66f >400day

61 TuoiThanTien f87ca9bd8e412874d1b4fd49573e096c >400day

62 ConDuongMauXanh 824c7d17627a455c553ae45838ee93de >400day

63 EmSeLaNguoiRaDi ca3b3b3f464f2e5d9a8c3fcb8a92b4c1 >400day

64 ThuDoCuaToi 74002cf555a01ffd71c3624473e2be6b >400day

65 VietNamTuHao123 69de66fac757c4e9a84727a14ae817a4 >400day

66 SInhVIenTInhNguyen 7f1837e5f7a7e945856405dc416ad699 >400day

67 chungTalaMotgiaDinh 3d306c69e2381d88bf9877abec615c70 >400day

68 ConYeuMe@MeoMeo f635e98888ee08db58ff97f8d150d2b3 >400day

69 CaoDang 1abff9c184bf0cba6f4876d619a00469 >74h

70 NguoiNhen12NguoiSoi 955445b3f8c65c5f9bd0dafb03caa5eb >400day

71 phunungaynay d859a8e2e4594bf88dc7f81ae4c57381 >400day

72 VyTieuBao123 beacde4076a596b470d25b14740d21ff >400day

73 RockKET2000 b68a8173e2380a93791f80d2ba996f05 >400day

74 TruongDinhN@m 4d85db77514de70f63323a5feecbf1d2 >400day

75 LamGiBayGio af5211a4b42e6fa0989a11cdef27c943 >400day

76 focicrazy 0e57444fd93211914c3c64a37bcdf3a4 >400day

77 mynoidanh19 6bb4e914c72a9089f4701f6ce4ac716f >400day

78 mancty01 67251b172ad5ed9c81099f16b4a2749c >400day

79 germany008 09826287716a158c0cee21daac526ac0 >400day

80 tsinh201405 c6ca608237ad3276ae79cec3f478614e >400day (adsbygoogle = window.adsbygoogle || []).push({});

81 SuperThin a3594777c9cebec316b95f91b2a673fb >400day

82 St@r215 1c1642cf3ccb456d615b3d01751f98cc >400day

83 KeVin_51 25bd60d1d8051db5a5ffac0386064c49 >400day

84 Kai_Zoz c484f71c89ee5988128f6445db7fc2d0 >400day

85 HeThongThongTin 03329ff9719fd4edde812557c025525f >400day

86 Abc_123! f7ba53f798c1214a5303a9e2239d51e4

87 date12/3/75 c2c457c62c57196673121d250fa4bb1a >400day

88 T3wahSetyeT4 9e169db84ca036a5fb66deda799a59c8 >400day

89 Moon Ln 1989 5d6560b0caad77de7b1544fbd76016f5 >400day

90 THanhXUan 9fd12c9584dee6dd0d6a75f62f2d14be >400day

91 @21101984# 31dd67c305730055d709064892be58b5 92 @123456! 1789a0b6773600dc29a2fd2fe776a6c2 93 $123456789_% 5b6e6d0931f1f8e6b04ed6429b59740a 94 @12031983# 67366513e96743397aea996b90001cec

95 Chip12Pi 7e12e31ec9d0088d0511345a4d9e0ad9 >400day

96 #211710$ 124041b900ac34c00b07c0a70669fbdc

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

STT Password Hash Pass MDh5 md5.net/md5-cracker/ hashkiller.co.uk/md5-decrypter.aspx brute Md5

98 Chi_Mai 2420b53cb42a9ac2a44049afc17b9360 >400day

99 Dai hoc Hoa binh c18951a2ce634e8c0e04097389d63061

100 DhqgHN 7ad3133862182034c831f76add37561e >400day

Đánh giá:

Thử nghiệm trên 100 mã hash MD5 để đánh giá khả năng khôi phục mật khẩu của các kỹ thuật trên hệ thống máy tính hiện tại của tác giả. Tác giả có một số nhận xét sau:

- Khả năng dò tìm ra mật khẩu chỉ đạt khoảng 10%

- Trong 10% mật khẩu khôi phục được chủ yếu là mật khẩu đặt dưới dạng ngày tháng năm, dãy số liền nhau, dãy các ký tự có độ dài nhỏ hơn 7 ký tự thường.

- Thử nghiệm bằng phương pháp từ điển cho kết quả nhanh hơn nhưng khả năng không tìm thấy là lớn (chiếm 90%)

- Thử nghiệm bằng phương pháp brute force sẽ mất thời gian, với giả thiết biết độ dài tối đa của mật khẩu và tập ký tự tạo mật khẩu thời gian dò tìm mật khẩu vẫn lâu hơn phương pháp từ điển rất nhiều.

- Trong số mật khẩu khôi phục được, tác giả thử nghiệm cải tiến để tăng độ mạnh của mật khẩu khi đặt mật khẩu gồm các ký tự viết hoa, viết thường, chữ số và ký tự đặc biệt thì các phương pháp hiện tại đều không khôi phục được hoặc nếu có khôi phục được cũng phải mất một khoảng thời gian hơn 400 ngày.

- Để tăng độ mạnh của mật khẩu ngoài cách người dùng phải tự đặt mật khẩu theo một số quy tắc về mật khẩu mạnh, hiện nay các nhà cung cấp dịch vụ như Joomla, Wordpress, PHP…dùng phương pháp biến đối chuỗi mật khẩu trước khi băm bằng cách thêm vào trước hoặc sau mật khẩu một chuỗi ký tự (người ta hay gọi là “salt”) hoặc kết hợp md5 nhiều lần, md5 với sha, md5 với các giải thuật mã hóa khác.

- Nếu bí mật được phương pháp mã thì kẻ tấn công dù có biết được mã hash password cũng không thể dò ra được mật khẩu.

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

KẾT LUẬN

Với mục tiêu của đề tài là đi tìm hiểu hàm băm MD5, đánh giá độ an toàn của thuật toán MD5 trong các ứng dụng cụ thể, đề tài đã đưa ra được một số kết quả sau: (adsbygoogle = window.adsbygoogle || []).push({});

- Hiểu rõ giải thuật MD5, đã cài đặt thuật toán trên môi trường C++ và C#. Thử nghiệm cho thấy kết quả của chương trình đúng với mã MD5 trên các chương trình chuẩn trên Internet.

- Đánh giá tính an toàn của MD5 đối với hiện tượng đụng độ. Có những công bố về xung đột MD5 nhưng xác suất là rất nhỏ và để tìm một thông điệp có nội dung có thể giả mạo thông điệp khác có cùng mã MD5 là rất khó. Do vậy MD5 ở những ứng dụng cụ thể vẫn được sử dụng để kiểm tra tính toàn vẹn của tập tin và sử dụng để hỗ trợ chữ ký số.

- Đánh giá tính an toàn của MD5 trong ứng dụng bảo vệ mật khẩu. Mật khẩu vẫn có thể bị crack bởi một số kỹ thuật tấn công như tấn công từ điển, tấn công bảng cầu vồng, tấn công brute force kết hợp với công nghệ tính toán hiệu năng cao.

- Đặt mật khẩu khó và dài là cách tiết kiệm thời gian, chi phí mà đem lại hiệu quả cao. Mã hóa mật khẩu bằng MD5 nhiều lần hoặc kết hợp MD5 với SHA, cộng vào sau mã MD5 một số ngẫu nhiên làm tăng độ phức tạp và thời gian crack mật khẩu lên rất nhiều.

- Tùy vào mục đích sử dụng và tầm quan trọng của thông tin mà người dùng có cách sử dụng những ứng dụng mà MD5 đem lại.

Hướng phát triển của luận văn là xây dựng thuật toán cải tiến thuật toán MD5 để tăng độ an toàn của thuật toán.

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

TÀI LIỆU THAM KHẢO Tiếng Anh

[1] A. Narayanan and V. Shmatikov. (2005), “Fast dictionary attacks on passwords using time space tradeoff”, in CCS05: Proceedings of the 12th ACM conference on Computer and communications security, pp 364–372, New York.

[2] D. Göddeke, R. Strzodka, J. Mohd-Yusof, P. McCormick, S. Buijssen, M. Grajewski, and S. Tureka (2007), “Exploring weak scalability for FEM calculations on a GPU-enhanced cluster”, Parallel Computing, vol. 33, pp.

685-699.

[3] D. Kahn (1996), “ The Codebreakers - The Story of Secret Writing”,

Scribner, New York.

[4] H M. Weir, S. Aggarwal, B. d. Medeiros, and B. Glodek.(2009), “Password cracking using probabilistic context-free grammars”, In the 2009 30th IEEE

Symposium on Security and Privacy, pp.391, USA

[5] M. Showerman, J. Enos, A. Pant, V. Kindratenko, C. Steffen, R. Pennington, W. Hwu (2009), “QP: A Heterogeneous Multi-Accelerator Cluster”, in Proc. 10th LCI International Conference on High-Performance Clustered Computing.

[6] Yu Sasaki,Yusuke Naito, Noboru Kunihiro,Kazuo Ohta (2005), Improved Collision Attack on MD5, Japan

[7] J. Black - M. Cochran -T. Highland (2006), A Study of the MD5 Attacks: Insights and Improvements, USA

Tiếng Việt

[8] Bản dịch Nguyễn Bình (1995), Mật mã Lý thuyết và thực hành, D.R.Stinson [9] Vũ Đình Cường (2011), Cách bảo vệ dữ liệu quan trọng và phương pháp

phát hiện thâm nhập, NXBLĐXH

[10] Phan Đình Diệu (2002), Lý thuyết mật mã và an toàn thông tin, NXB ĐHQGHN

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5 Website [12] http://en.wikipedia.org/wiki/MD5 [13] http://www.faqs.org/rfcs/rfc1321.html [14] http://en.wikipedia.org/wiki/MD5CRK [15] http://www.manpages.info/freebsd/md5.1.html [16] http://www.elcomsoft.com/md5crack.html [17] http://www.hashkiller.co.uk/md5-decrypter.aspx [18] http://www.md5.net/md5-cracker/ [19] http://bvernoux.free.fr/md5/index.php [20] http://www.nvidia.com/object/cuda_home_new.html [21] http://www.graphstream.com/.

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

PHỤ LỤC

Phụ lục 1: Bảng giá trị T[i] trong thuật toán MD5

T[1]=d76aa478 T[17] =f61e2562 T[33]=fffa3942 T[49]=f4292244 T[2] =e8c7b756 T[18] =c040b340 T[34] =8771f681 T[50]=432aff97 T[3] =242070db T[19] =265e5a51 T[35]=6d9d6122 T[51]=ab9423a7 T[4] =c1bdceee T[20] =e9b6c7aa T[36]=fde5380c T[52] =fc93a039 T[5] =f57c0faf T[21] =d62f105d T[37] =a4beea44 T[53] =655b59c3 T[6] =4787c62a T[22] =2441453 T[38] =4bdecfa9 T[54] =8f0ccc92 T[7] =a8304613 T[23]=d8a1e681 T[39] =f6bb4b60 T[55] =ffeff47d T[8] =fd469501 T[24] =e7d3fbc8 T[40] =bebfbc70 T[56] =85845dd1 T[9] =698098d8 T[25] =21e1cde6 T[41] =289b7ec6 T[57] =6f8a7e4f T[10] =8b44f7af T[26] =c33707d6 T[42] =eaa127fa T[58] =fe2ce6e0 T[11] =ffff5bb1 T[27] =f4d50d87 T[43] =d4ef3085 T[59] =a3014314 T[12] =895cd7be T[28] =455a14ed T[44] =4881d05 T[60] =4e0811a1 T[13] =6b901122 T[29] =a9e3e905 T[45] =d9d4d039 T[61] =f7537e82 T[14] =fd987193 T[30] =fcefa3f8 T[46] =e6db99e5 T[62] =bd3af235 T[15] =a679438e T[31] =676f02d9 T[47] =1fa27cf8 T[63] =2ad7d2bb T[16] =49b40821 T[32] =8d2a4c8a T[48] =c4ac5665 T[64] =eb86d391

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

Phụ lục 2: Code cài đặt thuật toán MD5 trên C++

md5_main.cpp #include <iostream> #include "E:\MD5_CPP\md5.h" #include <fstream> #include <string> #include <cctype> (adsbygoogle = window.adsbygoogle || []).push({});

/* luu y duong dan cuar md5.h*/ using std::cout; using std::endl; using namespace std;

int main(int argc, char *argv[]) {

string m;

cout<<"nhap chuoi can bam: "<<endl;; cin>>m; cout << "MD5 ("<<m<<")= " << md5(m) << endl; system("pause"); return 0; } /* interface header */ #include "md5.h"

/* system implementation headers */ #include <cstdio>

// Constants for MD5Transform routine. #define S11 7 #define S12 12 #define S13 17 #define S14 22 #define S21 5 #define S22 9 #define S23 14 #define S24 20 #define S31 4 #define S32 11 #define S33 16 #define S34 23 #define S41 6 #define S42 10 #define S43 15

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

#define S44 21

///////////////////////////////////////////////

// F, G, H and I are basic MD5 functions.

inline MD5::uint4 MD5::F(uint4 x, uint4 y, uint4 z) { return x&y | ~x&z;

}

inline MD5::uint4 MD5::G(uint4 x, uint4 y, uint4 z) { return x&z | y&~z;

}

inline MD5::uint4 MD5::H(uint4 x, uint4 y, uint4 z) { return x^y^z;

}

inline MD5::uint4 MD5::I(uint4 x, uint4 y, uint4 z) { return y ^ (x | ~z);

}

// rotate_left rotates x left n bits.

inline MD5::uint4 MD5::rotate_left(uint4 x, int n) { return (x << n) | (x >> (32-n));

}

// FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.

Một phần của tài liệu Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5 (Trang 37)