Xây dựng giao diện

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu xây dựng bảo mật và xác thực tài liệu điện tử dựa trên PKI và ứng dụng vào trường đại học hạ long​ (Trang 48)

5. Bố cục của luận văn

3.4. Xây dựng giao diện

Giao diện phần mềm khá đơn giản, đơn thuần là các nút tương ứng với các chức năng cần thực hiện.

Giao diện xác thực khóa cá nhân. Đây là giao diện được thống nhất sử dụng

<?xml version=\"1.0\" encoding=\"UTF-8\"?> <encryptedfile>

<data>

<!--Dữ liệu đã mã hóa được encode Base64--> </data>

<senderpubkey>

<!--public key được encode Base64--> </senderpubkey>

<filename>

<!--Tên file--> </filename>

chung cho toàn bộ các thao tác chọn file.

Hình 3.1: Giao diện xác thực khóa cá nhân

Giao diện chính chương trình. Hiển thị các chức năng chính của phần mềm qua các phím.

Hình 3.2: Giao diện chính

Giao diện thông báo. Sử dụng để thông báo kết quả của các quá trình ký, mã hóa, xác thực chữ ký, giải mã … Dưới đây là ví dụ thông báo ký thành công.

Hình 3.3: Giao diện thông báo 3.5. Thiết kế lớp

- Lớp Crypto: Lớp này có nhiệm vụ thực hiện các nhiệm vụ liên quan đến

việc mã hóa: Mã hóa Base64, giải mã Base64, trả lại ECPublicKey từ file lưu trữ hay dạng mảng byte của ECPublickey, trả lại ECPrivateKey, cũng như thực hiện các hàm băm SHA1 và SHA 256

Hình 3.4: Lớp Crypto

Base64Decode: Nhận vào một xâu định dang Base64. Trả về mảng byte sau

đi đã giải mã base64 xâu truyền vào.

Base64Encode: Nhận vào một mảng byte. Trả về xâu ký tự định dạng base64

sau khi đã mã hóa base64 mảng byte truyền vào. Hai hàm base64Decode và base64Encode được xây dựng mục đích thuận tiện cho việc truyền dữ liệu dạng mảng byte.

getPrivkey: Nhận vào một file. Hàm sẽ thực hiện đọc dữ liệu từ file, xây

dựng một đối tượng ECPrivateKey từ dữ liệu đó. Trả về cho người dùng ECPrivateKey tương ứng.

getPubkey(File): Nhận vào một file. Hàm sẽ thực hiện đọc dữ liệu từ file,

xây dựng một đối tượng ECPublicKey từ dữ liệu đó. Trả về cho người dùng ECPublicKey tương ứng.

getPubkey(byte[]): Nhận vào một mảng byte, xây dựng một thực thể

ECPublicKey từ mảng byte đó. Trả về cho người dùng ECPublicKey tương ứng.

mySHA1: Thực hiện băm một dữ liệu truyền vào bằng giải thuật SHA1, trả

về dữ liệu thu được sau khi băm.

mySHA256: Thực hiện băm một dữ liệu truyền vào bằng giải thuật SHA256,

trả về dữ liệu thu được sau khi băm.

- Lớp ECDH: Lớp này có các hàm thực hiện các chức năng: Mã hóa AES,

giải mã AES, tạo key ECDH

Hình 3.5: Lớp ECDH

decrypt: Thực hiện mã hóa dữ liệu bằng giải thuật AES. Trả lại mảng byte dữ

liệu đã mã hóa kết quả sau khi mã hóa.

encrypt: Thực hiện giải mã dữ liệu bằng giải thuật AES. Trả lại mảng byte

dữ liệu gốc sau khi giải mã.

ecdhECKey: Tạo ra một key ECDH từ publickey và private key của 2 đối

tượng khác nhau.

- Lớp DataTransformer: Lớp này có nhiệm vụ chuyển đổi dữ liệu giữa các

thành phần khác nhau: lấy dữ liệu từ file, ghi dữ liệu vào file …

appendStringToFile: Gắn một xâu vào cuối file.

bytes2String: Tạo ra một thực thể String từ mảng byte truyền vào.

getfile: tạo ra một thực thể file có trong thẻ nhớ với tên file được truyền vào

dưới dạng một xâu ký tự.

readByteFromFile: đọc dữ liệu từ file lên, trả về một mảng byte kết quả. writeByteToFile: ghi mảng byte vào file chỉ định trước.

- Lớp ECDSA_Signature: thực hiện chức năng ký và xác minh chữ ký trên

