Tài liệu Phân tích tiêu thụ điện năng của thiết bị mật mã: Nghiờn cứu khoa học cụng nghệ 
Tạp chớ Nghiờn cứu KH&CN quõn sự, Số 34, 12 - 2014 87 
PHâN TíCH TIêU thụ đIệN NăNG 
của THIếT Bị MậT Mã 
NGUYỄN HỒNG QUANG 
Túm tắt: Tiờu thụ điện năng của thiết bị mật mó kốm theo nhiều thụng tin về 
hoạt động và dữ liệu đang được xử lý. Tấn cụng bằng cỏch phõn tớch điện năng 
tiờu thụ nhằm trớch xuất khúa mó của thuật toỏn mật mó là chủ đề rất sụi động 
hiện nay. Đó cú nhiều bài bỏo về vấn đề này nhưng cỏc nghiờn cứu khụng bắt 
đầu từ nền tảng lý thuyết mà DPA dựa vào nờn người đọc nhiều khi bối rối. Bài 
bỏo này lý giải những cơ sở lý thuyết đú, cú minh họa bằng thực nghiệm và cuối 
cựng là mụ tả một tấn cụng DPA lờn AES-128. 
Từ khúa: Phõn tớch năng lượng vi sai, Tấn cụng phõn tớch năng lượng, 
 Tấn cụng side-channel, DPA. 
1. GIỚI THIỆU 
Tiờu thụ điện năng EPC (electrical power consumption) của một mạch điện 
phụ thuộc vào dữ liệu mạch đang xử lý, nú cung cấp nhiều thụng tin về hoạt động 
và cỏc thụng số của mạch[2]. Đối với thiết b...
                
              
                                            
                                
            
 
            
                
7 trang | 
Chia sẻ: quangot475 | Lượt xem: 839 | Lượt tải: 0
              
            Bạn đang xem nội dung tài liệu Phân tích tiêu thụ điện năng của thiết bị mật mã, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 87 
PH©N TÝCH TIªU thô ®IÖN N¨NG 
cña THIÕT BÞ MËT M· 
NGUYỄN HỒNG QUANG 
Tóm tắt: Tiêu thụ điện năng của thiết bị mật mã kèm theo nhiều thông tin về 
hoạt động và dữ liệu đang được xử lý. Tấn công bằng cách phân tích điện năng 
tiêu thụ nhằm trích xuất khóa mã của thuật toán mật mã là chủ đề rất sôi động 
hiện nay. Đã có nhiều bài báo về vấn đề này nhưng các nghiên cứu không bắt 
đầu từ nền tảng lý thuyết mà DPA dựa vào nên người đọc nhiều khi bối rối. Bài 
báo này lý giải những cơ sở lý thuyết đó, có minh họa bằng thực nghiệm và cuối 
cùng là mô tả một tấn công DPA lên AES-128. 
Từ khóa: Phân tích năng lượng vi sai, Tấn công phân tích năng lượng, 
 Tấn công side-channel, DPA. 
