UngDungCongNghe CUDA KhoiPhucMatKhau FileZIP

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

ng dng cng ngh tnh ton CUDA trong bi

ton khi phc mt khu tp nn Zip


Phan c Dng, Dng Nht Tn, Phm Hng Phong, Nguyn Hu c, and
Nguyn Thanh Thy
Trung tm Tnh ton Hiu nng cao
i hc Bch khoa H Ni

Tm tt ni dung Bo v d liu bng mt khu nh trong cc tp


ti liu DOC, PDF hay tp nn RAR, ZIP c minh chng l yu
di nhng tn cng dng t in. Tuy nhin thi gian khi phc mt
khu cho cc tp ny ph thuc nhiu vo khng gian tm kim mt
khu v h thng tnh ton. Trong bi bo ny, chng ti a ra cch
tip cn s dng nng lc tnh ton song song rt ln ca cc b x l
ha nhm tng tc qu trnh tm kim khi phc mt khu cc
tp nn. Chng ti thc hin khi phc mt khu tp nn ZIP trn
mi trng lp trnh song song CUDA, s dng b x l ha tnh
ton GeForce GTX295 ca nVidia. Cc kt qu thc nghim cho thy
tc sinh kha tng khong t 45 n 180 ln so vi chng trnh tun
t thc thi trn b x l Intel Core 2 Quard Q8400 2.66 Ghz. Cc kt
qu ny minh chng kh nng ng dng ca cng ngh tnh ton trn
cc b x l ha trong lnh vc thm m.

t vn

Trong khi khoa hc mt m nghin cu cc phng php m ha d liu nhm


chng li s r r thng tin trong qu trnh lu tr v trao i d liu th khoa
hc thm m, ngc li, tm cch khm ph nhng thng tin c bo v bi
mt m. Hai nhnh nghin cu ny c xem nh hai mt ca cng vn an
ton an ninh thng tin: s pht trin ca mt nhnh lun thc y s pht trin
ca nhnh kia v ngc li.
Trong lch s pht trin, s pht trin vt trc ca mt nhnh so vi
nhnh cn li i khi mang n nhng li ch to ln cho i sng, thm ch cn
quyt nh vn mnh ca c mt t nc. V d nh s thnh cng trong vic
thm m Zimmermann Telegram trong th chin th nht ko Hoa K vo
cuc chin, hay vic thm m thnh cng h m German c nh gi gp
phn rt ngn th chin th hai i vi thng[4].
Xut pht t cng mt quan im v tm quan trng ca thm m, trong
bi bo ny chng ti t mc tiu nghin cu phng php thm m cho i
tng l cc tp nn Zip c bo v bi mt khu. Nguyn thy, cc phng
php nn nh PKZip, Deflate, LZMA c s dng nhm gim thiu kch thc
d liu, t gip cho vic lu tr cng nh trao i chng c hiu qu. Do

vic bo mt thng tin thng lun i km vi cc k thut lu tr v trao i


thng tin nn bn cnh cc gii thut nn hiu qu, nhng cng c nn ph
bin nh WinZip hay WinRar thng tch hp kh nng m ho thng tin nn,
thng thng l s dng nhng h m i xng ph bin nh DES hay AES.
thun tin cho ngi dng, kho b mt cho cc h m ny c sinh ra t
mt mt khu do ngi gi nhp vo thng qua mt hm bm v c s dng
m ho ti liu. Sau mt khu c ngi gi chuyn n cho ngi nhn
qua mt knh an ton v c ngi nhn s dng sinh kho cho qu trnh
gii m. Qu trnh m ho v gii m tp nn Zip c m t nh trong hnh
1.

M ha

Nn

Ti liu nn

Ti liu

Gii nn

Gii m

Hnh 1. M ha, gii m tp nn Zip

Bi ton thm m tp nn Zip c t ra y l: cho mt tp nn Zip


