You are on page 1of 18

HỌC VIỆN KỸ THUẬT MẬT MÃ

KHOA AN TOÀN THÔNG TIN



 

BÁO CÁO BÀI TẬP LỚN

MÔN HỌC: CHỨNG THỰC ĐIỆN TỬ


CHỦ ĐỀ:

NGHIÊN CỨU, XÂY DỰNG ỨNG DỤNG MÃ HÓA, GIẢI


MÃ TÀI LIỆU BẤT KỲ SỬ DỤNG CHỨNG THƯ SỐ

Giảng viên: Phạm Xuân Khang


Thực hiện: Đỗ Huy Hùng
Nguyễn Thành Đạt
Trịnh Khắc Tùng
Dương Văn Hòa
Lớp : AT9B

HÀ NỘI, 2016
Liên hệ: huyhung1994@gmail.com

MỤC LỤC

BẢNG KÝ HIỆU ................................................................................................................ 2


DANH MỤC HÌNH VẼ ..................................................................................................... 2
LỜI NÓI ĐẦU .................................................................................................................... 3
CHƯƠNG I. TỔNG QUAN VỀ CHỨNG THƯ SỐ ....................................................... 4
1.1 Chứng thư số. ............................................................................................................. 4
1.2 Tại sao phải sử dụng chứng thư số ............................................................................. 5
1.3 Cách hoạt động ........................................................................................................... 6
1.4 Nhiệm vụ của cơ quan chứng thực ............................................................................. 6
CHƯƠNG II. ỨNG DỤNG CỦA CHỨNG THƯ SỐ ..................................................... 8
2.1 Đăng kí chứng thư số ............................................................................................. 8
2.2 Chữ ký số................................................................................................................ 8
2.3 Mã hóa, giải mã dữ liệu ........................................................................................ 10
CHƯƠNG III. XÂY DỰNG CHƯƠNG TRÌNH .......................................................... 11
3.1 Tổng quan ............................................................................................................. 11
3.2 Giới thiệu các module .......................................................................................... 12
3.3 Demo ứng dụng .................................................................................................... 15
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ...................................................................... 17
TÀI LIỆU THAM KHẢO ............................................................................................... 17

1
Liên hệ: huyhung1994@gmail.com

BẢNG KÝ HIỆU


CA Certification Authority
RA Registration Authority
CTS Chứng Thư Số
CRL Certificate Revoke List

DANH MỤC HÌNH VẼ


Hình 2. 1. Cách tạo chữ ký số .............................................................................................. 8
Hình 2. 2 Kiểm tra chữ ký số ............................................................................................... 9
Hình 2. 3Mã hóa khóa công khai ....................................................................................... 10

Hình 3. 1 Mô hình mã hóa dữ liệu ..................................................................................... 11


Hình 3. 2 Mô hình giải mã dữ liệu ..................................................................................... 11
Hình 3. 3 Code sinh cặp khóa public, private .................................................................... 12
Hình 3. 4 Code mã hóa dữ liệu .......................................................................................... 13
Hình 3. 5 Code giải mã dữ liệu .......................................................................................... 14
Hình 3. 6 Giao diện ứng dụng ............................................................................................ 15
Hình 3. 7 Mã hóa dữ liệu ................................................................................................... 15
Hình 3. 8 Giải mã dữ liệu................................................................................................... 15
Hình 3. 9 Kết quả nghiệm thu ............................................................................................ 16

2
Liên hệ: huyhung1994@gmail.com

LỜI NÓI ĐẦU


Ngày nay trên thế giới công nghệ thông tin đã trở nên phổ biến và hầu như mọi
lĩnh vực đều có sự góp mặt của nền công nghệ mới này. Bên cạnh những thông tin có
giá trị thông thường thì còn có những thông tin quan trọng, đòi hỏi tính bảo vệ cao.
Chính vì thế, chứng thư số là lựa chọn khá phù hợp cho việc bảo vệ cũng như xác thực
tính tin cậy của thông tin.

