1. 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
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ĂŁ ngu n m
c a mySQL
2. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 1
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
Khu t Th Ng c BĂch -0112046
LĂȘ Th TrĂșc LĂąm -0112101
TĂŹm hi u vĂ phĂĄt tri n
cÆĄ ch b o m t trĂȘn mĂŁ ngu n m
c a mySQL
LU N VÄN C NHĂN TIN H C
GIĂO VIĂN HÆŻ NG D N:
Th.S: PH M TH B CH HU
NIĂN KHOĂ: 2001-2005
3. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 2
GIĂO VIĂN HÆŻ NG D N
...............................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 3
NH N XĂT C A GIĂO VIĂN PH N BI N
...............................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
6. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 5
M C L C
ChÆ°ÆĄng 1. Gi i thi u..................................................................................12
1.1. T ng quan b o m t ...................................................................12
1.1.1. Nh n nh v b o m t...............................................................12
1.1.2. CĂĄc chi u hÆ° ng 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 gi i vĂ Vi t Nam......17
1.2.1. TrĂȘn th gi i : nhu c u ang gia tÄng.......................................17
1.2.2. Vi t Nam...............................................................................18
1.3. Xu hÆ° ng mĂŁ ngu n m ...........................................................19
1.3.1. L i Ăch c a ph n m m mĂŁ ngu n m (PMNM) .......................19
1.3.2. Vi t Nam...................................................................................19
1.4. M c tiĂȘu c a 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 Æ° c).......................21
2.1.1. Gi i 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 Æ° c s d ng ngĂ y nay .....................23
2.1.4. ĂĄnh giĂĄ phÆ°ÆĄng phĂĄp mĂŁ hĂła quy Æ° c...................................23
2.2. Public Key Crytography (MĂŁ hoĂĄ cĂŽng khai) ..........................24
2.2.1. Gi i 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
2.3.1. Gi i thi u hĂ m BÄm..................................................................26
7. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 6
2.3.2. TĂnh ch t c a hĂ m bÄm.............................................................27
2.3.3. C u trĂșc c a hĂ m bÄm ..............................................................28
2.3.4. Gi i thi u m t s hĂ m bÄm ......................................................28
ChÆ°ÆĄng 3. H qu n tr cÆĄ s d li u MySQL ............................................30
3.1. Gi i thi u h qu n tr cÆĄ s d li u MySQL............................30
3.1.1. Gi i 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Ă gi i h n .................................................33
3.1.7. K t n i ......................................................................................34
3.1.8. M c h n nh............................................................................35
3.2. CÆĄ ch b o m t trong MySQL .................................................35
3.2.1. T ng 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 xu t ..............................................................70
4.2.1. SHA-224, SHA-256, SHA-384 vĂ SHA-512...........................70
8. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 7
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 c u ch c nÄng chÆ°ÆĄng trĂŹnh..............................................89
5.2. ChÆ°ÆĄng trĂŹnh cĂ i t .................................................................89
5.2.1. HÆ° ng d n cĂ i t MySQL t source code ..............................89
5.2.2. HÆ° ng d n th c thi chÆ°ÆĄng trĂŹnh .............................................94
5.3. GĂ i 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 ph ....................................................................102
5.4. K t qu th c nghi m...............................................................104
ChÆ°ÆĄng 6. K t lu n vĂ hÆ° ng 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Æ° ng 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 ng d ng...........................................................107
TĂ i li u tham kh o..........................................................................................109
Ph l câŠ........................................................................................................112
Ph l c A Thu t toĂĄn SHA ............................................................................112
A.1. H ng s s d ng trong SHA ..............................................................112
A.1.1 H ng s c a SHA-1......................................................................112
A.1.2 H ng s c a SHA-224 vĂ SHA-256 ............................................112
9. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 8
A.1.3 H ng s c a SHA-384 vĂ SHA-512 ............................................113
A.2 GiĂĄ tr kh i t o trong SHA..................................................................115
A.3 CĂĄc thao tĂĄc ti n 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
Ph l c B Thu t toĂĄn Tiger............................................................................125
Ph l c C T n cĂŽng SHA-1 ...........................................................................128
10. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 9
Danh sĂĄch cĂĄc b ng
B ng 1.1.2 CĂĄc chi u hÆ° ng b o m t ..................................................................14
B ng 2.2.2 : KĂch thÆ° c khĂła gi a mĂŁ hĂła quy Æ° c vĂ mĂŁ hĂła khĂła cĂŽng khai
v i cĂčng m c b o m t.....................................................................................25
B ng 3.1.6 KĂch thÆ° c gi i h n c a file h th ng trong MySQL........................34
B ng 3.2.4.2.a Danh sĂĄch cĂĄc c t c a 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 quy n ...........................................51
B ng 3.2.4.3.a Danh sĂĄch cĂĄc c quy n.............................................................53
B ng 3.2.4.3.b Danh sĂĄch cĂĄc c quy n qu n tr ...............................................54
B ng 4.2.1.1 CĂĄc tĂnh ch t c a 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
14. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 13
S t n cĂŽng c a cĂĄc hacker vĂ o cĂĄc d li u nh m phĂĄ ho i d li u ph c
v cho cĂĄc m c Ă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 c n Æ° c b o v ngay trong csdl, trĂȘn Æ° ng m ng trĂĄnh b ĂĄnh
c p, b thay i.
CĂĄc nh n nh sai l m v â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
c p. NhÆ°ng th c t thĂŹ 80% d li u b m t lĂ do nh ng ngÆ° i bĂȘn trong h
th ng gĂąy ra.
Ch c n mĂŁ hĂła d li u lĂ ĂŁ kh nÄng b o m t d li u. Th c ch t mĂŁ
hĂła ch lĂ m t bÆ° c trong m t cÆĄ ch b o m t mĂ thĂŽi.
Do Ăł, ta c n ph i cĂł cÆĄ ch b o m t thĂch h p cho h th ng. M t cÆĄ ch b o
m t thÆ° ng g m cĂĄc v n sau :
MĂŁ hĂła d li u.
CĂĄch th c trao i thĂŽng tin.
CĂĄch th c lÆ°u tr thĂŽng tin.
CĂĄc phÆ°ÆĄng phĂĄp ch ng th c user.
CĂĄch th c nh n bi t quy n h p phĂĄp c a user i v i thĂŽng tin d li u.
1.1.2. CĂĄc chi u hÆ° ng b o m t thĂŽng tin :
ThĂŽng tin thÆ° ng Æ° c lÆ°u t i cĂĄc server vĂ Æ° c t ch c thĂ nh cĂĄc file v t lĂœ
cĂł c u trĂșc vĂ Æ° c qu n tr b ng m t h qu n tr cÆĄ s d li u thĂch h p. ThĂŽng
tin Æ° c truy n trĂȘn cĂĄc Æ° ng m ng s Æ° c b o v theo cĂĄc cÆĄ ch riĂȘng.
25. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 24
H n ch kh nÄng qu n lĂœ khoĂĄ : i v i t ng ngÆ° i c n liĂȘn l c vĂ v i
t ng n i dung thĂŽng tin c n ph i cĂł m t khoĂĄ quy Æ° c mĂŁ hoĂĄ vĂ gi i
mĂŁ. Do Ăł n u trĂȘn 1 m ng liĂȘn l c l n, s lÆ° ng khoĂĄ c n ph i lÆ°u gi r t
nhi u nĂȘn n y sinh v n qu n lĂœ khoĂĄ quy Æ° c vĂ b o m t thi t b khoĂĄ
quy Æ° c.
2.2. Public Key Crytography (MĂŁ hoĂĄ cĂŽng khai)
2.2.1. Gi i thi u chung
HĂŹnh 2.2.1 Public Key Crytography
NgÆ° i g i A s d ng khoĂĄ cĂŽng khai (h mĂŁ khĂŽng i x ng) pk c a ngÆ° i
nh n B mĂŁ hoĂĄ d li u g c x. D li u sau khi Æ° c mĂŁ hoĂĄ, y Æ° c truy n cho
B. NgÆ° i nh n B sau khi nh n Æ° c y s s d ng khoĂĄ riĂȘng sk c a mĂŹnh gi i
mĂŁ d li u vĂ nh n l i d li u ngu n x ban u.
N u 1 ngÆ° i C cĂł Æ° c d li u ĂŁ mĂŁ hoĂĄ y vĂ khoĂĄ cĂŽng khai pk thĂŹ C v n
khĂŽng th gi i mĂŁ Æ° c y. Do khoĂĄ riĂȘng sk Æ° c gi bĂ m t hoĂ n toĂ n, ch cĂł
NgÆ° i B bi t Æ° c sk vĂ sk khĂŽng Æ° c giao d ch hay truy n i nĂȘn r i ro d n
n vi c khoĂĄ sk b ĂĄnh c p lĂ r t th p.
Gi i thi u m t s thu t toĂĄn : EEC, RSA
2.2.2. ĂĄnh giĂĄ phÆ°ÆĄng phĂĄp mĂŁ hĂła cĂŽng khai
H th ng mĂŁ hĂła khĂła cĂŽng khai ra i ĂŁ gi i quy t cĂĄc h n ch c a mĂŁ hĂła
quy Æ° c. MĂŁ hĂła khĂła cĂŽng khai s d ng m t c p khĂła, m t khĂła (thĂŽng thÆ° ng
26. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 25
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 i khĂła do khĂła gi i mĂŁ
(khĂła riĂȘng) khĂŽng c n ph i truy n ho c chia s v i ngÆ° i khĂĄc. NgoĂ i ra, m i
ngÆ° i ch c n s h u m t c p khĂła cĂŽng khai â khĂła riĂȘng vĂ ngÆ° i g i thĂŽng
tin ch c n gi khĂła cĂŽng khai c a ngÆ° i nh n do Ăł s lÆ° ng khĂła c n ph i
qu n lĂœ gi m khĂĄ nhi u. M i ngÆ° i ch c n lÆ°u tr b o m t m t khĂła riĂȘng c a
chĂnh mĂŹnh.
Tuy nhiĂȘn, do nhu c u 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Æ° c khĂła cĂŽng khai â khĂła riĂȘng
l n hÆĄn r t nhi u so v i khĂła cĂŽng khai. Do Ăł t c mĂŁ hĂła khĂła cĂŽng khai
ch m hÆĄn t c mĂŁ hĂła khĂła quy Æ° c. T c mĂŁ hĂła b ng ph n m m c a thu t
toĂĄn DES nhanh hÆĄn kho ng 100 l n so v i mĂŁ hĂła RSA v i cĂčng m c b o
m t.
KĂch thÆ° c khĂła (tĂnh b ng bit)
KhĂła cĂŽng khai 56 80 112 128 192 256
RSA/DSA 512 1K 2K 3K 7.5K 15K
ECC 160 224 256 384 512
B ng 2.2.2 : KĂch thÆ° c khĂła gi a mĂŁ hĂła quy Æ° c vĂ mĂŁ hĂła khĂła cĂŽng
khai v i cĂčng m c b o m t.
27. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 26
2.3. Hash Function (hĂ m BÄm)
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 i m t thĂŽng i p cĂł dĂ i b t kỳ
thĂ nh m t dĂŁy bit cĂł dĂ i c nh (tĂčy thu c vĂ o thu t toĂĄn bÄm). DĂŁy bit nĂ y
Æ° c 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 u.
D dĂ ng nh n th y r ng hĂ m bÄm h khĂŽng ph i lĂ m t song ĂĄnh. Do Ăł, v i
thĂŽng i p x b t kỳ, t n t i thĂŽng i p xâ â x sao cho h(x) = h(xâ). LĂșc nĂ y, ta
nĂłi r ng âcĂł s ng x y raâ.
M t hĂ m bÄm h Æ° c g i lĂ an toĂ n (hay âĂt b ng â) khi khĂŽng th xĂĄc
nh Æ° c (b ng cĂĄch tĂnh toĂĄn) c p thĂŽng i p x vĂ xâ th a mĂŁn x â xâ vĂ h(x) =
h(xâ). TrĂȘn th c t , cĂĄc thu t toĂĄn bÄm lĂ hĂ m m t chi u, do Ăł, r t khĂł xĂąy
d ng l i thĂŽng i p ban u t thĂŽng i p rĂșt g n.
HĂ m bÄm giĂșp xĂĄc nh Æ° c tĂnh toĂ n v n d li u c a thĂŽng tin : m i thay
i, dĂč lĂ r t nh , trĂȘn thĂŽng i p cho trÆ° c, vĂ d nhÆ° i giĂĄ tr 1 bit, u lĂ m
thay i thĂŽng i p rĂșt g n tÆ°ÆĄng ng. 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ĂŁ ch ng nh n thĂŽng i p, phĂĄt sinh s
ng u nhiĂȘn, t o ra khĂła cho quĂĄ trĂŹnh mĂŁ hĂłaâŠ
30. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 29
NgĂ y 26/08/2002, Vi n TiĂȘu chu n vĂ CĂŽng ngh qu c gia c a Hoa Kỳ
(National Institute of Standard and Technology - NIST) ĂŁ xu t h th ng
chu n hĂ m bÄm an toĂ n (Secure Hash Standard) g m 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 th ng 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 xu t nÄm
2001 vĂ Æ° c cĂŽng nh n tĂnh b o m t t i h i th o b o m t NESSIE t i Lund,
Th y i n vĂ o ngĂ y 26/02/2003, t chu n ISO ISO/IEC 10118-3.
33. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 32
3.1.3. CĂĄc ki u d 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 tr toĂ n b cĂĄc toĂĄn t vĂ ch c 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;
35. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 34
l n t i thi u c a index lĂ 1000 bytes (500 bytes i v i cĂĄc phiĂȘn b n
trÆ° c 4.1.2). M t index cĂł th s d ng ti n t (prefix) c a c t cĂł cĂĄc ki u
d li u CHAR, VARCHAR, BLOB, hay TEXT.
âą Gi i h n cĂĄc b ng trong MySQL
MySQL 3.22 cĂł gi i h n c a table lĂ 4GB. V i k thu t lÆ°u tr MySIAM
trong MySQL 3.23, kĂch thÆ° c t i a c a table Æ° c tÄng 263
byte.
Operating System File-size 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 h n c a file h th ng trong MySQL
3.1.7. K t n i
âą Clients cĂł th k t n i v i MySQL server b ng cĂĄch s d ng nh ng socket
TCP/IP trĂȘn b t kĂŹ n n nĂ o. TrĂȘn n n windows dĂČng NT, client cĂł th k t
n i s d ng pipes. TrĂȘn n n Unix, clients k t n i s d ng Unix domain
socket files.
âą Windows cĂł h tr k t n i chia s b nh n u kh i ng v i l a ch n
share-memory. Client cĂł th k t n i qua b nh chia s b ng cĂĄch s d ng
l a ch n --protocol=memory.
39. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 38
1. CĂ i t thÆ° vi n OpenSSL
2. Khi ngÆ° i dĂčng c u hĂŹnh MySQL, ch y configure script v i cĂĄc l a ch n
--with-vio vĂ -with-openssl.
3. Ph i ch c r ng ngÆ° i dĂčng nĂąng c p cĂĄc b n phĂąn quy n bao g m cĂĄc c t
SSL-related trong b ng mysql.user. Ăąy lĂ i u c n thi t n u cĂĄc b n phĂąn
quy n c a ngÆ° i dĂčng cĂł t cĂĄc phiĂȘn b n trÆ° c 4.0.0. Th t c nĂąng c p
4. ki m tra mysql server cĂł h tr OpenSSL hay khĂŽng, ki m tra giĂĄ tr
c a bi n h th ng have_openssl:
mysql> SHOW VARIABLES LIKE 'have_openssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | YES |
+---------------+-------+
N u giĂĄ tr lĂ yes, server h tr cĂĄc k t n i OpenSSL
3.2.3.2. CĂĄch th c ho t ng c a SSL protocol
SSL ho t ng g m 7 bÆ° c sau :
1. Client g i yĂȘu c u hay data t i server
2. Server g i l i cho client public key v i cĂĄc certificate c a nĂł.
3. Client s ki m tra certificate Æ° c c p phĂĄt b i party tin c y (thÆ° ng l
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 s dĂčng pubic key mĂŁ hĂła secret key Æ° c l y ng u
nhiĂȘn. VĂ g i nĂł t i cho server cĂčng v i thĂŽng tin ĂŁ Æ° c mĂŁ hĂła b ng
secret key.
44. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 43
--ssl-key=file_name
TĂȘn c a file khoĂĄ SSL dĂčng thi t l p k t n i an toĂ n
3.2.3.5. K t n i v i MySQL Remotely t Windows v i SSH
Ăąy lĂ ghi chĂș v cĂĄch k t n i cĂł m t k t n i an toĂ n t i MySQL server
xa v i SSH
1. CĂ i t SSH client trĂȘn mĂĄy Windowns c a ngÆ° i dĂčng.
2. Start Win ows SSH client c a ngÆ° i dĂčng.
t Host_Name = yourmysqlserver_URL_or_IP.
t userid=your_userid Äng nh p vĂ o server c a ngÆ° i dĂčng. GiĂĄ
tr userid nĂ y cĂł th khĂŽng gi ng nhÆ° username c a tĂ i kho n MySQL c a
ngÆ° i dĂčng.
3. t port forwarding. Th c hi n remote forward ( t local_port: 3306,
remote_host: yourmysqlservername_or_ip, remote_port: 3306) ho c local
forward ( t Set port: 3306, host: localhost, remote port: 3306).
4. LÆ°u m i th , m t khĂĄc ngÆ° i dĂčng s ph i th c hi n l i trong l n k ti p.
5. Äng nh p vĂ o server c a ngÆ° i dĂčng v i SSH session ngÆ° i dĂčng v a
m i t o.
6. TrĂȘn mĂĄy Windows c a ngÆ° i dĂčng, start vĂ i ng d ng ODBC (ch ng h n
nhÆ° Access).
7. T o m i file trong Windows vĂ link t i MySQL s d ng Æ° ng d n
ODBC cĂčng v i cĂĄch ngÆ° i dĂčng thÆ° ng hay lĂ m, tr lo i trong localhost
cho MySQL host server, ch khĂŽng ph i mysql server name c a ngÆ° i
dĂčng. NgÆ° i dĂčng c n ph i cĂł k t n i ODBC t i MySQL, mĂŁ hoĂĄ dĂčng
SSH.
46. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 45
columns_priv
tables_priv
Procs_priv
NgÆ° i dĂčng cĂł th th c thi cĂĄc cĂąu l nh trĂȘn cĂĄc b ng nĂ y nhÆ° b t kĂŹ b ng
nĂ o trong cĂĄc CSDL bĂŹnh thÆ° ng khĂĄc.
CĂĄc b ng nĂ y trong CSDL mysql cĂČn Æ° c g i lĂ cĂĄc b ng phĂąn quy n
(Grant tables).
a) Gi i thi u cĂĄc b ng trong csdl mysql
B ng user, db, host
Table Name user db host
Scope columns Host Host Host
User Db Db
Password User
Privilege columns Select_priv Select_priv Select_priv
Insert_priv Insert_priv Insert_priv
Update_priv Update_priv Update_priv
Delete_priv Delete_priv Delete_priv
Index_priv Index_priv Index_priv
Alter_priv Alter_priv Alter_priv
Create_priv Create_priv Create_priv
Drop_priv Drop_priv Drop_priv
Grant_priv Grant_priv Grant_priv
Create_view_priv Create_view_priv Create_view_priv
Show_view_priv Show_view_priv Show_view_priv
47. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 46
Create_routine_priv Create_routine_priv
Alter_routine_priv Alter_routine_priv
References_priv References_priv References_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Show_db_priv
Super_priv
Create_tmp_table_priv Create_tmp_table_priv Create_tmp_table_priv
Lock_tables_priv Lock_tables_priv Lock_tables_priv
Execute_priv
Repl_slave_priv
Repl_client_priv
Security columns ssl_type
ssl_cipher
X509_issuer
X509_subject
Resource control
columns
max_questions
max_updates
max_connections
max_user_connections
B ng 3.2.4.2.a Danh sĂĄch cĂĄc c t c a b ng user, host, db trong MySQL
48. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 47
CĂĄc c t ssl_type, ssl_cipher, x509_issuer, and x509_subject columns
Æ° c thĂȘm vĂ o t MySQL 4.0.0.
CĂĄc c t Create_tmp_table_priv, Execute_priv, Lock_tables_priv,
Repl_client_priv, Repl_slave_priv, Show_db_priv, Super_priv,
max_questions, max_updates, and max_connections Æ° c thĂȘm vĂ o t
MySQL 4.0.2. tuy nhiĂȘn Execute_priv khĂŽng Æ° c dĂčng cho t i MySQL
5.0.3.
CĂĄc c t The Create_view_priv and Show_view_priv Æ° c thĂȘm vĂ o t
MySQL 5.0.1.
CĂĄc c t Create_routine_priv, Alter_routine_priv vĂ
max_user_connections Æ° c thĂȘm vĂ o t MySQL 5.0.3.
Server s d ng thĂŽng tin trong c 3 b ng nĂ y trong c 2 giai o n i u
khi n truy c p.
B ng tables_priv, columns_priv
Trong su t giai o n 2 c a i u khi n truy c p, server ki m tra cĂĄc yĂȘu
c u ch c r ng client Æ°a ra yĂȘu c u cĂł quy n th c hi n yĂȘu c u Ăł.
Khi Ăł server d a vĂ o cĂĄc thĂŽng tin trong cĂĄc b ng user, db, host. NgoĂ i ra
server cĂČn tham kh o thĂȘm trong cĂĄc b ng tables_priv and columns_priv.
cĂĄc b ng nĂ y cung c p cĂĄc quy n riĂȘng c n thi t i v i m c table vĂ
column.
49. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 48
Table Name tables_priv columns_priv
Scope columns Host Host
Db Db
User User
Table_name Table_name
Column_name
Privilege columns Table_priv Column_priv
Column_priv
Other columns Timestamp Timestamp
Grantor
B ng 3.2.4.2.b B ng tables_priv, columns_priv trong MySQL
C t Timestamp vĂ Grantor khĂŽng s d ng.
B ng procs_priv :
T phiĂȘn 5.0.3 CSDL mysql cĂł thĂȘm b ng procs_priv. B ng nĂ y Æ° c
dĂčng th m nh l i cĂĄc yĂȘu c u mĂ Æ° c lÆ°u tr thÆ° ng xuyĂȘn.
Table Name Procs_priv
Scope columns Host
Db
User
Routine_name
Privilege columns Proc_priv
Other columns Timestamp
Grantor
B ng 3.2.4.2.c Danh sĂĄch cĂĄc c t c a b ng Procs_priv trong MySQL
50. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 49
b) Ch c nÄng vĂ c u trĂșc c a cĂĄc column trong cĂĄc table c a csdl mysql
Ch c nÄng
M i table u cĂł cĂĄc c t ph m vi (scope columns) vĂ cĂĄc c t quy n
(privilege column).
CĂĄc c t ph m vi dĂčng ch nh rĂ” ph m vi cho m i m c
c a table hay chĂnh lĂ ng c nh mĂ dĂČng d li u ĂĄp d ng.
CĂĄc c t quy n ch nh thĂŽng tin v cĂĄc quy n trĂȘn m t m c
c a CSDL tĂčy theo t ng table.
Server k t h p cĂĄc thĂŽng tin trong nhi u b ng phĂąn quy n th c hi n
hoĂ n thĂ nh vi c mĂŽ t cĂĄc c quy n c a user.
N i dung c a cĂĄc column
CĂĄc c t ph m vi :
Host : TĂȘn mĂĄy ngÆ° i dĂčng. Trong MySQL, ngÆ° i dĂčng cĂł th
gi i h n s ngÆ° i truy c p d a vĂ o location mĂ ngÆ° i Ăł k t n i.
User : TĂȘn mĂ ngÆ° i dĂčng dĂčng truy c p vĂ o MySQL
Password : m t kh u ngÆ° i dung.
Db : TĂȘn CSDL
Table_name : TĂȘn b ng trong CSDL
Column_name : TĂȘn c a c t trong m t b ng trong CSDL
CĂĄc c t quy n : LÆ°u cĂĄc thĂŽng tin v cĂĄc quy n c a user trĂȘn
t ng m c c a CSDL tĂčy theo nĂł thu c b ng nĂ o.
C u trĂșc cĂĄc c t
51. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 50
CĂĄc c t ph m vi :
Column Name Type
Host CHAR(60)
User CHAR(16)
Password CHAR(16)
Db CHAR(64)
Table_name CHAR(64)
Column_name CHAR(64)
Routine_name CHAR(64)
B ng 3.2.4.2.d Ph m vi cĂĄc c t trong cĂĄc b ng
i v i cĂĄc phiĂȘn b n MySQL trÆ° c 3.23, c t Db lĂ
CHAR(32) trong m t vĂ i table vĂ lĂ CHAR(60) trong m t s
table khĂĄc.
CĂĄc c t quy n
Trong cĂĄc b ng user, db, host, m i quy n Æ° c li t kĂȘ
trong cĂĄc c t quy n khĂĄc nhau Æ° c khai bĂĄo nhÆ° ENUM
(âNâ, âYâ) giĂĄ tr m c nh âNâ. Trong cĂĄc t , m i quy n cĂł
th Æ° c disabled ho c enabled, v i m c nh lĂ disabled.
Trong cĂĄc table tables_priv, columns_priv vĂ procs_priv,
cĂĄc c t quy n Æ° c khai bĂĄo nhÆ° lĂ cĂĄc c t SET columns.
M i dĂČng c a table ch ra m t quy n c a user mĂ thĂŽi. Do Ăł
bi t Æ° c y cĂĄc quy n c a user trĂȘn m t table,
53. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 52
vĂ c t hÆĄn lĂ m c csdl. CĂĄc quy n c quy n ĂŁ c p cho m c
b ng thĂŹ ĂĄp d ng cho b ng vĂ cho t t c cĂĄc c t trong b ng. CĂĄc
c quy n Æ° c c p cho t i c t nĂ o thĂŹ nĂł ch cĂł tĂĄc d ng cho c t Ăł
mĂ thĂŽi.
B ng procs_priv ĂĄp d ng cho cĂĄc th t c lÆ°u tr (stored routines).
c quy n ĂŁ c p t i m c th t c ch ĂĄp d ng cho cĂĄc th t c ÆĄn.
3.2.4.3. CĂĄc quy n MySQL h tr
CĂĄc c quy n :
Privilege Column Context
CREATE Create_priv databases, tables, or indexes
DROP Drop_priv databases or tables
GRANT Grant_priv databases, tables, or stored routines
REFERENCES References_priv databases or tables
ALTER Alter_priv tables
DELETE Delete_priv tables
INDEX Index_priv tables
INSERT Insert_priv tables
SELECT Select_priv tables
UPDATE Update_priv tables
CREATE VIEW Create_view_priv views
SHOW VIEW Show_view_priv views
ALTER ROUTINE Alter_routine_priv stored routines
CREATE ROUTINE Create_routine_priv stored routines
EXECUTE Execute_priv stored routines
CREATE Create_tmp_table_priv server administration
55. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 54
B ng sau th hi n cĂĄc cĂąu l nh SQL tÆ°ÆĄng ng v i c quy n qu n tr
Æ° c th c thi :
Privilege Commands Permitted to Privilege Holders
RELOAD
flush-hosts, flush-logs, flush-privileges, flush-status,
flush-tables, flush-threads, refresh, reload.
SHUTDOWN shutdown
PROCESS processlist
SUPER kill
B ng 3.2.4.3.b Danh sĂĄch cĂĄc c quy n qu n tr
L nh reload th c hi n vi c c l i cĂĄc b ng phĂąn quy n vĂ o trong b nh .
3.2.4.4. i u khi n truy c p c quy n
Khi ngÆ° i dĂčng k t n i v i CSDL MySQL :
MySQL tĂŹm xem trong b ng user cĂł hostname, username, and password
Ăł khĂŽng.
N u cĂł, ngÆ° i dĂčng Æ° c quy n truy c p vĂ o h th ng. Khi ngÆ° i Ăł
th c thi m t cĂąu query, trÆ° c tiĂȘn MySQL xem trong b ng user xem
ngÆ° i dĂčng cĂł nh ng quy n gĂŹ. N u ngÆ° i dĂčng nĂ y khĂŽng cĂł c quy n
trong b ng Ăł thĂŹ MySQL s tĂŹm ti p trong b ng db. H th ng s d a
trĂȘn the hostname, username, vĂ CSDL xem cĂĄc c quy n mĂ ngÆ° i nĂ y
cĂł. N u trong b ng nĂ y khĂŽng cĂł quy n th c thi cĂąu truy v n thĂŹ
MySQL s tĂŹm ti p trong b ng tables_priv vĂ sau Ăł lĂ b ng
columns_priv xem ngÆ° i Ăł cĂł quy n th c thi cĂąu truy v n. N u khĂŽng
tĂŹm th y thĂŹ h th ng s bĂĄo l i.
58. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 57
QuĂĄ trĂŹnh ch ng th c password :
1. Khi nh n Æ° c yĂȘu c u k t n i t client, Server s t o m t message
ng u nhiĂȘn public_seed vĂ g i nĂł cho client.
2. Client nh n public_seed. Sau Ăł dĂčng thu t toĂĄn bÄm SHA-1 bÄm hai
l n trĂȘn password c a mĂŹnh giĂĄ tr nh n Æ° c lĂ hash_stage2. Sau Ăł
l i t o giĂĄ tr bÄm h n h p d a trĂȘn public_seed vĂ hash_stage2 r i
xor nĂł v i hash_stage1 (lĂ giĂĄ tr bÄm SHA-1 c a password l n 1).
Chu i nh n Æ° c cu i cĂčng lĂ reply. Chu i nĂ y Æ° c g i l i cho
server.
3. Server nh n Æ° c giĂĄ tr reply do client tr v vĂ dĂčng nĂł ki m tra
password Ășng hay sai. TrÆ° c tiĂȘn server s l y giĂĄ tr c a password
trong CSDL mysql lĂ hash_stage2. Sau Ăł server th c hi n vi c bÄm
h n h p hash_stage2 vĂ public_seed. Chu i giĂĄ tr nh n Æ° c Æ° c
em xor v i reply. Khi Ăł k t qu ta nh n Æ° c chĂnh lĂ hash_stage1
( Ăąy chĂnh lĂ giĂĄ tr nh n Æ° c do bÄm password l n th nh t). L i
dĂčng SHA-1 bÄm hash_stage1 nh n Æ° c giĂĄ tr bÄm m i
candidate_hash2. N u candidate_hash2 b ng v i hash_stage2 thĂŹ
password lĂ Ășng ngÆ° c l i password lĂ sai.
60. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 59
c p quy n cho ngÆ° i dĂčng. N u ngÆ° i dĂčng khĂŽng Æ° c c p quy n c p
nĂ y thĂŹ MySQl s bĂĄo l i. QuĂĄ trĂŹnh nĂ y di n ra r t nhanh n n i ta
khĂŽng th bi t Æ° c. Do Ăł CSDL c a ngÆ° i dĂčng cĂł an toĂ n cao. HĂŹnh
dÆ° i Ăąy mĂŽ t quĂĄ trĂŹnh ki m tra :
HĂŹnh 3.2.4.4 Ki m tra yĂȘu c u
61. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 60
ChÆ°ÆĄng 4.Thu t toĂĄn b o m t password trong MySQL
ChÆ°ÆĄng nĂ y s trĂŹnh bĂ y v thu t toĂĄn b o m t password trong MySQL-
SHA-1: Ăœ tÆ° ng, cĂĄc bÆ° c c a thu t toĂĄn, ĂĄnh giĂĄ Æ°u khuy t i m. ng th i,
chĂșng tĂŽi xu t m t s thu t toĂĄn t t hÆĄn cĂł th h n ch Æ° c khuy t i m c a
thu t toĂĄn hi n t i.
T phiĂȘn b n 4.1 tr v sau MySQL mĂŁ hĂła password b ng thu t toĂĄn
SHA-1
4.1. Thu t toĂĄn SHA-1
4.1.1. Ă tÆ° ng thu t toĂĄn BÄM SHA
CĂĄc thu t toĂĄn hĂ m bÄm SHA g m 2 bu c: ti n x lĂœ vĂ tĂnh toĂĄn giĂĄ tr bÄm.
BÆ° c ti n x lĂœ bao g m cĂĄc thao tĂĄc:
M r ng thĂŽng i p
PhĂąn tĂch thĂŽng i p ĂŁ m r ng thĂ nh cĂĄc kh i m bit.
Kh i t o giĂĄ tr bÄm ban u.
BÆ° c tĂnh toĂĄn giĂĄ tr bÄm bao g m cĂĄc thao tĂĄc:
LĂ m N l n cĂĄc cĂŽng vi c sau:
T o b ng phĂąn b thĂŽng i p (message schedule) t kh i th i.
DĂčng b ng phĂąn b thĂŽng i p cĂčng v i cĂĄc hĂ m, h ng s , cĂĄc
thao tĂĄc trĂȘn t t o ra giĂĄ tr bÄm i.
S d ng giĂĄ tr bÄm cu i cĂčng t o thĂŽng i p rĂșt g n.
ThĂŽng i p M Æ° c m r ng trÆ° c khi th c hi n bÄm. M c Ăch c a vi c m
r ng nĂ y nh m m b o thĂŽng i p m r ng cĂł dĂ i lĂ b i s c a 512 ho c
1024 bit tĂčy thu c vĂ o thu t toĂĄn.
62. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 61
Sau khi thĂŽng i p ĂŁ m r ng, thĂŽng i p c n Æ° c phĂąn tĂch thĂ nh N kh i
m-bit trÆ° c khi th c hi n bÄm.
i v i SHA-1 vĂ SHA-256, thĂŽng i p m r ng Æ° c phĂąn tĂch thĂ nh N kh i
512-bit M(1), M(2),..., M(N). Do Ăł 512 bit c a kh i d li u u vĂ o cĂł th
Æ° c th hi n b ng 16 t 32-bit, M0
(i)
ch a 32 bit u c a kh i thĂŽng i p i, M0
(i)
ch a 32 bit k ti p...
i v i SHA-384 vĂ SHA-512, thĂŽng i p m r ng Æ° c phĂąn tĂch thĂ nh N
kh i 1024-bit M(1), M(2),..., M(N). Do Ăł 1024 bit c a kh i d li u u vĂ o cĂł
th Æ° c th hi n b ng 16 t 64-bit, M0
(i)
ch a 64 bit u c a kh i thĂŽng i p i,
M0
(i)
ch a 64 bit k ti p...
TrÆ° c khi th c hi n 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Ăčy thu c vĂ o
kĂch thÆ° c thĂŽng i p rĂșt g n. CĂĄc giĂĄ tr bÄm ban u c a cĂĄc thu t toĂĄn SHA
Æ° c trĂŹnh bĂ y trong ph n Ph l c A.
CĂĄc c p thu t toĂĄn SHA-224 vĂ SHA-256; SHA-384 vĂ SHA-512 cĂł cĂĄc thao
tĂĄc th c hi n gi ng nhau, ch khĂĄc nhau v s lÆ° ng bit k t qu c a thĂŽng i p
rĂșt g n. NĂłi cĂĄch khĂĄc, SHA-224 s d ng 224 bit u tiĂȘn trong k t qu thĂŽng
i p rĂșt g n sau khi ĂĄp d ng thu t toĂĄn SHA-256. TÆ°ÆĄng t SHA-384 s d ng
384 bit u tiĂȘn trong k t qu thĂŽng i p rĂșt g n sau khi ĂĄp d ng thu t toĂĄn
SHA-512.
63. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 62
CĂĄc tham s , kĂœ hi u vĂ cĂĄc thu t ng Æ° c s d ng trong SHA.
Tham s :
a, b,c, ...,h CĂĄc bi n lĂ cĂĄc t w bit s d ng trong vi c tĂnh toĂĄn giĂĄ tr bÄm
H(i).
H(i) GiĂĄ tr bÄm th i. H(0) lĂ giĂĄ tr bÄm kh i u. H(N) lĂ giĂĄ tr bÄm
cu i cĂčng vĂ Æ° c s d ng xĂĄc nh thĂŽng i p rĂșt g n.
Kt H ng s s d ng cho vĂČng l p th t trong vi c th c hi n bÄm.
k S lÆ° ng cĂĄc s 0 thĂȘm vĂ o thĂŽng i p trong giai o n m r ng
thĂŽng i p.
l Chi u dĂ i thĂŽng i p M (tĂnh b ng ÆĄn v bit).
m S bit trong m t kh i thĂŽng i p, M(t).
M(i) Kh i thĂŽng i p i, v i giĂĄ tr m bit.
M(i)j T th j c a kh i thĂŽng i p th i, M(t)0 lĂ t c c trĂĄi c a kh i
thĂŽng i p i.
n S lÆ° ng bit Æ° c d ch chuy n khi x lĂœ m t t .
N S lÆ° ng kh i trong thĂŽng i p m r ng.
T w-bit t t m s d ng trong vi c th c hi n bÄm.
w S lÆ° ng bit trong m t t .
Wt T w-bit th t c a b ng phĂąn b thĂŽng i p.
KĂœ hi u:
CĂĄc kĂœ hi u sau Æ° c s d ng trong SHA vĂ x lĂœ trĂȘn cĂĄc t w-bit.
^ Thao tĂĄc AND trĂȘn bit.
âš Thao tĂĄc OR trĂȘn bit.
â Thao tĂĄc XOR trĂȘn bit.
ÂŹ Thao tĂĄc o bit.
64. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 63
+ Thao tĂĄc c ng modulo 2w.
<< Thao tĂĄc d ch trĂĄi, x << n lo i b n bit c c trĂĄi c a t x vĂ thĂȘm n bit
0 vĂ o bĂȘn ph i c a k t qu .
>> Thao tĂĄc d ch ph i, x >> n lo i b n bit c c ph i c a t x vĂ thĂȘm n
bit 0 vĂ o bĂȘn trĂĄi c a k t qu .
Thu t ng :
CĂĄc thu t ng liĂȘn quan n chu i bit vĂ s nguyĂȘn Æ° c s d ng:
a) M t kĂœ s th p l c (hexa) lĂ m t ph n t trong t p h p {0, 1,..., 9, a, ..., f}.
M t kĂœ s th p l c bi u di n m t chu i 4-bit. VĂ d , kĂœ s th p l c "7"
bi u di n chu i 4-bit "0111", kĂœ s hexa "a" bi u di n chu i 4 bit "1010".
b) M t t lĂ m t chu i w-bit cĂł th Æ° c bi u di n dÆ° i d ng m t dĂŁy cĂĄc kĂœ
s hexa. chuy n i m t t sang kĂœ s hexa, m i chu i 4-bit Æ° c
chuy n sang giĂĄ tr hexa tÆ°ÆĄng ng nhÆ° ph n (a). VĂ d , chu i 32-bit
1010 0001 0000 0011 1111 1110 0010 0011
cĂł th Æ° c bi u di n nhÆ° sau "a103fe23", vĂ chu i 64 bit
1010 0001 0000 0011 1111 1110 0010 0011
0011 0010 1110 1111 0011 0000 0001 1010
cĂł th Æ° c bi u di n nhÆ° sau "a103fe2332ef301a"
c) Quy Æ° c "big-endian" Æ° c s d ng trong tĂ i li u nĂ y khi bi u di n t cĂł
32 vĂ 64 bit. Do Ăł v i m i t , bit u tiĂȘn n m v trĂ c c trĂĄi.
d) M t s nguyĂȘn cĂł th Æ° c bi u di n dÆ° i d ng m t t ho c m t c p t .
M t t bi u di n dĂ i thĂŽng i p theo bit, l, Æ° c s d ng trong thao tĂĄc
m r ng thĂŽng i p (ph n b).
M t s nguyĂȘn n m trong kho ng 0 vĂ 232-1 cĂł th Æ° c bi u di n
b mg m t t 32-bit. 4 bit cu i cĂčng c a s nguyĂȘn Æ° c bi u di n b ng kĂœ
67. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 66
4.1.2. Thu t toĂĄn SHA-1
4.1.2.1. Gi i thi u
SHA-1 d a trĂȘn cĂĄc nguyĂȘn lĂœ tÆ°ÆĄng t v i nh ng nguyĂȘn lĂœ mĂ giĂĄo sÆ°
Ronald L.Rivest c a MIT khi thi t k thu t toĂĄn bÄm MD4, SHA-1 Æ° c
xu t vĂ o thĂĄng 4 nÄm 1995.
Khi nh p vĂ o 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 (hay giĂĄ tr bÄm) dĂ i 160 bits.
TrÆ° c Ăą y, SHA-1 Æ° c g i lĂ an toĂ n vĂŹ khĂŽng th tĂŹm ra thĂŽng i p liĂȘn
quan n thĂŽng i p rĂșt g n hay tĂŹm ra hai thĂŽng i p khĂĄc nhau nhÆ°ng cĂł
cĂčng thĂŽng i p rĂșt g n. B t kỳ thay i nĂ o c a thĂŽng i p, v i xĂĄc su t cao,
k t qu v n cho ra cĂĄc thĂŽng i p rĂșt g n khĂĄc nhau.
4.1.2.2. Thao tĂĄc ti n x lĂœ
a) CĂĄc hĂ m vĂ cĂĄc h ng s Æ° c dĂčng trong thu t toĂĄn SHA-1 xem ph n
ph l c A.3
b) M r ng thĂŽng i p
ThĂŽng i p M Æ° c m r ng trÆ° c khi th c hi n bÄm. M c Ăch c a
vi c m r ng nĂ y lĂ m b o thĂŽng i p m r ng cĂł dĂ i lĂ b i s
c a 512bit
Gi s dĂ i c a thĂŽng i p M lĂ l bit. ThĂȘm bit 1 vĂ o cu i thĂŽng i p,
theo sau lĂ k bit 0 (k lĂ s khĂŽng Ăąm nh nh t sao cho
l+1+k=448(mod512)). Sau Ăł thĂȘm kh i 64 bit lĂ bi u di n nh phĂąn c a l.
VĂ d , thĂŽng i p (8-bit ASCII) "abc" cĂł dĂ i 8x3=24, do Ăł thĂŽng
i p Æ° c m r ng b ng 1 bit "1", 448-(24+1) = 423 bit "0" vĂ chi u dĂ i
thĂŽng i p tr thĂ nh thĂŽng i p m r ng 512 bit.
69. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 68
H(0) gi giĂĄ tr bÄm ban u, Æ° c thay th b ng cĂĄc giĂĄ tr bÄm thĂ nh cĂŽng
H(i) sau khi m i kh i thĂŽng i p Æ° c x lĂœ vĂ k t thĂșc b ng giĂĄ tr bÄm cu i
cĂčng H(N). Xem chi ti t ph n ph l c A.4.1
4.1.3. ĂĄnh giĂĄ Æ°u khuy t i m
4.1.3.1. ÆŻu i m
CĂčng v i MD5, SHA-1 Æ° c xem lĂ 2 thu t toĂĄn BÄM ph bi n nh t
hi n nay.
SHA-1 Æ° c xem lĂ an toĂ n i v i hi n tÆ° ng ng vĂŹ r t khĂł tĂŹm
Æ° c hai thĂŽng i p cĂł cĂčng giĂĄ tr bÄm.
Chu n SHA-1 Æ° c ch ng nh n b i Vi n CĂŽng ngh vĂ TiĂȘu chu n qu c
gia (NIST) M , vĂ lĂ phÆ°ÆĄng phĂĄp mĂŁ hoĂĄ duy nh t Æ° c ch p nh n
trong n i b chĂnh ph M .
Æ° c coi lĂ chu n c a vi c b o v cĂĄc kĂȘnh liĂȘn l c tr c tuy n t n t i 9
nÄm qua.
4.1.3.2. Khuy t i m
SHA-1 Æ° c thi t k trĂȘn cĂĄc b vi x lĂœ 32-bit, th h s p t i c a cĂĄc b
vi x lĂœ cĂł dĂčng cĂĄc t 64-bit (word), mĂ SHA-1 khĂŽng x kĂœ hi u qu
trĂȘn b vi x lĂœ nĂ y.
ThĂĄng 2 nÄm 2005, SHA-1 ĂŁ b t n cĂŽng b i m t nhĂłm 3 chuyĂȘn gia
Xiaoyun Wang, Yiqun Lisa Yin, vĂ Hongbo Yu, m t nhĂłm cĂĄc nhĂ
nghiĂȘn c u c a trÆ° ng i h c Qu ng ĂŽng, Vi n Khoa h c Trung
70. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 69
Qu c vĂ TrÆ° ng i h c Shanghai Jiaotong. Thu t toĂĄn nĂ y ĂŁ b gi i
mĂŁ thĂŽng qua phÆ°ÆĄng phĂĄp tĂnh toĂĄn phĂąn b 1
.
Vi c tĂŹm ki m giĂĄ tr ng c a SHA thÆ° ng ĂČi h i m t s c m nh
tĂnh toĂĄn r t l n. CĂĄc nhĂ nghiĂȘn c u Trung Qu c khi t n cĂŽng SHA-1
ĂŁ khĂŽng cĂł nhi u siĂȘu mĂĄy tĂnh trong tay, nĂȘn thay vĂ o Ăł, h s d ng
m t chÆ°ÆĄng trĂŹnh i n toĂĄn phĂąn tĂĄn khai thĂĄc s c m nh nhĂ n r i c a
hĂ ng nghĂŹn mĂĄy tĂnh trĂȘn th gi i vĂ hoĂ n t t cĂŽng vi c. PhĂĄ SHA-1, khĂł
hÆĄn g p 16 l n t n cĂŽng MD5, c n 300.000 mĂĄy tĂnh nhÆ°ng ph i m t x p
x 74 nÄm. Tuy nhiĂȘn, v i vi c t n d ng Æ° c s c m nh liĂȘn k t c a
nhi u mĂĄy tĂnh gia ĂŹnh nhÆ° cĂĄc nhĂ khoa h c Trung Qu c ĂŁ lĂ m nĂłi
trĂȘn, th i gian th c hi n i u nĂ y ĂŁ Æ° c rĂșt ng n r t nhi u.
Xem chi ti t t n cĂŽng ph n Ph l c C
(1)
PhÆ°ÆĄng phĂĄp tĂnh toĂĄn phĂąn b : LĂ m t d ng tĂnh toĂĄn trong Ăł cĂĄc thĂ nh ph n
vĂ i tÆ° ng khĂĄc nhau (t o nĂȘn m t ng d ng) Æ° c t trĂȘn nhi u mĂĄy tĂnh
khĂĄc nhau k t n i vĂ o m ng. VĂ d : cĂł th ĂĄnh giĂĄ ng d ng x lĂœ vÄn b n
Word b ng cĂĄch phĂąn chia nh ng tĂnh nÄng chĂnh c a chĂșng cho nhi u mĂĄy tĂnh
khĂĄc nhau: thĂ nh ph n biĂȘn t p, i tÆ° ng ki m tra chĂnh t , tĂnh nÄng b o m t...
Trong m t s h th ng tĂnh toĂĄn phĂąn b khĂĄc, ngÆ° i ta cĂł th t m i m t i
tÆ° ng trong m t mĂŽi trÆ° ng h i u hĂ nh khĂĄc nhau.
71. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 70
4.2. CĂĄc thu t toĂĄn xu t
4.2.1. SHA-2242
, SHA-256, SHA-384 vĂ SHA-512
4.2.1.1. Gi i thi u:
Chu n SHS c t 5 thu t toĂĄn bÄm an toĂ n SHA-1, SHA-224, SHA-256,
SHA-384 vĂ SHA-512.
S khĂĄc bi t chĂnh c a cĂĄc thu t toĂĄn lĂ s lÆ° ng bit b o m t c a d li u
Æ° c bÄm â i u nĂ y cĂł nh hÆ° ng tr c ti p n chi u dĂ i c a thĂŽng i p rĂșt
g n. Khi m t thu t toĂĄn bÄm Æ° c s d ng k t h p v i thu t toĂĄn khĂĄc ĂČi
h i ph i cho k t qu s lÆ° ng bit tÆ°ÆĄng ng. VĂ d , n u m t thĂŽng i p
Æ° c kĂœ v i thu t toĂĄn ch kĂœ i n t cung c p 128 bit thĂŹ thu t toĂĄn ch kĂœ
Ăł cĂł th ĂČi h i s d ng m t thu t toĂĄn bÄm an toĂ n cung c p 128 bit nhÆ°
SHA-256.
NgoĂ i ra, cĂĄc thu t toĂĄn khĂĄc nhau v kĂch thÆ° c kh i vĂ kĂch thÆ° c t d
li u (word size) Æ° c s d ng th hi n cĂĄc tĂnh ch t cÆĄ b n c a b n thu t toĂĄn
bÄm an toĂ n.
(2)
Ăąy lĂ thu t toĂĄn hĂ m bÄm v a Æ° c NIST cĂŽng nh n thĂ nh chu n hĂ m bÄm an toĂ n vĂ o
02/2004.
72. 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
Khu t Th Ng c BĂch - LĂȘ Th TrĂșc LĂąm 71
KĂch thÆ° c ( ÆĄn v : bit)
Thu t
toĂĄn
ThĂŽng
i p
Kh i T ThĂŽng i p
rĂșt g n
an toĂ n3
( ÆĄn v : bit)
SHA-1 < 264 512 32 160 80
SHA-224 < 264 512 32 224 112
SHA-256 < 264 512 32 256 128
SHA-384 < 2128 1024 64 384 192
SHA-512 < 2128 1024 64 512 256
B ng 4.2.1.1 CĂĄc tĂnh ch t c a cĂĄc thu t toĂĄn bÄm an toĂ n.
4.2.1.2. Thao tĂĄc ti n x lĂœ
a) CĂĄc hĂ m vĂ cĂĄc h ng s Æ° c dĂčng trong thu t toĂĄn SHA-2244
, SHA-256,
SHA-384 vĂ SHA-512 : xem ph n ph l c A.3
b) M r ng thĂŽng i p
SHA-224 vĂ SHA-256 : gi ng SHA-1
SHA-384 vĂ SHA-512
Gi s dĂ i c a thĂŽng i p M lĂ l bit. ThĂȘm bit 1 vĂ o cu i thĂŽng i p,
theo sau lĂ k bit 0 (k lĂ s khĂŽng Ăąm nh nh t sao cho
l + 1 + k ⥠896 (mod 1024)
Sau Ăł thĂȘm kh i 128 bit lĂ bi u di n nh phĂąn c a l.
VĂ d , thĂŽng i p (8-bit ASCII) "abc" cĂł dĂ i 8x3=24, do Ăł thĂŽng
i p Æ° c m r ng b ng 1 bit "1", 896-(24+1) = 871 bit "0" vĂ chi u dĂ i
thĂŽng i p tr thĂ nh thĂŽng i p m r ng 1024 bit.
3
" an toĂ n" lĂ vi c s d ng phÆ°ÆĄng phĂĄp t n cĂŽng vĂ o thĂŽng i p rĂșt g n kĂch thu c n, ĂČi h i x lĂœ x p x 2n/2
.
4
Ăąy lĂ thu t toĂĄn hĂ m bÄm v a Æ° c NIST cĂŽng nh n thĂ nh chu n hĂ m bÄm an toĂ n vĂ o 02/2004.