c bo v bi mt khu, hy xc nh ni dung ti liu trong m khng cn
s dng mt khu ny. Trong thc t, vi cc h m yu nh RC4 hay DES, vic
thm m c th c tin hnh thng qua phng php tn cng vt cn trn
khng gian kho trong thi gian chp nhn c. Cc kt qu [3, 5] l nhng
minh chng cho k thut ny.
Vi cc h m mnh nh AES (h m c s dng ph bin trong cc phin
bn mi ca WinZip) vic tn cng vt cn nh vy l khng kh thi. AES
[1],tiu chun m ha tin tin, l mt thut ton m ha khi. AES lm vic
vi cc khi d kiu 128 bt (4x4 bytes) v kha ca n c di l 128, 192
hoc 256 bt. AES c th d dng thc hin vi tc cao bng phn mm
hoc phn cng v khng i hi nhiu b nh. L mt h thng m ha mnh,
AES-128/AES-256 vi kch thc kha l 128/256 bt c n 2128 /2256 kh nng
phi th c th tm ra c mt khu ban u. Mt s nghin cu gn y
nh gii thut XSL[2] cho php gim khng gian kha t 2128 kh nng xung
cn khong 2100 kh nng. Tuy nhin, ngay c nh vy, vic th ht tt c cc
kh nng vn l khng chp nhn c i vi cc h thng tnh ton thng
dng.
Tip cn ca chng ti trong bi bo ny l khng trc tip tn cng trn
khng gian kho AES. Thay vo chng ti nhn thy rng kho cho cc h
m ca tp nn Zip c sinh t mt khu ngi dng thng qua mt hm bm
c cng b trong c t tp nn[8]. Khng gian mt khu mc d ln nhng
tnh kh thi cho vic thm m tp nn da trn khng gian mt khu cao hn

nhiu so vi thm m da trn khng gian kho do c th p dng cc phng


php tn cng t in.
Tr ngi ln nht cho phng php thm m d trn khng gian mt khu
ny l phc tp tnh ton ca hm bm kh cao, cng thm vi k thut
salting nhm chng tn cng tnh ton trc ca tp nn Zip khin cho vic tn
cng vt cn tr nn rt km hiu qu trn cc h thng tnh ton thng dng.
vt qua tr ngi ny, chng ti ng dng cng ngh tnh ton trn cc b
x l ho trong vic sinh kho v kim tra s b mt khu ca tp nn. y
l bc quan trng u tin trong qu trnh thm m tp nn.
Cc phn tip theo ca bi bo gii thiu s b v cng ngh tnh ton trn
cc b x l ho v kt qu nghin cu ca chng ti trong vic thm m
tp nn Zip.

CUDA v cng ngh tnh ton song song trn cc b


x l ho

Trong vi nn gn y, nng lc tnh ton ca cc b x l ho (GPU)


tng ln vi tc ng k so vi CPU. Tnh n thng 6/2008, GPU th h
GT200 ca NVidia t ti ngng 933GFlops gp hn 10 ln so vi b x l
hai li Intel Xeon 3.2 GHz ti cng thi im. Hnh 2 th hin s tng tc v
nng lc tnh ton ca cc b x l ho nVidia so vi b x l Intel.

Hnh 2. Biu nng lc tnh ton GPU-CPU

Tuy vy, s vt tri v hiu nng ny khng ng ngha vi s vt tri


v cng ngh. GPU v CPU c pht trin theo hai hng khc bit: trong
khi cng ngh CPU c gng tng tc cho mt nhim v n l th cng ngh
GPU li tm cch tng s lng nhim v c th thc hin song hnh. Chnh v
vy, trong khi s lng li tnh ton trong CPU cha t n con s 8 li th s
lng li x l GPU t n 240 v cn h hn tip tc tng ti trn 500
li trong nm 2010.
tr gi cho nng lc tnh ton, GPU hy sinh tnh linh ng ca cc li
x l. Hin ti cc li x l ca GPU ti mt thi im ch thc hin c mt

nhim v duy nht, do vy GPU ch thch hp vi nhng bi ton song song d