Để tìm hiểu về vấn đề bảo mật cho tài liệu sử dụng chứng thư số, nhóm chúng em
đi tìm hiểu đề tài “ Nghiên cứu xây dựng ứng dụng mã hóa, giải mã 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 xin trình bày khái quát về chứng thư số và một số
cách thức hoạt động cũng như xây dựng ứng dụng sử dụng chứng thư số.

Báo cáo gồm 3 chương :

CHƯƠNG I: TỔNG QUAN VỀ CHỨNG THƯ SỐ : Tìm hiểu tổng quan về chứng
thư số, cách thức hoạt động, nhiệm vụ của nhà cung cấp chứng thư số.

CHƯƠNG II: ỨNG DỤNG CỦA CHỨNG THƯ SỐ : Tìm hiểu cách thức đăng kí
chứng thư số và các ứng dụng của nó.

CHƯƠNG III: XÂY DỰNG ỨNG DỤNG MÃ HÓA GIẢI MÃ TÀI LIỆU BẤT
KÌ SỬ DỤNG CHỨNG THƯ SỐ: Xây dựng ứng dụng sử dụng hệ mật RSA để mã
hóa và giải mã.

Trong quá trình tìm hiểu, do kiến thức còn hạn chế, kiến thức thực tế chưa có nhiều,
nên chúng em không tránh khỏi những thiếu sót sai lầm. Rất mong được sự góp ý của
thầy cô và các bạn. Chúng em xin cám ơn thầy Phạm Xuân Khang đã nhiệt tình hướng
dẫn chúng em hoàn thành bài báo cáo này.

Chúng em xin chân thành cảm ơn!

3
Liên hệ: huyhung1994@gmail.com

CHƯƠNG I. TỔNG QUAN VỀ CHỨNG THƯ SỐ

1.1 Chứng thư số.


Chứng thư số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một
máy chủ, một công ty, hoặc một vài đối tượng khác và gắn chỉ danh của đối tượng đó
với một khoá công khai (public key). Giống như bằng lái xe, hộ chiếu, chứng minh thư
hay những giấy tờ nhận diện cá nhân thông thường khác, Chứng thư số cung cấp bằng
chứng cho sự nhận diện của một đối tượng. Hệ mã khoá công khai sử dụng Chứng thư
số để giải quyết vấn đề mạo danh.

Để lấy được bằng lái xe, bạn cần phải đăng ký với Phòng cảnh sát giao thông. Họ
sẽ cấp cho bạn bằng lái xe sau khi đã xác định các thông tin về bạn như: có khả năng lái
xe, họ và tên, địa chỉ, và những thông tin cần thiết khác. Để lấy được Chứng thư số bạn
cũng cần phải thực hiện các công việc đăng ký tương tự như vậy. Nơi có thể chứng
nhận những thông tin của bạn là chính xác được gọi là Nhà cấp Chứng thư số
(Certificate Authority viết tắt là CA), một tổ chức có thẩm quyền xác nhận chỉ danh và
cấp các Chứng thư số. Họ có thể là một thành phần thứ ba đứng độc lập hoặc các tổ
chức tự vận hành phần mềm cấp Chứng thư số của mình. Các phương pháp để xác định
chỉ danh phụ thuộc vào các chính sách mà CA đặt ra. Chính sách lập ra phải đảm bảo
việc cấp Chứng thư số phải đúng đắn, ai được cấp và mục đích dùng vào việc gì. Thông
thường, trước khi cấp một Chứng thư số, CA sẽ công bố các thủ tục cần phải thực hiện
cho các loại Chứng thư số.

Trong Chứng thư số chứa một khoá công khai được gắn với một tên duy nhất của
một đối tượng (như tên của một nhân viên hoặc server). Chứng thư số giúp ngăn chặn
việc sử dụng khoá công khai cho việc giả mạo. Chỉ có khoá công khai được chứng thực
bởi Chứng thư số mới làm việc với khoá riêng (private key) tương ứng được sở hữu bởi
đối tượng mà có chỉ danh đã được chứng thực nằm trong Chứng thư số.

