Professional Documents
Culture Documents
Đề tài:
NGHIÊN CỨU XÂY DỰNG ỨNG DỤNG KÝ SỐ,
XÁC THỰC TỆP TÀI LIỆU BẤT KỲ SỬ DỤNG
CHỨNG THƯ SỐ
Hà Nội, 09-2022
MỤC LỤC
LỜI MỞ ĐẦU 3
CHƯƠNG 1. TỔNG QUAN VỀ CHỨNG THƯ SỐ 5
1.1 Tổng quan về chữ ký số và chứng thư số 5
1.1.1 Chữ ký số 5
1.1.2 Chứng thư số 6
1.2 Nội dung của chứng thư số 6
1.3 Định dạng chứng thư số 7
1.4 Các hoạt động chứng thư số 7
1.5 Nhiệm vụ của Cơ quan chứng thực 8
CHƯƠNG 2. ỨNG DỤNG CHỨNG THƯ SỐ 9
2.1 Quy trình cấp chứng thư số 9
2.1.1 Chuẩn bị hồ sơ 9
2.1.2 Xác thực hồ sơ đăng ký 9
2.1.3 Phát hành chứng thư số 9
2.1.4 Chấp nhận, công bố và thông báo chứng thư số 10
2.2 Ký số, xác thực tệp tài liệu 10
2.2.1 Tạo chữ ký số 10
2.2.2 Xác thực tệp tài liệu 11
LỜI MỞ ĐẦU
Hiện nay, công nghệ thông tin ngày càng phát triển, các giao dịch điện tử ngày càng trở nên
phổ biến. Để bảo đảm an toàn cho các giao dịch này, cần phải sử dụng đến giải pháp ký số.
Việc sử dụng phương pháp ký số để bảo đảm tính bảo mật, tính toàn vẹn, tính chống chối bỏ
của các thông tin giao dịch trên mạng Internet. Chữ ký số tương đương với chữ ký tay nên
có giá trị sử dụng trong các ứng dụng giao dịch điện tử với máy tính và mạng Internet cần
tính pháp lý cao.
Hơn nữa, ngoài việc là một phương tiện điện tử được pháp luật thừa nhận về tính pháp lý,
ký số còn là một công nghệ mã hóa và xác thực rất mạnh. Nó có thể giúp bảo đảm an toàn,
bảo mật cao cho các giao dịch trực tuyến, nhất là các giao dịch chứa các thông tin liên quan
đến tài chính.
Trong môi trường số không thể dùng chữ ký tay nhưng lại có rất nhiều ứng dụng phải cần
đến một cơ chế ký và xác thực người sử dụng như chữ ký tay. Các công nghệ mã hóa và chữ
ký số ra đời để giúp giải quyết các trường hợp giao dịch cần đến chữ ký tay nhưng lại phải
thực hiện trong môi trường số.
Chữ ký số là thông tin đi kèm theo các tài liệu điện tử như Word, Excel, PDF…; hình ảnh;
video…) nhằm mục đích xác nhận chủ sở hữu dữ liệu đó. Về mặt kỹ thuật công nghệ của
chữ ký số là dựa trên hạ tầng mã hóa công khai (PKI), trong đó phần quan trọng nhất là
thuật toán mã hóa công khai RSA. Công nghệ này đảm bảo chữ ký số khi được một người
dùng nào đó tạo ra là duy nhất, không thể giả mạo được và chỉ có người sở hữu khóa bí mật
mới có thể tạo ra được chữ ký số đó.
Để có thể xác thực được ai là người tạo ra các chữ ký số khi nhận được các tài liệu điện tử
có chữ ký số cần phải có một nhà cung cấp dịch vụ chứng thực đứng ra chứng nhận chữ ký
đó là do một người cụ thể nào đó tạo ra. Tương tự khi tiến hành giao dịch điện tử công cộng
như khai báo thuế, lập tờ khai hải quan, người sử dụng là cá nhân, cơ quan hay tổ chức phải
sử dụng chữ ký số công cộng do nhà cung cấp dịch vụ chứng thực chữ ký số công cộng cấp.
Hiện nay Việt Nam có 5 nhà cung cấp dịch vụ.
Để sử dụng chữ ký số cần phải đăng ký chứng thư số và tạo khóa bí mật lưu vào trong PKI
Token với các nhà cung cấp dịch vụ chứng thực chữ ký số.
Chữ ký số không giống như chữ ký bình thường ở chỗ mỗi lần ký, người sử dụng sẽ dùng
khóa bí mật để tạo chữ ký và mỗi lần ký sẽ là một chữ ký khác nhau. Dựa vào các công cụ
phần mềm được cung cấp, các đối tác có thể kiểm tra chứng thư để xác định chữ ký.Chính
vì thế, việc sử dụng chứng thư số rất quan trọng để xác nhận việc ký số có đúng hay không.
Để tìm hiểu về quá trình ký số và xác thực, chúng em đi tìm hiểu đề tài “ Nghiên cứu xây
dựng ứng dụng ký số, xác thực tệp tài liệu bất kỳ sử dụng chứng thư số” . Trong bài tập lớn
này, chúng em đi tìm hiểu tổng quan về chứng thư số, chữ ký số và quá trình ký số, xác thưc
tệp tài liệu sử dụng chứng thư số.
CHƯƠNG 1. TỔNG QUAN VỀ CHỨNG THƯ SỐ
Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà
chỉ có người chủ của khóa biết. Để sử dụng chữ ký số thì văn bản cần phải được mã hóa
bằng hàm băm (văn bản được "băm" ra thành chuỗi, thường có độ dài cố định và ngắn hơn
văn bản) sau đó dùng khóa bí mật của người chủ khóa để mã hóa, khi đó ta được chữ ký số.
Khi cần kiểm tra, bên nhận giải mã (với khóa công khai) để lấy lại chuỗi gốc (được sinh ra
qua hàm băm ban đầu) và kiểm tra với hàm băm của văn bản nhận được. Nếu 2 giá trị
(chuỗi) này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản xuất phát từ người sở hữu
khóa bí mật.
Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản không bị sửa đổi
trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay đổi và lập tức bị phát
hiện. Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ 3 nhưng không ngăn cản
được việc thay đổi nội dung của nó.
Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình gửi. Để ngăn
ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ ký số với văn bản.
Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng cứ để bên thứ ba giải quyết.
Tuy nhiên, khóa bí mật vẫn có thể bị lộ và tính không thể phủ nhận cũng không thể đạt được
hoàn toàn.
Chữ ký số do người sử dụng tạo ra sau khi được nhà cung cấp dịch vụ cung cấp chứng thư
số.
Chữ ký số có thể được áp dụng cho nhiều loại tài liệu và chứng chỉ số khác nhau.
Loại chứng thư này được dùng như một công cụ điện tử giúp nhận diện cá nhân, máy chủ
hoặc một số đối tượng khác. Nó gắn định danh đối tượng đó với một “khóa công khai” được
cấp bởi tổ chức có thẩm quyền.
Chứng thư số chứa khóa công khai (public key), trong khi đó chữ ký số chứa khóa bí mật
(private key).
Chứng thư số và chữ ký số kết hợp lại sẽ tạo thành một cặp khóa. Bạn có thể sử dụng cặp
khóa này để ký số.
Khóa bí mật của chữ ký số được lưu trữ trong 1 USB (gọi là Token USB hoặc SmartCard)
giúp các khóa này tránh bị sao chép hoặc bị tấn công bởi virus khiến hỏng hóc và mất dữ
liệu).
Chứng thư số chứa public key và các thông tin người dùng theo chuẩn X.509.
1.2 Nội dung của chứng thư số
Chứng thư số do Tổ chức cung cấp dịch vụ chứng thực chữ ký số quốc gia, tổ chức cung
cấp dịch vụ chứng thực chữ ký số công cộng, tổ chức cung cấp dịch vụ chứng thực chữ ký
số chuyên dùng Chính phủ, tổ chức cung cấp dịch vụ chứng thực chữ ký số chuyên dùng
của cơ quan, tổ chức cấp phải bao gồm các nội dung sau:
▪ Tên của tổ chức cung cấp dịch vụ chứng thực chữ ký số.
▪ Chữ ký số của tổ chức cung cấp dịch vụ chứng thực chữ ký số.
▪ Các hạn chế về mục đích, phạm vi sử dụng của chứng thư số.
▪ Các hạn chế về trách nhiệm pháp lý của tổ chức cung cấp dịch vụ chứng thực chữ ký
số.
▪ Thuật toán mật mã.
▪ Các nội dung cần thiết khác theo quy định của Bộ Thông tin và Truyền thông.
2.1.1 Chuẩn bị hồ sơ
Đối tượng có nhu cầu đăng ký chữ ký số cần phải chuẩn bị hồ sơ cấp chứng thư số bao gồm:
● Đối với cá nhân: Chứng minh nhân dân/Căn cước công dân hoặc hộ chiếu của cá
nhân đăng ký chữ ký số
● Đối với doanh nghiệp, tổ chức, cơ quan: Quyết định thành lập hoặc quyết định quy
định về chức năng, nhiệm vụ, quyền hạn, cơ cấu tổ chức, hoặc giấy chứng nhận đăng
ký doanh nghiệp hoặc giấy chứng nhận đầu tư. Kèm theo đó là chứng minh nhân
dân/căn cước công dân hoặc hộ chiếu của người đại diện theo pháp luật của tổ chức.
Cá nhân, tổ chức có quyền lựa chọn nộp bản sao từ sổ gốc, bản sao có chứng thực hoặc nộp
bản sao xuất trình kèm bản chính để đối chiếu. Ngoài ra, cá nhân hoặc tổ chức có nhu cầu
đăng ký chữ ký số cần nộp đơn cấp chứng thư số theo mẫu của đơn vị cung cấp dịch vụ
chứng thực cho đơn vị đó để được xác thực hồ sơ.
● Người gửi chọn tệp trong nền tảng tài liệu hoặc ứng dụng.
● Máy tính của người gửi sẽ tính toán giá trị băm duy nhất của nội dung tệp.
● Giá trị băm này được mã hóa bằng khóa riêng của người gửi để tạo chữ ký số.
● Tệp gốc cùng với chữ ký số của nó được gửi đến người nhận.
● Người nhận sử dụng ứng dụng tài liệu được liên kết, ứng dụng này xác định rằng tệp
đã được ký số.
● Máy tính của người nhận sẽ giải mã chữ ký số bằng khóa công khai của người gửi,
tính toán băm của tệp gốc và so sánh băm mà nó đã tính toán với băm hiện đã được
giải mã của tệp của người gửi
Điều gì xảy ra nếu người gửi hoặc người nhận thay đổi tệp sau khi tệp đã được ký số? Vì giá
trị băm cho tệp là duy nhất, bất kỳ thay đổi nào đối với tệp sẽ tạo ra một giá trị băm khác.
Do đó, khi máy tính của người nhận so sánh hàm băm để xác thực tính toàn vẹn của dữ liệu,
sự khác biệt về giá trị băm sẽ cho thấy tệp đã bị thay đổi. Do đó, chữ ký số sẽ được hiển thị
là không hợp lệ.
● Dùng khóa công khai của người gửi để mã chữ ký số của văn bản
● So sánh kết quả ở bước 1 và 2 nếu trùng nhau ta kết luận: dữ liệu nhận được có tính
toàn vẹn ( vì kết quả băm là duy nhất và một chiều) dữ liệu nhận được do chính
người gửi gửi đi vì chỉ duy nhất người gửi mới có khóa bí mật phù hợp với khóa
công khai đã được sử dụng để giải mã. Vậy tính chồng chối bỏ và tính xác thực được
kiểm tra và xác nhận.
CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH
● Class Sign: cung cấp 1 sự thực hiện mặc định dành cho chữ ký số.
Đối tượng signature của class được tạo bởi phương thức
getInstance(Util.SIGNING_ALGORITHM), phương thức này sử dụng thuật toán ký dùng
SHA-256+ RSA.
● Quá trình thực hiện như sau: tạo phiên để ký -> truyền dữ liệu ký -> ký và trả về chữ
ký số
● Class Verify: sau khi nhận được tệp dữ liệu từ người gửi, bên nhận sẽ sử dụng public
key để xác thực chữ kí số. Nếu thành công phương thức này hiển thị " Xác thực chữ
ký số thành công, file không bị sửa đổi", còn ngược lại " Xác thực chữ ký số thất bại,
file không toàn vẹn".
Quá trình cấp chứng thư số cho cặp khóa vừa tạo, ta dùng lệnh:
keytool -exportcert -alias senderKeyPair -storetype PKCS12 \ -keystore
sender_keystore.p12 -file \ sender_certificate.cer -rfc -storepass 123456
Khóa công khai nhận được từ CA, sender_certificate, khóa đã được kí bởi CA và có thể
cung cấp cho khách hàng.
Quá trình phát hành khóa công khai. Khi quyền truy cập vào khóa công khai, người nhận có
thể tải nó vào Keystore của họ bằng lệnh importcert:
keytool -importcert -alias receiverKeyPair -storetype PKCS12 \ -keystore
receiver_keystore.p12 -file \ sender_certificate.cer -rfc -storepass 123456
Sử dụng Keystore, chúng ta có thể nhận được 1 khóa công khai:
KeyStore keyStore = KeyStore.getInstance(STORE_TYPE);
keyStore.load(new FileInputStream(RECEIVER_KEYSTORE), PASSWORD);
Certificate certificate = keyStore.getCertificate(RECEIVER_ALIAS);
return certificate.getPublicKey();
Bây giờ chúng ta có một phiên bản PrivateKey ở phía người gửi và một phiên
bản publickey ở phía người nhận, chúng ta có thể bắt đầu quá trình ký và xác thực, kết quả
hiển thị như sau:
Hiển thị thông báo sau khi xác thực thành công.
● Khi sử dụng dịch vụ chữ ký số sẽ tiết kiệm được thời gian và chi phí. Tất cả đều có
thực hiện thông qua môi trường mạng. Không chỉ bó hẹp trong phạm vi quốc gia,
dịch vụ chứng thực chữ ký số cho phép tiếp cận cơ hội tại bất kỳ đâu chữ ký số được
công nhận. Mong muốn phạm vi sắp tới sẽ hướng tới không chỉ chữ ký số tài liệu
đơn giản mà có thể cao hơn là hướng tới các bản hợp đồng, BHXH của các doanh
nghiệp trên phạm vi trong và ngoài nước.