liu trong cng mt on m chng trnh c thc thi song song cho nhiu
b d liu khc nhau. Rt may l a s cc bi ton yu cu nng lc tnh ton
ln u c th quy v dng song song d liu ny.
Bn cnh vic pht trin cc b x l ho c nng lc tnh ton ln, cc
hng sn xut cng quan tm ti mi trng pht trin ng dng cho cc b
x l ho ny. CUDA[7] l mi trng pht trin ng dng cho cc b x l
ho ca nVidia, bao gm mt ngn ng lp trnh song song d liu cng vi
cc cng c bin dch, g ri, v gim st thc thi cho cc ng dng trn cc b
x l ny. Di y l mt s c im chnh ca ngn ng lp trnh do CUDA
h tr (gi tt l ngn ng CUDA).
Ngn ng CUDA l m rng ca ngn ng C, do vy quen thuc vi a s
ngi pht trin ng dng.
M CUDA chia lm 2 phn: phn thc thi trn CPU v phn thc thi trn
GPU. Phn thc thi trn GPU, cn gi l kernel, khi c gi c th thc
hin song song trn hng ngn tin trnh ring bit. Mi tin trnh c mt
nh danh ring dng xc nh nhim v ca tin trnh .
trnh s ph thuc vo phn cng, CUDA cho php ngi lp trnh ty
xc nh s lng tin trnh song song, tuy nhin cc tin trnh ny cn
c phn theo tng l (hay cn gi l cc block) vi s lng khng qu
512. Cch phn l ny gip ngi lp trnh khng cn quan tm t nng
lc ca phn cng, ng thi gip vic t chc thc thi c hiu qu thm
ch l trn cc GPU khc nhau.
B nh c t chc phn cp bao gm cc lp sau:
B nh chnh: l vng b nh dnh cho phn m CPU. Ch c phn m
ny c th truy nhp v sa i thng tin trn .
B nh ton cc GPU: l vng b nh m tt c cc tin trnh ca GPU
c th truy nhp. Ngi lp trnh c th chuyn d liu t b nh chnh
sang b nh ny thng qua mt s hm th vin ca CUDA. B nh
ny thng thng c s dng lu tr cc d li u vo v u
ra cho cc tin trnh song song trn GPU.
B nh chia s: l vng b nh m ch cc tin trnh trong cng mt
block mi c th truy nhp c. y l b nh tch hp ngay trn chip
x l nn tc truy nhp d liu cao hn rt nhiu so vi b nh ton
cc. B nh ny thng c s dng lu tr cc d liu chia s tm
thi nhm tng tc qu trnh s dng b nh.
B nh cc b GPU: L vng b nh c cp pht cho cc bin cc b
ca tng tin trnh GPU v khng th truy nhp c t cc tin trnh
khc.
Vi kh nng song song ho d liu vi cc nhiu tin trnh nh vy, GPU l
gii php thch hp cho bi ton thm m mt kh tp nn trong mi tin
trnh c th m nhn vic th mt mt khu trn khng gian tm kim. Phn
tip theo ca bi bo s gii thiu cch tip cn ca chng ti trong vic thm
m tp nn Zip, hay c th hn l vic khi phc li mt khu ca tp nn, trn
GPU s dng CUDA.

Khi phc mt khu tp nn Zip trn b x l ha

Nh gii thiu trong chng 1, cch tip cn ca chng ti trong bi ton