Ngoài khoá công khai, một Chứng thư số còn chứa thêm tên của đối tượng mà nó
nhận diện, hạn dùng, tên của CA cấp Chứng thư số đó, mã số thứ tự, và những thông tin
khác. Điều quan trọng nhất là một Chứng thư số luôn luôn chứa chữ ký số của CA đã
cấp Chứng thư số đó. Nó cho phép Chứng thư số như đã được đóng dấu để cho người
sử dụng biết và tin cậy vào CA.

Chứng thư số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một
máy chủ, một công ty, hoặc một vài đối tượng khác và gắn chỉ danh của đối tượng đó
với một khoá công khai (public key)

Thành phần chính gồm có:

4
Liên hệ: huyhung1994@gmail.com

- Serial Number Mã số duy nhất được cấp bởi CA


- Thông tin về người sở hữu
- Khóa công khai
- Thời hạn sử dụng
- Chữ ký của CA
- Các thông tin mở rộng khác

1.2 Tại sao phải sử dụng chứng thư số


Việc kết nối qua mạng Internet hiện nay chủ yếu sử dụng giao thức TCP/IP.
TCP/IP cho phép các thông tin được gửi từ một máy tính này tới một máy tính khác
thông qua một loạt các máy trung gian hoặc các mạng riêng biệt trước khi nó có thể đi
tới được đích. Tuy nhiên, chính vì tính linh hoạt này của giao thức TCP/IP đã tạo cơ
hội cho “bên thứ ba” có thể thực hiện các hành động bất hợp pháp, cụ thể là:

- Nghe trộm (Eavesdropping). Thông tin vẫn không hề bị thay đổi, nhưng sự bí
mật của nó thì không còn. Ví dụ, một ai đó có thể biết được số thẻ tín dụng, các thông
tin cần bảo mật của bạn.

- Giả mạo (Tampering). Các thông tin trong khi truyền đi bị thay đổi hoặc thay
thế trước khi đến người nhận. Ví dụ, một ai đó có thể sửa đổi một đơn đặt hàng hoặc
thay đổi lý lịch của một cá nhân.

- Mạo danh (Impersonation). Thông tin được gửi tới một cá nhân mạo nhận là
người nhận hợp pháp. Có hai hình thức mạo danh sau:

+ Bắt chước (Spoofing). Một cá nhân có thể giả vờ như một người khác. Ví dụ,
dùng địa chỉ mail của một người khác hoặc giả mạo một tên miền của một trang
web.

+ Xuyên tạc (Misrepresentation). Một cá nhân hay một tổ chức có thể đưa ra
những thông tin không đúng sự thật về họ. Ví dụ, có một trang web mạo nhận
chuyên về kinh doanh trang thiết bị nội thất, nhưng thực tế nó là một trang chuyên
ăn cắp mã thẻ tín dụng và không bao giờ gửi hàng cho khách.

Bình thường, mọi người vẫn sử dụng mạng Internet để có thể liên lạc với nhau,
nhưng thông tin phải đi qua một loạt các máy trung gian. Trong số đó có một số
người cần bảo mật các thông tin cá nhân và kinh doanh của họ. May mắn thay, có
một vài chuẩn chung hiện nay được biết như hệ mã khoá công khai (public key
cryptography) có thể giải quyết được vấn đề này. Hệ mã khoá công khai với Chứng
thư số và các công nghệ liên quan có thể thực hiện các nhiệm vụ sau:

- Mã hoá và giải mã: cho phép hai đối tác giao thiệp với nhau có thể che giấu 6
thông tin mà họ gửi cho nhau. Người gửi mã hoá các thông tin trước khi gửi chúng
5
Liên hệ: huyhung1994@gmail.com

đi, người nhận sẽ giải mã trước khi đọc. Trong khi truyền, các thông tin sẽ không bị
lộ.

- Chống lại sự giả mạo: cho phép người nhận có thể kiểm tra thông tin có bị
thay đổi hay không. Bất kỳ một sự thay đổi hay thay thế nội dụng của thông điệp gốc
đều sẽ bị phát hiện.

- Xác thực: cho phép người nhận có thể xác định chỉ danh của người gửi.