1. GIỚI THIỆU 
Tiêu thụ điện năng EPC (electrical power consumption) của một mạch điện 
phụ thuộc vào dữ liệu mạch đang xử lý, nó cung cấp nhiều thông tin về hoạt động 
và các thông số của mạch[2]. Đối với thiết bị mật mã, EPC mang theo thông tin về 
hoạt động hay thông số của thuật toán mật mã. Tấn công bằng cách đo và phân tích 
EPC được coi là tấn công không cần chi phí lớn nhưng đặc biệt hiệu quả [9]. 
Người tấn công sử dụng sự biến động trong tiêu thụ điện năng EPC hay phát xạ RF 
của thiết bị để tìm ra khóa của thuật toán mật mã [1]. Năm 1999, Kocher và các 
cộng sự đã lần đầu tiên thông báo khóa mã của smartcard có thể được tìm thấy 
theo phương pháp này [20]. Kể từ bài báo đầu tiên của Kocher rồi sau đó được mô 
hình hóa trong [18], đã có rất nhiều nghiên cứu tiếp theo và vấn đề ngày càng trở 
thành lĩnh vực nghiên cứu sôi động. Kris Tiri và các đồng nghiệp [12] tuyên bố có 
thể tìm ra khóa của vi xử lý thực hiện AES-128 bằng tấn công DPA trong thời gian 
ít hơn ba phút;Eric Brier nghiên cứu phương pháp tấn công dựa theo hệ số tương 
quan CPA giữa mẫu EPC thu được với khoảng cách Hamming của dữ 
liệu[14].Daisuke Suzuki nghiên cứu mô hình rò rỉcủa mạch CMOS phục vụ tấn 
công DPA[11].Benedikt Gierlichs nghiên cứu về mối quan hệ giữa DPA dựa theo 
giải pháp thống kê và DPA dựa theo mẫu [10].Larry Thomas McDaniel III nghiên 
cứu tấn công DPA lên hệ thống mật mã sử dụng FPGA [16].Marc Joye nghiên cứu 
về tấn công DPA bậc hai [13].Huiyun Li và đồng nghiệp nghiên cứu đánh giá an 
toàn không xâm phạm vật lý [6].William Hnath đưa nghiên cứu về tấn công phân 
tích EPC vào trường đại học [7]. Télécom ParisTech và AIST tổ chức thi tấn công 
DPA [5], gồm bốn cuộc thi, v1 khởi đầu trong thời gian CHES’08, v2 từ 2009, v3 
trong thời gian COSADE’11, v4 từ 2013 và hiện vẫn đang tiếp diễn. Năm 2014 
Ban nghiên cứu mật mã của công ty Rambus, do nhà mật mã học nổi tiếng Paul 
Kocher sáng lập, giới thiệu họ các nhân mật mã có khả năng kháng lại DPA cho 
phép tích hợp vào các SoC [1]. Ngoài ra, còn rất nhiều nghiên cứu khác liên quan 
đến EPC [3], [4],[8] 
Tấn công phân tích EPC gồm hai loại SPA và DPA [2]. Trong tấn công SPA, 
người tấn công khai thác mối quan hệ giữa lệnh được thực hiện và hình dáng vết 
EPC. Việc phân tích thực hiện trên trục thời gian. DPA khai thác mối quan hệ giữa 
Kỹ thuật điện tử & Khoa học máy tính 
88 Nguyễn Hồng Quang, “Phân tích tiêu thụ điện năng thiết bị mật mã”. 
dữ liệu được xử lý và EPC. SPA đòi hỏi phải biết cấu trúc thiết bị và trình tự thực 
hiện thuật toán mật mã. DPA chỉ cần biết thiết bị sử dụng thuật toán gì là đủ. Phân 
tích DPA dựa vào số lượng lớn phép đo và dùng thống kê để lọc bỏ nhiễu, còn 
SPA chỉ dựa vào một hoặc số lượng nhỏ vết tiêu thụ điện năng nên đòi hỏi phép đo 
sạch [4]. Phân tích DPA cho kết quả là khóa, còn phân tích SPA chỉ cho sự suy 
đoán về hoạt động hiện tại của thuật toán [9]. Do tính hiệu quả của nó mà DPA 
được rất nhiều người nghiên cứu, tuy nhiên, các nghiên cứu đó thường chấp nhận 
phương pháp tấn công do Paul Kocher giới thiệu mà thiếu tìm hiểu sâu về cơ sở lý 
thuyết của tấn công. Mục đích của bài báo là lý giải cơ sở lý thuyết mà DPA dựa 
vào, kèm theo thực nghiệm minh họa. Tiếp theo, chúng tôi mô tả các bước tấn 
công DPA lên thuật toán thuật toán AES. 
2. CƠ SỞ LÝ THUYẾT 
EPC của mạch điện phụ thuộc vào dữ liệu nó xử lý [2]. Trong trường hợp thuật 
toán mật mã thì đó là dữ liệu rõ và dữ liệu khóa. Ta có quan hệ   =  ( ,  ), trong 
đó, P phụ thuộc vào bản rõ C và khóa K. P, C là các dữ kiện đã biết, suy ra có thể 
tìm được K. Đây là cơ sở của tấn công phân tích EPC. Để thấy EPC phụ thuộc vào 
dữ liệu đang được xử lý như thế nào, cần đi sâu vào kỹ thuật điện tử. Bài báo 
sẽ tập trung vào công nghệ CMOS vì điện tử hiện đại đa phần đều sử dụng 
công nghệ này. 
Đặc điểm của CMOS là trong chế độ tĩnh nó hầu như không tiêu thụ điện năng 
mà chỉ có trong chế độ động tức là khi có sự chuyển trạng thái [15]. EPC tổng 
cộng của mạch CMOS là tổng tiêu thụ EPC của các logic phần tử tạo thành mạch 
đó, do đó, EPC tổng phụ thuộc vào số lượng các phần tử logic, đường nối giữa 
chúng và cấu trúc của các phần tử. Các phần tử CMOS làm việc theo tín hiệu vào 
và tiêu thụ điện năng từ nguồn    . Gọi dòng tổng tức thời là    ( ), EPC tức thời 
là     ( ), thì EPC trung bình của mạch điện trong thời gian T được tính theo công 
thức (1)[15]: 
    