thm m tp nn Zip l tn cng trn khng gian mt khu thay v tn cng
trc tip trn khng gian kho AES. Theo c t ca tp nn Zip [8], vic kim
tra mt mt khu hp l bao gm cc bc:
1. Sinh kho AES t mt khu cho trc s dng hm bm PBKDF2(pw,salt,dkLen)
vi u vo l mt khu pw, m gi tr ngu nhin salt c lu trong tp
nn, v kch thc kho dkLen. Hm PBKDF2 c phc tp tnh ton kh
ln. Thc t hm ny thc hin 1000 ln lin tip gii thut HMAC-SHA1,
do vy ngn chn phn no nhng tn cng t cc h thng tnh ton thng
dng. Gi tr salt c s dng nhm chng li cc tn cng tnh ton
trc.
2. S dng kho AES gii m v gii nn ti liu ng thi sinh ra mt gi
tr kt qu. Nu vic gii m thnh cng th gi tr kim tra ny s khp vi
mt gi tr kim tra lu tr trong tp nn.
Vi c t nh vy, nu vi mi mt khu ta thc hin y cc tin trnh
ny th thi gian cn thit kim tra mt khng gian mt khu cng s l cc
ln do vic gii m, gii nn ton b ti liu l cc k tn km. Thay vo ,
bc 2 ta c th p dng k thut gii m gii nn mt phn cng vi cc
k thut nhn dng bn r pht hin nhanh xem kho AES a vo c phi
l kho hp l khng. Thm vo , thun tin cho ngi dng, cc cng c
nh WinZip cho php pht hin nhanh mt khu khng chnh xc bng cch
lu trong header ca tp nn mt gi tr kim tra mt khu PVV c kch thc
2 byte. Gi tr ny s c i snh vi mt phn kt qu c sinh ra bi hm
bm PBKDF2 k trn. Kt qu i snh s t ch phn ln nhng mu khu
khng hp l. Mt mt khu khng b t chi cng cha chc l mt khu hp
l, tuy nhin s lng nhng mt khu khng b t chi ny nh hn ng k so
vi khng gian mt khu ban u. Chng ti gi nhng mt khu l nhng
mt khu ng c.
Da trn nhng phn tch nh trn, qu trnh khi phc mt khu tp nn
c chng ti phn chia ra lm 2 pha:
Pha 1. Xc nh tp mt khu ng c. Pha ny da trn gi tr kim
tra mt khu PVV sinh ra mt tp mt khu ng c t mt khng gian
mt khu cho trc.
Pha 2. Kim tra tng mt khu ng c bng k thut nhn dng
bn r
Trong bi bo ny, chng ti tp trung gii quyt pha th nht ca qu trnh
ny. Ni dung cn li ca phn ny m t tng v gii php thc hin cho
vic xc nh cc mt khu ng c t khng gian mt khu cho trc.
3.1

tng chung

Do cc tin trnh trn GPU cn phi c phn chia thnh cc block nh


trnh by trong phn 2, khng gian mt khu cng cn c phn chia thnh

cc l tng ng. Gi s ti mi thi im, mi tin trnh GPU c th kim tra


mt mt khu v mi block c ti a p tin trnh, th khng gian mt khu c
th c phn chia thnh cc l ch khng qu p mt khu. Hnh 3 m t vic
kim tra mt khu theo l nh vy.

Hnh 3. Kim tra mt khu theo l

Tuy nhin, do mt khu thc cht l cc xu k t, vic phn chia u khng


gian mt khu khng n gin, cng nh khng ph hp vi cc phng thc
x l trn GPU. V vy, ban u chng ti chia khng gian mt khu theo
di ca chng, sau mi phn l cho tng tp con ny. Khng gian mt khu
c nh ngha nh sau:
Gi S l tp hp tt c cc k t sinh mt khu (bng ch ci), n = |S| l
s cc k t trong bng ch ci.
P Wi l tp mt khu c di i
k l di t a ca mt khu
P W = P W1 P W2 P Wk l tp tt c cc mt khu c di ti a
k
Vic phn l c thc hin cho tng tp P Wi . Hnh 4 m t s phn l
. V d, gi s tp k t S l {a-z, A-Z, 0-9}, s lng k t trong S s l
n = 62 k t, s lng tin trnh chy ti a trong mt l l p = 1024. Nh vy
nhm 1 (tng ng tp mt khu c di 1) c 62 mt khu, c chia lm
1 l. Nhm 2 (tng ng tp mt khu c di 2) gm 3844 mt khu c
chia lm 8 l. Nhm 3 gm 238328 mt khu c chia thnh 466 l, vv...
Gii thut kim tra mt khu s c ci t thnh mt kernel. Mi ln kch
hot kernel ny s thc hin kim tra cho mt l p mt khu nh phn chia.
3.2

Gii thut thc hin

Nh gii thch bn trn, gii thut kim tra mt khu ng c c thc hin
song song, theo di ca mt khu. u tin, gii thut tnh s l cn thit
ca mt nhm mt khu c di xc nh i. Sau , vi mi mt l p mt

Hnh 4. Phn l mt khu theo di

khu, gii thut tnh s th t ca cc mt khu trong l lm u vo cho


