Mạng máy tính và bảo mật
ĐỀ TÀI
Các vấn đề cần giải quyết
…………………………………………………….
Mã hóa
Khái niệm về hàm băm MD5
Đặc điểm MD5
Ứng dụng
Thuật toán
Những lỗ hổng và yếu điểm
Một số thuật toán mã hóa khác
Một số phần mềm kiểm tra MD5
Tổng kết
Lý Thế Anh: k114060967
Trần Thị Kiều Chinh: k114060972
Vũ Hoài Nam: k114061013
Phan Thanh Trang: k114061058
Nhóm 14 Page 1
Mã hóa MD5 và những ứng
dụng
Mạng máy tính và bảo mật
I- MÃ HÓA LÀ GÌ
Mã hóa
!"#$%&'"%(%)* +,"(
-.,/!!0 1#0/%
234*5 "#6 !078
91 9:0+07!9;
Mã hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa
sao người khác không thể đọc hiểu được (kí hiệu E)
Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã
hóa thành dạng gốc ban đầu (kí hiệu D);
Một hệ thống mã hóa bao gồm các thành phần:
< Thông tin trước khi mã hóa
= Thông tin sau khi mã hóa
> Chìa khóa
? Phương pháp mã hóa/giải mã
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…
II- KHÁI NIệM Về HÀM BĂM MD5
Hàm băm
Hash còn được gọi là “hàm băm” hay “bảng băm”.
Hàm băm là một hàm toán học chuyển đổi một thông điệp đầu vào có độ dài bất kỳ
thành một dãy bit có độ dài cố định (tuỳ thuộc vào thuật toán băm).@7"7 1
A$B BB.)7+"'$.&0B) ,
" C0
Hàm băm là hàm một chiều nên không thể tái tạo lại thông điệp ban đầu từ một
chuỗi băm có sẵnD.E7 F6GHI C0&J
Nhóm 14 Page 2
Mạng máy tính và bảo mật
/#:0%7.K/0L M7KH !/!3
&NO
Hàm băm là hàm mã hóa 1 chiều
Cấu trúc của một hàm băm thường có dạng
C3O"'P&"# F/QP 1
E80C !"' " C00R80K +
Nhóm 14 Page 3
Mạng máy tính và bảo mật
S"# F/$!T/)0R".0CE0K
6OP&/#:0%0K60R"'O"'
" Hàm băm MD5
, MD5 (viết tắt của tiếng Anh Message-Digest algorithm 5, giải
thuật Tiêu hóa tin 5) là một hàm băm mật mã được sử dụng phổ biến với giá trị băm
dài 128-bitU0VWBB$XYS<>=<)D@Z 1dùng trong 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ẹn củ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ự.
D@Z 1#/#"IXX&B.&'<[[< !7#"'\
D@?2'<[[]-RFD@Z^/&_
"#%RL7/907L"` C0
8+.a9%0/bQc<$/ J"+5B/
)'=dd?80RF"+//#&.a%
07 3"% "+ T&H
III- Đặ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.
• @"%H_0LO"'&.K1E\+
.!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.
Nhóm 14 Page 4
Mạng máy tính và bảo mật
Ví dụ về mã MD5:
MD5("iloveyou")
=f25a2fc72690b780b2a14e140ef6a9e0
MD5("cộng hòa xã hội chủ nghĩa việt nam")
= 7b8e76fac176d53c53cb24843e31e759
Ngay cả chuỗi rỗng vẫn có kết quả: MD5(“”)
= d41d8cd98f00b204e9800998ecf8427e
IV- ỨNG DụNG
< Bảo toàn thông tin
D@Z 16C8L#\ !đảm bảo việc
truyền tập tin được nguyên vẹnS!-6D@Z
&PefBQ.gh50H"%i30D@OfB
ejA%fB&8(fBA&*e.g0R
D@4
k#0307/\&\30! h50H"%iIL
(/&H 8
k#0307/0!fBe&07
"+7 F
Nhóm 14 Page 5
Mạng máy tính và bảo mật
MD5 checksum là kiểm tra 1 dạng hash của filej6D@ZSB/.0L<fB
.g.<0RD@Z07H&\*fB=fB60&80.g
0<0RD@Z/06l<".g=0RD@Z/0Khi down
file thường có kèm chuỗi MD5 (nhất là các file dung lượng lớn) để cho người dùng
kiểm tra xem file down về có trùng với file gốc hay ko, nếu có lỗi trong quá trình
down thì chuỗi MD5 của file được down về sẽ khác với chuỗi MD5 gốc được cung
cấpS!.aD@Zb0B !,&/!
= Bảo mật
• D 3O&7biế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. Sm
&%/!T%H/%-&$ O !
%n/B)
Nhóm 14 Page 6
Mạng máy tính và bảo mật
o07(EOeB".B&B
> Là nền tảng của chữ kí số
Chữ ký số (khóa công khai) là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi
người sử dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử cũng
như trao đổi các thông tin mật. Khóa công khai thường được phân phối thông qua chứng thực
khóa công khai. Quá trình sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ
ký.
S09/p.KP5 +0qK"% %3&NO90
1078 q-J"% %3/!OOE# /p
V- Thuật toán
4rr.f.B07B0B0r7rZ
4rreeeZBr
Nhóm 14 Page 7
Mạng máy tính và bảo mật
D@Z"# F 80"H/(/K/3\K +<=s
". &.t 1`/KZ<=". 1 &"
!80O.t#Z<=u , .04
\L.tv"<&0K
# ,"wB\/80OG".KOZ<=
/%]?"
xCn,.t 1H C7"I.K07L]?""!0!80" C0O
E:0"\.04
Bước 1: nhồi dữ liệu
kqL"..90 l ≡ 448 mod 512 7l
n * 512 + 448 (n,l nguyên)
U0Eq907%/90" C0 0K23
90 ??s 1qLZ<=". ! 1 []d".
bK1"qLy/%< #Z<=
S" 1qq<"h<i&"dB.0
Nhóm 14 Page 8
Mạng máy tính và bảo mật
Bước 2: thêm vào độ dài
zO/K90" C0 1"!0{\,+M]?"& 1L
&0K0R+M/#:0%O"\<
k#0 O/K90" C0|=]?l]?".H 1.am+
1L&"yK mod 264
j#:0% 1*="\ C0/K90 ".KOZ<=jK9
0 1"!0{4
uy7U/KZ<="}d}<;}U<
uy7k*$e)>="DdD<Dk<27N = L x 16 $>=5<]~Z<=)
Bước 3: khởi tạo bộ đệm MD (MD buffer)
D" <=s" 1609+"'0&/#:0%u
1"!0{"y?>="&\+/I,I,BB$"7B
.KGH*yI +lHH).04
• c~]•?Z=>d<
• u~€YS@cus[
• S~[suc@SY€
• @~<d>=Z?•]
S+7 &\*>=".04
• c~d<=>?Z]•
• u~s[cuS@€Y
• S~Y€@Suc[s
• @~•]Z?>=<d
Bước 4: xử lí các khối dữ liệu 512- bit
Nhóm 14 Page 9
Mạng máy tính và bảo mật
• MO%0hàm nén $B f0)q?h&ni5apS
&n7H0AK0.a03/0qY•Q
&W
Y$‚}w)~‚ƒ}„…‚ƒw
•$‚}w)~‚ƒw„}ƒ…w
Q$‚}w)~‚5}5w
W$‚}w)~}5$‚„…w)
• D%]?Ca 13B4†‡~=>=5".$.$))W 13B
• j#:0%O?&n 1$B0=>=&\ C0&S2: !,S2:ˆ<
Nhóm 14 Page 10
Mạng máy tính và bảo mật
Nhóm 14 Page 11
Mạng máy tính và bảo mật
S+"%
†<‡~•]?•s
†=‡~Bs•"•Z]
†>‡~=?=d•d"
†?‡~<"BBB
†Z‡~fZ•dff
†]‡~?•s•]=
†•‡~s>d?]<>
†s‡~f?][Zd<
†[‡~][sd[ss
†<d‡~s"??f•f
†<<‡~ffffZ""<
†<=‡~s[Z•"B
†<>‡~]"[d<<==
†<?‡~f[s•<[>
†<Z‡~]•[?>sB
†<]‡~?["?ds=<
†<•‡~f]<B=Z]=
†<s‡~d?d">?d
†<[‡~=]ZBZZ<
†=d‡~B["]•
†=<‡~]=f<dZ
†==‡~=??<?Z>
†=>‡~s<B]s<
†=?‡~B•>f"s
†=Z‡~=<B<B]
†=]‡~>>•d•]
†=•‡~f?Zds•
†=s‡~?ZZ<?B
†=[‡~[B>B[dZ
†>d‡~fBf>fs
†><‡~]•]fd=[
†>=‡~s=?s
†>>‡~fff>[?=
†>?‡~s••<f]s<
†>Z‡~][]<==
†>]‡~fBZ>sd
†>•‡~?"BB??
†>s‡~?"Bf[
†>[‡~f]""?"]d
†?d‡~"B"f"•d
†?<‡~=s["•B]
†?=‡~B<=•f
†?>‡~?Bf>dsZ
†??‡~?ss<dZ
†?Z‡~[?d>[
†?]‡~B]"[[BZ
†?•‡~<f=•fs
†?s‡~?Z]]Z
†?[‡~f?=[==??
†Zd‡~?>=ff[•
†Z<‡~"[?=>•
†Z=‡~f[>d>[
†Z>‡~]ZZ"Z[>
†Z?‡~sfd[=
†ZZ‡~ffBff?•
†Z]‡~sZs?Z<
†Z•‡~]fs•B?f
†Zs‡~fB=B]Bd
†Z[‡~>d<?><?
†]d‡~?Bds<<<
†]<‡~f•Z>•Bs=
†]=‡~">f=>Z
†]>‡~=•=""
†]?‡~B"s]>[<
Vòng 1 (Round 1):jp0†"/.‡"\EOP~"ˆ$$ˆ
Y$")ˆ‚†/‡ˆ†‡)‰‰‰.)o0(E<]"\.04
†cuS@d•<‡†@cuS<<==‡†S@cu=<•>‡†uS@c>==?‡
†cuS@?•Z‡†@cuSZ<=]‡†S@cu]<••‡†uS@c•==s‡
†cuS@s•[‡†@cuS[<=<d‡†S@cu<d<•<<‡†uS@c<<==<=‡
†cuS@<=•<>‡†@cuS<><=<?‡†S@cu<?<•<Z‡†uS@c<Z==<]‡
•%34&3"!0=†@cuS<<==‡ &\4
@~cˆ$$@ˆY$cuS)ˆ‚†<‡ˆ†=‡)‰‰‰<=)k5P42n<6Y
2\+*<|<]&/*<|<Z
Vòng 2 (Round 2):E/p0†"/.‡O"!04~"ˆ$$ˆ
•$")ˆ‚†/‡ˆ†‡)‰‰‰.)o0(E<]"\4
†cuS@<Z<•‡†@cuS][<s‡†S@cu<<<?<[‡†uS@cd=d=d‡
†cuS@ZZ=<‡†@cuS<d[==‡†S@cu<Z<?=>‡†uS@c?=d=?‡
†cuS@[Z=Z‡†@cuS<?[=]‡†S@cu><?=•‡†uS@cs=d=s‡
†cuS@<>Z=[‡†@cuS=[>d‡†S@cu•<?><‡†uS@c<==d>=‡
k5P42n=6•&\*<•|>=&/~<ˆZ/<]
Vòng 3 (Round 3):
E/p0†"/.‡O"!04~"ˆ$$ˆQ$")ˆ‚†/‡ˆ
†‡)‰‰‰.)
o0(E<]"\4
†cuS@Z?>>‡†@cuSs<<>?‡†S@cu<<]>Z‡†uS@c<?=>>]‡
Nhóm 14 Page 12
Mạng máy tính và bảo mật
†cuS@<?>•‡†@cuS?<<>s‡†S@cu•<]>[‡†uS@c<d=>?d‡
†cuS@<>??<‡†@cuSd<<?=‡†S@cu><]?>‡†uS@c]=>??‡
†cuS@[??Z‡†@cuS<=<<?]‡†S@cuZ<]?•‡†uS@c==>?s‡
k5P42n>6Q&\*>>|?s&/~Zˆ>/<]
Vòng (Round 4):
E/p0†"/.‡O"!04
~"ˆ$$ˆW$")ˆ‚†/‡ˆ†‡)‰‰‰.)
o0(E<]"\4
†cuS@d]?[‡†@cuS•<dZd‡†S@cu<?<ZZ<‡†uS@cZ=<Z=‡
†cuS@<=]Z>‡†@cuS><dZ?‡†S@cu<d<ZZZ‡†uS@c<=<Z]‡
†cuS@s]Z•‡†@cuS<Z<dZs‡†S@cu]<ZZ[‡†uS@c<>=<]d‡
†cuS@"?]]<‡†@cuS<<<d]=‡†S@cu=<Z]>‡†uS@c[=<]?‡
k5P42n?6W&\*?[|]?&/~•/<]
rŠb0 P.0$km&R+O
\/&&nT)Šr
c~cˆcc
u~uˆuu
S~SˆSS
@~@ˆ@@
€rŠfŠr
Bước 5 : Xuất kết quả
3/#:0%B BB.b0/E5"\? 0
1*?cuS@"` C0*"7BHOc&/#A&\"7B
O@"yPK.04DB B@B.~c‹‹u‹‹S‹‹@$‹‹P
K)
b0/5a#U/KZ<=" C0OC5aU+"'<=s".
VI- Cách sử dụng các giải thuật mã hóa MD5 trong C#
z!.a%0D@ZTbQcSŒ",!.aB.B0.
b7.BbB07S77^
a. Cách sử dụng
Viết hàm mã hóa:
Mã hóa bằng giải thuật MD5
private string EncodeMD5(string pass)
{
Nhóm 14 Page 13
Mạng máy tính và bảo mật
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(pass);
bs = md5.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x1").ToLower());
}
pass = s.ToString();
return pass;
}
z!.a%0D@ZTbQcB.B0.
b7.BbB07S77^SA%.a K1bQc<S7bB&Bx&B
TD@ZS7bB&Bx&BQ K17P",!"'$Q.)%
/!0"7B:0S0BQ.j#:0%%&8.g%/!0u7B 1
20K6OA07!/!090b !%&8
b. Ứng dụng
SA#/#BG !=%07
@6(2.0b0=dds !#/#Y.04
Q(_04
Nhóm 14 Page 14
Mạng máy tính và bảo mật
Yêu cầu chương trình.
b0/0.BB& ekHA(.g!+
H7 e 1=0R/0&\=%0/
0
j#:0%.0/ e4
Hướng dẫn thực hiện:
b0/ #/#5HY• !f
B1: Bổ sung namespace còn thiếu.
0.b7.B^
0.b7.BSB.•BB^
Nhóm 14 Page 15
Mạng máy tính và bảo mật
0.b7.BSBDB^
0.b7.B@^
0.b7.B@e^
0.b7.BU:^
0.b7.BB5^
0.b7.BW•^
0.b7.BŽe.Y.^
0.b7.BbB07S77^
Bước 2. Viết 2 hàm mã hóa theo mẫu đã thiết kế ở trên có kết quả trả về kiểu string
Bước 3.Khai báo 2 field strUsername và strPassword để lưu trữ thông tin username
và password
Bước 4. Viết code cho sự kiện Click
private void btnLogin_Click(object sender, EventArgs e)
{
strUsername =txtUsername.Text.ToString();
string strPass = txtPassword.Text.ToString().Trim(); ;
string strPasswordMD5 = EncodeMD5(strPass);
string strPasswordSHA1 = EncodeSHA1(strPass);
MessageBox.Show("Bạn đang đăng nhập với User: " + strUsername +
" và \nPass đã được mã hóa MD5 là: " + strPasswordMD5 +
" và \nPass đã được mã hóa SHA1 là: " + strPasswordSHA1
, "Thông tin", MessageBoxButtons.OK, MessageBoxIcon.Information
);
}
Nhóm 14 Page 16
Mạng máy tính và bảo mật
Bước 5. Kết thúc
VII- NHữNG Lỗ HổNG VÀ YếU ĐIểM
Bất cứ thuật toán mã hóa nào rồi cũng bị giải mã
2\D@Z7*'<[[]- (H7RFODT6A
n•`07L m #&%
0%/bQc<;
2qC M7\ 55&\0"L
80"%9/p aJRF$
D@Z)D07"` C0*'//73-xcB•05
RF0F"#D@Z-6
9/p a07l\I ,L0.".97có
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ử.*0\"% 1
5M7E& &.a‘
URF\D@Z.gPkẻ tấn công tạo ra file giả mạochỉ
trong vài giờ với một máy tính đạt chuẩn’
2(D@Zln:090Cnếu hai tiền tố với cùng bảng băm được xây nên, thì
cùng một hậu tố có thể cùng được thêm vào để khiến cho đụng độ dễ xảy ra
90&$0)‚&}/0!$00) 1Z
.K007L5.0H !5%7 807/G
2(9/“0( 7P,"'\
15 +_0L!(H750 K&\"H/”8K
0K^m K"H/”0R/pE‚\
! 15 + 80"` C0&\‚
Nhóm 14 Page 17
Mạng máy tính và bảo mật
H%9(C !, _0&\/K
90<=s"7B 15#L\,]?"7B!7 FE"y%0(
&,
2*q.KE ,’"%C0&q’D@Z!{#E
07#&! 16 !+180"%"'D@Z0R!
&\ C0K-6&\ 3"t/V0
VIII- MỘT SỐ THUẬT TOÁN MÃ HÓA KHÁC
Thuật toán
Kích thước đầu ra
(output size)
Kích thước
trạng thái
trong
(Internal
state size)
Kích
thước
khối
(Block
size)
Độ dài
(Length
size)
Kích
thước
word
(Word
size)
Xung đột
(Collision)
HAVAL =Z]r==?r<[=r<]dr<=s =Z] <d=? ]? >= S
MD2 <=s >s? <=s j s /%'\
MD4 <=s <=s Z<= ]? >= S
MD5 <=s <=s Z<= ]? >= S
PANAMA =Z] s•>] =Z] k >= SR
RIPEMD <=s <=s Z<= ]? >= S
RIPEMD-
128/256
<=sr=Z] <=sr=Z] Z<= ]? >= j
RIPEMD-
160/320
<]dr>=d <]dr>=d Z<= ]? >= j
Nhóm 14 Page 18
Mạng máy tính và bảo mật
SHA-0 <]d <]d Z<= ]? >= j
SHA-1 <]d <]d Z<= ]? >= SR
SHA-256/224 =Z]r==? =Z] Z<= ]? >= j
SHA-512/384 Z<=r>s? Z<= <d=? <=s ]? j
Tiger(2)-
192/160/128
<[=r<]dr<=s <[= Z<= ]? ]? j
VEST-4/8
(hash mode)
<]dr=Z] =Z]r>s? s sdr<=s < j
†<‡
VEST-16/32
(hash mode)
>=drZ<= Z<=r•]s s <]dr=Z] < j
WHIRLPOOL Z<= Z<= Z<= =Z] s j
MD4 (Message-Digest thuật toán 4) L00$
,) 1#/#"I•.XX&B.ODW&'<[[dkE
"' !.a/!3&N S80O+"'
<=s"
SHA$bB0BQ.c70%"')'0% 1
H"IYWxb6 !07! ,90H + ,9080
/ F&\5.0H/"
k'0%bQcSHA-1SHA-224SHA-256SHA-384&SHA-512
0%bQc0%"' 1!"I:0KDm$k
bB07cB77kbc)& 150H"%0VO3ODm"I&
&0V:0KDmuK0%.0- 10SHA-2
Nhóm 14 Page 19
Mạng máy tính và bảo mật
800V&"'HD@Z&bQc<
k'=ddZ- (R"%O%0L
IX- Một số phần mềm kiểm tra MD5
Check mã MD5 của một tập tin:SA/!6`-HLq
C%C8\!/!D@ZS80C8!A",5
1 &
1) HashCalc ( /> 2) The Fastest File Splitter and Joiner ( />YYb•C8/F#&\3'`G&K,&\
0kn3'/!D@Z/0:0%
Nhóm 14 Page 20
Mạng máy tính và bảo mật
k#0/#:0%",/!/ A.&\D@Z 10H(A.g
(•SM0%- %"` C0,:0(e/!35EO0q9
0
X- Tổng kết
0.K D@Z/ % !E0H,h&M
7h7.KO &\ 67p
k-y / !( 1= 6.K/%=–]?"\
3& / ! 1 &\.K\=–<=s"\3
0D@Z 1n( !7#0V07L M70
K\&&M3V&8.EC#
Tài liệu tham khảo :
4rrBBe.0B0&r•~2W€Ž—~<<s]?
4rreee0r=d<=rd>rB0&BZ
4rr&e/Bre/rD˜S>˜c>™˜S>˜u>
4rrBe/Bre/rD@Z
Nhóm 14 Page 21