An ninh bảo mật - Hạ tầng cơ sở khóa công khai
Subject Name: là một X.500 DN, xác định đối tượng sở hữu giấy chứng nhận mà
cũng là sở hữu của khóa công khai. Một CA không thể phát hành 2 giấy chứng nhận có cùng
một Subject Name;
- Public Key: Xác định thuật toán của khóa công khai (như RSA) và chứa khóa công
khai được định dạng tùy vào kiểu của nó;
- Issuer Unique ID/Subject Unique ID: Hai trường này được giới thiệu trong X.509
phiên bản 2, được dùng để xác định hai tổ chức CA hoặc hai chủ thể khi chúng có cùng DN.
RFC 2459 đề nghị không nên sử dụng 2 trường này;
- Extensions: Chứa các thông tin bổ sung cần thiết mà người thao tác CA muốn đặt
vào chứng nhận. Trường này được giới thiệu trong X.509 phiên bản 3;
- Signature: Đây là chữ ký điện tử được tổ chức CA áp dụng. Tổ chức CA sử dụng
khóa bí mật có kiểu quy định trong trường thuật toán chữ ký. Chữ ký bao gồm tất cả các phần
khác trong giấy chứng nhận. Do đó, tổ chức CA chứng nhận cho tất cả các thông tin khác trong
giấy chứng nhận chứ không chỉ cho tên chủ thể và khóa công khai.
9 trang |
Chia sẻ: huyhoang44 | Lượt xem: 746 | Lượt tải: 0
Bạn đang xem nội dung tài liệu An ninh bảo mật - Hạ tầng cơ sở khóa công khai, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Kỷ yếu công trình khoa học 2015 – Phần I
HẠ TẦNG CƠ SỞ KHÓA CÔNG KHAI
Trần Tuấn Toàn
Khoa Toán Tin - Đại học Thăng Long
Email: toan.trantuan@gmail.com
Tóm tắt: Trong giải pháp chữ ký số, hạ tầng cơ sở khóa công khai (Public Key
Infrastructure – PKI) là hệ thống vừa mang tính tiêu chuẩn, vừa mang tính công nghệ cho
phép người dùng trong một mạng công cộng không bảo mật (như Internet), có thể trao đổi
thông tin một cách an toàn thông qua việc sử dụng một cặp khóa bí mật và công khai được
chứng nhận bởi một nhà cung cấp chứng nhận số CA được tín nhiệm. Theo X.509 PKIX15
định nghĩa, một PKI là một tập các phần cứng, phần mềm, con người và các thủ tục cần thiết
để tạo, lưu trữ, phân phối, thu hồi khóa/chứng nhận dựa trên mã hóa bất đối xứng.
Từ khóa: hạ tầng cơ sở khóa công khai, PKI, chứng nhận số, chứng thư số, chữ ký số.
1. Giới thiệu chung về hạ tầng cơ sở khóa công khai
Một PKI (Public Key Infrastructure) cho phép người sử dụng của một mạng công cộng
không bảo mật, chẳng hạn như Internet, có thể trao đổi thông tin một cách an toàn thông qua
việc sử dụng một cặp mã khóa công khai/khóa cá nhân được cấp phát và sử dụng thông qua
một nhà cung cấp chứng thực được tín nhiệm (CA - Certificate Authority). Nền tảng khóa
công khai cung cấp một chứng chỉ số, dùng để xác minh một cá nhân hoặc một tổ chức, và
các dịch vụ danh mục có thể lưu trữ và khi cần có thể thu hồi các chứng chỉ số.
1.1. Vai trò và chức năng
PKI cho phép những người tham gia xác thực lẫn nhau. Mục tiêu chính của PKI là
cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định danh người dùng. Nhờ
vậy người dùng có thể sử dụng trong một số ứng dụng như:
- Mã hóa, giải mã văn bản;
- Xác thực người dùng ứng dụng;
- Mã hóa email hoặc xác thực người gửi email;
- Tạo chữ ký số trên văn bản điện tử.
Một PKI phải đảm bảo được các tính chất sau trong một hệ thống trao đổi thông tin:
- Tính bí mật (Confidentiality):PKI phải đảm bảo tính bí mật của dữ liệu. Tính bí mật
này được cung cấp bởi các thủ tục mã hóa mật mã học, bằng cách sử dụng cả mã hóa bất đối
xứng lẫn mã hóa đối xứng. Do mã hóa bất đối xứng không hiệu quả bằng mã hóa đối xứng
trong việc mã hóa dữ liệu lớn, nó thường được sử dụng để mã hóa những đối tượng dữ liệu
tương đối nhỏ như các khóa bí mật được sử dụng trong các hệ thống mã hóa bất đối xứng.
- Tính toàn vẹn (Integrity): PKI phải đảm bảo dữ liệu không thể bị mất mát hoặc
chỉnh sửa và các giao tác không thể bị thay đổi. Tính toàn vẹn có thể được cung cấp bên trong
PKI bằng cách sử dụng cả mã hóa bất đối xứng và mã hóa đối xứng. Mã hóa bất đối xứng đặc
biệt được sử dụng chung với một thuật toán băm như nhómSHA (SHA-256) để cung cấp tính
toàn vẹn. Một PKI được thiết kế tốt sẽ sử dụng các thủ tục đòi hỏi sử dụng các thuật toán đó
để cung cấp cơ chế toàn vẹn hiệu quả.
- Tính xác thực (Authentication): PKI phải đảm bảo danh tính của thực thể được xác
minh. Tính xác thực trong môi trường thương mại điện tử được thực hiện rất tốt bằng các hệ
Trường Đại học Thăng Long 123
Kỷ yếu công trình khoa học 2015 – Phần I
thống mã hóa bất đối xứng, dựa trên mối quan hệ toán học giữa khóa công khai và khóa bí
mật. Thông điệp được ký bởi một thực thể có thể được kiểm tra bởi bất kỳ thực thể nào quan
tâm. Các thực thể này có thể an tâm rằng chỉ có chủ của khóa bí mật mới có thể tạo ra thông điệp
này, bởi vì chỉ có người đó mới có khóa bí mật.
- Tính không thể chối từ (Non-Repudiation):PKI phải đảm bảodữ liệu không thể bị
không thừa nhận hoặc giao tác bị từ chối. Đây là một dịch vụ bảo mật then chốt của bất kỳ
ứng dụng thương mại nào trong đó việc trao đổi giá trị hay các quy định pháp luật được thỏa
hiệp. Tính không thể chối từ được cung cấp thông qua mã hóa bất đối xứngbằng chữ ký số.
Khi dữ liệu được ký theo cách mật mã học sử dụng khóa bí mật của cặp khóa, bất kỳ ai có thể
truy cập khóa công khai của cặp khóa này đều có thể xác định rằng chỉ có chủ của cặp khóa
mới có thể ký vào dữ liệu.
1.2. Các thành phần của một hạ tầng cơ sở khóa công khai
PKI là một cơ cấu tổ chức gồm con người, tiến trình, chính sách, thủ tục, phần cứng và phần
mềm dùng để phát sinh, quản lý, lưu trữ, triển khai và thu hồi các chứng nhận khóa công khai.
Hình 1. Các thành phần của một hạ tầng cơ sở khóa công khai
Về cơ bản, PKI gồm các thành phần chính sau:
- Thực thể cuối (End Entity – EE):
+ Đối tượng sử dụng chứng nhận (chứng thư số): có thể là một tổ chức, một người
cụ thể hay một dịch vụ trên máy chủ,
- Tổ chức chứng nhận (Certificate Authority – CA):
+ Có nhiệm vụ phát hành, quản lý và hủy bỏ các chứng thư số
+ Là thực thể quan trọng trong một PKI mà được thực thể cuối tín
+ Gồm tập hợp các con người và các hệ thống máy tính có độ an toàn cao
- Chứng nhận khóa công khai (Public Key Certificate):
+ Một chứng nhận khóa công khai thể hiện hay chứng nhận sự ràng buộc của danh
tính và khóa công khai của thực thể cuối;
+ Chứng nhận khóa công khaichứa đủ thông tin cho những thực thể khác có thể xác
nhận hoặc kiểm tra danh tính của chủ nhận chứng nhận đó;
+ Định dạng được sử dụng rộng rãi nhất của chứng nhận số dựa trên chuẩn IETF X.509.
- Tổ chức đăng ký chứng nhận (Registration Authority – RA):
+ Được ủy quyền và có quyền thực hiện các công việc mà CA cho phép
+ Tiếp nhận thông tin đăng ký chứng nhận;
Trường Đại học Thăng Long 124
Kỷ yếu công trình khoa học 2015 – Phần I
+ Gắn kết giữa khóa công khai và định danh của người giữ chứng nhận
- Kho lưu trữ chứng nhận (Certificate Repository – CR):
+ Hệ thống (có thể tập trung hoặc phân tán) lưu trữ chứng thư và danh sách các
chứng thư bị thu hồi;
+ Cung cấp cơ chế phân phối chứng thư và danh sách thu hồi chứng thư (CRLs -
Certificate Revocatio Lists)
1.3. Các mô hìnhcủa hạ tầng cơ sở khóa công khai
Ngày nay, PKI được triển khai bởi nhiều tổ chức như là công cụ để bảo vệ những tài
nguyên tập thể nhạy cảm. Tuy nhiên, với những nhu cầu, quy trình và sự phức tạp khác nhau
trong mỗi công việc, chỉ một mô hình được chuẩn hóa cho PKI hoàn toàn không linh hoạt. Vì
lý do đó, có nhiều kiến trúc PKI khác nhau mà mỗi tổ chức có thể triển khai để phù hợp nhất
với nhu cầu của họ. Tuy vậy, cho dù kiến trúc PKI nào được triển khai, một thứ quan trọng
trong cốt lõi của mỗi kiến trúc đó chính là sự tín nhiệm.
Một số mô hình tin cậy có thể được áp dụng hoặc được đề xuất sử dụng trong hạ tầng
mã hóa bất đối xứng- PKI dựa trên X.509:
- Mô hình CA đơn (Single CA Model);
- Mô hình phân cấp (Hierarchical Model);
- Mô hình mắt lưới- xác thực chéo (Mesh Model);
- Mô hình web (Web Model - Trust List);
- Mô hình cầu CA (Hub and Spoke (Birdge CA).
2. Chứng nhận số
2.1. Các loại chứng nhận số
Để khóa công khai của mình được chứng nhận, bên đối tác phải tạo ra một cặp khóa
bất đối xứng và gửi cặp khóa này cho tổ chức CA. Bên đối tác phải gửi kèm các thông tin về
bản thân như tên hoặc địa chỉ. Khi tổ chức CA đã kiểm tra tính xác thực các thông tin của bên
đối tác, CA sẽ phát hành một giấy chứng nhận khóa công khai cho bên đối tác. Giấy chứng
nhận là một tập tin nhị phân có thể dễ dàng chuyển đổi qua mạng máy tính.
Tổ chức CA áp dụng chữ ký điện tử của mình cho giấy chứng nhận khóa công khai mà
CA đó phát hành. Một tổ chức CA chứng nhận khóa công khai bằng cách ký nhận chúng. Nếu
phía đối tác bên kia tin tưởng vào tổ chức CA thì họ có thể tin vào chữ ký của CA đó.
Một số loại giấy chứng nhận khóa công khai có thể được phát hành như chứng nhận
X.509, chứng nhận chất lượng và chứng nhận thuộc tính.
* Chứng nhận X.509:
Chứng nhận X.509 là chứng nhận khóa công khai phổ biến nhất. Hiệp hội Viễn thông
quốc tế (International Telecommunications Union – ITU) đã chỉ định chuẩn X.509 vào năm
1988. Đây là định dạng phiên bản 1 của chuẩn X.509. Vào năm 1993, phiên bản 2 của chuẩn
X.509 được phát hành với 2 trường tên nhận dạng duy nhất được bổ sung. Phiên bản 3 của
chuẩn X.509 được bổ sung thêm trường mở rộng đã phát hành vào năm 1997.
Trường Đại học Thăng Long 125
Kỷ yếu công trình khoa học 2015 – Phần I
Một chứng nhận khóa công khai kết buộc một khóa công khai với sự nhận diện của
một người (hoặc một thiết bị). Khóa công khai và tên thực thể sở hữu khóa này là hai mục
quan trọng trong một chứng nhận.
Version
Serial Number
Signature Algorithm
Issuer Name
Validity Period
Subject Name
Public Key
Issuer Unique ID
Subject Unique ID
Extensions
Signature
Hình 2. Phiên bản 3 của chứng nhận X.509
Sau đây là thông tin về các trường trong chứng nhận X.509 phiên bản 3:
- Version: Chỉ định phiên bản của chứng nhận X.509;
- Serial Number: Số loạt phát hành được gán bởi CA. Mỗi CA nên gán một mã số
loạt duy nhất cho mỗi giấy chứng nhận mà nó phát hành;
- Signature Algorithm: Thuật toán chữ ký chỉ rõ thuật toán mã hóa được CA sử dụng
để ký giấy chứng nhận. Trong chứng nhận X.509 thường là sự kết hợp giữa thuật toán băm
(chẳng hạn như SHA-256) và thuật toán khóa công khai (chẳng hạn như RSA);
- Issuer Name: Tên tổ chức CA phát hành giấy chứng nhận, đây là một tên phân biệt
theo chuẩn X.500. Hai CA không được sử dụng cùng một tên phát hành;
- Validity Period: Trường này bao gồm 2 giá trị chỉ định khoảng thời gian mà giấy
chứng nhận có hiệu lực. Hai phần của trường này là not-before và not-after.
+ Not-before: chỉ định thời gian mà chứng nhận này bắt đầu có hiệu lực;
+ Not-after: chỉ định thời gian mà chứng nhận hết hiệu lực.
Các giá trị thời gian này được đo theo chuẩn thời gian Quốc tế, chính xác đến từng giây.
Trường Đại học Thăng Long 126
Kỷ yếu công trình khoa học 2015 – Phần I
- Subject Name: là một X.500 DN, xác định đối tượng sở hữu giấy chứng nhận mà
cũng là sở hữu của khóa công khai. Một CA không thể phát hành 2 giấy chứng nhận có cùng
một Subject Name;
- Public Key: Xác định thuật toán của khóa công khai (như RSA) và chứa khóa công
khai được định dạng tùy vào kiểu của nó;
- Issuer Unique ID/Subject Unique ID: Hai trường này được giới thiệu trong X.509
phiên bản 2, được dùng để xác định hai tổ chức CA hoặc hai chủ thể khi chúng có cùng DN.
RFC 2459 đề nghị không nên sử dụng 2 trường này;
- Extensions: Chứa các thông tin bổ sung cần thiết mà người thao tác CA muốn đặt
vào chứng nhận. Trường này được giới thiệu trong X.509 phiên bản 3;
- Signature: Đây là chữ ký điện tử được tổ chức CA áp dụng. Tổ chức CA sử dụng
khóa bí mật có kiểu quy định trong trường thuật toán chữ ký. Chữ ký bao gồm tất cả các phần
khác trong giấy chứng nhận. Do đó, tổ chức CA chứng nhận cho tất cả các thông tin khác trong
giấy chứng nhận chứ không chỉ cho tên chủ thể và khóa công khai.
2.2. Chu kỳ sống của chứng nhận số
Hình 3. Chu kỳ sống của chứng nhận số
Trước khi phát hành chứng nhận, cặp khóa bí mật/công khai sẽ được phát sinh. Trong
khi chứng nhận có hiệu lực và được sử dụng, chứng nhận có thể hết hạn hoặc khóa bí mật của
người sử dụng bị tổn thương (bị mất hoặc lộ khóa). Trong trường hợp chứng nhận hết hạn,
cặp khóa cũng sẽ không còn hiệu lực hoặc người sử dụng có thể yêu cầu gia hạn chứng nhận
cho họ. Trong trường hợp khóa bí mật bị tổn thương, chứng nhận sẽ được thu hồi để phát
hành chứng nhận cho cặp khóa khác.
3. Triển khai hệ thống hạ tầng cơ sở khóa công khai
3.1. Giới thiệu bài toán thực tế
Đứng trước nhu cầu cấp thiết về bảo mật trong việc trao đổi các thông tin liên quan tại
trường Đại học Thăng Long, việc xây dựng và triển khai một hệ chữ ký số là nhiệm vụ được
đề ra đối với nhóm đề tài. Để thực hiện được nhiệm vụ này, nhóm đã tiến hành xây dựng một
Cặp khóa được phát sinh
Chứng nhận được phát hành
Chứng nhận còn hiệu lực
và đang được sử dụng
Chứng nhận hết hạn
Cặp khóa bị hết hạn
Khóa bí mật bị
tổn thương
Chứng nhận bị
thu hồi
Chứng nhận lại
Trường Đại học Thăng Long 127
Kỷ yếu công trình khoa học 2015 – Phần I
chương trình nghiên cứu gồm một số các đề tài, trong đó có đề tài “Xây dựng hệ quản lý
chứng thư số hay hạ tầng cơ sở khóa công khai, chữ ký số và các thủ tục xác thực khác”.
Với thực tế quản lý tại trường Đại học Thăng Long, tính chất của việc cấp phát chứng
thư số không phức tạp, nhiều cấp bậc nên nhóm đề tài đề xuất sử dụng mô hình CA đơn trong
việc triển khai hệ thống PKI theo mô hình sau:
Hình 4. Mô hình CA đơn
3.2. Triển khai thực tế
* Lựa chọn hệ thống triển khai:
Hiện nay có một số gói phần mềm cho phép triển khai được hệ thống PKI hoàn chỉnh
như EJBCA, OpenCA hay triển khai trực tiếp trên hệ điều hành Windows Server. Do
Windows Server không phải là sản phẩm mã nguồn mở, không thể tự do phát triển cũng như
kiểm soát được quá trình phát triển và độ an toàn nên nhóm đề tài sẽ không lựa chọn trong
quá trình triển khai. Với OpenCA, mặc dù là gói phần mềm mã nguồn mở, nhưng trên thực tế
tìm hiểu và triển khai thử nghiệm, nhóm đã gặp một số khó khăn không tìm được sự hỗ trợ từ
đội ngũ phát triển. Bên cạnh đó, OpenCA cũng thiếu đi một số tính năng cũng như độ ổn định
so với EJBCA.
Đặc điểm EJBCA OpenCA
Độ khó khi cấu hình Rất phức tạp Phức tạp
Tính cẩn mật Có (sử dụng mã hóa) Có (sử dụng mã hóa)
Tính toàn vẹn Có (sử dụng mã hóa) Có (sử dụng mã hóa)
Tính xác thực Có (sử dụng chữ ký số) Có (sử dụng chữ ký số)
Tính không thể chối từ Có Có
Khả năng chọn thuật toán để Có Có
Chữ ký do CA tự ký Chứng nhận của CA
Ký bởi CA
Chứng nhận của
người dùng
CA
Người
dùng
Trường Đại học Thăng Long 128
Kỷ yếu công trình khoa học 2015 – Phần I
Đặc điểm EJBCA OpenCA
sử dụng
OCSP1 Có Không
Khả năng chọn CSP Có Không
Cập nhật CRL Tự động Bằng tay
Hỗ trợ thẻ thông minh Có Không
Chi phí Miễn phí Miễn phí
Các mở rộng Có Có
Môi trường nền Java J2EE (độc lập
nền) Perl CGI trên Unix
Cơ sở dữ liệu
Hypersoniq,
PostegreSQL, MySQL,
MS SQL, Oracle,
Sybase, Informix, DB2
MySQL
Hỗ trợ LDAP Có Có
Môđun EJB Perl
Khả năng mở rộng Được thiết kế tố và có
thể mở rộng
Mở rộng khó với độ
phức tạp tăng rất nhiều
Thành phần độc lập
PKI có thể được quản
trị hoàn toàn thông qua
dòng lệnh
Chỉ có một cách quan
trị PKI là thông qua
giao diện web
Các trình duyệt được hỗ trợ Nhiều Nhiều
Bảng 1. So sánh các đặc điểm của EJBCA và OpenCA
Các tiêu chí quyết định của một hệ thống PKI là phải đáng tin cậy, an toàn, linh hoạt
và có hiệu quả kinh tế. Như đã so sánh ở bảng trên, OpenCA chỉ đảm bảo tính tin cậy và an
toàn còn EJBCA đảm bảo tất cả các tiêu chí trên.
* Các bước đăng ký và phát hành chứng thư số:
1Giao thức trạng thái chứng nhận trực tuyến (Online Certificate Status Protocol – OCSP) là một chuẩn
Internet được sử dụng để lấy trạng thái thu hồi của chứng nhận số X.509
Trường Đại học Thăng Long 129
Kỷ yếu công trình khoa học 2015 – Phần I
Hình 5. Quy trình đăng ký chứng thư số
Trong quy trình đăng ký chứng thư số tại Đại học Thăng Long, nhóm đề tài đề xuất
các bước thực hiện đăng ký chứng thư số như sau:
Người dùng gửi thông tin về bản thân tới RA để đăng ký:
+ Thông tin này có thể là họ tên, số chứng minh thư, email,...;
+ RA có thể lấy thông tin về cán bộ giảng viên dựa trên cơ sở dữ liệu chung của
trường để tăng độ chính xác.
RA ký yêu cầu được chấp thuận và gửi thông tin củangười dùng đến trung tâm CA.
CA tạo chứng thư trên khóa công khai, ký bằng khóa bí mật của CA và cập nhật
chứng thư trên cơ sở dữ liệu lưu trữ
CA gửi chứng thư trở lại RA.
RA cấp chứng thư cho người sử dụng:
+ Mỗi người dùng được cấp phát 1 USB Token dùng để lưu trữ chứng thư;
+ RA thực hiện lưu chứng thư của từng người dùng lên USB Token tương ứng.
* Quyền quản trị hệ thống EJBCA:
Hình 6. Phần mềm EJBCA - Giao diện web cho chức năng quản trị hệ thống
Với quyền được phép truy cập vào trang quản trị của hệ thống EJBCA, người quản trị
có thể thực hiện các thao tác liên quan như:
- Quyền quản trị cấp CA: một người dùng được cấp phép quyền quản trị cấp CA có
thể thực hiện được tất cả các chức năng mà phần mềm cùng cấp;
Trường Đại học Thăng Long 130
Kỷ yếu công trình khoa học 2015 – Phần I
- Quyền quản trị cấp RA: với quyền này, người dùng chỉ có thể thực hiện các chức
năng liên quan đến việc quản lý các khuôn mẫu hồ sơ người dùng cuối, khởi tạo/sửa đổi hồ sơ
cho người dùng,
* Quyền truy cập của người dùng thông thường:
Hình 7. Giao diện với quyền truy cập của người dùng thông thường
Người dùng thông thường, sau khi gửi các thông tin cần thiết cho RA (hoặc CA), sẽ
được cấp phát một chứng nhận số. Chứng nhận số này, sau khi được cấp, có thể được lưu lên
USB Token của cá nhân người dùng bởi người quản trị (thao tác này chỉ thực hiện lần đầu
tiên) hoặc người dùng cũng có thể tự thực hiện công việc này thông qua giao diện đồ họa như
hình trên.
Ngoài ra, người dùng thông thường cũng có thể thực hiện một số thao tác khác liên
quan như: tải chứng nhận của CA về máy hay kiểm tra chứng nhận của người dùng khác có
hợp lệ hay còn thời hạn hay không.
4. Kết luận
Dựa trên các nghiên cứu, phân tích hạ tầng cơ sở khóa công khai (PKI),nhóm đề tài đã
tiến hành cài đặt hệ thống và thử nghiệm cấp phát chứng nhận số cho người dùng cũng như sử
dụng các chứng nhận được cấp phát để tiến hành ký trên các loại tài liệu khác nhau. Nhóm đề
tài cũng thực hiện dựa trên các tình huống liên quan đến việc gia hạn/thu hồi chứng nhận của
người dùng.
5. Tài liệu tham khảo
[1]. Phạm Huy Điển, Hà Huy Khoái (2003), Mã hóa thông tin – Cơ sở toán học và
ứng dụng, NXB ĐHQG Hà Nội.
[2]. Atreya M., Hammond B., Paine S., Starrett P., Wu S. (2002), Digital Signatures,
RSA Press – McGrawHill, Berkeley
[3]. Weise (2001), Public Key Infrastructre Overview, SunPSSM Global Security
Practice, Sun BluePrints™ OnLine.
Abstract: By digital signature solutions, Public Key Infrastructure (PKI) is a
standard and technology systemthat allows users in an insecure public network (e.g.
Internet), can exchange information securely through using a pair of private key and public
key which are certified by a trusted certificate authority. According to X.509 PKIX15
definition, a PKI is a set of hardwares, softwares, people and procedures needed to create,
store, distribute and revoke keys/certificates based on asymmetric encryption.
Trường Đại học Thăng Long 131
Các file đính kèm theo tài liệu này:
- tran_tuan_toan_4083.pdf