hm kim tra mt khu c thc hin trn mt tin trnh. M gi ca gii
thut nh sau:
for i = 1 to k
{
m = |Si | ; // tng s mt khu cn th c di i
p = thread_numbers; // s tin trnh song song ti u cho GPU
l = CEIL(m/ p); // S l ca cc mt khu c di i
for j = 0 to l - 1
{
base = j*p; // th t mt khu u tin ca l;
for id = 0 to p-1 in parallel
Ki (base, id); //Hm sinh v kim tra mt khu
}
}
Hm sinh kim tra mt khu ng c Ki nhn vo l th t ca mt
khu u tin ca l trong nhm i (base) cng vi th t trong l id ca mt
khu cn kim tra. Trong thc t, th t id c sinh ra mt cch t ng khi
kch hot kernel cho mt l, v tin trnh x l c th l c gi tr ny thng
qua mt s bin h thng ca CUDA.
Hm Ki (base, id) s sinh ra mt khu ti v tr base + id ca nhm, sau
truyn mt khu vo hm bm P BKDF 2 sinh kha AES v mt gi tr
T estP V V tng ng vi mt khu . Gi tr kha ny c em so snh vi
gi tr kim tra mt khu P V V lu trong phn header ca tp nn xc nh
xem mt khu va c sinh c phi l mt mt khu ng c hay khng. M
gi ca hm ny nh sau:
int Ki (base, id)
{
pw = GenP Wi (base, id);
TestPVV = PBKDF2(pw, salt, dkLen);

return (TestPVV == PVV);


}
Trong on m trn hm GenP Wi (base, id) c chc nng sinh mt khu da
vo s th t ca mt khu base v id. Mi GPU c hng ngn tin trnh chy
song song, mi tin trnh t m nhim sinh mt khu v kim tra c lp mt
mt khu, cho bit mt khu c phi l mt phn t trong tp cc mt khu
ng c hay khng. Vn t ra l lm sao mi tin trnh trn GPU sinh
khng lp li mt khu. Gii thut sinh xu song song c thit k da vo
nh danh tin trnh. Mi tin trnh c mt inh danh ring id . Ngoi id, cn
cn thm di mt khu cn sinh i v vj tr c s base. V l thuyt, nu s
tin trnh trn GPU ng bng |P Wi | th ti mt thi im mi tin trnh s
kim tra ng mt mt khu v base = 0. Nhng nu |P Wi | ln hn s tin
trnh ti u trn mt GPU th base l th t ca xu u tin ca l tip theo
cn kim tra. Hm GenP Wi (base, id) c nh ngha nh sau:
GenP Wi (base, id) = xi1 x0
x0 = S[((base + id) div n0 ) mod n]
x1 = S[((base + id) div n1 ) mod n]
xi1 = S[((base + id) div ni1 ) mod n]
3.3

Th nghim v nh gi

Gii thut sinh m v kim tra mt khu ng c cho pha 1 ca bi ton khi
phc mt khu tp nn Zip c chng ti xy dng v trin khai th nghim
ti trung tm tnh ton hiu nng cao trng i hc Bch khoa H Ni. Mi
trng th nghim bao gm mt my tnh PC c trang b

B x l Intel Core 2 Quad Q8400 2.66 Ghz


8GB RAM
Hai card ho kp NVIDIA GeForce GTX 295 (tng cng 4 GPU)
H iu hnh Centos OS 5.3

Kt qu l vi u vo l tp k t ch ci hoa, ch ci thng v cc ch
s S = {a z, A Z, 0 9} v s tin trnh ti u chy song song l p = 512.
Cc gii thut song song c ci t trn mi trng phn cng nh trn cho
thy tc sinh kha v kim tra kha, tc tm ra mt khu ban u tng
r rt so vi vic thc hin trn mt tin trnh CPU. Hnh 3.3 minh ho hiu
nng thc hin cng vic xc nh tp mt khu ng c trn CPU v GPU.
Kt qu ny cho thy hiu nng kim tra mt khu ng c tng ng k (sp
x 45 ln cho 1 GPU v 180 ln cho h thng 4 GPU) khi thc hin trn GPU.
Mc d cha th nghim c vi nhng khng gian mt khu c di ln,
nhng th nghim cho thy kh nng ng dng cao ca GPU trong bi ton
khi phc mt khu tp nn.

di mt khu S lng mt khu CPU 1 GPU 2 GPU


1
62
4s 22381ms 22384ms
2
3906
8m 22382ms 22395ms
3
242234
2.25h 180s
90s
4
15018570
5.25d 168m
84m