- Không thể chối cãi nguồn gốc: ngăn chặn người gửi chối cãi nguồn gốc tài
liệu mình đã gửi.

1.3 Cách hoạt động


Một chứng thư số gắn một public key với một cá nhân hay một tổ chức, sự kết hợp
này là duy nhất và tính xác thực của nó được đảm bảo bởi nhà cung cấp chứng thư số.

Chứng thư số được dựa trên thuật toán mã khoá công khai mà mô hình là việc
dùng cặp khoá public key và private key.

Private key được sở hữu riêng bởi người có chứng thư số và nó được dùng để tạo
nên chữ ký điện tử. Khoá này luôn luôn phải giữ bí mật và chỉ thuộc về người sở hữu
chứng thư số đó.

Public key thì được công khai, nó được dùng để chứng thực một chữ ký điện tử.
Sự chứng thực một chữ ký điện tử tức là bạn muốn biết đích danh là ai đã ký vào thông
tin mà bạn nhận được.

Cặp khoá public key và private key vốn không gắn với bất kỳ một chỉ danh nào,
nó đơn giản chỉ là một cặp khoá mà giá trị của nó là các con số. Chứng thư số là sự kết
hợp của một public key với một chỉ danh.

Căn cứ vào Chứng thư số của bạn hệ thống có thể kiểm tra xem bạn có đủ thẩm
quyền khi truy cập vào hệ thống hay không, tránh khỏi sự mạo danh bạn để truy cập các
hệ thống cũng như trao đổi thông tin. Với việc mã hoá thì chứng thư số đã cung cấp
cho bạn một giải pháp thực sự đảm bảo giúp bạn hoàn toàn yên tâm khi tham gia trao
đổi thông tin và giao dịch trên Internet.

1.4 Nhiệm vụ của cơ quan chứng thực


Nhiệm vụ của các cơ quan chứng thực (Certification Authority - CA) là bảo đảm
tính toàn vẹn của chữ ký số do tổ chức hợp pháp cấp. Trong suốt tiến trình đăng ký
CTS, CA sẽ tập hợp thông tin về nhà xuất bản ứng dụng di động để kiểm tra tính xác
thực. Tiến trình xác thực có thể mất vài giờ hay vài ngày phụ thuộc vào thông tin cung
cấp và tùy vào mức độ kiểm tra thông tin ở mức khó hay dễ. Các hãng thứ 3 còn được

6
Liên hệ: huyhung1994@gmail.com

gọi là CA, có nhiệm vụ cấp phép chứng thực số. CA sẽ kiểm tra tính xác thực của tất cả
chứng thực. Chứng thực sẽ không hợp lệ nếu như CA không chứng nhận nó là hợp lệ.
Để có một chứng thực số, đầu tiên người dùng phải tạo một cặp khóa công khai/riêng
tư, sau đó khóa công khai sẽ được đệ trình lên CA cùng với thông điệp. Một chứng thực
chỉ được tạo ra sau khi CA kiểm tra tất cả các chi tiết và trả về kết quả nguyên vẹn. Tiếp
theo, người dùng có thể cài đặt chứng thực trên máy tính của mình. Để có thể nhận biết
chữ ký số là thật, một số tùy chọn để kiểm tra tính xác thực là thông qua trình duyệt
web, email, máy chủ web hay các ứng dụng khác. Một số CA phổ biến là Verisign,
CommerceNet, COMODO, GlobalSign…

Trong trường hợp, các nhà phát triển muốn gửi các ứng dụng di động đến
Windows Marketplace, lúc này phần mềm phải được thông qua tiến trình chứng thư số.
Các nhà phát triển buộc ký số trên từng nội dung cập nhật trước khi các ứng dụng có
mặt trên danh mục kho ứng dụng. Sau đó, Microsoft sẽ giám sát các ứng dụng và có thể
gỡ những chứng thực số liên kết với malware nếu như phát hiện ra vấn đề trong lúc dò.

7
Liên hệ: huyhung1994@gmail.com

CHƯƠNG II. ỨNG DỤNG CỦA CHỨNG THƯ SỐ