1
 
      ( )  
 
 
=
   
 
     
 
 
( )   (1) 
Do các CMOS đều được xây dựng dựa trên mạch bù [15] với các phần tử kéo 
lên và kéo xuống nên ta sẽ sử dụng mạch đảo, là mạch phổ biến, để phân tích khi 
nào và vì sao mạch tiêu thụ điện năng. Về bản chất EPC của mạch đảo gồm hai 
phần: phần tĩnh      , là EPC khi phần tử không hoạt động,và phần động     , là 
EPC khi phần tử chuyển mạch bởi tín hiệu trong hoặc ngoài gây ra. 
EPC tĩnh 
Cấu trúc bù của các phần tử CMOS khiến các transistor không bao giờ dẫn 
điện đồng thời. Trong hình 1, khi đầu vào a có mức logic 0 thì P1 dẫn và N1 ngắt, 
ngược lại khi a bằng ‘1’ thì P1 ngắt và N1 dẫn. Trong cả hai trường hợp đều không 
có thông mạch trực tiếp từ     đến GND, chỉ có dòng rò       rất nhỏ cỡ 
10      = 1   [15][15] chảy qua transistor cắt dòng, do đó, EPC tĩnh 
     =      .    rất nhỏ. 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 89 
Hình 1. Mạch đảo CMOS kiểu bù. 
EPC động 
Tại mỗi thời điểm chuyển mạch, tín hiệu ra của đảo CMOS thực hiện một trong 
bốn chuyển mạch (Bảng 1). ở hai trường hợp 0  0 và 1  1, mạch đảo tiêu thụ 
điện năng tĩnh, hai trường hợp còn lại, mạch tiêu thụ điện năng động. Rõ ràng 
   ,     ≫     »   . Lý do khiến EPC động lớn là do dòng điện cần để nạp cho    
và do dòng ngắn mạch trong khoảng thời gian khi phần tử chuyển mạch. 
Bảng 1. EPC các trạng thái chuyển mạch của mạch đảo CMOS. 
Chuyển mạch EPC Loại EPC 
0  0     tĩnh 
0  1     tĩnh + động 
1  0     tĩnh + động 
1  1     tĩnh 
Dòng nạp 
Khi chuyển mạch, CMOS tiêu thụ dòng từ nguồn nuôi để nạp cho tụ tải   .    
gồm tụ trong và tụ ngoài. Tụ trong là tụ của mạch CMOS. Tụ ngoài là tụ của 
đường mạch nối đến các phần tử tiếp theo và tụ vào của chúng. Độ lớn của    phụ 
thuộc nhiều vào tính chất vật lý của công nghệ chế tạo CMOS, vào chiều dài dây 
nối đến các phần tử tiếp theo và vào số lượng các phần tử đó. Thường thì    trong 
khoảng 10    Farad đến 10    Farad [15]. Hình 1cho thấy    được nạp qua 
PMOS transistor P1. Việc nạp xảy ra khi đầu vào a chuyển từ 1  0 gây ra sự 
chuyển 0  1 của q ở đầu ra. Khi ấy    được nạp và tiêu thụ dòng từ nguồn nuôi. 
Khi a chuyển từ 0 lên 1, q thay đổi từ 1 xuống 0 gây ra sự phóng của    qua 
NMOS transistor N1. Khi này không có sự tiêu thụ điện năng từ nguồn. 
EPC cần thiết để nạp    trong khoảng thời gian T được tính theo (2)[15], ở đó 
     ( ) là điện năng nạp tức thời, f là tần số clock, a là hệ số hoạt động của phần 