4 GPU
22384ms
22391ms
45s
42.5m

Hnh 5. Thi gian xc nh tp mt khu ng c trn CPU v GPU

Kt lun

Vi mc tiu nghin cu ban u t ra l khi phc mt khu cho tp nn


Zip, cc kt qu nghin cu hon thnh c pha u tin l bc sinh ra tp
hp mt khu ng c, y l mt bc rt quan trng trong qu trnh gii m,
gii nn tp c m ha, tin ti khi phc mt khu cho tp nn. V cc
kt qu cho thy tc thc hin bng gii thut song song cho hiu nng
ln hn ng k (45 ln cho h thng 1GPU v 180 ln cho h thng 4GPU) so
vi gii thut tun t trn 1 CPU.
C nhiu k thut khc m chng ti nhn thy c th p dng ci thin
gii thut xut. Hin ti chng ti s dng cch tip cn sinh mt khu
song song, s lng mt khu cn kim tra ph thuc di ca mt khu cn
kim tra. Khi s k t bng ch ci c s tng ln v di mt khu cn kim
tra tng ln, th s lng mt khu tng ln rt nhanh ko theo tnh kh thi
ca gii php thp. Hn na, vic sinh cc xu l c lp nhau, v coi xc
sut xut hin ca mi xu l tng ng nhau. Nhng trn thc t, mi xu
sinh khc nhau, xc sut n l mt mt khu ngi dng l khc nhau, da trn
nghin cu v s nh mt khu v thi quen ca ngi dng. Trong khu sinh
xu mt khu song song, ta c th p dng cc k thut phn tch cu trc mt
khu [9, 6], u tin duyt cc cu trc mt khu c kh nng xut hin cao, t
c th ci thin c tc tm kim mt khu chnh xc.
Mt hng tip theo cho bi ton h phc mt khu l vic ng dng cng
ngh tnh ton trn GPU cho pha th ha - pha gii m, gii nn v nhn dng
bn r. Vi khng gian mt khu ban ln, s lng cc mt khu ng c
cng khng nh (c th gim 65536 ln nu s dng 2 byte gi tr PVV). Vic
tn dng nng lc tnh ton ca GPU trong bi ton, gii m, gii nn,v kim
tra bn r cng s mang la nhng li ch ng k v hiu nng.
gim thi gian tm kim mt khu, vic tng cng nng lc tnh ton
h thng cng l mt gii php ng quan tm. Gii php cm tnh ton GPU,
kt chm cc my tnh c ci t GPU, ng c quan tm cho vic m rng
nng lc tnh ton ny.
Cui cng, nhng gii php c xut trong bi bo ny hon ton c
th chnh sa p dng cho nhng bi ton thm m khc nh thm m tp
DOC, tp PDF c bo v bi mt khu.

Ti liu
1. F. I. P. S. P. 197. Advanced encryption standard (aes), 2001.
2. N. T. Courtois and J. Pieprzyk. Cryptanalysis of block ciphers with overdefined systems of equations, 2002. Preprint is available at http://eprint.iacr.org/2002/044/.
3. E. F. Foundation. Cracking DES: Secrets of Encryption Research, Wiretap Politics
and Chip Design. OReilly & Associates, Inc, 1998.
4. D. Kahn. The Codebreakers - The Story of Secret Writing. 1967.
5. A. Klein. Attacks on the rc4 stream cipher. Des. Codes Cryptography, 48(3):269286,
2008.
6. A. Narayanan and V. Shmatikov. Fast dictionary attacks on passwords using timespace tradeoff. In CCS05: Proceedings of the 12th ACM conference on Computer
and communications security, pages 364372, New York, NY, USA, 2005. ACM.
7. NVIDIA. http://www.nvidia.com/object/cuda_home_new.html.
8. PKWARE. Zip file format specification, 2007.
9. M. Weir, S. Aggarwal, B. d. Medeiros, and B. Glodek. Password cracking using
probabilistic context-free grammars. In SP09: Proceedings of the 2009 30th IEEE
Symposium on Security and Privacy, pages 391405, Washington, DC, USA, 2009.
IEEE Computer Society.

You might also like