2.1 Đăng kí chứng thư số
Các bước đăng kí chứng thư số:
1. Người dùng gửi yêu cầu cấp phát chứng thư số (bao gồm: thông tin về bản thân,
khóa công khai) lên RA (Registration Authority).
2. RA kiểm tra thông tin và gửi yêu cầu đến CA (Certification Authority).
3. CA gắn kết khóa công khai, định danh của người dùng bằng cách kí số lên một
cấu trúc dữ liệu, gọi là chứng thư khóa công khai, chứng thư số.
4. CA gửi chứng thư số về cho người dùng.
2.2 Chữ ký số
Chữ ký số là một dạng chữ ký điện tử được tạo ra bằng sự biến đổi một thông điệp
dữ liệu sử dụng hệ thống mật mã khóa công khai. Theo đó, người có được thông điệp dữ
liệu ban đầu và khóa công khai của người ý có thể xác định được chính xác.
a. Việc biến đổi nêu trên được tạo ra bằng đúng khóa bí mật tương ứng với khóa
công khai trong cùng một cặp khóa.
b. Sự toàn vẹn nội dung của thông điệp dữ liệu kể từ khi thực hiện việc biến đổi nêu
trên.

Tạo chữ ký số:


Chữ ký số được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản
gốc để tạo ra bản tóm lược (message digest), sau đó bản tóm lược được mã hóa bằng
khóa bí mật (trong cặp khóa công khai) tạo ra chữ ký số đính kèm với văn bản gốc để
gửi đi. Khi nhận, văn bản được tách thành 2 phần, phần văn bản gốc được tính lại bản
tóm lược để so sánh với bản tóm lược cũ cũng được phục hồi từ việc giải mã chữ ký số.

Hình 2. 1. Cách tạo chữ ký số

Các bước mã hóa:

8
Liên hệ: huyhung1994@gmail.com

1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi. Kết quả ta được một
bản tóm lược.
2. Sử dụng khóa bí mật của người gửi để mã hóa bản tóm lược thu được ở bước 1.
Kết quả được gọi là chữ ký số.
3. Ghép chữ ký số vào văn bản gốc, mọi thay đổi trên văn bản gốc hoặc chữ ký sẽ
bị phát hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký số này đảm bảo người
nhận tin tưởng văn bản này xuất phát từ người gửi chứ không phải là ai khác.

Kiểm tra chữ ký số:


1. Dùng khóa công khai của người gửi (khóa này được công khai trên mạng, trên
thư mục dùng chung …) để giải mã chữ ký số của văn bản.
2. Dùng giải thuật băm để băm văn bản đính kèm.
3. So sánh kết quả thu được ở 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, một chiều)
- Dữ liệu nhận được là 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ã. Như vậy tính
chống từ chối và tính xác thực được kiểm tra và xác nhận. Lúc này người nhận
tin rằng, khóa công khai đó đại diện hợp pháp cho người gửi.

Hình 2. 2 Kiểm tra chữ ký số

Nhận xét về ứng dụng chữ ký điện tử

Chữ ký điện tử là mô hình đảm bảo an toàn dữ liệu khi truyền trên mạng và được
sử dụng để tạo chứng nhận điện tử trong các giao dịch điện tử qua mạng Internet.

Ví dụ A gửi đến tổ chức Certificate Authority yêu cầu cấp chứng nhận điện tử kèm
theo khóa công khai của họ. Tổ chức CA sẽ “ký nhận” vào đó và cấp digital certificate
9
Liên hệ: huyhung1994@gmail.com

cho A. Khách hàng này sẽ thông báo certificate của mình trên mạng. Giả sử có B muốn
gửi cho A một message thì công việc đầu tiên B sẽ lấy certificate của A và kiểm tra tính
hợp lệ của certificate. Nếu hợp lệ, B sẽ lấy public key trong digital certificate để mã hóa
dữ liệu và gửi cho A.

2.3 Mã hóa, giải mã dữ liệu


Sử dụng phương pháp mã hóa công khai để mã hóa, giải mã dữ liệu.