tử. Hệ số này tương đương với trung bình số lần chuyển 0  1 tại đầu ra của phần 
tử trong mỗi chu kỳ clock. 
      =
1
 
       ( )   = a× ×  ×   
 
 
 
 (2) 
Dòng ngắn mạch 
Phần thứ hai của EPC động do dòng ngắn mạch [15] xảy ra trong đảo CMOS 
tại thời điểm chuyển mạch (Hình 2), đó là khoảng thời gian ngắn cả hai transistor 
Kỹ thuật điện tử & Khoa học máy tính 
90 Nguyễn Hồng Quang, “Phân tích tiêu thụ điện năng thiết bị mật mã”. 
P1 và N1 cùng dẫn khi có sự chuyển 0  1 và 1  0. EPC ngắn mạch     trong 
trường hợp này được tính như (3). Trong đó    ( ) là EPC ngắn mạch tức thời của 
phần tử.       là dòng đỉnh do ngắn mạch gây nên,     là thời gian ngắn mạch tồn 
tại. 
    =
1
 
     ( )   =
 
 
a× ×   ×     ×    
(3) 
Hình 2. Các thành phần của dòng ngắn mạch. 
     phụ thuộc vào hoạt động của mạch, nói cách khác phụ thuộc vào a. Ta sẽ 
thực nghiệm kiểm chứng điều này trên mạch cụ thể chạy thuật toán mật mã. Cho 
một vi xử lý thực hiện AES-128. Gọi d là bit MSB của byte ra của S-box vòng thứ 
nhất. Thực hiện mã hóa 500 lần sao cho d = 0 và 500 lần d = 1. Lấy trung bình các 
vết EPC ứng với mỗi tậpvà vẽ đồ thị như Hình 3. Sự khác biệt trên biểu đồ cho 
thấy EPC phụ thuộc vào giá trị của dữ liệu được xử lý. Sai lệch rất nhỏ, có thể 
không phân biệt được trong nền nhiễu và các vết EPC của các phần khác, nhưng 
khi tăng số lượng mẫu lên thật nhiều, cỡ hàng ngàn, thì có thể quan sát được sự sai 
lệch này nhờ thống kê toán học. 
Hình 3. Các vết EPC đối với d = 1 và d = 0. 
Việc tiếp theo là chọn điểm tấn công. Điểm tấn công phải là nơi mạch điện xử 
lý dữ liệu liên quan rõ và khóa. Phân tích thuật toán AES [17] ta thấy điểm tấn 
công thỏa mãn là đầu ra của S-box. Gọi   ,  là giá trị trung gian sau phép Sub-
Bytes của vòng thứ nhất, ở đây i là số lần lấy mẫu, n là thứ tự byte của giá trị trung 
gian (  Î{0,  ,15});    là byte thứ n của khóa vòng đầu tiên;   ,  là byte thứ n 
củabản rõ thứ i. Ta có quan hệ   ,  = (  , Å   ). Trong quan hệ này,   ,  là cái 
đã biết,    là khóa cần tìm. S là SubBytes của AES.   ,  là giá trị trung gian phụ 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 91 
thuộc vào   . Các biến này đều có giá trị 1 byte.    có 256 giá trị có thể nên có 
thể thử với từng giá trị giả thiết. Với mỗi   giả thiết và   ,  ta tính ra giá trị   , . 
Mỗi lần mã hóa sử dụng bit MSB của   ,  để chia vết EPC thu được vào các tập 
con tương ứng với giá trị 0 hay 1. Sau đó tính giá trị trung bình của các tập con và 
trừ chúng cho nhau. Trường hợp    đúng, hiệu số có giá trị và trên biểu đồ vi sai 
xuất hiện gai nhọn. Gai càng rõ khi số lượng mẫu i càng tăng. Trường hợp    sai 
thì   ,  không liên quan đến dữ liệu được xử lý và trên biểu đồ không có gai nhọn. 
Sau khi đã tìm ra byte khóa đầu tiên, bằng cách tương tự sẽ tìm ra từng byte khóa 
còn lại cho đến khi được 16 byte khóa. 
3. QUÁ TRÌNH TẤN CÔNG DPA 
Gọi T là tập các vết EPC được,    là vết thứ i,   [ ] là trích mẫu EPC tại thời 
điểm thứ j trong vết   ; C là tập các bản rõ ngẫu nhiên,    là bản rõ thứ i tương ứng 
với vết   . Ta thiết lập hàm lựa chọn  (  ,   )[2][2] với đầu vào    và khóa giả 
thiết   . Vi sai ∆  tại mỗi điểm j đối với khóa giả thiết    bằng: 
∆ [ ]=
∑  (  ,   )  [ ]
 
   
∑  (  ,   )
 
   
−
∑ (1 −  (  ,   ))  [ ]
 
   
∑ (1 −  (  ,   ))
 
   
 (4) 
