Phát triển thuật toán mã hóa - xác thực thông tin từ OTP CIPHER

Nghiên cu khoa hc công nghệ  
PHÁT TRIN THUT TOÁN MÃ HÓA – XÁC THC THÔNG TIN TỪ  
OTP CIPHER  
Lưu Hng Dũng1, Nguyn Ánh Vit2, Đoàn ThBích Ngc3  
Tóm tt:  
Bài báo đề xut thut toán mã hóa – xác thc thông tin tvic phát trin mt  
mã sdng khóa mt ln - OTP (One - Time Pad). Ưu đim ca thut toán mi đề  
xut là có tính an toàn và hiu quthc hin cao tương tOTP, đồng thi vic thiết  
lp, qun lý - phân phi và sdng khóa hoàn toàn ging như các hmã khóa đối  
xng đang được ng dng trong thc tế (DES, AES…).  
Tkhóa: Symmetric-Key Cryptography,  
Symmetric-Key Cryptographic Algorithm, Symmetric-Key  
Cryptosystems, One - Time Pad Algorithm, OTP Cipher.  
1. ĐẶT VN ĐỀ  
Mt mã sdng khóa mt ln OTP được Gilbert Vernam đề xut vào năm 1917 và  
Joseph Mauborgne tiếp tc hoàn thin sau đó. Nguyên tc căn bn ca mt mã OTP là  
sdng mt khóa mt chia strước có độ dài bng vi độ dài ca bn tin cn mã hóa  
(bn rõ), các bit ca bn mã nhn được tvic cng loi tr(XOR) trc tiếp các bit  
ca bn rõ vi các bit tương ng ca khóa mt.  
Lý thuyết ca Claude E. Shannon [6] đã chra OTP là mt loi mã có độ mt hoàn  
thin (Perfect Secrecy). Hin ti, mt mã OTP vn được xem là loi mã an toàn tuyt  
đối, không thphá v. Điu đặc bit là ngay ctn công theo kiu “vét cn” (Brute  
force attack) bng máy tính lượng tử đối vi loi mã này cũng trnên vô nghĩa, nếu  
có thể đáp ng được các điu kin vkhóa sau:  
- Khóa có tính cht ngu nhiên.  
- Mi khóa chdùng để mã hóa duy nht mt bn tin.  
- Kích thước ca khóa phi bng hoc ln hơn kích thước ca bn rõ.  
- Khóa phi được gibí mt hoàn toàn.  
Tuy có độ an toàn và tc độ mã hóa cao cũng như khnăng cài đặt ddàng trên  
các thiết bcó năng lc tính toán và tài nguyên hn chế, nhưng vi các yêu cu về  
khóa đã chra, thì loi mã này có rt ít khnăng ng dng trong thc tế. Nguyên nhân  
đầu tiên là vic to khóa phi có tính thc sngu nhiên, nhm loi trcác nguy cơ  
mt an toàn: a) tmt khóa đã biết, ktn công có thtìm (suy ra) được các khóa đã  
được sdng trước đó hay các khóa sẽ được sdng trong tương lai; b) chui bit  
khóa tn ti chu klp li, từ đó to ra mi liên quan gia bn rõ và bn mã, ktn  
công có thtn dng mi liên quan này để phá mã tương tnhư vi mã hóa đa bng  
Vigenère [7]. Tuy nhiên, đây là mt yêu cu không dthc hin vmt kthut trong  
các ng dng. Nhưng lý do chyếu làm cho mã OTP ít có ý nghĩa thc tế là vì mi  
khóa chỉ được dùng mt ln duy nht và phi có kích thước không nhhơn kích thước  
bn tin cn mã hóa, song li phi được gibí mt tuyt đối như bn tin cn mã hóa.  
Đã có mt snghiên cu nhm gii quyết các hn chế ca mt mã OTP được công  
b[1-5], song tcác kết quả được công bcho thy nhng nghiên cu này chyếu  
tp trung gii quyết vn đề to chui bit khóa OTP tcác chui bit gingu nhiên có  
kích thước hn chế, còn vic có thsdng khóa nhiu ln tương tnhư các hmã  
khóa đối xng khác vn là hn chế căn bn ca các nghiên cu này.  
Từ đó, bài báo đề xut mt biến thca mt mã OTP vi vic thiết lp, qun lý –  
phân phi và sdng khóa được thc hin hoàn toàn như các hmã khóa đối xng  
Tp chí Nghiên cu KH&CN quân s, Số Đặc san CNTT, 12 - 2020  
1
Công nghthông tin  
đang sdng trong thc tế (DES, AES,…). Ngoài ra, xác thc ngun gc và tính toàn  
vn ca bn tin được mã hóa cũng là mt tính năng bsung quan trng cho thut toán  
này.  
II. THUT TOÁN MÃ HÓA – XÁC THC THÔNG TIN  
1. Mô tthut toán  
Bn rõ P được mã hóa dưới dng n khi dliu Pi có kích thước 128-bit:  
P = {P1,P2,…,Pi,…,Pn}, |Pi| = 128 bit, i = 1..n  
Khóa sdng mt ln KOT cũng bao gm n khóa con Ki có kích thước tương ng  
vi kích thước ca khi dliu:  
KOT = {K1,K2,…,Ki,…,Kn}, |Ki| = 128 bit,  
Do đó, bn mã C cũng bao gm n khi dliu Ci có kích thước 128-bit:  
C = {C1,C2,…,Ci,…,Cn}, |Ci| = 128 bit, i = 1..n  
i = 1..n  
Thut toán mã hóa là phép XOR các bit ca khi bn rõ Pi vi các bit tương ng  
ca khóa con Ki :  
Ci = Pi Ki , i = 1..n  
Tương t, thut toán gii mã cũng là phép XOR các bit ca khi bn mã Ci vi các  
bit tương ng ca khóa con Ki:  
Pi = Ci Ki , i = 1..n  
Chú ý:  
Trường hp chia bn tin P thành n khi không chn thì bù thêm mt sbit để khi  
cui cùng đủ 128-bit, vic bù thêm này được thc hin tương tnhư ở các hmã khi  
khác (DES, AES,…) [8].  
Khóa bí mt K để mã hóa và gii mã cho mt bn tin P bao gm khóa sdng mt  
ln KOT và khóa bí mt chia strước gia 2 đối tượng gi/mã hóa – nhn/gii mã là  
KS. Trong đó, khóa sdng mt ln KOT bao gm các khóa con Ki: KOT  
=
{K1,K2,…,Ki,…,Kn} được dùng để mã hóa các khi dliu ca bn rõ bên gi và  
gii mã các khi bn mã phía bên nhn.  
Khóa bí mt chia sKS được bên gi sdng để to ra ”mm khóa” – C0 tương  
ng vi mi bn tin cn mã hóa, nhhàm băm (Hash Function) MD5:  
C0 =  
MD5(P,KS). Thành phn C0 này được gi như mt khi ca bn mã sang cho bên  
nhn. Dthy rng, giá trC0 là khác nhau vi các bn tin cn mã hóa khác nhau và  
có tính cht ngu nhiên – hquca vic to ra thàm băm MD5 [9].  
Tiếp đến, c2 bên gi và nhn đều to khóa con đầu tiên K1 tKS và C0 nhhàm  
MD5 như sau:  
K1 = MD5(C0,KS)  
Phía gi tin, các khóa Ki được sinh bi cùng mt thut toán tkhóa con đứng trước  
Ki-1 và khi dliu tương ng Pi-1:  
Ki = MD5(Pi-1,Ki-1), i = 2..n  
Phía nhn tin, sau khi to khóa con K1: K1 = MD5(C0,KS) sgii mã khi đầu tiên:  
P1 = C1 K1. Từ đây, các khóa con tiếp theo sẽ được to ra theo cùng mt qui tc vi  
phía bên gi:  
Ki = MD5(Pi-1,Ki-1), i = 2..n  
và các khi mã tiếp theo sẽ được gii mã:  
Pi = Ci Ki , i = 2..n  
2
L H. Dũng, N.A. Vit, Đ.T.B. Ngc, “Thut toán mã hóa – xác thc … tmt mã OTP”  
Nghiên cu khoa hc công nghệ  
Chú ý rng, vic to các khóa con ca KOT phía bên gi có ththc hin trước  
hay đồng thi vi mã hóa các khi dliu ca bn tin, còn phía nhn tin thì vic to  
các khóa con ca KOT và gii mã các khi bn mã cn phi được thc hin mt cách  
đồng thi vi nhau.  
Như vy, thut toán mi đề xut khóa bí mt K sbao gm 2 thành phn có chc  
năng phân bit:  
K = {KS, KOT}  
Trong đó: KS là khóa bí mt chia sgia các đối tượng tham gia trao đổi thông tin  
mt, khóa này được sdng để to ra khóa KOT tương ng vi mi bn tin. Còn KOT  
là khóa sdng mt ln cho vic mã hóa và gii mã các khi dliu.  
Từ đây, thut toán sinh khóa và mã hóa được mô tnhư sau:  
Input: P = {P1,P2,…,Pi,…,Pn}, KS.  
Output: C = { C0,C1,C2,…,Ci,…,Cn}.  
[1]. C0 = MD5(P||KS)  
[2]. K1 = MD5(C0||KS)  
[3]. C1 = P1 K1  
[4]. C[0] = C0, C[1] = C1  
[5]. for i = 2 to n do  
begin  
Ki = MD5(Pi-1|| Ki-1|| Pi-1|| Ki-1)  
Ci = Pi Ki  
C[i] = Ci  
end  
[6]. return C  
Ghi chú:  
- Phép toán là phép cng modulo 2 (XOR) hai chui bit.  
- Phép toán “||” là phép ghép ni tiếp 2 xâu bit.  
Thut toán sinh khóa, gii mã và xác thc bao gm các bước thc hin như sau:  
Input: C = {C0,C1,C2,…,Ci,…,Cn}, KS.  
Output: M = {M1,M2,…,Mi,…,Mn}, true/false.  
[1]. K1 = MD5(C0||KS)  
[2]. M1 = C1 K1  
[3]. M[1] = M1  
[4]. for i = 2 to n do:  
begin  
Ki = MD5(Pi-1|| Ki-1|| Pi-1|| Ki-1)  
Mi = Ci Ki  
M[i] = Mi  
end  
[5]. M0 = MD5(M||KS)  
[6]. if (M0 = C0) then return {M,true}  
else return {M,false}  
Ghi chú:  
Tp chí Nghiên cu KH&CN quân s, Số Đặc san CNTT, 12 - 2020  
3
Công nghthông tin  
- Nếu kết qutrvlà {M,true} thì bn tin được xác thc vngun gc và tính  
toàn vn. Ngược li, kết qutrvlà {M,false} thì hoc M là bn tin gimo hoc C  
đã bthay đổi trong quá trình truyn tin.  
- Nếu bn mã được truyn chính xác tbên gi sang bên nhn thì khi dliu C0  
ca bên nhn cũng chính là C0 ca bên gi. Mt khác, do bên nhn và bên gi có cùng  
thut toán sinh khóa vi dliu vào C0 và khóa bí mt chia sKS như nhau nên khóa  
mã hóa và khóa gii mã sdng mt ln (KOT) shoàn toàn ging nhau. Vì thế bn  
tin sau gii mã cũng chính là bn rõ trước khi mã hóa. Nên điu kin M0 = C0 được  
tha mãn hoàn toàn.  
2. Mt số đánh giá về độ an toàn và hiu quthc hin ca thut toán mi đề  
xut  
2.1. Mc độ an toàn  
Tương tnhư mt mã OTP, khóa KOT ở đây chsdng mt ln, do vy các dng  
tn công như thám mã vi sai, thám mã tuyến tính,.. và nói chung là tt ccác dng tn  
công đã được biết đến vi các mã khi đin hình như DES, AES,... là không có tác  
dng vi thut toán mi đề xut. Ở đây, mc độ an toàn ca thut toán mi đề xut có  
thể đánh giá qua khnăng kháng li mt sdng tn công như sau:  
- Tn công khóa bí mt chia s: Tn công khóa bí mt chia scó ththc hin da  
vào cách to giá trC0:  
C0 = MD5(P||KS)  
hoc tính giá trca khóa con K1:  
K1 = MD5(C0||KS)  
Vi vic to C0 và K1 như trên thì kích thước LK ca khóa bí mt chia shoàn toàn  
có thchn tùy biến trong khong: Lmin LK L - LP. Trong đó: Lmin là kích thước ti  
thiu đủ để bo đảm ngưỡng an toàn (80 bit); LP là kích thước bn rõ và L là kích  
thước ln nht ca dliu đầu vào hàm băm MD5. Khi đó, dliu đầu vào hàm MD5  
là sghép ni tiếp xâu bit ca KS vi P trong trường hp to giá trC0 hoc là sghép  
ni tiếp xâu bit ca KS vi C0 trong trường hp cn to khóa con K1. Từ đây có thể  
thy rng, khóa bí mt chia strước gia các bên gi – nhn ở đây hoàn toàn có thể  
được gibí mt không chvgiá trmà còn bí mt cvkích thước khóa.  
Dthy rng vi đặc tính 1 chiu ca hàm băm, hơn na vi kích thước ca KS  
cũng là mt tham sbí mt thì vic tìm được KS tC0, P và K1 (K1 có thbiết khi P  
đã được công khai) là hoàn toàn bt khthi.  
- Tn công “vét cn” khi chcó bn mã: Nếu KOT là mt chui bit thc sngu  
nhiên thì gia bn rõ và bn mã được to ra skhông có bt kmi quan hnào. Khi  
đó, tn công theo kiu “vét cn” có thgii mt bn mã thành bt kbn tin có nghĩa  
nào có cùng độ dài (vi bn mã) và đối vi ktn công thì tt ccác bn tin có nghĩa  
sau gii mã đều có khnăng là bn tin được mã hóa (bn rõ). Nghĩa là, skhông có  
bt kthông tin nào trong bn mã cho phép ktn công la chn đúng bn rõ tcác  
bn tin có nghĩa sau gii mã bng phương pháp “vét cn”. Ngoài ra, nếu KOT thc sự  
ngu nhiên thì tmt khóa đã biết ktn công không thtìm (suy) ra các khóa khác  
đã được to ra trước hay sau đó.  
Vi thut toán đề xut, khóa sdng mt ln KOT là mt tp các khóa con Ki được  
to bi hàm băm MD5 theo nguyên tc: a) mi khóa con Ki được sinh ra tkhóa con  
đứng trước Ki-1 và khi dliu tương ng Pi-1; b) riêng khóa con đầu tiên K1 được to  
4
L H. Dũng, N.A. Vit, Đ.T.B. Ngc, “Thut toán mã hóa – xác thc … tmt mã OTP”  
Nghiên cu khoa hc công nghệ  
ra bi “mm khóa” C0 và khóa bí mt chia sKS. Như vy, KOT thc cht là mt  
chui bit được to ra bi vic ghép ni tiếp n chui (bit) con Ki, mà các chui con Ki  
này chính là đon 128-bit đầu tiên ca n chui bit cơ sở đưc to bi MD5 – đóng vai  
trò ca hàm sinh sngu nhiên vi các giá trkhi to hay các “mm” (seed) khác  
nhau. Nói cách khác, chui bit KOT được to ra tn chui bit cơ skhác nhau, bng  
cách ly ra tmi chui bit cơ smt chui con (128-bit đầu tiên) ri ghép ni tiếp n  
chui con này vi nhau.  
Vi vic sdng MD5 để to các chui bit cơ s, thì trong các chui con có kích  
thước hn chế Ki skhông tn ti chu klp li và do đó các chui con này thc scó  
tính ngu nhiên là điu hoàn toàn có thkhng định. Mt khác, các chui bit cơ sở  
được to bi các giá trkhi to khác nhau nên chúng độc lp vi nhau, dn đến các  
chui con Ki (128-bit đầu tiên ca chui bit cơ s) cũng độc lp vi nhau. Như vy,  
KOT là sghép ni tiếp các chui con 128-bit có tính ngu nhiên và độc lp nhau, nên  
trong KOT skhông tn ti chu klp li và do đó có tính ngu nhiên cũng là điu  
hoàn toàn có thkhng định được.  
Tóm li, KOT được to ra theo gii pháp đề xut đã đáp ng được yêu cu vtính  
ngu nhiên ca khóa theo nghĩa: a) tmt khóa đã biết, ktn công không thtìm  
được các khóa đã được to ra trước hoc sau đó; b) chui bit khóa không tn ti chu  
klp li, nên skhông to ra mi liên quan gia bn rõ và bn mã. Do đó, tn công  
theo dng “vét cn” là hoàn toàn có thkháng được đối vi thut toán mi đề xut.  
- Tn công gimo: Mt mã OTP không cung cp tính năng xác thc cho bn tin  
được mã hóa, vì vy ktn công có thchn bn mã được gi đi và gi cho bên nhn  
mt bn tin gimo có cùng kích thước vi bn tin tht. Trường hp gii mã ra mt  
bn tin vô nghĩa, người nhn có thsuy đoán vmt sgimo đã được thc hin  
hoc do li truyn tin gây ra. Tuy nhiên, nếu gii mã ra mt bn tin có nghĩa thì chính  
người nhn cũng không có cách nào xác định được bn tin này là tht hay gimo.  
thut toán mi đề xut, bng vic to “mm khóa” C0 tkhóa bí mt chia sKS  
và bn tin được mã hóa nhhàm băm MD5 phía bên gi:  
MD5(P||KS), bên nhn hoàn toàn có khnăng nhn thc chính xác ngun gc cũng  
như tính toàn vn ca bn tin sau gii mã qua vic tính: M0 =  
C0 =  
MD5(M||KS) và kim tra: M0 = C0. Đặc bit là, chcó duy nht bên nhn thc hin  
được vic xác thc này, chính điu đó là mt yếu tquan trng to nên khnăng  
kháng li tn công dng “vét cn” ca thut toán mi đề xut.  
2.2. Hiu quthc hin  
Có thnâng cao hiu quthut toán đề xut nếu khóa KOT được to ra trước các  
khi các thtc mã hóa và gii mã được thc hin. Khi đó, các thut toán sinh khóa,  
mã hóa và gii mã được mô tnhư sau:  
+ Thut toán sinh khóa:  
Input: P = {P1,P2,…,Pi,…,Pn}, KS.  
Output: KOT = {K1,K2,…,Ki,…,Kn},C0.  
[1]. C0 = MD5(P||KS)  
[2]. KOT[1] = MD5(C0||KS)  
[3]. for i = 2 to n do  
begin  
Tp chí Nghiên cu KH&CN quân s, Số Đặc san CNTT, 12 - 2020  
5
Công nghthông tin  
KOT[i] = MD5(KOT[i-1])  
end  
[4]. return {KOT,C0}  
+Thut toán mã hóa:  
Input: P = {P1,P2,…,Pi,…,Pn}, KOT = {K1,K2,…,Ki,…,Kn},C0.  
Output: C = {C0,C1,C2,…,Ci,…,Cn}.  
[1]. C[0] = C0  
[2]. for i = 1 to n do  
begin  
C[i] = P[i] KOT[i]  
end  
[3]. return C  
+Thut toán gii mã và xác thc:  
Input: C = {C0,C1,C2,…,Ci,…,Cn}, KOT = {K1,K2,…,Ki,…,Kn},KS.  
Output: M = {M1,M2,…,Mi,…,Mn}, true/false.  
[1]. for i = 1 to n do  
begin  
M[i] = C[i] KOT[i]  
end  
[2]. M0 = MD5(M||KS)  
[3]. if (M0 = C0) then return {M,true}  
else return {M,false}  
Có ththy rng, hiu quthc hin ca thut toán được đề xut có thể đạt xp xỉ  
hiu quthc hin ca mt mã OTP nếu chai sdng cùng mt thut toán sinh số  
ngu nhiên để to khóa. Trên thc tế, có thnâng cao tc độ thc hin ca thut toán  
sinh khóa bng cách sdng thut toán sinh sngu nhiên dng thanh ghi dch hi  
tiếp tuyến tính – LFSR (Linear Feedback Shift Registers) [9] kiu Shrinking  
Generator [11].  
III. KT LUN  
Bài báo đề xut thut toán mã hóa – xác thc thông tin tvic phát trin mt mã sử  
dng khóa mt ln OTP. Vi gii pháp thiết kế khóa mt t2 phân khóa tách bit,  
thut toán được đề xut ở đây có khnăng loi trtt ccác dng tn công đối vi các  
hmã khi/khóa đối xng đã được biết đến, đây là mt ưu đim rt quan trng được  
kế tha tmt mã OTP. Ngoài ra, do có cơ chế xác thc ngun gc và tính toàn vn  
ca bn tin được mã hóa, thut toán này còn có khnăng chng li các dng tn công  
gimo rt hiu qu. Nhng ưu đim khác ca thut toán này là có tc độ và hiu quả  
thc hin có thso sánh vi mt mã OTP, song khóa mt chia scó thsdng nhiu  
ln như các hmt khóa đối xng khác. Đây là nhng đặc tính rt quan trng mang  
6
L H. Dũng, N.A. Vit, Đ.T.B. Ngc, “Thut toán mã hóa – xác thc … tmt mã OTP”  
Nghiên cu khoa hc công nghệ  
li khnăng ng dng cao cho thut toán trong vic thiết kế - chế to các thiết bbo  
mt thông tin.  
TÀI LIU THAM KHO  
[1]  
SharadPatil , Ajay Kumar (2010). Effective Secure Encryption Scheme(One Time  
Pad) using Complement Approach. International Journal of Computer Science &  
Communication, Vol.1,No.1,January-June 2010, pp.229-233.  
[2] Raman Kumar,Roma Jindal ,Abhinav Gupta , SagarBhalla, HarshitArora (2011). A  
Secure Authentication System-Using Enhanced One Time Pad Technique. IJCSNS  
International Journal of Computer Science and Network Security,VOL.11 No.2,February  
2011.  
[3] SharadPatil ,ManojDevare , Ajay Kumar (2007). Modified One Time Pad Data Security  
Scheme: Random Key Generation Approach. International Journal of Computer Science and  
Security (IJCSS) ,Volume (3): Issue(2).  
[4] N.J.Croft and M.S.Olivier (2005). “Using an approximated One-Time Pad to Secure  
ShortMessaging service(SMS)”. SATNAC 2005 Proceedings.  
[5] Jeff Connelly (1978). A Practical Implementation of a One-time Pad Cryptosystem. CPE  
456 , June 11, 2008.  
[6] Shannon C.E. (1949). Communication Theory of Secrecy Systems. Bell System  
Technical Journal, Vol.28-4, pp 656-715.  
[7] William Stallings (2005). Cryptography and Network Security Principles and Practices.  
Prentice Hall.  
[8] FIPS PUB 197:  
PUBLICATION 197.  
CRYPTOGRAPHY. November 2001.  
FEDERAL INFORMATION PROCESSING STANDARDS  
CATEGORY: COMPUTER SECURITY STANDARD,  
[9] Menezes A., Van Oorschot P. and Vanstone S. (1996). Handbook of Applied  
Cryptography. Boca Raton, Florida: CRC Press.  
[10] D. Coppersmith, H. Krawczyk, and Y. Mansour, “The shrinking generator,” in  
CRYPTO ’93: Proceedings of the 13th annual international cryptology conference on  
Advances in cryptology, (New York, NY, USA), pp. 22–39, Springer-Verlag New York, Inc.,  
1994.  
ABSTRACT  
AN ENCRYPTION AND AUTHENTICATION ALGORITHM DEVELOPED  
BASED ON THE ONE – TIME PAD CIPHER  
The paper proposes an encryption and authentication algorithm developed based on  
the One – Time Pad (OTP) cipher. Advantages of the new algorithm is to have high  
safety and efficient implementation as OTP cipher, but the establishment, management -  
distribution and usage of keys are exactly the same as the Symmetric-key cryptosystems  
in practice (DES,AES,…)  
KEYWORDS - Symmetric-Key Cryptography,  
Symmetric-Key Cryptographic  
Algorithm, Symmetric-Key Cryptosystems, One - Time Pad Algorithm, OTP Cipher.  
Tp chí Nghiên cu KH&CN quân s, Số Đặc san CNTT, 12 - 2020  
7
Công nghthông tin  
Nhn bài ngày 17 tháng 10 năm 2020  
Hoàn thin ngày 10 tháng 12 năm 2020  
Chp nhn đăng ngày 15 tháng 12 năm 2020  
Địa ch: 1 Hc vin KTQS.  
2 BTư lnh Tác chiến không gian mng.  
3 Trường Đại hc CNTT & TT, Đại hc Thái Nguyên.  
*Email: luuhongdung@gmail.com.  
8
L H. Dũng, N.A. Vit, Đ.T.B. Ngc, “Thut toán mã hóa – xác thc … tmt mã OTP”  
pdf 8 trang baolam 10/05/2022 4060
Bạn đang xem tài liệu "Phát triển thuật toán mã hóa - xác thực thông tin từ OTP CIPHER", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfphat_trien_thuat_toan_ma_hoa_xac_thuc_thong_tin_tu_otp_ciphe.pdf