Giả sử Bob, Alice đều có chứng thư số của riêng mình. Khi Bob muốn gửi cho
Alice một thông điệp bí mật sử dụng mã hóa công khai. Bob sẽ lên kho lưu trữ chứng
thư số, lấy public key của Alice xuống, và mã hóa dữ liệu với public key của Alice sau
đó gửi thông điệp đã mã hóa cho Alice. Alice nhận được thông điệp, sẽ dùng private
key của mình để giải mã. Ngược lại nếu Alice muốn gửi thông điệp cho Bob thì Alice
phải mã hóa thông điệp bằng public key của Bob.

Nếu ai đó thực hiện tấn công chặn bắt, có được tệp tin mã hóa thì cũng không có
khả năng giải mã được tệp tin này, bởi vì chỉ duy nhất private key của Alice mới có thể
thực hiện giải mã.

Sơ đồ bên dưới thể hiện quá trình mã hóa, giải mã dữ liệu.

Hình 2. 3Mã hóa khóa công khai

10
Liên hệ: huyhung1994@gmail.com

CHƯƠNG III. XÂY DỰNG CHƯƠNG TRÌNH


3.1 Tổng quan
Chương trình “mã hóa, giải mã dữ liệu sử dụng chứng thư số” được xây dựng trên
ngôn ngữ lập trình Java, sử dụng hệ mật khóa công khai RSA, mô phỏng chứng thư số
bằng việc tự sinh cặp khóa public key, private key.

Mô hình mã hóa

M ERSA M’ EBase64 M’’

Public key
Hình 3. 1 Mô hình mã hóa dữ liệu

Mô hình giải mã

DBase64
M” M’ DRSA M

Private key

Hình 3. 2 Mô hình giải mã dữ liệu

Trong đó :

M: dữ liệu ban đầu.

M’: dữ liệu sau khi mã hóa RSA.

M’’: dữ liệu sau khi mã hóa Base64.

11
Liên hệ: huyhung1994@gmail.com

3.2 Giới thiệu các module


a. Tạo cặp khóa public, private

public static void generateKeys(String filePath) {


Properties publicProp = new Properties();
Properties privateProp = new Properties();
try {
OutputStream pubOut = new FileOutputStream(filePath
+ File.separator + "public.key");

OutputStream priOut = new FileOutputStream(filePath


+ File.separator + "private.key");

SecurityUtil secureUtil = new SecurityUtil();

secureUtil.invokeKeys();
PublicKey publicKey = secureUtil.getPublicKey();
PrivateKey privateKey = secureUtil.getPrivateKey();

String publicString =
secureUtil.getPublicKeyString(publicKey);
String privateString =
secureUtil.getPrivateKeyString(privateKey);

publicProp.put("key", publicString);
publicProp.store(pubOut, "Public Key Info");

privateProp.put("key", privateString);
privateProp.store(priOut, "Private Key Info");

} catch (Exception e) {
e.printStackTrace();
}
}

Hình 3. 3 Code sinh cặp khóa public, private

12
Liên hệ: huyhung1994@gmail.com

b. Mã hóa dữ liệu
public String getEncypted(byte[] datas, PublicKey key)
String encryptedData;
try {
Cipher cipher =
Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
int textBytesChunkLen = 100;
int encryptedChunkNum = (datas.length - 1) /
textBytesChunkLen + 1;
// RSA returns 128 bytes as output for 100 text bytes
int encryptedBytesChunkLen = 128;
int encryptedBytesLen = encryptedChunkNum *
encryptedBytesChunkLen;
// Define the Output array.
byte[] encryptedBytes = new byte[encryptedBytesLen];
int textBytesChunkIndex = 0;
int encryptedBytesChunkIndex = 0;

for (int i = 0; i < encryptedChunkNum; i++) {


if (i < encryptedChunkNum - 1) {
encryptedBytesChunkIndex +=
cipher.doFinal(datas, textBytesChunkIndex,
textBytesChunkLen, encryptedBytes,
encryptedBytesChunkIndex);
textBytesChunkIndex += textBytesChunkLen;
} else {
cipher.doFinal(datas, textBytesChunkIndex,
datas.length - textBytesChunkIndex,
encryptedBytes,
encryptedBytesChunkIndex);
}
}
encryptedData = new
BASE64Encoder().encode(encryptedBytes);
} catch (Exception e) {
throw e;
}
return encryptedData;
}