file sử dụng giải thuật ECDSA.

Hình 3.7: Lớp ECDSA_Signature

ECDSASign: Thực hiện nhiệm vụ ký số lên mảng byte truyền vào. Trả về

một mảng byte là chữ ký số có được khi áp dung giải thuật ký ECDSA.

ECDSAVerify: Thực hiện chức năng xác minh chữ ký trên file.

- XMLWork: Thực hiện các chức năng liên quan đến việc trích xuất dữ liệu

từ file XML.

Hình 3.8: XML Work

getTagEncrypt: Trích xuất nội dung một thẻ nào đó từ file đã mã hóa. getTagSign: Trích xuất nội dung một thẻ nào đó từ file đã ký số.

3.6. Cài đặt và kiểm thử

a.Chức năng đăng nhập.

Sau khi chọn nút đăng nhập, người dùng sẽ được yêu cầu chọn file private key sử dụng để xác thực người dùng.

Hình 3.9: Xác thực người dùng

Dữ liệu từ file private key của người dùng sẽ được đọc lên và so sánh với dữ liệu của file xác thực chữ ký. Nếu không khớp, sẽ có thông báo file đã chọn không phải là khóa cá nhân.

Hình 3.10: Thông báo file không phải là khóa cá nhân

Dữ liệu từ log:

Hình 3.11: Xác thực thất bại

Như ta thấy trong hình dữ liệu được sinh ra từ private key và dữ liệu từ file xác thực là khác nhau nên quá trình xác thực thất bại.

Ngược lại, nếu quá trình xác thực đúng. Xem log ta có:

Hình 3.12: Xác thực đúng

Và người dùng sẽ được chuyển sang giao diện chính của chương trình.

Hình 3.13: Giao diện chính của chương trình b.Chức năng ký file.

Người dùng chọn chức năng ký file.

Người dùng sẽ yêu cầu chọn file để ký lên. Phần mềm sẽ tiến hành sinh chữ ký. Và tạo file chứa chữ ký một cách tự động vào thông báo cho người dùng kết quả.

Hình 3.14: Thông báo cho người dùng kết quả

Khi đó sẽ mở thư mục chứa file vừa được chọn để ký sẽ có một file tên giống file gốc nhưng có đuôi .sign là file chứa chữ ký.

Hình 3.15: file .sign chứa chữ ký

Xem logcat cũng sẽ thấy được nội dung chữ ký được sinh ra:

Hình 3.16: Nội dung chữ ký được sinh ra

Chữ ký này, nội dung file ban đầu,tên file, public key (Đã được mã hóa base64) sẽ được ghi vào các thẻ tương ứng trong file chữ ký:

Hình 3.17: Các thẻ tương ứng trong file chữ ký

c. Chức năng xác minh chữ ký.

Quá trình này được bắt đầu khi người dùng nhấn nút: xác minh chữ ký trên file. Người dùng cần chọn file chứa chữ ký cần xác minh (file *.sign được tạo ra từ quá trình ký). Nếu người dùng chọn file không đúng định dạng hoặc dữ liệu các thẻ bị thay đổi, thông báo xác minh chữ ký sai:

Hình 3.18: Thông báo xác minh chữ ký sai

Nếu người dùng chọn file có đúng định dạng. Các thẻ sẽ được trích xuất nội dung, có thể thấy được khi xem log.

Hình 3.19: Trích xuất nội dung khi xem log

Hình 3.20: Trích xuất nội dung khi xem log

Nội dung các thẻ sẽ được sử dụng cho việc xác minh chữ ký. Sau quá trình xác minh chữ ký. Nội dung trong thẻ data sẽ được ghi ra file được đặt tên như filename để phục hồi file gốc. Khi đó, trong thư mục chứa file chứa chữ ký sẽ có thêm một file có tên như thẻ filename. Kết thúc quá trình xác minh chữ ký.

Hình 3.21: file phục hồi file gốc d.Chức năng mã hóa.

Quá trình mã hóa bắt đầu khi người dùng chọn nút “Mã hóa ECDH”. Để thực hiện chức năng mã hóa, phần mềm cần tạo ra một key nhờ giải thuật ECDH từ public key của người nhận. Vì vậy, bước tiếp theo người dùng cần thực hiện là chọn file public key của người nhận. Nếu người dùng chọn không đúng file định dạng publickey, phần mềm sẽ thông báo lỗi:

Hình 3.22: Thông báo lỗi file định dạng publickey

