intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Một phương pháp hiệu quả thực hiện phép nhân điểm trên đường cong elliptic sử dụng thuật toán NAF

Chia sẻ: Thi Thi | Ngày: | Loại File: PDF | Số trang:8

51
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong nội dung bài báo này, đề xuất một phương pháp thực hiện phép nhân điểm trên đường cong Elliptic trên trường hữu hạn theo thuật toán NAF (Non Adjacent Form) để khai triển một số nguyên. Thuật toán được cài đặt trực tiếp trên phần cứng FPGA mà không cần tính toán trước như thuật toán nhân điểm sử dụng NAF thông thường.

Chủ đề:
Lưu

Nội dung Text: Một phương pháp hiệu quả thực hiện phép nhân điểm trên đường cong elliptic sử dụng thuật toán NAF

Nghiên cứu khoa học công nghệ<br /> <br /> MỘT PHƯƠNG PHÁP HIỆU QUẢ THỰC HIỆN PHÉP NHÂN ĐIỂM<br /> TRÊN ĐƯỜNG CONG ELLIPTIC SỬ DỤNG THUẬT TOÁN NAF<br /> Hoàng Văn Quân1*, Nguyễn Biên Cương2, Lều Đức Tân2<br /> <br /> Tóm tắt: Trong vài năm trở lại đây, mật mã đường cong Elliptic đã được sử<br /> dụng khá rộng rãi trong nhiều lĩnh vực. Một trong số những phép tính phức tạp<br /> trong thực hiện mật mã đường cong elliptic là phép tính nhân điểm. Trong nội<br /> dung bài báo này, chúng tôi đề xuất một phương pháp thực hiện phép nhân điểm<br /> trên đường cong Elliptic trên trường hữu hạn theo thuật toán NAF (Non Adjacent<br /> Form) để khai triển một số nguyên. Thuật toán được cài đặt trực tiếp trên phần<br /> cứng FPGA mà không cần tính toán trước như thuật toán nhân điểm sử dụng NAF<br /> thông thường.<br /> Từ khóa: Thuật toán NAF, Thuật toán nhân điểm, Mật mã, Cứng hóa ECC trên FPGA.<br /> <br /> 1. MỞ ĐẦU<br /> Phép tính cơ bản và quan trọng nhất trong thuật toán mật mã elliptic là phép<br /> nhân vô hướng một điểm trên đường cong elliptic với một số nguyên dương (k.P<br /> với k là số nguyên dương, P là một điểm trên đường cong Elliptic). Trong những<br /> năm gần đây, đã có nhiều thuật toán lý thuyết được công bố để thực hiện tăng tốc<br /> cho phép tính này. Trong số những thuật toán trên thì thuật toán nhân điểm dựa<br /> trên khai triển một số nguyên theo thuật toán NAF là một trong những phương<br /> pháp tính toán hiệu quả cho cài đặt trên phần cứng FPGA [1,2,4].<br /> Thuật toán đơn giản nhất sử dụng cho tính toán phép nhân điểm là thuật toán<br /> nhị phân. Tuy nhiên, thuật toán này hoạt động khá chậm vì cần nhiều số lượng<br /> phép tính cộng điểm và nhân đôi elliptic [1,3]. Thuật toán nhân điểm dựa trên khai<br /> triển một số nguyên theo NAF đã có những cải tiến đáng kể khi giảm được số<br /> lượng phép cộng điểm từ w-1 xuống 2*(w-1)/3 (với w là số bit 1 trong biểu diễn<br /> nhị phân của k). Thuật toán nhân điểm theo NAF dựa trên ý tưởng phép cộng điểm<br /> và phép trừ điểm có hiệu quả tính toán tương đương nhau, nên sử dụng khai triển<br /> theo NAF(k) thay vì sử dụng biểu diễn nhị phân của k. Bài báo này trình bày<br /> phương pháp triển khai một số nguyên theo NAF tính toán trực tiếp trong thực hiện<br /> phép nhân điểm, với phương pháp này cho ta hiệu quả về thời gian tính toán và tài<br /> nguyên sử dụng khi thực hiện phép nhân điểm trên phần cứng.<br /> <br /> 2. MỘT SỐ THUẬT TOÁN TÍNH TOÁN PHÉP NHÂN ĐIỂM ELLIPTIC<br /> <br /> Phép nhân vô hướng giữa một điểm trên đường cong E với một số nguyên<br /> dương k, được xác định như sau: Q=k.P, P là một điểm trên đường cong E và 1 ≤<br /> k < ord(E) (2.1)<br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san Viện Điện tử, 10 - 2015 217<br /> Công nghệ thông tin & Khoa học máy tính<br /> <br /> Thuật toán đơn giản nhất dùng để tính phép nhân vô hướng là thuật toán nhị<br /> phân hay còn gọi là thuật toán nhân đôi và cộng.<br /> 2.1. Thuật toán 1: Nhân điểm theo phương pháp nhị phân [1]<br /> l 1<br /> Đầu vào: Điểm P, số nguyên k có kích thước l bit k   k j 2 j ; k j  0,1 .<br /> j 0<br /> Đầu ra: Q = k.P<br /> Bước 1: Q ← O<br /> Bước 2: vòng lặp j  l  1 đến 0<br /> Bước 2.1: Q  2.Q<br /> Bước 2.2: nếu k j  1 thì Q  Q  P<br /> Bước 3: Kết thúc vòng lặp<br /> Bước 4: Trả về giá trị Q.<br /> Thuật toán nhân điểm theo phương pháp nhị phân yêu cầu l-1 phép nhân đôi và<br /> w-1 phép cộng điểm; trong đó l: chiều dài chuỗi bit trong biểu diễn nhị phân của số<br /> nguyên k, w-1 là số các bit ‘1’ có trong chuỗi bit.<br /> 2.2. Thuật toán 2: Nhân điểm theo phương pháp biểu diễn m-ary [1]<br /> Thuật toán này sử dụng biểu diễn m-ary của số nguyên k, trong đó m  2 r , với<br /> r  1 . Thuật toán nhị phân là trường hợp đặc biệt của m-ary khi r = 1.<br /> Đầu vào: điểm P, số nguyên k có kích thước l bit và có biểu diễn m-ary là<br /> d 1<br /> k   j 0 k j 2 j ; k j  0,1,..., m  1; d  l / r .<br /> Đầu ra: Q  k .P .<br /> Tính toán trước:<br /> Bước 1: P1  P<br /> Bước 2: vòng lặp i  2 đến m  1 thực hiện : Pi  Pi 1  P .<br /> Kết thúc vòng lặp.<br /> Bước 3: Q  O<br /> Bước 4: vòng lặp chính: j  d  1 đến 0 thực hiện :<br /> Bước 2.1: Q  m .Q<br /> Bước 2.2: Q  Q  Pk j<br /> Bước 5: Kết thúc vòng lặp chính.<br /> Bước 6: Trả về giá trị Q.<br /> Thuật toán nhân điểm theo m-ary yêu cầu  d  1  r phép nhân đôi và m  2<br /> l<br /> phép cộng điểm với d  . Như vậy, số phép nhân đôi của thuật toán m-ary lớn<br /> r<br /> nhất là r  1  l  1 của thuật toán nhị phân.<br /> 2.3. Thuật toán nhân điểm dựa trên khai triển một số nguyên theo NAF [1]<br /> <br /> <br /> <br /> 218 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> Phép cộng điểm và trừ điểm có hiệu quả tương đương nhau trên trường hữu<br /> hạn. Trên GF ( p ), p  3 nếu P  ( x , y )     p  thì  P  ( x ,  y )    p  , với<br /> GF(2n) thì  P  ( x, x  y )   2n do vậy tính toán phép cộng điểm và trừ điểm<br />  <br /> có hiệu quả tương đương nhau trên GF ( p) , GF (2n ) . Với thuật toán NAF ta có thể<br /> biểu diễn một số nguyên dương k theo dạng các số có dấu<br /> l 1<br /> k   i 0 ki 2i ki  0, 1 ; trong đó hai số ki liên tiếp khác không.<br /> Thuật toán 3: Khai triển một số nguyên dương theo NAF<br /> Đầu vào: số nguyên dương k;<br /> Đầu ra: NAF(k);<br /> Thực hiện:<br /> Bước 1: Đặt c:=k ;<br /> Bước 2: Gán tập S := ;<br /> Bước 3: Trong khi c > 0 thực hiện vòng lặp:<br /> 3.1. Nếu c lẻ thì:<br /> đặt u := 2 - (c mod 4);<br /> đặt c := c – u;<br /> 3.2. Còn không thì:<br /> u:= 0;<br /> 3.3. Kết thúc Nếu;<br /> Bước 4: Thêm u vào tập S;<br /> Bước 5: Đặt c := c/2;<br /> Bước 6: Kết thúc vòng lặp;<br /> Trả về tập S;<br /> Tính chất của khai triển một số nguyên theo NAF.<br /> a. Với một số nguyên dương k, khai triển NAF(k) là duy nhất.<br /> b. NAF(k) có số chữ số khác không ít nhất trong tất cả các biểu diễn có dấu<br /> của k.<br /> c. Chiều dài của dãy NAF(k) lớn hơn 1 so với chiều dài dãy biểu diễn nhị<br /> phân của k.<br /> l l 1<br /> d. Nếu l là chiều dài dãy NAF(k) thì 2  k  2<br /> 3 3<br /> e. Mật độ số chữ số khác không trong biểu diễn NAF của một số có chiều dài<br /> l bit xấp xỉ l/3.<br /> Thuật toán 4 : Nhân điểm Elliptic dựa trên triển khai theo NAF [1,4]<br /> Đầu vào: điểm P, số nguyên k có kích thước l bit ,<br /> l 1 j<br /> k   k j 2  k j  0 , 1 , k  0 ;<br /> j0<br /> Đầu ra: Q = k.P<br /> Thực hiện:<br /> Bước 1: Sử dụng thuật toán 3 để tính khai triển một số nguyên dương;<br /> Bước 2: Q ← O<br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san Viện Điện tử, 10 - 2015 219<br /> Công nghệ thông tin & Khoa học máy tính<br /> <br /> Bước 3: vòng lặp i = l-1 tới 0 thực hiện<br /> 3.1. Q ← 2Q<br /> 3.2. Nếu ki = 1 thì Q ← Q + P<br /> 3.3. Nếu ki = -1 thì Q ← Q - P<br /> Bước 4: Kết thúc vòng lặp;<br /> Trả về kết quả Q;<br /> Với tính chất thứ (e) của khai triển một số nguyên theo NAF ta có thể thấy với<br /> một số k có biểu diễn nhị phân với chiều dài l, giả sử số bit 1 tương đương số bit 0<br /> là l/2 thì biểu diễn theo NAF(k) có số bit khác không là l/3, như vậy khi sử dụng<br /> nhân điểm dựa trên NAF số phép tính cộng điểm sẽ là l/3, trong khi sử dụng thuật<br /> toán nhân điểm theo phương pháp nhị phân số phép tính cộng điểm cần sử dụng là<br /> l/2. Điều này chứng tỏ thuật toán NAF hiệu quả hơn thuật toán nhị phân về tốc độ<br /> tính toán.<br /> Ngoài ra, còn một số thuật toán khác sử dụng cho phép nhân điểm vô hướng:<br /> thuật toán Sliding Window, thuật toán Montgomery…<br /> 3. ĐỀ XUẤT THUẬT TOÁN NHÂN ĐIỂM ELLIPTIC DỰA TRÊN<br /> TRIỂN KHAI MỘT SỐ NGUYÊN THEO NAF TÍNH TOÁN TRỰC TIẾP<br /> Trong thuật toán 4, Bước 1 cần tính khai triển một số nguyên dương theo thuật<br /> toán 3. Các giá trị của NAF(k) cần được lưu lại sau đó thực hiện thuật toán nhân<br /> điểm theo thuật toán 4. Quá trình này khiến thuật toán không được tính toán trực<br /> tiếp và cần không gian bộ nhớ để lưu các giá trị sinh ra từ NAF(k), các giá trị này<br /> không có ý nghĩa trong tính toán thuật toán nhân điểm vì kết quả cuối cùng cần<br /> tính là kết quả Q= k.P.<br /> Trong nội dung bài báo này chúng tôi đề xuất thuật toán nhân điểm dựa trên<br /> NAF (Thuật toán 5) và có thể tính toán trực tiếp mà không cần lưu trước các tham<br /> số biểu diễn NAF của k (bỏ qua Bước 1 trong Thuật toán 4)<br /> <br /> Thuật toán 5: Nhân điểm Elliptic dựa trên NAF thực hiện tính toán trực tiếp<br /> l 1<br /> j<br /> Đầu vào: điểm P, số nguyên k có kích thước l bit , k  j 0 k j 2 k j  0,1 ,k  0 ;<br /> Đầu ra: Q = k.P;<br /> Thực hiện:<br /> Bước 1: Đặt c:= k;<br /> Bước 2: Đặt Q = O;<br /> Bước 3: Trong khi c > 0 thực hiện vòng lặp:<br /> 3.1 Nếu c0=1 thì:<br /> 3.1 .1 Nếu c1 = 0 thì :<br /> c= c - 1;<br /> Q := Q + P;<br /> 3 .1.2 Còn không (c1 = 1 )thì:<br /> <br /> <br /> 220 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> c := c + 1;<br /> Q := Q - P;<br /> 3.1.3 Kết thúc Nếu;<br /> 3.2 Kết thúc Nếu;<br /> Bước 4: Q:= 2Q<br /> Bước 5: c := c/2;<br /> Bước 6: Kết thúc vòng lặp;<br /> Trả về giá trị: Q;<br /> <br /> Khẳng định 1. Nếu bỏ qua các bước tính liên quan đến điểm Q, thì Thuật toán 5<br /> chính là triển khai NAF của số nguyên k.<br /> Chứng minh:<br /> Dễ thấy Bước 1 của Thuật toán 5 chính là Bước 1 của Thuật toán 3. Bước 2 của<br /> Thuật toán 3 chỉ để lưu biểu diễn theo NAF của k.<br /> Ta cần chỉ rõ Bước 3 của Thuật toán 5 chính là Bước 3 của Thuật toán 3. Thật<br /> vậy, dựa trên tính chất của phép modulo có dạng sau: b = a mod 2n , với:<br /> l 1 j n 1 j<br /> a   a j 2 , a j  0 , 1 , khi đó nếu l>n thì b  j 0 a j 2 ,a j  0, 1 (3.1)<br /> j0<br /> <br /> Áp dụng tính chất (c) của biểu diễn theo NAF, ta có: c mod 4 = c1c0, trong đó<br /> c0 là bit có trọng số bé nhất của biểu diễn nhị phân của c. Thay vào bước 3.1 của<br /> thuật toán 3 ta có: c lẻ => c0 = 1, do vậy u := 2 - (c mod 4) = 2 - {01,11} ={1,- 1}<br /> => c ={c-1, c+1} tương ứng với bước 3.1.1 và 3.1.2 của Thuật toán 5.<br /> Bỏ qua Bước 4 của Thuật toán 3 (lưu giá trị vào tập S), bước 5 của hai thuật<br /> toán là như nhau. Như vậy, nếu bỏ qua các phép toán liên quan đến điểm Q, Thuật<br /> toán 5 chính là triển khai theo NAF của số nguyên k theo Thuật toán 3.<br /> Khẳng định 2. Kết quả thực hiện Thuật toán 5 chính là thực hiện phép nhân điểm<br /> theo Thuật toán 4 mà không cần tập S để lưu biểu diễn theo NAF của số nguyên k.<br /> Với thuật toán 5 mà bài báo đề xuất, quá trình tính toán phép nhân điểm không<br /> cần tính toán trước NAF(k). Việc tính toán NAF(k) được thực hiện song song với<br /> quá trình tính toán phép nhân điểm. Quá trình khai triển NAF được thực hiện thông<br /> qua việc kiểm tra các bit số 0 (bit có trọng số nhỏ nhất LSB) và bit số 1 trong biểu<br /> diễn nhị phân của k. Với thuật toán 5, việc thiết kế thuật toán trên phần cứng hoàn<br /> toàn có thể thực hiện trực tiếp, không cần tính toán trước biểu diễn theo NAF của<br /> số nguyên k, đồng thời không cần sử dụng thêm bộ nhớ để lưu biểu diễn NAF(k)<br /> (tập S trong Thuật toán 3). Điều này vừa hạn chế được tài nguyên thiết kế khối<br /> nhân điểm trên phần cứng, vừa tăng tốc độ quá trình tính toán phép nhân điểm.<br /> <br /> 4. CỨNG HÓA PHÉP NHÂN ĐIỂM<br /> THEO THUẬT TOÁN ĐỀ XUẤT<br /> 4.1. Lựa chọn đường cong Elliptic<br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san Viện Điện tử, 10 - 2015 221<br /> Công nghệ thông tin & Khoa học máy tính<br /> <br /> Trong rất nhiều các đường cong Elliptic, không phải đường cong nào cũng có<br /> tính chất mật mã tốt. Trong bài báo này, đường cong elliptic trên trường GF(2n)<br /> theo khuyến nghị của NIST [6] được lựa chọn với các tham số như sau:<br /> - Tham số cho đường cong trên GF(2n).<br /> - Đa thức bất khả quy: F ( x)  x 283  x12  x 7  x5  1<br /> - Điểm cơ sở G ( x G , y G ) trong đó:<br /> xG =503213f78ca44883f1a3b8162f188e553cd265f23c1567a16876913b0c2ac2458492836<br /> yG  1ccda380f1c9e318d90f95d07e5426fe87e45c0e8184698e45962364e34116177dd2259<br /> - Bậc của điểm G (là số nguyên tố):<br /> <br /> n = 3885337784451458141838923813647037813284811733793061324295874997529815829704422603873<br /> Đồng thừa số (cofactor): h = 4.<br /> k= 3F00000FFFFFFFF800003800F8000E0000E000000FFFFFFE00000FFFFFFC0007E000000<br /> Công cụ được lựa chọn cho cứng hóa là FPGA trên kít chip Znq7Z045FFG900-<br /> 3 của Xilinx.<br /> 4.2. Mô hình thiết kế và kết quả thực hiện<br /> Mô hình thực hiện cứng hóa phép nhân điểm trên trường hữu hạn GF(2n) dựa<br /> trên khai triển một số nguyên theo thuật toán NAF tính toán trực tiếp được thể hiện<br /> như trên hình 1, ta có thể thấy module cứng hóa phép nhân điểm cần sử dụng các<br /> module cộng điểm elliptic, module nhân đôi và module thực hiện khai triển theo<br /> NAF(k). Kết quả thực hiện giao diện mức trên cùng bằng công nghệ FPGA được<br /> thể hiện trong hình 2.<br /> <br /> Bảng 1. So sánh tham số cứng hóa phép nhân điểm trên FPGA.<br /> Tham số Thuật toán nhân điểm Thuật toán đề xuất sử dụng<br /> sử dụng NAF (TT4) NAF tính toán trực tiếp (TT5)<br /> Number of Slice 6920 6629<br /> Registers:<br /> Number of Slice LUTs 7746 7093<br /> Number of LUT Flip 9457 8814<br /> Flop pairs used<br /> Thời gian tính toán 2583s 2575s<br /> Frequency 100 MHz 100 MHz<br /> <br /> 5. KẾT LUẬN<br /> Đóng góp chính của bài báo là việc đề xuất một thuật toán nhân điểm hiệu quả<br /> về mặt thời gian tính toán và tài nguyên sử dụng so với thuật toán nhân điểm theo<br /> NAF thông thường. Cài đặt thực hành cũng cho thấy những kết quả phù hợp với lý<br /> thuyết, tốc độ tính toán phép nhân điểm theo thuật toán đề xuất (thuật toán 5)<br /> nhanh hơn và sử dụng ít tài nguyên hơn so với thuật toán nhân điểm sử dụng NAF<br /> <br /> <br /> <br /> 222 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> truyền thống (thuật toán 4) trên trường GF(2n). Đây là yếu tố rất quan trọng để<br /> thực hiện cứng hóa mật mã đường cong elliptic như giao thức trao đổi khóa<br /> ECDH, ECHQMV, thuật toán chữ ký số ECDSA, GOST R34.10-2012 [5]… nhằm<br /> tiết kiệm thời gian tính toán và tài nguyên của thiết bị xử lý trung tâm tại các nút<br /> mạng khi phải thực hiện đồng thời nhiều kết nối tại cùng một thời điểm (nghĩa là<br /> phải thực hiện nhiều phép nhân điểm đồng thời) trong thực tế khi các mạng truyền<br /> số liệu làm việc ở tốc độ cao, băng thông lớn, đa dịch vụ và yêu cầu thời gian thực.<br /> <br /> <br /> <br /> <br /> Hình 1. Mô hình thực hiện cứng Hình 2. Kết quả thực hiện phép<br /> hóa phép nhân điểm elliptic trên nhân điểm elliptic GF(2n) trên<br /> GF(2n). FPGA<br /> TÀI LIỆU THAM KHẢO<br /> [1]. Darrel Hankerson, Alfred Menezes, Scott Vanstone, “Guide to Elliptic Curve<br /> Cryptography”, Springer – 2004.<br /> [2]. Francisco Rodri’guez – Henri’quez, N.A.Saqib, A.Di’az-Pe`rez.<br /> “Cryptopraphic Algorithms on Reconfigurable Hardware”. Springer, 2007.<br /> [3]. Jerome, A.Solinas,“Efficient Arithmetic on Koblitz Curves”. Centre for<br /> Applied Cryptographic Research, University of Waterloo, 2000.<br /> [4]. Jean-Piere Deschamps, Ge’ry Jean Antoine Bioul, Gustavo D.Stuter,<br /> “Hardware Implementation of Finite-Field Arthmetic”, Mc Graw Hill Press,<br /> 2009.<br /> [5]. Н а ц и о н а л ь н ы й с т а н д а р т р о с с и й с к о й ф е д е р а ц и и гост<br /> р 34.10 ─ 2012<br /> [6]. National Institute for Standards and Technology (NIST), “Recommended<br /> Elliptic Curve for Federal Government Use”, July 1999.<br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san Viện Điện tử, 10 - 2015 223<br /> Công nghệ thông tin & Khoa học máy tính<br /> <br /> ABSTRACT<br /> <br /> AN EFFECTIVE METHOD IMPLEMENTATION POINT MULTIPLICATON<br /> ON ELLIPTIC CURVE ALGORITHM USING NAF<br /> <br /> <br /> In recent years, Elliptic curve cryptosystems have used popularly in many<br /> fields. One of complicated operators in elliptic curve cryptosystem is scalar<br /> point-multiplication. In this paper we outline a solution to implement scalar<br /> point-multiplication for Elliptic curve on finite field based on NAF (Non<br /> Adjacent Form) algorithm. Our design can be implemented directly in FPGA<br /> and without any pre-computations as in traditional NAF.<br /> <br /> Keywords: Algorithms NAF, Point multiplication, Cryptography, Hardened Elliptic Curve Cryptography in<br /> FPGA.<br /> <br /> <br /> <br /> Nhận bài ngày 21 tháng 07 năm 2015<br /> Hoàn thiện ngày 10 tháng 08 năm 2015<br /> Chấp nhận đăng ngày 07 tháng 09 năm 2015<br /> <br /> <br /> <br /> 1<br /> Địa chỉ: Cục Cơ yếu – BTTM;<br /> *<br /> Email: hoangvanquan@gmail.com ;<br /> 2<br /> Viện KHCN Mật mã/Ban Cơ yếu Chính phủ<br /> <br /> <br /> <br /> <br /> 224 H.V.Quân, N. B.Cương, L.Đ. Tân, “Một phương pháp hiệu quả … thuật toán NAF.”<br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2