Em xin chân thành cám ơn quý ThTy Cô trong Khoa Công Ngh$ Thông Tin ñã t#n tình gi!ng d?y, trang b cho em nhng ki n thQc quý báu, ñã truyFn thU cho em nhng ki n thQc, kinh nghi$m, ñã qua
Trang 1TRƯ NG Đ I H C KHOA H C T NHIÊN TP HCM
KHOA CÔNG NGH THÔNG TIN
B MÔN H TH NG THÔNG TIN
Khu t Th Ng c Bích Lê Th Trúc Lâm
Tìm hi u và phát tri n
cơ ch) b+o m-t trên mã ngu1n m2
c3a mySQL
Trang 2Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
TRƯ NG Đ I H C KHOA H C T NHIÊN TP HCM
KHOA CÔNG NGH THÔNG TIN
B MÔN H TH NG THÔNG TIN
Trang 3Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
GIÁO VIÊN HƯ@NG DBN
Trang 4
Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
NH:N XÉT CMA GIÁO VIÊN PHNN BI N
Trang 5
Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
L I CNM ƠN
Chúng em xin chân thành cám ơn Khoa Công Ngh$ Thông Tin, trư=ng Đ?i
H c Khoa H c TA Nhiên, Đ?i h c QuBc gia Tp HC Chí Minh ñã t?o ñiFu ki$n thu#n lHi cho chúng em thAc hi$n ñF tài lu#n văn tBt nghi$p này
Chúng em xin nói lên lòng bi t ơn sâu sLc ñBi vMi ThS Ph?m Th B?ch Hu$ Xin chân thành cám ơn Cô ñã luôn quan tâm, t#n tình hưMng dPn em trong quá trình h c t#p, nghiên cQu và thAc hi$n ñF tài
Em xin chân thành cám ơn quý ThTy Cô trong Khoa Công Ngh$ Thông Tin
ñã t#n tình gi!ng d?y, trang b cho em nh)ng ki n thQc quý báu, ñã truyFn thU cho em nh)ng ki n thQc, kinh nghi$m, ñã quan tâm dìu dLt và giúp ñV em trong quá trình h c t#p cũng như trong lúc thAc hi$n ñF tài này
Chúng con luôn nhM mãi công ơn cXa Ông Bà, Cha MZ ñã luôn thương yêu,
lo lLng, chăm sóc và nuôi d?y con thành ngư=i
CuBi cùng chúng em xin g\i l=i cám ơn ñ n các anh ch , các b?n ñã quan tâm ñ]ng viên và giúp ñV chúng em trong quá trình thAc hi$n ñF tài Đ^c bi$t, chúng em xin g\i l=i c!m ơn chân thành ñ n thTy Nguy_n Đình Thúc, ch TrTn HCng Ng c, ch Trương Th M` Trang ñã ñ]ng viên, giúp ñV chúng em trong th=i gian thAc hi$n ñF tài
M^c dù ñã cB gLng hoàn thành lu#n văn trong ph?m vi và kh! năng cho phép nhưng chLc chLn sb không tránh khci nh)ng thi u sót, kính mong nh#n ñưHc sA t#n tình chd b!o cXa quý ThTy Cô và các b?n
M]t lTn n)a, chúng em xin chân thành cám ơn và mong luôn nh#n ñưHc nh)ng tình c!m chân thành cXa t t c! m i ngư=i
Tp HC Chí Minh, tháng 6 năm 2005 Khu t Th Ng c Bích – Lê Th Trúc Lâm
Trang 6Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
MPC LPC
Chương 1 GiMi thi$u 12
1.1 Thng quan b!o m#t 12
1.1.1 Nh#n ñ nh vF b!o m#t 12
1.1.2 Các chiFu hưMng b!o m#t thông tin : 13
1.1.3 B!o m#t thông tin 15
1.2 Tình hình an toàn và b!o m#t trên th giMi và ' Vi$t Nam 17
1.2.1 Trên th giMi : nhu cTu ñang gia tăng 17
1.2.2 l Vi$t Nam 18
1.3 Xu hưMng mã nguCn m' 19
1.3.1 LHi ích cXa phTn mFm mã nguCn m' (PMNM) 19
1.3.2 Vi$t Nam 19
1.4 MUc tiêu cXa ñF tài 20
Chương 2 Các cơ s' lý thuy t b!o m#t 21
2.1 Secret Key Cryptography(H$ Mã hoá quy ưMc) 21
2.1.1 GiMi thi$u 21
2.1.2 Phân lo?i thu#t toán 22
2.1.3 M]t vài thu#t toán SKC ñưHc s\ dUng ngày nay 23
2.1.4 Đánh giá phương pháp mã hóa quy ưMc 23
2.2 Public Key Crytography (Mã hoá công khai) 24
2.2.1 GiMi thi$u chung 24
2.2.2 Đánh giá phương pháp mã hóa công khai 24
2.3 Hash Function (hàm Băm) 26
Trang 7Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
2.3.2 Tính ch t cXa hàm băm 27
2.3.3 C u trúc cXa hàm băm 28
2.3.4 GiMi thi$u m]t sB hàm băm 28
Chương 3 H$ qu!n tr cơ s' d) li$u MySQL 30
3.1 GiMi thi$u h$ qu!n tr cơ s' d) li$u MySQL 30
3.1.1 GiMi thi$u 30
3.1.2 B!n ch t 31
3.1.3 Các ki u d) li$u 32
3.1.4 Statement và function 32
3.1.5 B!o m#t 33
3.1.6 Kh! năng m' r]ng và giMi h?n 33
3.1.7 K t nBi 34
3.1.8 MQc h?n ñ nh 35
3.2 Cơ ch b!o m#t trong MySQL 35
3.2.1 Thng quan b!o m#t 35
3.2.2 B!o m#t trong môi trư=ng m?ng 36
3.2.3 Các khái ni$m cơ b!n 36
3.2.4 B!o m#t cơ s' d) li$u 44
Chương 4 Thu#t toán b!o m#t password trong MySQL 60
4.1 Thu#t toán SHA 1 60
4.1.1 Ý tư'ng thu#t toán BĂM SHA 60
4.1.2 Thu#t toán SHA 1 66
4.1.3 Đánh giá ưu khuy t ñi m 68
4.2 Các thu#t toán ñF xu t 70
4.2.1 SHA 224, SHA 256, SHA 384 và SHA 512 70
Trang 8Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
4.2.2 Thu#t toán Tiger 75
4.2.3 Thu#t toán Whirlpool 78
4.2.4 So sánh SHA 1, Tiger, Whirlpool 87
Chương 5 Cài ñ^t th\ nghi$m 89
5.1 Yêu cTu chQc năng chương trình 89
5.2 Chương trình cài ñ^t 89
5.2.1 HưMng dPn cài ñ^t MySQL ty source code 89
5.2.2 HưMng dPn thAc thi chương trình 94
5.3 GíMi thi$u chương trình cài ñ^t 94
5.3.1 Chương trình chính 94
5.3.2 Chương trình phU 102
5.4 K t qu! thAc nghi$m 104
Chương 6 K t lu#n và hưMng phát tri n 106
6.1 K t lu#n 106
6.1.1 Cơ ch b!o m#t trên HQT CSDL MySQL 106
6.1.2 Chương trình HashFunction 107
6.2 HưMng phát tri n 107
6.2.1 Cơ ch b!o m#t trong HQTCSDL MySQL 107
6.2.2 Chương trình Qng dUng 107
Tài li$u tham kh!o 109
PhU lUc… 112
PhU lUc A Thu#t toán SHA 112
A.1 H|ng sB s\ dUng trong SHA 112
A.1.1 H|ng sB cXa SHA 1 112
A.1.2 H|ng sB cXa SHA 224 và SHA 256 112
Trang 9Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
A.1.3 H|ng sB cXa SHA 384 và SHA 512 113
A.2 Giá tr kh'i t?o trong SHA 115
A.3 Các thao tác tiFn x\ lý trong SHA 115
A.4 Thu#t toán tính hàm BĂM trong SHA 116
A.4.1 SHA 1 116
A.4.2 SHA 224 118
A.4.3 SHA 256 119
A.4.4 SHA 384 121
A.4.5 SHA 512 123
PhU lUc B Thu#t toán Tiger 125
PhU lUc C T n công SHA 1 128
Trang 10Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Danh sách các b+ng
B!ng 1.1.2 Các chiFu hưMng b!o m#t 14
B!ng 2.2.2 : Kích thưMc khóa gi)a mã hóa quy ưMc và mã hóa khóa công khai vMi cùng mQc ñ] b!o m#t .25
B!ng 3.1.6 Kích thưMc giMi h?n cXa file h$ thBng trong MySQL 34
B!ng 3.2.4.2.a Danh sách các c]t cXa b!ng user, host, db trong MySQL 46
B!ng 3.2.4.2.b B!ng tables_priv, columns_priv trong MySQL 48
B!ng 3.2.4.2.d Ph?m vi các c]t trong các b!ng 50
B!ng 3.2.4.2.e Các giá tr trong các c]t phân quyFn 51
B!ng 3.2.4.3.a Danh sách các ñ^c quyFn 53
B!ng 3.2.4.3.b Danh sách các ñ^c quyFn qu!n tr 54
B!ng 4.2.1.1 Các tính ch t cXa các thu#t toán băm an toàn 71
B!nng 5.3.2.2 So sánh SHA 1, Tiger, Whirlpool 88
B!nng 5.3.2.2 Các hàm chính trong SHA 1, Tiger,Whirlpool 103
B!ng B.1 Máy CPU Celeron 950MHz, SDRAM 128 MB, HDD 40GB, Processor 32bit 104
B!ng B.2 Máy CPU PentiumIV 1,5 GHz, DDRAM 384MB, HDD 30 GB, Processor 32bit 104
B!ng B.3 Máy CPU PentiumIV 2.26 GHz, DDRAM 225MB, HDD 40GB, Processor 32bit 105
B!ng B.4 Máy CPU PentiumIV 2.4 GHz, DRAM 225 MB, HDD 40 GB, Processor 32bit 105
Trang 11Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Danh sách các hình
Hình 2.1.1 Secret Key Cryptography 21
Hình 2.2.1 Public Key Crytography 24
Hình 2.3.1 Hash Function 26
Hình 3.2.4.4 Ki m tra yêu cTu 59
Hình 5.3.2 Chương trình Hash Function 102
Hình phác th!o chQc năng nén cXa Tiger 127
Danh sách các tR vi)t tSt
csdl cơ s' d) li$u HQTCSDL h$ qu!n tr cơ s' d) li$u CNTT công ngh$ thông tin PMNM phTn mFm nguCn m' SSL Secure Sockets Layer
Trang 12Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Tóm tSt nUi dung c3a lu-n văn
• Chương 1 : Trình bày thng quan vF b!o m#t d) li$u, các chiFu hưMng b!o m#t thông tin hi$n t?i, các yêu cTu trong b!o m#t d) li$u, tình hình nghiên cQu hi$n nay trên th giMi và trong nưMc vF lĩnh vAc này, ñCng th=i nêu lên mUc ñích, n]i dung và ý nghĩa cXa ñF tài
• Chương 2 : Trình bày tóm tLt m]t sB phương pháp mã hoá hi$n nay, phân lo?i cũng như ñánh giá ưu khuy t ñi m cXa tyng phương pháp Đ^c bi$t, trong chương này sb giMi thi$u khá kĩ vF hàm BĂM, t?o cơ s' tiFn ñF ñ ta nghiên cQu ' các chương sau
• Chương 3 : Trình bày khái quát vF h$ qu!n tr cơ s' d) li$u MySQL Trong chương này, cơ ch b!o m#t cXa MySQL sb ñưHc trình bày cU th
Cơ ch b!o m#t trong môi trư=ng m?ng, trong cơ s' d) li$u cũng như cách lưu tr) password, quá trình ki m tra password, cơ ch phân quyFn sb ñưHc trình bày trong chương này
• Chương 4 : Trình bày vF thu#t toán b!o m#t password trong MySQL : ý tư'ng, các bưMc cXa thu#t toán, ñánh giá ưu khuy t ñi m ĐCng th=i, chúng tôi sb ñF xu t m]t sB thu#t toán tBt hơn có th h?n ch ñưHc khuy t
ñi m cXa thu#t toán hi$n t?i
• Chương 5 : GiMi thi$u sơ lưHc mã nguCn m' cXa MySQL, tìm hi u các hàm mã hoá password, hàm lưu password trong CSDL ĐCng th=i cài ñ^t th\ nghi$m m]t sB thu#t toán mMi và Qng dUng phát tri n cơ ch b!o m#t cXa HQTCSDL MySQL
• Chương 6 : K t lu#n và hưMng phát triFn cXa ñF tài
Trang 13Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
N i dung c a chương 1 trình bày t ng quan v xu hư ng mã ngu n m và chi u hư ng b o m"t thông tin hi$n t%i, các yêu c)u trong b o m"t d* li$u, tình hình nghiên c,u hi$n nay trên th- gi i và trong nư c v lĩnh v/c này, ñ ng th1i nêu lên m2c ñích, n i dung và ý nghĩa c a ñ tài
cơ s' d) li$u (hqtcsdl) Tùy thu]c vào ñ] lMn cXa csdl, tình hình tài chính, kh! năng cXa mình mà mƒi công ty sb ch n lAa m]t h$ qu!n tr phù hHp
Ngày nay, sA phát tri n cXa internet giúp cho các giao d ch trên m?ng ngày càng tăng, lưHng thông tin trao ñhi trên m?ng cũng tăng tương Qng Vì th cơ h]i cho các ñBi thX, các “hacker” thâm nh#p ñánh cLp d) li$u càng tăng
Thông tin cTn ñưHc b!o v$ khci các mBi ñe d a như : Vi$c m?o danh truy c#p thông tin b t hHp pháp và s\ dUng thông tin cho các mUc ñích riêng cXa mình
Trang 14Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
SA t n công cXa các hacker vào các d) li$u nh|m phá ho?i d) li$u ñ phUc
vU cho các mUc ñích riêng như c?nh tranh không lành m?nh gi)a các doanh nghi$p
Các thông tin nh?y c!m có th b l y tr]m
Thông tin cTn ñưHc b!o v$ ngay trong csdl, trên ñư=ng m?ng ñ tránh b ñánh cLp, b thay ñhi
Các nh#n ñ nh sai lTm vF “m t mát thông tin” : Thông tin b m t thư=ng là do các hacker bên ngoài ñ]t nh#p vào và ñánh cLp Nhưng thAc t thì 80% d) li$u b m t là do nh)ng ngư=i bên trong h$ thBng gây ra
Chd cTn mã hóa d) li$u là ñã ñX kh! năng b!o m#t d) li$u ThAc ch t mã hóa chd là m]t bưMc trong m]t cơ ch b!o m#t mà thôi
Do ñó, ta cTn ph!i có cơ ch b!o m#t thích hHp cho h$ thBng M]t cơ ch b!o m#t thư=ng gCm các v n ñF sau :
Mã hóa d) li$u
Cách thQc trao ñhi thông tin
Cách thQc lưu tr) thông tin
Các phương pháp chQng thAc user
Cách thQc nh#n bi t quyFn hHp pháp cXa user ñBi vMi thông tin d) li$u
1.1.2 Các chicu hư]ng b+o m-t thông tin :
Thông tin thư=ng ñưHc lưu t?i các server và ñưHc th chQc thành các file v#t lý
có c u trúc và ñưHc qu!n tr b|ng m]t h$ qu!n tr cơ s' d) li$u thích hHp Thông tin ñưHc truyFn trên các ñư=ng m?ng sb ñưHc b!o v$ theo các cơ ch riêng
Trang 15Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Dù ' trong hình thQc nào thì thông tin ñFu cTn ñưHc b!o m#t theo các chiFu hưMng sau:
V#t lý User chưa ñưHc chQng thAc thì không ñưHc phép truy c#p
vào máy ' mQc v#t lý
Cá nhân Qu!n tr viên có trách nhi$m qu!n tr và b!o m#t d) li$u
trong h$ thBng Do ñó qu!n tr viên ph!i là ngư=i ñáng tin c#y, có tư cách vF ñ?o ñQc
ThX tUc Các thX tUc dùng trong h$ thBng ph!i dùng ñúng các d)
li$u theo ñúng chQc năng cXa mình
Ví dU m]t ngư=i thAc hi$n công vi$c back up d) li$u thì nhi$m vU duy nh t cXa ngư=i ñó là ñ!m b!o d) li$u back up
và running M]t ngư=i ch u trách nhi$m thAc hi$n t?o các báo cáo vF b!ng lương và bán hàng thì ngư=i ñó chd có nhi$m vU ki m tra và xác nh#n tính toàn vZn cXa d) li$u
Vì th cách qu!n lý khéo léo nh t là phân chia nhi$m vU, vai trò cho tyng user theo ñúng ph?m vi chQc năng ph#n sA K` thu#t Lưu tr), truy c#p, s\ dUng và truyFn d) li$u ph!i ñưHc an
toàn b|ng nh)ng k` thu#t thi hành theo nh)ng chính sách phù hHp
B+ng 1.1.2 Các chicu hư]ng b+o m-t V#y khi ñưa ra m]t gi!i pháp nào, ta cTn ph!i cân nhLc th#t c‡n th#n vF v n
ñF b!o m#t Tuy nhiên, có m]t sB trư=ng hHp mà v n ñF k` thu#t không th gi!i quy t ñưHc Đó là các v n ñF vF “b!o m#t trong môi trư=ng làm vi$c” Ví dU, m]t nhân viên r=i khci bàn làm vi$c cXa mình trong m]t lát vì m]t lý do nào ñó
và m]t ngư=i khác lHi dUng ñ xâm nh#p ñánh cLp ho^c thay ñhi d) li$u
Trang 16Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
1.1.3 B+o m-t thông tin
1.1.3.1 B+o m-t thông tin truycn trong môi trưeng mfng Khi d) li$u truyFn trên ñư=ng m?ng thông tin có th b l y m t b t cQ lúc nào N u d) li$u truyFn ñi mà không có phương pháp nào b!o m#t thì kˆ x u d_ dàng l y ñưHc thông tin và dùng nó vào nh)ng mUc ñích riêng cXa mình
Do ñó cTn ph!i có nh)ng phương pháp b!o m#t d) li$u trên m?ng
1.1.3.2 B+o m-t thông tin CSDL a) B!o m#t CDSL gCm có các tiêu chu‡n sau :
• Bí m#t H$ thBng chd cho phép mƒi user khi ñăng nh#p thành công chd ñưHc thAc hi$n các thao tác mà user ñó có ñX các quyFn ñ thAc thi thao tác
• Toàn vZn D) li$u ph!i ñưHc b!o toàn, không b xóa lƒi
• S‰n sàng D) li$u ph!i luôn s‰n sàng ñ phUc vU không ñưHc ch#m tr_
B!o m#t csdl là chd ra ai là ngư=i ñưHc truy c#p vào d) li$u, user ñưHc
th y nh)ng d) li$u nào cXa csdl, user có th thAc hi$n các thao tác nào trên csdl, user có th xem các d) li$u nh?y c!m khi cTn thi t hay không ? b) B!o m#t username và password
D) li$u trong csdl trên server luôn cTn ñưHc b!o m#t và chd có m]t sB ngư=i có chQc năng mMi ñưHc phép truy c#p và s\ dUng Đ chQng thAc m]t user thì phương pháp thư=ng th y nh t là dùng m]t ñ nh danh username và password Tuy nhiên, username và password có th b ñánh cLp b t cQ lúc nào
Trang 17Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
c) SA truy c#p b t hHp pháp vào d) li$u Trong csdl thì không ph!i b t kỳ m]t user nào cũng có quyFn truy c#p
và thAc hiên các thao tác như nhau Tùy theo mƒi chQc vU, công vi$c, ph?m vi thAc hi$n cXa mƒi user mà h có quyFn và có th thAc hi$n m]t sB thao tác khác nhau trên csdl Đó chính là vi$c phân quyFn cho user
Œy quyFn là công vi$c trao cho user, program hay process quyFn ñưHc truy c#p thAc th ho^c t#p các thAc th Các quyFn này có th là chd là read hay read/write
QuyFn h?n là sA cho phép truy c#p mang tính thi hành, ví dU như quyFn ñưHc truy v n trên table QuyFn h?n ñưHc c p cho user theo quy t ñ nh cXa user c p cao hơn (thư=ng là qu!n tr viên Administrator) QuyFn h?n ñưHc c p cho user hHp l$ ñ k t nBi csdl, thao tác trên csdl Có 2 m!ng quyFn chính :
System Privileges Đây là quyFn c p cao Thư=ng thì các quyFn này chd ñưHc c p cho qu!n tr viên và các ngư=i phát tri n Qng dUng QuyFn này cho phép user ñưHc phép thao tác trên toàn b] csdl và ñưHc phép c p quyFn cho các user khác
Object Privileges Đây là các quyFn thao tác trên các ñBi tưHng cXa csdl như database, table, row, column Các quyFn này bao gCm các thao tác INSERT, UPDATE, DELETE, SELECT, CREATE …
Trang 18Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
1.2.1 Trên th) gi]i : nhu cgu ñang gia tăng
Theo k t qu! kh!o sát do Vi$n An ninh Máy tính (CSI) phBi hHp vMi CUc ñiFu tra Liên bang M` (FBI) thAc hi$n vF chX ñF t]i ph?m và an ninh m?ng, các vU ñánh cLp thông tin m#t gây thi$t h?i lMn nh t là 2,7 tri$u USD mƒi vU Còn theo t= Computer Economics, trong năm 2003 các lo?i sâu và virus máy tính ñã gây thi$t h?i 12,5 td USD trên toàn cTu Trong an ninh m?ng, các doanh nghi$p vya
và nhc (SMB) d_ tr' thành n?n nhân cXa các vU t n công nh t, b'i ñBi tưHng này thi u nguCn lAc và ñ]i ngũ chuyên gia công ngh$ thông tin Ngay t?i nưMc M`, theo sB li$u thBng kê, chd 35% các doanh nghi$p vya và nhc là có s\ dUng h$ thBng tư=ng l\a (firewalls)
Cũng giBng như môi trư=ng an ninh nói chung, môi trư=ng an ninh trên Internet ñang ngày càng tr' nên phQc t?p V n ñF b!o m#t h$ thBng và song hành vMi nó là v n ñF lưu tr) thông tin ñang ñóng vai trò ngày càng quan tr ng Theo nhóm nghiên cQu th trư=ng Meta Group:
Hi$n t?i chd có kho!ng 3 4% ngân sách CNTT dành cho v n ñF b!o m#t
và an toàn thông tin, nhưng theo dA báo ñ n năm 2006 t• l$ này sb tăng lên 8 10%
Th trư=ng an ninh CNTT Châu á dA tính cũng sb ñ?t mQc tăng trư'ng 22% ty năm 2003 ñ n năm 2008, con sB g p gTn 2 lTn t• l$ tăng trư'ng cXa th trư=ng d ch vU CNTT nói chung
Còn theo sB li$u ty hãng nghiên cQu th trư=ng IDC, th trư=ng an ninh, b!o m#t Châu á Thái Bình Dương (try Nh#t B!n) cũng sb tăng trư'ng
Trang 19Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
15% ty năm 2002 ñ n năm 2007 và sb ñ?t thng giá tr 4,1 td USD vào năm 2007.
1.2.2 h Vi^t Nam
Chưa bao gi= v n ñF b!o m#t và an toàn d) li$u l?i ñưHc coi tr ng như hi$n nay, trong bBi c!nh m?ng máy tính phá bc m i ngăn cách, “m i lúc, m i nơi” ngư=i ta ñFu có th l y ñưHc thông tin cTn thi t Thông tin ñã tr' thành m]t trong nh)ng nguCn tài nguyên quan tr ng nh t vMi th chQc, doanh nghi$p Con ngư=i t#p trung nhiFu sQc lAc, trí tu$ ñ có thông tin nhanh, chính xác Ai có thông tin,
kˆ ñó chi n thLng B'i v#y, thông tin ñã tr' thành mUc tiêu săn ñuhi cXa nh)ng
ai muBn vưHt lên, và ñCng th=i là cái mà ai cũng cB gLng gi)
VMi sA phát tri n cXa CNTT, hTu như m i thQ ñFu ñưHc “sB hóa”, ñ^c bi$t là thông tin So?n th!o hHp ñCng b|ng Word, g\i thư qua e mail, thanh toán vMi ngân hàng b|ng thˆ tín dUng ; nói chung m i ngư=i làm vi$c, giao d ch ñFu qua máy tính và m?ng Ta không th làm khác ñi b'i sb b cô l#p, sb luôn ch#m hơn,
m t kh! năng c?nh tranh và cuBi cùng sb thua cu]c
Dù n|m trong máy tính hay két sLt thì d) li$u cXa ngư=i dùng vPn là mUc tiêu nhLm tMi cXa các ñBi thX c?nh tranh Trong trư=ng hHp này, “tin t^c” là nh)ng tay ñáng ng?i nh t Ngư=i dùng ph!i bi t cách phòng chBng
T?i VN, v n ñF BM h$ thBng thông tin bLt ñTu nóng dTn lên và ñang s‰n sàng cho nhu cTu BM ty quy mô nhc cho ñ n lMn
Trang 20Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
1.3.1 Lii ích c3a phgn mcm mã ngu1n m2 (PMNM)
Đ^c tính chia sˆ mã nguCn khi n PMNM có vai trò thAc sA quan tr ng trong lĩnh vAc ñào t?o và nghiên cQu Nh)ng thư vi$n mã nguCn m' sb giúp sinh viên
hi u rõ và nhanh chóng nLm bLt ñưHc công ngh$, rút ngLn ñưHc th=i gian ñào t?o sinh viên CNTT
Không chd trong lĩnh vAc giáo dUc, ñào t?o hay nghiên cQu, ñiFu ñáng ng?c nhiên là PMNM cũng hQa hZn nh)ng cơ h]i kinh doanh không nhc ñBi vMi các doanh nghi$p, nh)ng ngư=i luôn ñ^t v n ñF lHi ích lên hàng ñTu Cơ h]i kinh doanh mà PMNM mang l?i không nhc hơn nh)ng cơ h]i kinh doanh dAa trên nFn t!ng cXa Microsoft Windows
1.3.2 Vi^t Nam
PMNM ñã tyng ñưHc ví như lBi thoát hi m cXa Vi$t Nam trưMc áp lAc vF b!n quyFn s' h)u trí tu$ trong quá trình h]i nh#p quBc t Khi nưMc nhà chu‡n b gia nh#p Th chQc Thương m?i Th giMi WTO, Khu vAc M#u d ch TA do (AFTA) và thAc hi$n Hi$p ñ nh Thương m?i Vi$t M` thì PMNM là ñư=ng thoát hi m duy
nh t ñ thoát khci tình tr?ng vi ph?m b!n quyFn phTn mFm ' Vi$t Nam
H]i th!o quBc gia lTn thQ nh t vF PMNM ñưHc th chQc tháng 12/2000 có th ñưHc xem như m]t c]t mBc ñánh d u sA xu t hi$n chính thQc cXa PMNM t?i Vi$t Nam Hai năm sau ñó, H]i th!o QuBc gia vF PMNM lTn thQ hai, tháng 12/2002, ñưHc coi là bưMc chu‡n b và nâng cao nh#n thQc vF PMNM Chính t?i H]i th!o này ñã cho th y PMNM ñang là m]t xu hưMng phát tri n trên th giMi :
Các th chQc quBc t ñFu khuy n cáo s\ dUng PMNM
Trang 21Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Các nưMc Châu Á như Trung QuBc, Hàn QuBc, Nh#t B!n ñang phát tri n
r t m?nh PMNM Malaysia gTn ñây ñã ñTu tư 30 tri$u USD cho PMNM Năm 2003 Nh#t B!n cũng dành 10 tri$u USD cho PMNM
Không chd ' c p Chính phX, nhiFu công ty ña quBc gia như Oracle, IBM, HP cũng ñang phát tri n m?nh theo xu hưMng PMNM
IBM hi$n có m]t trung tâm vMi 700 ngư=i chuyên nghiên cQu vF PMNM
Quy t ñ nh sB 235/QĐ TTg, ngày 2/3/2004, cXa ThX tưMng Chính phX phê duy$t DA án thng th “Qng dUng và phát tri n phTn mFm nguCn m' ' Vi$t Nam giai ño?n 2004 2008” là ñi m mBc ñánh d u vi$c bLt ñTu tri n khai PMNM t?i Vi$t Nam
V n ñF b!o m#t h$ thBng và song hành vMi nó là v n ñF lưu tr) thông tin ñang ñóng vai trò ngày càng quan tr ng ĐBi vMi m]t th chQc hay cá nhân khi lAa ch n m]t h$ qu!n tr CSDL, ngoài tiêu chí ch n h$ qu!n tr có quy mô phù hHp vMi ñ] lMn cXa CSDL thì v n ñF b!o m#t cXa h$ qu!n tr ñó cũng r t ñưHc quan tâm
ĐF tài “Tìm hi u và phát tri n cơ ch b!o m#t trên mã nguCn m' cXa MySQL” ñưHc thAc hi$n nh|m mUc tiêu:
• Tìm hi u các cơ s' lý thuy t vF b!o m#t, giMi thi$u tóm tLt m]t sB phương pháp mã hoá
• Tìm hi u cơ ch b!o m#t cXa m]t h$ qu!n tr mã nguCn m' : MySQL
• Tìm hi u, phân tích, ñánh giá thu#t toán mã hoá password trong MySQL
• Trên cơ s' nghiên cQu m]t sB gi!i thu#t mMi, có ñ] an toàn cao, xây dAng m]t sB cơ ch mã hoá password mMi cXa riêng mình trong MySQL
Trang 22Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
N i dung c a chương 2 s8 trình bày tóm t:t m t s; phương pháp mã hoá hi$n nay, phân lo%i cũng như ñánh giá ưu khuy-t ñi@m c a tAng phương pháp ĐCc bi$t, trong chương này s8 gi i thi$u khá kĩ v hàm BĂM, t%o cơ s ti n ñ ñ@ ta nghiên c,u các chương sau
Thu#t toán mã hóa d) li$u hi$n nay phân lo?i theo sB khoá ñưHc dùng ñ mã hoá và gi!i mã có 3 lo?i :
1 Secret Key Cryptography (SKC) : s\ dUng m]t khoá chung cho quá trình
2.1.1 Gi]i thi^u
Hình 2.1.1 Secret Key Cryptography Các thUât toán mã hoá quy ưMc (hay mã khoá bí m#t hay h$ mã ñBi xQng) dùng m]t khoá bí m#t ñơn ñ mã hoá và gi!i mã d) li$u D) li$u nguCn x ñưHc ngư=i g'i A mã hoá b|ng thu#t toán mã hoá quy ưMc vMi khoá bí m#t k ñưHc thBng nh t trưMc gi)a ngư=i g'i A và ngư=i nh#n B D) li$u sau khi mã hoá y sb
Trang 23Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
ñưHc truyFn cho ngư=i nh#n B Sau khi nh#n, B sb s\ dUng khoá bí m#t k ñ gi!i
mã y ñ có ñưHc thông ñi$p nguCn x ban ñTu
N u m]t ngư=i C có ñưHc khoá bí m#t k thì C sb có kh! năng gi!i mã t t c! d) li$u cXa A b|ng khoá k rCi thay ñhi d) li$u và mã hóa l?i b|ng khóa k sau ñó g'i cho B Do ñó v n ñF b!o m#t thông tin ñưHc mã hoá phU thu]c vào vi$c gi) bí m#t n]i dung mã khoá k
Mã hoá khoá bí m#t cũng ñưHc g i là mã hoá khoá ñBi xQng vì chd dùng m]t khoá cho mã hoá lPn gi!i mã Thu#t toán mã hoá này có tBc ñ] cAc nhanh và thích hHp ñBi vMi vi$c mã hoá khBi lưHng d) li$u lMn
2.1.2 Phân lofi thu-t toán
2.1.2.1 Mã hóa theo chuqi bit Trong h$ mã hoá theo chuƒi bit, thông ñi$p là các bit và khoá ñưHc phát sinh b'i m]t b] phát sinh ngPu nhiên B!ng rõ mã hoá theo tyng bưMc ñ ñưHc b!n mã
2.1.2.2 Mã hóa theo chr Các h$ mã ban ñTu dAa trên cơ s' phép bi n ñhi m]t ch) cái trong b!ng rõ thành m]t ch) cái khác trong b!ng mã K` thu#t mã hoá này còn ñưHc g i là
mã hoá thay th Đ thAc hi$n phương pháp này, trưMc tiên cTn ñ nh nghĩa 1 b!ng mã (như b!ng mã ASCII) ñ sB hoá b!ng rõ, vì các phép toán sb làm vi$c trên các sB thay vì các kí tA
2.1.2.3 Mã hóa theo khti
Ta th y, h$ mã hoá theo ch) có ñ] an toàn không cao vì m]t ch) cái luôn ñưHc mã hoá thành 1 ch) cái khác trong b!ng mã VMi kh! năng cXa máy tính
Trang 24Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
hi$n ñ?i, không khó ñ có th gi!i mã 1 b!ng mã theo ch) như th Đ tăng ñ] an toàn, ta có th mã hoá theo khBi Trong mã hoá theo khBi, b!n rõ và b!ng mã ñưHc chia thành tyng khBi kí tA trưMc khi thi hành mã hoá và gi!i
mã
2.1.2.4 Mã mũ
Do Pohlig và Hellman giMi thi$u năm 1976 Có th ñưHc mô t! như sau :
Ch n p là 1 sB nguyên tB, M là 1 sB tương Qng cXa b!n rõ vMi mƒi kí tA trong b!ng rõ ñưHc thay th b|ng mã tương Qng như trong b!ng
00 01 02 03 04 05 06 07 08 09 10 11
2.1.3 MUt vài thu-t toán SKC ñưic sv dmng ngày nay
Nh)ng thu#t toán SKC ñưHc s\ dUng ngày nay : Data Encryption Standard (DES), Triple DES (3DES), DESX, RC1,RC2, RC3, RC4, RC5, RC6, Blowfish, Twofish, Camellia, MISTY1, SAFER, KASUMI, SkipJack
2.1.4 Đánh giá phương pháp mã hóa quy ư]c
M^c dù h$ thBng mã hoá quy ưMc cung c p khá nhiFu thu#t toán mã hoá có ñ] b!o m#t r t cao nhưng nó có các h?n ch sau :
H?n ch vF kh! năng trao ñhi khoá : do c! ngư=i nh#n và ngư=i g'i ñFu cTn ph!i bi t khoá nên phát sinh v n ñF an toàn khi truyFn khoá N u khoá
b ñánh cLp trong quá trình truyFn khoá thì thông tin ñưHc mã hoá b|ng khoá ñó không còn ñưHc b!o m#t và an toàn Ngoài ra vMi mã hoá quy ưMc không ñ!m b!o nguCn gBc thông tin ñưHc g'i nên không bi t kháo có b m#t cLp hay không
Trang 25Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
H?n ch kh! năng qu!n lý khoá : ñBi vMi tyng ngư=i cTn liên l?c và vMi tyng n]i dung thông tin cTn ph!i có m]t khoá quy ưMc ñ mã hoá và gi!i
mã Do ñó n u trên 1 m?ng liên l?c lMn, sB lưHng khoá cTn ph!i lưu gi) r t nhiFu nên n!y sinh v n ñF qu!n lý khoá quy ưMc và b!o m#t thi t b khoá quy ưMc
2.2.1 Gi]i thi^u chung
Hình 2.2.1 Public Key Crytography Ngư=i g'i A s\ dUng khoá công khai (h$ mã không ñBi xQng) pk cXa ngư=i nh#n B ñ mã hoá d) li$u gBc x D) li$u sau khi ñưHc mã hoá, y ñưHc truyFn cho
B Ngư=i nh#n B sau khi nh#n ñưHc y sb s\ dUng khoá riêng sk cXa mình ñ gi!i
mã d) li$u và nh#n l?i d) li$u nguCn x ban ñTu
N u 1 ngư=i C có ñưHc d) li$u ñã mã hoá y và khoá công khai pk thì C vPn không th gi!i mã ñưHc y Do khoá riêng sk ñưHc gi) bí m#t hoàn toàn, chd có Ngư=i B bi t ñưHc sk và sk không ñưHc giao d ch hay truyFn ñi nên rXi ro dPn
ñ n vi$c khoá sk b ñánh cLp là r t th p
GiMi thi$u m]t sB thu#t toán : EEC, RSA
2.2.2 Đánh giá phương pháp mã hóa công khai
H$ thBng mã hóa khóa công khai ra ñ=i ñã gi!i quy t các h?n ch cXa mã hóa quy ưMc Mã hóa khóa công khai s\ dUng m]t c^p khóa, m]t khóa (thông thư=ng
Trang 26Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
là khóa riêng) dùng ñ mã hóa và m]t khóa (khóa riêng) dùng ñ gi!i mã Mã hóa khóa công khai giúp tránh b t n công khi trao ñhi khóa do khóa ñ gi!i mã (khóa riêng) không cTn ph!i truyFn ho^c chia sˆ vMi ngư=i khác Ngoài ra, mƒi ngư=i chd cTn s' h)u m]t c^p khóa công khai – khóa riêng và ngư=i g'i thông tin chd cTn gi) khóa công khai cXa ngư=i nh#n do ñó sB lưHng khóa cTn ph!i qu!n lý gi!m khá nhiFu Mƒi ngư=i chd cTn lưu tr) b!o m#t m]t khóa riêng cXa chính mình
Tuy nhiên, do nhu cTu mã hóa và gi!i mã b|ng hai khóa khác nhau trong cùng m]t c^p khóa nên ñ ñ!m b!o b!o m#t, kích thưMc khóa công khai – khóa riêng lMn hơn r t nhiFu so vMi khóa công khai Do ñó tBc ñ] mã hóa khóa công khai ch#m hơn tBc ñ] mã hóa khóa quy ưMc TBc ñ] mã hóa b|ng phTn mFm cXa thu#t toán DES nhanh hơn kho!ng 100 lTn so vMi mã hóa RSA vMi cùng mQc ñ] b!o m#t
Kích thư]c khóa (tính bwng bit) Khóa công khai 56 80 112 128 192 256 RSA/DSA 512 1K 2K 3K 7.5K 15K
B+ng 2.2.2 : Kích thư]c khóa gira mã hóa quy ư]c và mã hóa khóa công
khai v]i cùng m{c ñU b+o m-t
Trang 27Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
2.3.1 Gi]i thi^u hàm Băm
Hình 2.3.1 Hash Function Hàm băm m#t mã là hàm toán h c chuy n ñhi m]t thông ñi$p có ñ] dài b t kỳ thành m]t dãy bit có ñ] dài cB ñ nh (tùy thu]c vào thu#t toán băm) Dãy bit này ñưHc g i là thông ñi$p rút g n (message digest) hay giá tr băm (hash value), ñ?i di$n cho thông ñi$p ban ñTu
D_ dàng nh#n th y r|ng hàm băm h không ph!i là m]t song ánh Do ñó, vMi thông ñi$p x b t kỳ, tCn t?i thông ñi$p x’ ≠ x sao cho h(x) = h(x’) Lúc này, ta nói r|ng “có sA ñUng ñ] x!y ra”
M]t hàm băm h ñưHc g i là an toàn (hay “ít b ñUng ñ]”) khi không th xác
ñ nh ñưHc (b|ng cách tính toán) c^p thông ñi$p x và x’ thca mãn x ≠ x’ và h(x) = h(x’) Trên thAc t , các thu#t toán băm là hàm m]t chiFu, do ñó, r t khó ñ xây dAng l?i thông ñi$p ban ñTu ty thông ñi$p rút g n
Hàm băm giúp xác ñ nh ñưHc tính toàn vZn d) li$u cXa thông tin : m i thay ñhi, dù là r t nhc, trên thông ñi$p cho trưMc, ví dU như ñhi giá tr 1 bit, ñFu làm thay ñhi thông ñi$p rút g n tương Qng Tính ch t này h)u ích trong vi$c phát sinh, ki m tra ch) ký ñi$n t\, các ño?n mã chQng nh#n thông ñi$p, phát sinh sB ngPu nhiên, t?o ra khóa cho quá trình mã hóa…
Trang 28Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Hàm BĂM ñưHc dùng trong ch) ký ñi$n t\ M]t ñ^c tính cơ b!n cXa hàm BĂM là vi$c t?o mã khóa thông ñi$p r t d_ nhưng vi$c phá mã ñ chuy n ngưHc
mã thông ñi$p thành b!n rõ ban ñTu r t khó n u không muBn nói là không th
2.3.2 Tính ch}t c3a hàm băm
2.3.2.1 Tính mUt chicu Hàm băm ñưHc xem là hàm m]t chiFu khi cho trưMc giá tr băm, không th tái t?o l?i thông ñi$p ban ñTu, hay còn g i là “tiFn !nh” (“pre image”)
Như v#y, trong trư=ng hHp lý tư'ng, cTn ph!i thAc hi$n hàm băm cho kho!ng 2n thông ñi$p ñ tìm ra ñưHc “tiFn !nh” tương Qng vMi m]t giá tr băm
N u tìm ra ñưHc m]t phương pháp t n công cho phép xác ñ nh ñưHc “tiFn
!nh” tương Qng vMi m]t giá tr băm cho trưMc thì thu#t toán băm sb không còn an toàn n)a
Cách t n công nh|m t?o ra m]t thông ñi$p khác vMi thông ñi$p ban ñTu nhưng có cùng giá tr băm g i là t n công “tiFn !nh thQ hai” (second preimage attack)
2.3.2.2 Tính an toàn c3a hàm băm ñti v]i hi^n tưing ñmng ñU Hàm băm ñưHc xem là an toàn ñBi vMi hi$n tưHng ñUng ñ] khi r t khó tìm ñưHc hai thông ñi$p có cùng giá tr băm
Nh#n xét : Trong m]t t#p hHp mà các phTn t\ mang m]t trong N giá tr cho trưMc vMi xác su t b|ng nhau, chúng ta cTn kho!ng N phép th\ ngPu nhiên
ñ tìm ra m]t c^p phTn t\ có cùng giá tr Như v#y, phương pháp hàm băm ñưHc xem là an toàn ñBi vMi hi$n tưHng
Trang 29Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
có cùng giá tr hàm băm vMi sB lưHng tính toán ít hơn ñáng k so vMi ngưVng
2n/2, vMi n là kích thưMc (tính b|ng bit) cXa giá tr băm
Phương pháp t n công dAa vào ñUng ñ] :
• Tìm ra 2 thông ñi$p có n]i dung khác nhau nhưng cùng giá tr băm
• Ký trên m]t thông ñi$p, sau ñó, ngư=i ký sb không thya nh#n ñây là ch)
ký cXa mình mà nói r|ng mình ñã ký trên m]t thông ñi$p khác
Như v#y, cTn ph!i ch n 2 thông ñi$p “ñUng ñ]” vMi nhau trưMc khi ký
2.3.3 C}u trúc c3a hàm băm
HTu h t các hàm băm m#t mã ñFu có c u trúc gi!i thu#t như sau :
• Cho trưMc m]t thông ñi$p M có ñ] dài b t kỳ Tùy theo thu#t toán ñưHc s\ dUng, chúng ta có th cTn bh sung m]t sB bit vào thông ñi$p này ñ nh#n ñưHc thông ñi$p có ñ] dài là b]i sB cXa m]t h|ng sB cho trưMc Chia nhc thông ñi$p thành tyng khBi có kích thưMc b|ng nhau: M1, M2, …Ms
• G i H là tr?ng thái có kích thưMc n bit, f là “hàm nén” thAc hi$n thao tác tr]n khBi d) li$u vMi tr?ng thái hi$n hành
Kh'i gán H0 b|ng m]t vector kh'i t?o nào ñó
Hi = f(Hi 1, Mi) vMi i = 1, 2, 3, …, s
Hs chính là thông ñi$p rút g n cXa thông ñi$p M ban ñTu
2.3.4 Gi]i thi^u mUt st hàm băm
Hàm băm là nFn t!ng cho nhiFu Qng dUng mã hóa Có nhiFu thu#t toán ñ thAc hi$n hàm băm, trong sB ñó, phương pháp SHA 1 và MD5 thư=ng ñưHc s\ dUng khá phh bi n ty th#p niên 1990 ñ n nay
Trang 30Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Ngày 26/08/2002, Vi$n Tiêu chu‡n và Công ngh$ quBc gia cXa Hoa Kỳ (National Institute of Standard and Technology NIST) ñã ñF xu t h$ thBng chu‡n hàm băm an toàn (Secure Hash Standard) gCm 4 thu#t toán hàm băm SHA 1, SHA 256, SHA 384, SHA 512 Đ n 25/03/2004, NIST ñã ch p nh#n thêm thu#t toán hàm băm SHA 224 vào h$ thBng chu‡n hàm băm
Tiger ra ñ=i năm 1996 b'i Ross Anderson và Eli Biham
Hàm BĂM Whirlpool do Paul S.L.M Barreto và Vincent Rijment ñF xu t năm
2001 và ñưHc công nh#n tính b!o m#t t?i h]i th!o b!o m#t NESSIE t?i Lund, ThUy Đi n vào ngày 26/02/2003, ñ?t chu‡n ISO ISO/IEC 10118 3
Trang 31Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Trình bày khái quát v h$ qu n trH cơ s d* li$u MySQL Trong chương này, cơ ch- b o m"t c a MySQL s8 ñưLc trình bày c2 th@ Cơ ch- b o m"t trong môi trư1ng m%ng, trong cơ s d* li$u cũng như cách lưu tr* password, quá trình ki@m tra password, cơ ch- phân quy n s8 ñưLc trình bày trong chương này
3.1.1 Gi]i thi^u
MySQL là 1 h$ qu!n tr cơ s' d) li$u quan h$ mã nguCn m' phh bi n nh t hi$n nay Nó ñưHc phát tri n, phân chia, hƒ trH b'i MySQL AB Đây là m]t công ty thương m?i, ñưHc thành l#p b'i nhóm phát tri n MySQL MySQL server nhanh, ñáng ting c#y, d_ s\ dUng S\ dUng môi trư=ng client/server ñ]c l#p ho^c nhúng vào các chương trình khác
Hi$n nay MySQL ñưHc dùng trên 4 tri$u b!n cài ñ^t trên toàn th giMi Các công ty lMn có th truy c#p mã nguCn MySQL ñ t?o ra m]t b!n khác dùng n]i b] công ty vMi mUc ñích phi thương m?i mà không sH vi ph?m b!n quyFn
TBc ñ] MySQL khá nhanh, b!ng cXa MySQL lên ñ n 8 GB ñX dùng cho các công ty không quá lMn
Các tính năng m?nh cXa MySQL ñang ñưHc bh sung dTn qua tyng phiên b!n Phiên b!n 4.1 hi$n t?i không ít hơn tính năng là m y so vMi SQL Server
SB nhà phát tri n dùng MySQL là r t lMn trên th giMi cho nên sB các Qng dUng ch?y trên MySQL là nhiFu và cũng mi_n phí
Trang 32Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Có m]t sA phân bi$t khác r t quan tr ng ñ ngư=i ta ch n MySQL, ñó là tBc ñ] M^c dù MySQL x\ lý transaction không tBt như Oracle, nhưng vF tBc ñ], nó ch?y nhanh hơn Oracle r t nhiFu C]ng thêm mã nguCn m' và mi_n phí, nó là gi!i pháp database tBt nh t cho các website, ngo?i try các website lMn cTn x\ lý các tác vU ñ^c bi$t
3.1.2 B+n ch}t
• Chương trình ñưHc vi t b|ng C và C++
• ĐưHc ki m tra b|ng các trình biên d ch khác nhau
• Làm vi$c trên nhiFu nFn khác nhau
• S\ dUng Automake, Autoconf, và libtool t?o tính năng ñ]ng
• Các hàm API cho có giá tr trên C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, và Tcl
• Nh)ng ti n trình nhân (kernel thread) s\ dUng ña ti n trình nên có th s\ dUng nhiFu CPU n u ngư=i dùng có
• H$ thBng c p phát b] nhM dAa trên ti n trình r t nhanh
• Có nh)ng b!ng BAM b] nhM trong (in_memory) ñưHc s\ dUng như nh)ng b!ng t?m
• Nh)ng hàm SQL thAc thi nhanh do s\ dUng các thư vi$n
• Server có giá tr như 1 chương trình ñ]c l#p trong môi trư=ng m?ng client/server, cũng có giá tr như 1 thư vi$n có th nhúng vào các chương trình Qng dUng ñ]c l#p
Trang 33Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
3.1.3 Các ki u dr li^u
• Các ki u d) li$u : SIGNED/UNSIGNED INTEGERS 1, 2, 3, 4, and 8 BYTES LONG FLOAT
DOUBLE CHAR VARCHAR TEXT BLOB DATE TIME DATETIME TIMESTAMP YEAR
SET ENUM
• Fixed length và variable length records
3.1.4 Statement và function
• Hƒ trH toàn b] các toán t\ và chQc năng trong câu l$nh truy v n SELECT
và WHERE
VD : Mysql> SELECT CONCAT(first_name, ‘’, last_name) FROM citizen
WHERE income/dependents > 10000 AND age > 30;
Trang 34Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
• Hƒ trH các câu truy v n SQL GROUP BY và ORDER BY Ngoài ra còn
hƒ trH các hàm gom nhóm (COUNT(), COUNT(DISTNCT …), AVG(), STD(), SUM(), MAX(), MIN(), GROUP_CONCAT())
• Hƒ trH cho LEFT OUTER JOIN và RIGHT OUTER JOIN theo cú pháp chu‡n cXa SQL và ODBC
• Hƒ trH vi$c ghi các alias cho table, column
• DELETE, INSERT, REPLACE, UPDATE tr! vF sB dòng !nh hư'ng
• Câu l$nh ñ^c bi$t MySQL: SHOW có th ñưHc s\ dUng nh#n thông tin vF
cơ s' d) li$u, table, index Câu l$nh EXPLAIN có th ñưHc dùng chd ñ nh cách thQc gi!i quy t thõa câu truy v n
• Tên các hàm không xung ñ]t vMi tên các table và column
• Ngư=i dùng có th s\a ch)a các table trong các database khác nhau trong cùng m]t câu truy v n (như MySQL 3.22)
3.1.5 B+o m-t
H$ thBng ñ^c quyFn và password r t linh ho?t, an toàn, cho phép xác nh#n dAa trên máy chX (host) Password ñưHc b!o m#t vì t t c! các dòng di chuy n password ñưHc mã hoá khi user k t nBi vào server
3.1.6 Kh+ năng m2 rUng và gi]i hfn
• Handles cXa database lMn MySQL server vMi các database có th chQa
ñ n 50 tri$u record Ta có th bi t ñưHc các user s\ dUng MySQL Server vMi 60.000 tables và kho!ng 5.000.000.000 dòng
• Có th t?o 64 indexes trong 1 table (32 indexes ñBi vMi các phiên b!n trưMc 4.1.2) Mƒi index có th gCm ty 1 ñ n 16 c]t hay các phTn cXa c]t
Trang 35Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
Đ] lMn tBi thi u cXa index là 1000 bytes (500 bytes ñBi vMi các phiên b!n trưMc 4.1.2) M]t index có th s\ dUng tiFn tB (prefix) cXa c]t có các ki u d) li$u CHAR, VARCHAR, BLOB, hay TEXT
• GiMi h?n các b!ng trong MySQL MySQL 3.22 có giMi h?n cXa table là 4GB VMi k` thu#t lưu tr) MySIAM trong MySQL 3.23, kích thưMc tBi ña cXa table ñưHc tăng 263 byte
Operating System FileIsize Limit Linux 2.2 Intel 32 bit 2GB (LFS: 4GB)
Linux 2.4 (using ext3 filesystem) 4TB Solaris 9/10 16TB
NetWare w/NSS filesystem 8TB win32 w/ FAT/FAT32 2GB/4GB win32 w/ NTFS 2TB (possibly larger) MacOS X w/ HFS+ 2TB
B+ng 3.1.6 Kích thư]c gi]i hfn c3a file h^ thtng trong MySQL
3.1.7 K)t nti
• Clients có th k t nBi vMi MySQL server b|ng cách s\ dUng nh)ng socket TCP/IP trên b t kì nFn nào Trên nFn windows dòng NT, client có th k t nBi s\ dUng pipes Trên nFn Unix, clients k t nBi s\ dUng Unix domain socket files
• Windows có hh trH k t nBi chia sˆ b] nhM n u kh'i ñ]ng vMi lAa ch n share memory Client có th k t nBi qua b] nhM chia sˆ b|ng cách s\ dUng lAa ch n protocol=memory
Trang 36Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
• Giao di$n Connector/ODBC (MyODBC) cung c p MySQL hƒ trH các chương trình client s\ dUng k t nBi ODBC (Open Database Connectivity)
• Giao di$n Connector/J interface cung c p MySQL hƒ trH chương trình client Java s\ dUng k t nBi JDBC
3.1.8 M{c hfn ñbnh
• Có th s\ dUng c p thông ñi$p lƒi cho client ' b t kì ngôn ng) nào do có
r t nhiFu b] kí tA
• D) li$u ñưHc lưu tr) theo b] kí tA ñã ch n
3.2.1 T_ng quan b+o m-t
B!o m#t cơ s' d) li$u là m]t y u tB cTn thi t trong b t kì h$ thBng cơ s' d) li$u nào B!o m#t là b!o v$ d) li$u chBng l?i các crackers, ñCng th=i cũng b!o v$ d) li$u ty ngư=i dùng Ví dU, ngư=i dùng có th xoá, s\a, xem ho^c thêm nh)ng record mà h không ñưHc phép Đ tránh nh)ng tình tr?ng này, ngư=i dùng có
th t?o nên m]t cơ ch b!o m#t trên cơ s' d) li$u ñ ngăn ch^n các thao tác mà user không ñưHc phép thao tác trên CSDL B!o m#t ñóng vai trò chính trong b t
kì Qng dUng nào mà ngư=i dùng có th truy c#p vào ít nh t m]t lTn Cơ ch b!o m#t cXa HQTCSDL MySQL r t tBt, là m]t trong các h$ qu!n tr cơ s' d) li$u an toàn nh t hi$n nay Cơ ch b!o m#t cXa HQTCSDL MySQL gCm hai lĩnh vAc chính :
B!o m#t trong môi trư=ng m?ng
B!o m#t cơ s' d) li$u
Trang 37Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
3.2.2 B+o m-t trong môi trưeng mfng
BLt ñTu ty phiên b!n 4.0.0, MySQL hƒ trH cho các k t nBi an toàn gi)a các MySQL client và server dùng giao thQc Secure Sockets Layer (SSL)
C u hình chu‡n cXa MySQL có khuynh hưMng sao cho ch?y nhanh nh t có
th , nhưng vi$c mã hóa các k t nBi không th dùng m^c ñ nh Làm như th có
th sb làm cho client/server ch#m hơn Mã hoá d) li$u là thao tác CPU intensive
mà ñòi hci máy tính cTn ph!i thAc hi$n thêm m]t sB công vi$c và có th làm trì hoãn các nhi$m vU khác cXa MySQL ĐBi vMi các Qng dUng mà ñòi hci b!o m#t ñưHc cung c p b'i các k t nBi mã hoá, sA tính toán thêm vào là ñưHc cho phép
3.2.3 Các khái ni^m cơ b+n
Đ hi u MySQL dùng SSL như th nào, ta cTn bi t căn b!n vF các khái ni$m SSL và X509 M^c ñ nh, MySQL dùng các k t nBi gi!i mã gi)a client và server ĐiFu này có nghĩa là m]t ngư=i khi truy c#p ñưHc vào m?ng thì có th bi t ñưHc
m i ho?t ñ]ng cXa ngư=i dùng và th y ñưHc t t c! d) li$u ñang ñưHc nh#n hay g'i ñi Th#m chí h cũng có th thay ñhi d) li$u trong khi nó ñưHc chuy n ñi gi)a client và server Đ làm tăng tính b!o m#t lên m]t chút, ngư=i dùng có th nén client/server traffic b|ng cách s\ dUng lAa ch n compress khi g i các chương trình client Tuy nhiên, nó không ñánh l?c hưMng ñưHc attacker
Khi ngư=i dùng cTn chuy n thông tin thông qua m?ng theo thi t k an toàn,
k t nBi gi!i mã là không ch p nh#n ñưHc Mã hoá là cách làm cho b t kỳ lo?i d) li$u nào cũng không ñ c ñưHc Th#t ra, thAc ti_n yêu cTu thêm nhiFu y u tB b!o m#t ty các thu#t toán mã hoá Chúng có th chBng l?i nhiFu cách t n công như thay ñhi tr#t tA cXa các message ñã mã hoá ho^c l^p l?i hai lTn d) li$u
Trang 38Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
• SSL protocol Secure Socket Layer (SSL) protocol ñưHc t?o ra b'i Netscape ñ ñ!m b!o b!o m#t các giao tác gi)a server và client
SSL là giao thQc mà s\ dUng các thu#t toán mã hóa khác nhau ñ b!o ñ!m r|ng d) li$u nh#n ñưHc thông qua m?ng chung có th là ñúng Đó là k` thu#t ñ dò tìm các d) li$u b l^p, b m t ho^c b thay ñhi SLL cũng
k t hHp ch^t chb các thu#t toán cung c p sA ki m tra nh#n d?ng s\ dUng chu‡n X509
• Chu‡n X509 X509 làm cho nó có th nh#n d?ng m]t ai ñó trên m?ng Nó không ñưHc s\ dUng thông dUng nh t trong các Qng dUng ñi$n t\ Trong các giMi h?n cơ b!n, m]t vài công ty g i nó “Certificate Authority” (CA : b|ng chQng nh#n quyFn) mà thi t k các chQng thAc ñi$n t\ cho nh)ng ai cTn
ñ n chúng Các chQng thAc ñáp l?i các thu#t toán mã hoá b t ñBi xQng ChX nhân cXa (b|ng) chQng thAc có th chd chQng thAc cho party khác như
là b|ng chQng vF nh#n d?ng ChQng thAc gCm khoá chung cXa chX nhân cXa nó B t kỳ d) li$u nào ñưHc mã hoá vMi khoá công c]ng này chd có th gi!i mã b|ng khoá bí m#t tương Qng, khoá này ñưHc gi) b'i chX nhân cXa chQng thAc
3.2.3.1 Yêu cgu (Requirements)
Đ s\ dUng các k t nBi SSL gi)a MySQL server và các chương trình client, h$ thBng cXa ngư=i dùng cTn ph!i hƒ trH OpenSSL và phiên b!n MySQL ph!i ty 4.0.0 tr' lên Đ có các k t nBi b!o m#t ñ làm vi$c vMi MySQL, ngư=i dùng cTn ph!i thAc hi$n các công vi$c sau :
Trang 39Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
1 Cài ñ^t thư vi$n OpenSSL
2 Khi ngư=i dùng c u hình MySQL, ch?y configure script vMi các lAa ch n with vio và with openssl
3 Ph!i chLc r|ng ngư=i dùng nâng c p các b!n phân quyFn bao gCm các c]t SSL related trong b!ng mysql.user Đây là ñiFu cTn thi t n u các b!n phân quyFn cXa ngư=i dùng có ty các phiên b!n trưMc 4.0.0 ThX tUc nâng c p
4 Đ ki m tra mysql server có hƒ trH OpenSSL hay không, ki m tra giá tr cXa bi n h$ thBng have_openssl:
mysql> SHOW VARIABLES LIKE 'have_openssl';
1 Client g'i yêu cTu hay data tMi server
2 Server g'i l?i cho client public key vMi các certificate cXa nó
3 Client sb ki m tra certificate ñưHc c p phát b'i party tin c#y (thư=ng lT root CA tin c#y), ñó là các certificate còn giá tr và certificate ph!i liên quan ñ n (site contacted)
4 Sau ñó client sb dùng pubic key ñ mã hóa secret key ñưHc l y ngPu nhiên Và g'i nó tMi cho server cùng vMi thông tin ñã ñưHc mã hóa b|ng secret key
Trang 40Tìm hi u và phát tri n cơ ch b!o m#t h$ qu!n tr cơ s' d) li$u MySQL
5 Server sb gi!i mã l y secret key (symmetric key) b|ng chính private key cXa nó và dùng nó gi!i mã thông tin mà client ñã g'i qua
6 Server l?i mã hóa thông tin mà nó tr! l=i cho client b|ng chính secret key
và g'i thông tin ñã mã hóa cho client
7 Client gi!i mã l?i thông tin tr! l=i vya nh#n ñưHc b|ng secret key và hi n
th thông tin
3.2.3.3 Các l„a ch…n phân quycn c3a SSL MySQL có th ki m tra các thu]c tính chQng thAc X509 thêm vào trong sA chQng thAc thông thư=ng cơ b!n là dAa trên username và password ĐBi vMi các lAa ch n SSL related cho tài kho!n MySQL, s\ dUng m$nd ñF REQUIRE cXa cú pháp GRANT satement
Các kh! năng khác nhau cho giMi h?n các lo?i k t nBi tài Kho!n :
N u tài kho!n không có các yêu cTu SSL hay X509, các k t nBi gi!i mã ñưHc cho phép n u username và password có giá tr Tuy nhiên, các k t nBi mã hoá cũng có th s\ dUng t?i lAa ch n cXa client, n u client có chQng thAc chính xác và các key file
LAa ch n REQUIRE SSL giMi h?n server chd cho phép các k t nBi mã hóa SSL cho các tài kho!n Chú ý r|ng lAa ch n này có th b bc qua n u như có b t kỳ dòng d) li$u ACL mà cho phép các k t nBi non SSL mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
> IDENTIFIED BY 'goodsecret' REQUIRE SSL;
REQUIRE X509 có nghĩa là client ph!i có chQng thAc có giá tr tuy nhiên chQng thAc chính xác, ngư=i yêu cTu, và chX ñF là không quan
tr ng Chd có yêu cTu mà có th thAc hi$n ñ ki m tra ch) ký cXa nó vMi