Nếu người dùng chọn đúng file public key, phần mềm sẽ tiến hành tạo key bằng giải thuật ECDH, sau đó đưa vào hàm băm SHA 256 để tạo key phục vụ cho việc mã hóa. Kết quả có thể theo dõi qua log:

Hình 3.23: Tạo key phục vụ

Bước tiếp theo sẽ là chọn file sẽ được mã hóa. Ta có thể chọn một file bất kì. Phần mềm sẽ mã hóa, kết quả có thể theo dõi qua log :

Hình 3.24: Tải dữ liệu từ file gốc lên và tiến hành mã hóa

Sẽ có thông báo cho người dùng về việc quá trình mã hóa đã hoàn tất.

Hình 3.25: Thông báo mã hóa thành công

Public key, tên file, dữ liệu đã mã hóa sẽ được đưa vào các thẻ tương ứng trong file định dạng xml và đặt tên theo định dạng: filename.encrypt. Định dạng file như sau :

Hình 3.26: Định dạng file

Kết thúc quá trình mã hóa file.

e. Chức năng giải mã file.

Quá trình giải mã file bắt đầu bằng việc chọn nút « Giải mã ECDH» . Để giải mã được file. Phần mềm cần tạo lại key ECDH, nên cần có private key và public key của người gửi. Public key của người gửi sẽ được trích xuất và tạo ra

ECDH key, key này sẽ được đưa vào hàm băm SHA 256 để tạo key giải mã. Quá trình có thể theo dõi qua log :

Hình 3.27: Nội dung thẻ Senderpubkey

Hình 3.298: Tạo lại key ECDH

Chúng ta có thể so sánh key vừa rồi với key được tạo ra trong quá trình mã hóa để thấy rằng quá trình trao đổi key ECDH đã được thực hiện đúng. Key được sinh ra sẽ được sử dụng để giải mã ra dữ liệu gốc. Ta có thể theo dõi kết quả giải mã qua file log :

Hình 3.29: Kết quả giải mã

So sánh với dữ liệu gốc trong phần mã hóa có thể thấy là giống nhau. Điều này chứng tỏ quá trình giải mã đã thành công. Người dùng sẽ nhận được thông báo :

Hình 3.30: Thông báo giải mã thành công

Dữ liệu sau khi giải mã sẽ được lưu vào một file và đặt tên theo filename trong file encrypt, file sẽ được đặt trong cùng thư mục với file mã hóa. Việc này cũng được ghi lại trong log :

Hình 3.31: Lưu file

Truy cập vào thư mục chứa file mã hóa ta sẽ thấy có thêm file đã giải mã :

Hình 3.32: File đã giải mã

Nếu người dùng chọn những file không đúng định dạng của file đã mã hóa. Phần mềm sẽ không thể giải mã và có thông báo cho người dùng :

Hình 3.33: Thông báo giải mã thất bại

Nguyên nhân có thể là do không thể đọc được nội dung các thẻ trong file mã hóa. Việc này có thể theo dõi qua log :

Hình 3.34: Giải mã thất bại xem qua log

Như vậy, kết thúc quá trình giải mã.

3.7. Kết luận chương 3

Trong chương 3 này luận văn đã xây dựng một ứng dụng cụ thể như đi : phân tích, thiết kế, xây dựng các biểu đồ usecase, biểu đồ phân cấp chức năng, sau đó tập trung đi xây dựng giao diện và các lớp triển khai ứng dụng. Kết quả đã mô phỏng được ứng dụng bảo mật vào việc xác thực tài liệu điện tử dựa trên hạ tầng khóa công khai PKI như là chức năng ký file, chức năng xác minh chữ ký, chức năng mã hóa file và chức năng giải mã file.

KẾT LUẬN

Việc ứng dụng công nghệ thông tin đã và đang là một lĩnh vực đem lại nhiều lợi ích cho xã hội, nó không thể thiếu trong nền kinh tế hội nhập và toàn cầu hóa. An toàn và bảo mật thông tin là một trong những yếu tố quan trọng cho nhiều ứng dụng trong thực tiễn. Trong quá trình nghiên cứu tìm hiểu các giải pháp bảo mật em nhận thấy rằng hệ mã hóa công khai dựa trên đường cong elliptic cho đến nay được xem là hệ mã hóa an toàn và hiệu quả nhất so với các hệ mã hóa công khai khác, ECDSA được xem là ưu việt hơn bởi ở cùng độ bảo mật như nhau thì độ dài khóa trong ECDSA nhỏ hơn nhiều so với các hệ mã hóa khác. Điều này dẫn tới khả năng thực thi nhanh hơn, hiệu quả hơn. Với mục tiêu nghiên cứu bảo mật và xác thực tài liệu điện tử, luận văn đã đạt được:

Quan nghiên cứu và thử nghiệm, luận văn đã đạt được những kết quả chính sau:

-Hiểu được các vấn đề liên quan đến mật mã

-Nghiên cứu và đánh giá được một số thuật toán mã hóa công khai

-Nghiên cứu và hiểu rõ được các vấn đề liên quan bảo mật dữ liệu bằng cơ chế xác thực hạ tầng khóa công khai PKI.

-Tìm hiểu về lập trình với hạ tầng khóa công khai, sử dụng giải thuật ECDSA qua thư viện java.security

-Thử nghiệm được tính xác thực bảo mật tài liệu điện tử dựa trên PKI.

Các kết quả đạt được của luận văn bước đầu đã chứng tỏ hiệu quả của việc ứng dụng hạ tầng khóa công khai PKI trong việc xác thực các tài liệu điện tử một cách an toàn và bảo mật.

Hướng phát triển tiếp theo của đề tài:

Nghiên cứu một số giải pháp bảo mật CSDL, ứng dụng cơ sở hạ tầng khóa công khai PKI, mở rộng một số thuật toán mã hóa công khai và áp dụng bảo mật, xác thực tài liệu điện tử như: thuật toán RSA, tiêu chuẩn chữ ký số DSS, trao đổi khóa Diffie - Hellman, hệ mật mã Elgamal, hệ thống mật mã Paillier,…

Trong quá trình tìm hiểu và thực hiện đề tài, do kiến thức còn nhiều hạn chế đồng thời đây là một lĩnh vực còn khá mới cả trên thế giới và ở Việt Nam nên

không thể tránh những thiếu sót. Rất mong nhận được sự góp ý và hướng dẫn để kiến thức được hoàn thiện hơn. Em xin gửi lời cảm ơn chân thành đến TS Hồ Văn Hương, người đã truyền đạt cho em các kiến thức quý báu đồng thời giúp đỡ em hoàn thành đề tài này.

Xin chân thành cảm ơn!

Học viên thực hiện

TÀI LIỆU THAM KHẢO

[1]. Hồ Văn Hương, Đào Thị Ngọc Thuỳ, Ứng dụng hệ thống kiểm soát truy nhập mạng

theo mô hình truy nhập một lần, Tạp chí An toàn thông tin, số 1 (025) 2013.

[2]. Hồ Văn Hương, Hoàng Chiến Thắng, Ký số và xác thực trên nền tảng web, Tạp chí An toàn thông tin, số 2 (026) năm 2013,

[3]. Hồ Văn Hương, Nguyễn Quốc Uy, Giải pháp bảo mật cơ sở dữ liệu, Tạp chí An toàn thông tin, số 3 (027) năm 2013.

[4]. Hồ Văn Hương, Hoàng Chiến Thắng, Nguyễn Quốc Uy, Giải pháp bảo mật và

xác thực cho văn phòng điện tử, Hội nghị Quốc gia về điện tử và truyền thông (REV 2013-KC01).

[5]. Hồ Văn Hương, Hoàng Chiến Thắng, Nguyễn Quốc Uy, Giải pháp bảo mật và

xác thực thư điện tử, Tạp chí An toàn thông tin số 04 (028), 2013.

[6]. Hồ Văn Hương, Nguyễn Quốc Uy, Nguyễn Anh Đoàn, Tích hợp giải pháp bảo

mật và xác thực cho mạng riêng ảo, Tạp chí nghiên cứu Khoa học và Công nghệ

Quân sự số 28, 2013.

[7] Giáo trình Lý Thuyết Cơ Sở Mật Mã, Học Viện Kỹ Thuật Mật Mã, 2006.

[8] Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin, Đại học Quốc gia Hà

Nội, 1999.

[9] Dương Anh Đức, Trần Minh Triết, Mã hóa và ứng dụng, Đại học Khoa học Tự nhiên, Đại học Quốc gia TP Hồ Chí Minh, 2005.

[10] Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone, Handbook of Applied Cryptography, CRC Press, 1997.

[11] Harvey M.Deitel& Paul J.Deitel,Java How to Programdan, 2003 [12] Jonathan B. Knudsen,Java Cryptography ,May 1998

[13] Jason Weiss, Java Cryptography Extensions,2004

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu xây dựng bảo mật và xác thực tài liệu điện tử dựa trên PKI và ứng dụng vào trường đại học hạ long​ (Trang 48)

Tải bản đầy đủ (PDF)

(64 trang)