Hình 3. 4 Code mã hóa dữ liệu

13
Liên hệ: huyhung1994@gmail.com

c. Giải mã dữ liệu

public byte[] getDecrypted(byte[] datas, PrivateKey key) {


byte[] result = null;
try {
Cipher cipher =
Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
int encryptedByteChunkLen = 128;
int encryptedChunkNum = datas.length /
encryptedByteChunkLen;
int decryptedByteLen = encryptedChunkNum *
encryptedByteChunkLen;
byte[] decryptedBytes = new byte[decryptedByteLen];

int decryptedIndex = 0;
int encryptedIndex = 0;
for (int i = 0; i < encryptedChunkNum; i++) {
if (i < encryptedChunkNum - 1) {
decryptedIndex = decryptedIndex
+ cipher.doFinal(datas, encryptedIndex,
encryptedByteChunkLen, decryptedBytes,
decryptedIndex);
encryptedIndex = encryptedIndex +
encryptedByteChunkLen;
} else {
decryptedIndex = decryptedIndex
+ cipher.doFinal(datas,
encryptedIndex, datas.length -
encryptedIndex, decryptedBytes,
decryptedIndex);
}

}
return decryptedBytes;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(),
"Decrypt Error", 0);
e.printStackTrace();
}

return result;

Hình 3. 5 Code giải mã dữ liệu

14
Liên hệ: huyhung1994@gmail.com

3.3 Demo ứng dụng


Giao diện ứng dụng

Ứng dụng với 3


chức năng chính: tạo cặp
khóa public, private key,
mã hóa, giải mã dữ liệu.

Để tạo khóa: click


vào nút Generator Key,
chương trình sẽ hiển thị ra
dialog để bạn chọn thư
mục lưu khóa. Nhấn OK
để tạo khóa, Cancel để hủy
bỏ. Hình 3. 6 Giao diện ứng dụng
Mã hóa: Chọn chức năng mã hóa
(Encrypt), chọn file cần mã hóa tại File
Path và public key tại phần Key Path.
Click nút Encrypt, sau đó chọn nơi lưu file
đã được mã hóa và tên file, nhấn OK để
hoàn thành quá trình mã hóa.

Hình 3. 7 Mã hóa dữ liệu


Giải mã: Chọn chức năng giải mã
(Decrypt), chọn file cần giải mã tại File
Path và private key tại phần Key Path.
Click nút Decrypt, sau đó chọn nơi lưu
file và nhập tên file, nhấn OK để hoàn
thành quá trình giải mã.

Hình 3. 8 Giải mã dữ liệu

15
Liên hệ: huyhung1994@gmail.com

Hình 3. 9 Kết quả nghiệm thu

16
Liên hệ: huyhung1994@gmail.com

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


Trong khoảng thời gian thực hiện, mặc dù đã rất cố gắng để hoàn thành theo
những mục tiêu đã đề ra. Tuy nhiên, vì thời gian có hạn nên ứng dụng còn nhiều thiếu
sót. Sau đây là những kết quả mà ứng dụng đã làm được, chưa làm được và hướng phát
triển sau này:

1. Kết quả đạt được.


Hoàn thành các chức năng cơ bản của ứng dụng
- Mô phỏng chứng thư số với cặp khóa public, private key
- Mã hóa, giải mã dữ liệu
2. Hướng phát triển trong tương lai.
- Triển khai thêm với thuật toán mã hóa công khai khác: DES, …

TÀI LIỆU THAM KHẢO


[1]. ThS. Lê Quang Tùng, KS. Nguyễn Thị Hồng Hà, Giáo trình chứng thực điện tử,
Học viện Kỹ thuật Mật Mã, (Năm 2013)
[2]. https://vi.wikipedia.org/wiki/Ch%E1%BB%AF_k%C3%BD_s%E1%BB%91

17

You might also like