Trước tiên, mã hóa m bản rõ,   = (1000÷ 10000) tùy thuộc vào mức độ 
nhiễu của mạch điện. Đồng thời ghi lại EPC    mỗi lần mã hóa tại khoảng thời 
gian ứng với hoạt động của SubByte vòng thứ nhất. Tính hàm lựa chọn với byte rõ 
đầu tiên C của state và 256 giả thiết của khóa   . Phân các vết EPC thành hai tập 
ứng với kết quả 0 và 1 của hàm lựa chọn. Tính trung bình EPC của hai tập đó, trừ 
hai giá trị cho nhau và vẽ biểu đồ vi sai. Xét kết quả 256 biểu đồ, biểu đồ nào có 
gai nhọn rõ rệt nhất cho kết quả khóa. Hình 4 biểu diễn các đồ thị ứng với các khóa 
giả thiết    = 118, 119và 120. Có thể thấy có các đỉnh nhọn rất phân biệt trong 
biểu đồ vi sai khóa k = 119, đó chính là byte khóa cần tìm. Sau khi tìm được byte 
khóa đầu tiên, lặp lại các bước để tìm ra 15 byte khóa còn lại. 
Hình 4. Biểu đồ vi sai ứng với ba khóa giả thiết 118, 119 và 120. 
4. KẾT LUẬN 
Bài báo đã làm sáng tỏ về tấn công DPA khi nghiên cứu sâu, cả về cơ sở lý 
thuyết lẫn thực nghiệm. DPA thuộc loại thụ động, không xâm phạm, không cần 
biết cấu trúc thiết bị và cách thực hiện thuật toán [19], có thể tách được tín hiệu có 
ích trong nền nhiễu bằng cách tăng số lần lấy mẫu đủ lớn, không cần thiết bị phân 
Kỹ thuật điện tử & Khoa học máy tính 
92 Nguyễn Hồng Quang, “Phân tích tiêu thụ điện năng thiết bị mật mã”. 
tích đắt tiền. Điều kiện cần thiết cho tấn công loại này là người tấn công phải có 
thiết bị cần tấn công và biết thuật toán mật mã sử dụng. Các kiến thức cần thiết là 
điện tử, thống kê toán học và tin học. Khi đã hiểu rõ cơ chế tấn công thì việc tiếp 
theo cần nghiên cứu là chống tấn công. Như kết quả đã chỉ ra, nếu chỉ gây nhiễu để 
che đi vết EPC của phần mạch điện xử lý kết quả trung gian, thì bằng cách tăng số 
lần lấy mẫu đủ lớn kết hợp thống kê toán học vẫn có thể khử được nhiễu và tách 
được khóa. Bởi vậy nhiệm vụ chống DPA là tìm cách che dấu kết quả trung gian, 
hoặc phá vỡ mối liên quan giữa giá trị trung gian với EPC, hoặc cơ chế phát nhiễu 
phải đồng bộ với quá trình xử lý kết quả trung gian đó. 
TÀI LIỆU THAM KHẢO 
[1] 
cryptography-research-division-launches-suite-of-dpa-resistant-cores-addressing-
the-continuin.html 
[2] P. Kocher, J. Jaffe, B. Jun, Introduction to differential power analysis, J Cryptogr 
Eng 2011. 
[3] Dr. Sergei Skorobogatov, “Side-channel attacks: new directions and horizons”, 
Design and Security of Cryptographic Algorithms and Devices (ECRYPT II), 
2011. 
[4] E. Steinkasserer, “Comparison of Classical Power Analysis Attacks and a Sto-
chastic Approach for Differential Side-Channel Cryptanalysis”, thesis, Tech-
nische Universitọt München, 2011. 
[5]  
[6] Huiyun Li, Keke Wu, Fengqi Yu, Hai Yuan. Evaluation Metrics of Physical Non-
invasive Security.Security and Privacy of Pervasive Systems and Smart Devices, 
2010. 
[7] W. Hnath, J. Pettengill, Differential Power Analysis Side-Channel Attacks in 
Cryptography, Worcester Polytechnic Institute 2010. 
[8] F. Amiel, K. Villegas, Passive and Active Combined Attacks – Combining Fault 
Attacks and Side Channel Analysis, Workshop on Fault Diagnosis and Tolerance 
in Cryptography, 2007. 
[9] Stefan Mangard, Elisabeth Oswald, Thomas Popp, Power Analysis Attacks Re-
vealing the Secrets of Smart Cards, Springer Science+Business Media, LLC, 
2007. 
[10] Benedikt Gierlichs, Kerstin Lemke-Rust, và Christof Paar. Templates vs. Stochas-
tic Methods, Cryptographic Hardware and Embedded Systems - CHES 2006. 
[11] D. Suzuki, DPA Leakage Models for CMOS Logic Circuits, CHES ’05, Springer-
Verlag, 2005. 
[12] K. Tiri at al, A Side-Channel Leakage Free Coprocessor IC in 0.18m CMOS for 
Embedded AES-based Cryptographic and Biometric Processing, DAC, June 
2005. 
[13] Marc Joye, Pascal Paillier, và Berry Schoenmakers, On Second-Order Differen-
tial Power Analysis, Cryptographic Hardware and Embedded Systems (CHES), 
Springer-Verlag, 2005, 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 93 
[14] E. Brier, C. Clavier và F. Olivier. Correlation Power Analysis with a Leakage 
Model, Cryptographic Hardware and Embedded Systems - CHES 2004: 6th In-
ternational Workshop. 2004. 
[15] Jaume Secura, Charles F. Hawkins, CMOS Electronics, John Wiley & Sons, Inc., 
2004. 
[16] L. McDaniel III, An Investigation of Differential Power Analysis Attacks on 
FPGA-based Encryption Systems, Blacksburg, Virginia, 2003. 
[17] NIST. FIPS-197: Advanced Encryption Standard, November 2001. 
[18] T. Messerges, E. Dabbish, và R. Sloan. Investigation of power analysis attacks on 
smartcards. In Usenix Workshop on Smartcard Technology 1999. 
[19] L. Goubin, J. Patarin, DES and Differential Power Analysis, CHES’99, Springer-
Verlag, 1999. 
[20] Paul C. Kocher, J. Jaffe, và Benjamin Jun. Differential Power Analysis, CRYPTO 
'99, 1999. 
ABSTRACT 
POWER COMSUMPTION ANALYSES FOR CRYTOGRAPHIC DEVICE 
Electrical power comsumption of cryptographic devices contains in-
formation about the operations being performed and the data being 
processed. So attack by analysing the electrical power comsumption to de-
rive secret key from crypto algorithms is currently taken a great interest. 
There are a lot of papers in this topic, however they haven’t shown base 
theories which DPA stems from therefore it is really difficult to under-
stand it for many readers. This paper tries to comprehend the theories, 
with illustrating by experiment and in the final, describes steps of DPA to 
the AES-128. 
Key words: Differential Power Analysis, Oower analysis attacks, Side-channel attacks, DPA. 
Nhận bài ngày 13 tháng 09 năm 2014. 
Hoàn thiện ngày 24 tháng 10 năm 2014. 
Chấp nhận đăng ngày 05 tháng 12 năm 2014. 
Địa chỉ : Học viện Kỹ thuật Mật mã - Ban Cơ Yếu Chính phủ. 
            Các file đính kèm theo tài liệu này:
12_nguyen_hong_quang_87_93_1501_2149230.pdf