Nghiên cứu và nắm vững lý thuyết mật mã cơ sở và chữ ký số như hệ mã khóa công khai, hàm băm, sơ đồ chữ ký số, PKI và chứng thư số để xây dựng chức năng nhằm đảm bảo an toàn của hệ thống chữ ký số. Đã khảo sát, phân tích và thiết kế hệ thống khá chi tiết và rõ ràng. Xây dựng lập trình được giải pháp chữ ký số vào khâu kí xác nhận của quá trình phát hành hóa đơn điện tử trên nền tẩng application desktop, thông qua thư viện System.Security.Cryptography.
Mục tiêu và phạm vi của đề tài
Dựa trên cơ sở khảo sát, phân tích, đánh giá hiện trạng sử dụng và quản lí hóa đơn truyền thống giấy hiện nay, quá trình bảo mật thông tin doanh nghiệp nói chung và bảo mật dữ liệu hóa đơn của khách hàng nói riêng đang là vấn đề quan trọng Hoạt động trao đổi thông tin hóa đơn trong môi trường điện tử đòi hỏi những thông tin cá nhân của doanh nghiệp, thông tin của hóa đơn cần được bảo vệ trước các nguy cơ đánh cắp, giả mạo, sửa đổi…, từ đó dẫn đến sự cần thiết phải tích hợp các giải pháp bảo mật an toàn vào hệ thống ký và phát hành hóa đơn điện tử Chữ ký số là một giải pháp hữu hiệu chống giả mạo người gửi thông tin và thay đổi nội dung thông tin trong quá trình gửi, đảm bảo tính toàn vẹn của thông tin Đây cũng là mục tiêu mà đồ án nghiên cứu và áp dụng thử nghiệm
Do đây là một hệ thống lớn, nên phạm vi của đồ án là tập trung vào dây dựng một phần mềm ký và phát hành hóa đơn điện tử khi tiến hành một giao dịch tại một của hàng, hay một doanh nghiệp nhỏ Cụ thể các dịch vụ như sau:
Tạo hóa đơn: Dịch vụ để người bán hàng tạo hóa đơn
Phát hành hóa đơn: Dịch vụ để phát hành chính thức hóa đơn điện tử bằng phương pháp ký số
Thống Kê HĐĐT: Dịch vụ để quản lý tình trạng phát hành và sử dụng hóa đơn
Các dịch vụ xem thông tin: Xem thông tin công ty và hóa đơn.
Định hướng và giải pháp
Định hướng
Hệ thống triển khai trong các cửa hàng hoặc doanh nghiệp nhỏ, đảm bảo hoạt động ổn đinh, chính xác, đầy đủ các chức năng và yêu cầu của cửa hàng, doanh nghiệp
Hệ thống được thiết kế theo dạng dễ triển khai, dễ bảo trì, dễ dàng sử dụng, nhằm mục đích cho các cửa hàng, doanh nghiệp nhỏ có thể đăng ký sử dụng các dịch vụ tùy theo yêu cầu
Hệ thống phải đáp ứng được các chức năng, nhiệm vụ công việc, nghiệp vụ hóa đơn như hóa đơn giấy truyền thống, đem lại tiện lợi trong việc sử dụng hệ thống.
Giải pháp
Để hệ thống ký và phát hành hóa đơn điện tử có thể đáp ứng được yêu cầu dễ dàng sử dụng cho các nhân viên trong đơn vị sử dụng, trước khi thiết kế hệ thống, em đã tìm hiểu các nghiệp vụ hóa đơn cơ bản và các vấn đề gặp phải đối với hóa đơn giấy truyền thống Từ đó, thiết kế lại giao diện, chức năng của phần mềm để người dùng dễ tiếp cận, dễ sử dụng
Do đặc thù của môi trường làm việc của các đơn vị phát hành có ít các nhân viên có trình độ công nghệ cao, phần lớn gồm các nhân viên như thủ kho, người bán hàng, kế toán , cho nên để đặt được yêu cầu dễ triển khai, dễ bảo trì thì hệ thống phải được xây dựng trên các nền tảng công nghệ cơ bản, đơn giản, không quá phức tạp Ngoài ra, để tránh trường hợp mất dữ liệu trong quá trình sử dụng do lỗi, hệ thống được trang bị thêm một cơ sở dữ liệu SQLlite cùng với Client Tool nhằm mục đích dự phòng.
Đóng góp và kết quả đạt được
ĐATN đã xác định được vai trò quan trọng của hệ thống ký và phát hành hóa đơn điện tử trong việc hỗ trợ kinh doanh, buôn bán Qua quá trình khảo sát nhu cầu, phân tích yêu cầu, thiết kế hệ thống, ĐATN đã xây dựng được các dịch vụ cơ bản của một hệ thống có chức năng của hệ thống hóa đơn giấy truyền thống và phát huy các thế mạnh và tiện ích của hóa đơn điện tử
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Cơ sở lý thuyết chữ ký số
Hệ mã hóa công khai
Trong các mô hình mật mã cổ điển, thông thường người gửi và người nhận cùng dùng một phương thức là chọn một khoá bí mật K Sau đó dùng K để mã hoá bản tin theo cách C=E(M,K) và giải mã với M=D(C,K): với M là tin cần gửi, C là bản tin mã hóa của M, E là thuật toán mã hóa, D là thuật toán giải mã Các hệ mật mã cùng thuộc mô hình này được gọi là hệ khoá bí mật
Nhược điểm của hệ mật mã này là phải trao đổi về khoá K giữa người gửi và người nhận trên một kênh an toàn trước khi tiến hành gửi một bản tin đã mã hóa Trong thực tế, đây là việc rất khó thực hiện và chưa đảm bảo an toàn bảo mật khi trao đổi khóa
Nhằm giải quyết các hạn chế của hệ khóa bí mật, ý tưởng về một hệ mã hóa công khai được Diffie và Hellman đưa ra vào năm 1976 Việc xây dựng thực tế do Rivesrt, Shamir và Adleman đưa ra lần đầu tiên vào năm 1977, họ đã tạo nên hệ mật mã nổi tiếng RSA
Hình 2: Sơ đồ mã truyền tin dựa trên cơ sở mã hóa không khai.
Sơ đồ truyền tin bí mật từ người gửi đến người nhận sử dụng mật mã khóa công khai được mô tả trong hình 2, trong đó:
M : Bản tin rõ cần gửi.
C : Bản tin sau khi được mã hóa.
KCB: là khóa công khai của B (Khóa mã hóa) được lấy trên kênh công khai.
KRB :là khóa bí mật của B (Khóa giải mã).
Hàm mã hóa như sau: C = E(M, KCB).
Hàm giải mã như sau: M= E -1 (C, KRB).
Theo sơ đồ của hệ mật khóa công khai ta thấy các ưu điểm là:
Không cần trao đổi khóa bí mật.
Không cần thiết lập một kênh truyền an toàn riêng.
Biết khóa mã hóa trên kênh công khai nhưng rất khó giải mã, tức là biết KCB nhưng rất khó suy ra được KRB (độ khó ở đây chính là độ phức tạp tính toán hoặc tài nguyên và thời gian tính toán).
Khóa riêng được cá nhân cất giữ bí mật , không bao giờ được phân phối nên khả năng lộ khóa riêng là khó hơn so với hệ mã hóa đối xứng Vì vậy mà hệ mã khóa công khai được sử dụng trên kênh truyền thông công khai như mạng Internet một cách an toàn Khi khóa riêng bị mất hoặc bị lộ, cá nhân sẽ thay đổi cặp khoá riêng và khóa công khai mới tương ứng để thay thế cặp khóa riêng và khoá công khai cũ
Tuy nhiên, việc xây dựng hệ thống chữ ký số dựa trên hệ mã khóa công khai cũng khó thực hiện do tồn tại các điểm yếu như:
Độ dài chữ ký quá lớn: Quá trình ký trên toàn bộ cả bản tin sẽ sinh ra chữ ký số có độ dài tương đương với bản tin, vì việc thao tác trên các phép toán được thực hiện trên từng bit đối với cả khối văn bản Nếu kích thước của bản tin cần ký là cực lớn sẽ phát sinh vấn đề như: tốn bộ nhớ lưu trữ, tốn thời gian truyền, tốn tài nguyên tính toán,
Tốc độ ký chậm: Vì lý do ký trên toàn bộ từng bit của bản tin, thêm vào đó là việc tính toán trên mật mã công khai là lớn hơn so với mật mã đối xứng, cho nên thời gian quá trình ký số là lớn và tỉ lệ thuận với độ dài của bản tin cần ký
Hai điểm yếu nên trên khiến việc ký trực tiếp trên hệ mã hóa công khai rất khó thực hiện Để giải quyết vấn đề này, một giải pháp đưa ra là sử dụng thêm sự hỗ trợ của hàm băm mật mã, tức là thay vì ký trực tiếp vào bản tin, thì ta tiến hành ký vào giá trị băm của bản tin.[5]
Hàm băm
Hàm băm (Hash function) là một giải thuật toán học, đầu vào là khối dữ liệu, và đầu ra ứng với mỗi khối dữ liệu đó một giá trị có độ dài ngắn hơn khối dữ liệu đầu vào Nói một cách chính xác hơn, hàm băm h sẽ tạo ra ánh xạ các xâu bit có độ dài hữu hạn tuỳ ý thành các xâu bit có độ dài m cố định.[6]
Xét xâu bit x ∈ (Z2) n và một ánh xạ : h : x → y ∈ (Z2) m Trong đó : n > m nhận giá trị bất kì, còn m là giá trị cố định
Hàm băm h phải đảm bảo tính chất sau :
Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ ý tới một đầu ra h(x ) có độ dài bit m cố định
Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x , có thể dễ dàng tính được h(x)
Tính một chiều : Mỗi khối dữ liệu gốc qua một hàm băm sẽ cho một giá trị băm duy nhất, từ giá trị băm không thể tìm ngược lại khối dữ liệu trước khi băm
Tính khó va chạm (Chống xung đột): Không có khả năng về tính toán để tìm hai đầu vào khác nhau bất kỳ x1 ≠x2 sao cho : h(x1 ) = h(x2)
Nhờ có những tính chất đặc biệt nêu trên, giá trị băm được sử dụng để so sánh, đối chiếu giữa các khối dữ liệu với nhau một cách đơn giản và dễ dàng Các hàm băm được dùng cho các sơ đồ chữ ký số kết hợp với việc đảm bảo tính toàn vẹn của dữ liệu, khi đó bản tin được băm và giá trị băm này (được xem như đại diện cho bản tin) sẽ được ký thay vì được ký trực tiếp lên bản tin gốc Do đó, nhược điểm của việc ký trên bản tin gốc đã được giải quyết, giúp quá trình ký trở nên tiết kiệm tài nguyên tính toán, cải thiện tốc độ ký, tiết kiệm bộ nhớ.[5]
Hình 3: Ví dụ về hàm băm trên thuật toàn SHA1.
Chữ ký số
Trong quá trình làm việc thực tế ngoài cuộc sống, các văn bản giấy tờ có sử dụng chữ ký truyền thống do cá nhân dùng bút “ký” trực tiếp lên giấy, các yêu cầu cơ bản quan trọng của chữ ký đó phải được đảm bảo các yêu cầu sau:
Chữ hoặc ký tự ngắn gọn thường đại diện cho tên của người ký
Là đại diện đặc trưng duy nhất của người ký
Khó giả mạo, bắt chước, sao chép.[6]
Quá trình xây dựng chữ ký điện tử cũng phải thỏa mãn các yêu cầu trên Sau đâu là sơ đồ chữ ký số được xây dựng dựa trên lý thuyết mã hóa công khai và các thuật toán băm được mô tả như hình 4
Hình 4: Sơ đồ ký số
Quá trình tạo chữ ký số ở bên A:
A tiến hành băm bản tin M bằng hàm băm không khóa (MDC), cho đầu ra là
Mã hóa HMDC bằng một hệ mã khóa công khai với khóa bí mật KRA của A, được đầu ra là chữ ký số DSA của A
Thực hiệp phép toán ghép bản tin M với chữ ký số DSA được (M|| DSA), sau đó gửi đến B.[5]
Bên B sau khi nhận được (M|| DSA), tiến hành xác thực chữ ký số:
Tách chữ ký số DSA và bản tin M từ bản tin (M|| DSA)
Sử dụng khóa công khai của A là KCA để giải mã DSA , đầu ra là mã băm HMDC của thông báo M gửi từ A
Tiến hành băm thông báo M theo đúng thuật toán của A để có được mã băm
H ’ MDC của thông báo M đã truyền qua kênh mở
So sánh hai mã băm HMDC và H ’ MDC để xác thực thông báo M.[5]
Trong sơ đồ chữ ký số trên, việc sử dụng hàm băm để xác thực tính toàn vẹn nội dung của thông báo M và hệ mật khóa công khai dùng để xác thực bên gửi A(xác thực tính tránh giả mạo người gửi A)
Các chữ ký số được tạo ra đáp ứng được các yêu cầu sau :
Tính không thể giả mạo : Nếu A ký thông báo M bằng chữ ký DS(A, M) thì không một ai có thể tạo được cặp [M||DS(A, M)] do đó người nhận được có thể đảm bảo là do A gửi
Tính xác thực: Nếu bên nhận B nhận được [M||DS(A, M)] được xem là của A thì B có thể kiểm tra được rằng chữ ký có phải là của A gửi đi vì chỉ có A mới có thể tạo được chữ ký này và chữ ký được ghép với M trước khi được gửi đi
Tính không thể thay đổi: Thông báo M do A gửi đi là không thể thay đổi bởi vì các đặc tính của hàm băm chỉ thay đổi nhỏ cũng đã sinh ra mã băm khác, lúc này cặp [M||DS(A, M)] hoàn toàn bị thay đổi.[5]
Chứng thư số
Việc ký số sử dụng cở sở hệ mã công khai và hàm băm đã giải quyết vấn đề đảm bảo an toàn khi truyền tin trên kênh an toàn Tuy nhiên, vẫn còn tồn tại vấn đề đó là ai sẽ là người phát hành các khóa công khai và khóa bí mật của mỗi cá nhân, và người phát hành này có thực sự đáng tin không Để giải quyết vấn đề này , một giải pháp được đưa ra là sử dụng hà tầng cơ sở khóa công khai PKI (Public Key Infrastructure) Là một giải pháp sử dụng một bên thứ ba có độ tin cậy cao , đã được công nhận tính bảo mật cung cấp và xác thực cá nhân các bên tham gia vào quá trình sử dụng ký số Giải pháp này cấp phát cho mỗi cá nhân người sử dụng trong hệ thống một cặp khóa công khai và khóa bí mật tương ứng, cặp khóa này được đóng gói thêm các thông tin liên quan và được gọi là chứng thư số.[5][6]
Hệ thống PKI có nhiều kiến trúc khác nhau, tùy theo từng nhà phát hành , cũng như từng mục đích và ứng dụng mà PKI được thiết kế khác nhau Tuy nhiên nhìn chung, một hệ thống PKI được xây dựng dựa trên kiến trúc PKI cơ sở như hình 5
Hình 5: Kiến trúc cở sở của PKI
Trong đó gồm các thành phần :
ROOT Certificate Authority (ROOT CA) và Certificate Authority(CA): Cơ quan cấp chứng thư số có chức năng: tạo, phân phát, lưu trữ, quản lý, thu hồi các chứng thư số CA nhận yêu cầu xin cấp phát chứng thư số của các cá nhân, tổ chức, sau đó cấp cho các cá nhân hoăc tổ chức
Registration Authority (RA): Cơ quan nhận đăng ký chứng thư số, có mục đích tiếp nhận các yêu cầu cấp phát chứng thư của cá nhân tổ chức, đồng thời xác minh danh tính pháp lí cho các cá nhân tổ chức, sau đó gửi yêu cầu lên CA để xin cấp phát chứng thư, sau đó gửi về cho người dùng
End entity(EE): Đối tượng cuối của hệ thống PKI, đây là các cá nhân và tổ chức sau khi được xác minh danh tính, được CA cấp phát cho chứng thư số.[7]
Các chứng thư số phổ biến nhất hiện này là X.509 do ITU-T ban hành, được phát triển bởi IETF PKIX X.509 chính thức công bố vào năm 1988, nhiều phiên bản mới đã được để đáp ứng các yêu cầu ngày càng phát triển của các dịch vụ sao cho đơn giản và thuận tiên hơn X.509 định nghĩa nội dung của chứng thư chuẩn, ví dụ như : số phiên bản, số serial, ID chữ ký, tên công bố, … [6]
Sau đây là một số trường cơ bản trong chứng thư X.509 đang được sử dụng phổ biến ngày nay:
Version: Cho biết phiên bản của chứng thư X.509
Serial Number: Dãy số nguyên dương, là duy nhất được cấp bởi cơ quan phát hành chứng thư cho chứng thư số
Signature Algorithm: Chứa thuật toán được CA sử dụng để sinh ra chứng thư
Issuer: Chứa tên phân biệt , nhận dạng của CA phát hành chứng thư
Validity: Thời gian hiệu lực của chứng thư
Subject: Chứa tên của cá nhân , tổ chức được cấp hoặc liên kết với chứng thư
Public Key: Chứa khóa công khai và các giải thuật liên quan
Issuer Unique Identifier: được bổ sung để định dạng CA(không bắt buộc)
Subject Unique Identifier: được bổ sung để định dạng cá nhân , tổ chức được cấp chứng thư (không bắt buộc).[2]
Hình 6: Ví dụ các trường của một chứng thư.
Sơ đồ tổng quan giải pháp
Sơ đồ tổng quan của quá trình đăng ký chứng thư số
Tác nhân chính của quá trình đăng ký chứng thư số được mô tả trong bảng 1
Tác nhân Vai trò Đơn vị phát hành Đơn vị phát hành: Là đối tượng phát hành hóa đơn Tác nhân này có các ca sử dụng đăng ký chứng thư số, ký số và phát hành hóa đơn, thay thế điều chỉnh, xác thực hóa đơn,
Bảng 1: Các tác nhân của quá trình đăng kí chứng thư số
Hình 7: Sơ đồ tổng quan của quá trình đăng ký chứng thư số
Sơ đồ tổng quan của quá trình đăng ký chứng thư số được thể hiện như hình 7.Các bước trong sơ đồ tổng quan của quá trình đăng ký chứng thư số như sau:
Bước 1: Đơn vị phát hành hóa đơn (Doanh nghiệp) gửi thông tin đăng ký chứng thư cho nhà cung cấp CA Nhà cung cấp CA xác minh thông tin và cấp chứng thư cho doanh nghiệp Chứng thư này được import vào thiết bị USB Token
Bước 2: Doanh nghiệp cài đặt phần mềm Client Tool trên hệ điều hành Windows và kết nối USB Token với máy tính Client Tool tự động cập nhật thông tin chứng thư trong USB Token
Bước 3: Client Tool kiểm tra thông tin của chứng thư như nhà cung cấp, tên chủ chứng thư, ngày sử dụng, ngày hết hạn, Nếu chứng thư hợp lệ, Client Tool sẽ cập nhật chính thức thông tin chứng thư lên server.
Sơ đồ tổng quan của quá trình ký số và phát hành hóa đơn
Tác nhân Vai trò Đơn vị phát hành Người quản trị của một nhóm Đây là người có quyền cao nhất trong nhóm
Khách hàng Là đối tượng sử dụng dịch vụ, mua hàng hóa của đơn vị phát hành Tác nhân này có các ca sử dụng tra cứu, xác thực hóa đơn đã phát hành
Hình 8: Sơ đồ tổng quan của quá trình ký số và phát hành hóa đơn
Sơ đồ tổng quan của quá trình ký số và phát hành hóa đơn được thể hiện như hình 8.Các bước trong sơ đồ tổng quan của quá trình ký số và phát hành hóa đơn như sau:
Bước 1: Đơn vị phát hành tạo lập và phát hành hóa đơn (ký số) bằng Client Tool Bước 2.1: Client Tool xác thực hóa đơn đã được ký và đẩy hóa đơn lên server
Bước 2.2: Sau khi phát hành hóa đơn, Client Tool gửi(qua email, qua sms,…) thông tin hóa đơn cho khách hàng của đơn vị phát hành
Bước 3: Khách hàng có thể sử dụng các thông tin hóa đơn nhận được để tra cứu hóa đơn trên server.
Sơ đồ tổng quan của quá trình xác thực hóa đơn
Tác nhân Vai trò Đơn vị phát hành Đơn vị phát hành: Là đối tượng phát hành hóa đơn Tác nhân này có các ca sử dụng đăng ký chứng thư số, ký số và phát hành hóa đơn, thay thế điều chỉnh, xác thực hóa đơn,
Bảng 3: Tác nhân của quá trình xác thực hóa đơn
Hình 9: Sơ đồ tổng quan của quá trình xác thực hóa đơn
Sơ đồ tổng quan của quá trình xác thực hóa đơn (bước 2.1 của quá trình ký số và phát hành hóa đơn) được thể hiện như hình 9 Các bước trong sơ đồ tổng quan của quá trình xác thực hóa đơn như sau:
Bước 1: Đơn vị phát hành xem chi tiết hóa đơn bằng Client Tool
Bước 2: Client Tool gọi đến thư viện Verify Sign của C# để xác thực hóa đơn đã được ký số
Bước 3: Thư viện Verify Sign kiểm tra xác thực hóa đơn và trả kết quả cho Client Tool.
Biểu đồ ca sử dụng tổng quát
Tác nhân Vai trò Đơn vị phát hành Người quản trị của một nhóm Đây là người có quyền cao nhất trong nhóm
Khách hàng Là đối tượng sử dụng dịch vụ, mua hàng hóa của đơn vị phát hành Tác nhân này có các ca sử dụng tra cứu, xác thực hóa đơn đã phát hành
Bảng 4: Các tác nhân tương tác với hệ thống
Hình 10: Biểu đồ ca sử dụng tổng quát
Biểu đồ ca sử dụng tổng quát rút gọn, chỉ tập trung vào các chức năng liên quan đến quá trình ký số và phát hành hóa đơn, được thể hiện trong hình 10 Trong biểu đồ này có ba chức năng áp dụng giải pháp chữ ký số là: đăng ký chứng thư số, ký số, phát hành hóa đơn và xác thực hóa đơn.
Phân tích và thiết kế chức năng đăng ký chứng thư số
Đặc tả ca sử dụng đăng ký chứng thư số
Ca sử dụng đăng ký chứng thư số được phân rã như trong hình 11
Hình 11:Biểu đồ ca sử dụng đăng ký chứng thư số
Ca sử dụng đăng ký chứng thư số được đặc tả trong bảng 5
Tên ca sử dụng Đăng ký chứng thư số
Tác nhân Đơn vị phát hành Điều kiện đầu vào Đơn vị phát hành đăng nhập thành công vào Client Tool Đơn vị phát hành kết nối USB Token với máy tính Đảm bảo thành công Client Tool và server lưu chứng thư số
Kích hoạt Đơn vị phát hành chọn Đăng ký chứng thư số
Kịch bản chính 1 Đơn vị phát hành chọn chứng thư số muốn đăng ký từ danh sách chứng thư trong USB Token
2 Client Tool kiểm tra chứng thư số đã chọn
3 Client Tool lưu chứng thư số đã chọn
Kịch bản ngoại lệ 1 3b Hệ thống thông báo chứng thư số đã chọn đã được đăng ký trước đó
Kịch bản ngoại lệ 2 3c Hệ thống thông báo chứng thư đã chọn không thể dùng để ký số
Kịch bản ngoại lệ 3 3d Hệ thống thông báo chứng thư đã chọn đã bị thu hồi hoặc không còn hiệu lực
Bảng 5: Đặc tả biểu đồ ca sử dụng đăng ký chứng thư số.
Sơ đồ hoạt động của chức năng đăng ký chứng thư số
Biểu đồ hoạt động và biểu đồ trình tự của chức năng đăng ký chứng thư số lần lượt được thể hiện các trong hình 12 và hình 13
Hình 12: Biểu đồ hoạt động của chức năng đăng ký chứng thư số
Hình 13: Biểu đồ tuần tự của chức năng đăng ký chứng thư số
Các bước trong biểu đồ tuần tự của chức năng đăng ký chứng thư số như sau:
Bước 1: Đơn vị phát hành xem danh sách chứng thư số có trong USB Token
Bước 2: Đơn vị phát hành chọn một chứng thư để đăng ký với Client Tool
Bước 3: USB Token trả về chứng thư đã chọn cho đơn vị phát hành
Bước 4: Đơn vị phát hành kiểm tra chứng thư đã được đăng ký trước đó hay chưa Nếu đăng ký rồi thì chuyển sang bước 5.1, nếu chưa thì chuyển sang bước 5.2 Bước 5.1: Client Tool thông báo chứng thư đã được đăng ký trước đó
Bước 5.2: Đơn vị phát hành kiểm tra chứng thư có thể dùng để ký được không Nếu không thì chuyển sang bước 6.2.1, nếu có thì chuyển sang bước 6.2.2
Bước 6.2.1: Client Tool thông báo chứng thư không thể dùng để ký
Bước 6.2.2: Client Tool kiểm tra trạng thái của chứng thư, nếu chứng thư không có trong danh sách thu hồi thì chuyển sang bước 7.2.2.1, nếu chứng thư đã bị thu hồi thì chuyển sang bước 7.2.2.2
Bước 7.2.2.1: Client Tool lưu chứng thư với chủ sở hữu là Đơn vị phát hành
Bước 7.2.2.2: Client Tool thông báo chứng thư không còn hiệu lực.
Thiết kế giao diện của chức năng đăng ký chứng thư số
Thiết kế của các giao diện đăng ký chứng thư số, giao diện chọn chứng thư số và giao diện thông báo lần lượt được thể hiện trong các hình 14, hình 15 và hình 16
Hình 14: Giao diện đăng ký chứng thư số
Hình 15: Giao diện chọn chứng thư số
Hình 16: Giao diện thông báo
Mô tả các giao diện trong chức năng đăng ký chứng thư số như sau:
Giao diện đăng ký chứng thư số: Gồm chứng thư số mà đơn vị phát hành hóa đơn đã đăng ký với hệ thống, một nút để cập nhật/đăng ký chứng thư mới
Giao diện chọn chứng thư số: Gồm một danh sách các chứng thư số có trong USB Token, một nút để xác nhận sau khi chọn chứng thư và một nút để hủy thao tác chọn chứng thư
Giao diện thông báo: Hiển thị thông báo của hệ thống đến người dùng.
Phân tích và thiết kế chức năng ký và phát hành hóa đơn
Đặc tả ca sử dụng ký và phát hành hóa đơn
Ca sử dụng ký và phát hành hóa đơn được phân rã như trong hình 17
Hình 17: Biểu đồ ca sử dụng ký và phát hành hóa đơn
Ca sử dụng ký và phát hành hóa đơn được đặc tả trong bảng 6
Tên ca sử dụng Ký và phát hành hóa đơn
Tác nhân Đơn vị phát hành Điều kiện đầu vào - Đơn vị phát hành đã đăng nhập thành công vào Client Tool
- Đơn vị phát hành kết nối USB Token với máy tính Đảm bảo thành công Hệ thống ký và phát hóa đơn
Kích hoạt Đơn vị phát hành chọn phát hành hóa đơn
Kịch bản chính Đơn vị phát hành chọn chứng thư dùng để ký số từ danh sách chứng thư trong USB Token Đơn vị phát hành nhập mã PIN của USB Token
1 Hệ thống kiểm tra chứng thư số đã chọn
2 Hệ thống ký số và phát hành hóa đơn bằng chứng thư đã chọn
Kịch bản ngoại lệ 1 3b Đơn vị phát hành nhập sai mã PIN nhưng vẫn trong số lần quy định, quay lại bước 2
Kịch bản ngoại lệ 2 3c Đơn vị phát hành nhập sai mã PIN quá số lần quy định, hệ thống tạm khóa USB Token
Kịch bản ngoại lệ 3 4b Hệ thống thông báo chứng thư đã chọn không hợp lệ để ký số
Bảng 6: Đặc tả biểu đồ ca sử dụng ký và phát hành hóa đơn
2.4.2 Sơ đồ hoạt động của chức năng ký và phát hành hóa đơn
Biểu đồ hoạt động và biểu đồ trình tự của chức năng đăng ký chứng thư số lần lượt được thể hiện các trong hình 18 và hình 19
Hình 18: Biểu đồ hoạt động của chức năng ký và phát hành hóa đơn
Hình 19: Biểu đồ tuần tự của chức năng ký và phát hành hóa đơn
Các bước trong biểu đồ tuần tự của chức năng ký và phát hành hóa đơn như sau: Bước 1: Đơn vị phát hành xem danh sách chứng thư số có trong USB Token
Bước 2: Đơn vị phát hành chọn một chứng thư để ký số hóa đơn
Bước 3: USB Token trả về chứng thư đã chọn cho đơn vị phát hành
Bước 4: Đơn vị phát hành kiểm tra chứng thư có hợp lệ để ký số không Nếu không thì chuyển sang bước 5.1, nếu có thì chuyển sang bước 5.2
Bước 5.1: Hệ thống thông báo chứng thư không thể dùng để ký số
Bước 5.2: Đơn vị phát hành gọi phương thức tạo chữ ký số trong phạm vi USB Token Bước 6.2: Đơn vị phát hành nhập mã PIN để đăng nhập vào USB Token
Bước 7.2.1: Nếu việc đăng nhập không thành công vì sai mã PIN, USB Token kiểm tra nếu số lần nhập sai mã PIN vẫn trong số lần quy định thì lặp lại bước 6.2 Nếu nhập đúng mã PIN thì chuyển sang bước 7.2.2 Nếu hết số lần quy định mà vẫn nhập sai mã PIN thì chuyển sang bước 8.2.1
Bước 8.2.1: Hệ thống tạm khóa USB Token
Bước 7.2.2: USB Token tạo chữ ký số từ chứng thư và trả về chữ ký đã tạo cho Đơn vị phát hành.
Thiết kế giao diện của chức năng ký số và phát hành hóa đơn
Thiết kế của giao diện ký số và phát hành hóa đơn được thể hiện trong hình 20
Hình 20: Giao diện ký số và phát hành hóa đơn
Giao diện ký và phát hành hóa đơn: Gồm một khu vực để hiển thị danh sách các hóa đơn mới tạo lập, một nút để phát hành(quá trình phát hành chứ quá trình ký số) hóa đơn, một nút để xóa hóa đơn tạo lập và một nút để tạo hóa đơn tạo lập
Hình 21: Giao diện chọn chứng thư số
Hình 22: Giao diện thông báo phát hành thành công hóa đơn.
Phân tích và thiết kế chức năng xác thực hóa đơn
Đặc tả ca sử dụng xác thực hóa đơn
Ca sử dụng xác thực hóa đơn được phân rã như trong hình 23
Hình 23: Biểu đồ ca sử dụng xác thực hóa đơn
Ca sử dụng xác thực hóa đơn được đặc tả trong bảng 7
Tên ca sử dụng Xác thực hóa đơn
Tác nhân Đơn vị phát hành Điều kiện đầu vào Đơn vị phát hành đăng nhập thành công vào hệ thống Đảm bảo thành công Hệ thống hiển thị kết quả xác thực hóa đơn
Kích hoạt Đơn vị phát hành chọn xem chi tiết hóa đơn
Mô tả 1 Đơn vị phát hành xem chi tiết hóa đơn muốn xác thực
2 Hệ thống kiểm tra hóa đơn đã chọn
3 Hệ thống hiển thị kết quả kiểm tra
Bảng 7: Đặc tả biểu đồ ca sử dụng xác thực hóa đơn.
Sơ đồ hoạt động của chức năng xác thực hóa đơn
Biểu đồ hoạt động và biểu đồ trình tự của chức năng xác thực hóa đơn lần lượt được thể hiện các trong hình 24 và hình 25
Hình 24: Biểu đồ hoạt động của chức năng xác thực hóa đơn
Hình 25: Biểu đồ tuần tự của chức năng xác thực hóa đơn
Các bước trong biểu đồ tuần tự của chức năng xác thực hóa đơn như sau:
Bước 1: Đơn vị phát hành xem chi tiết một hóa đơn từ danh sách
Bước 2: Hệ thống lấy ra chứng thư đã dùng để ký số hóa đơn
Bước 3: Hệ thống kiểm tra chứng thư có hợp lệ hay không, nếu hợp lệ thì chuyển sang bước 4.1, nếu không hợp thì chuyển sang bước 4.2
Bước 4.2: Hệ thống thông báo chứng thư không hợp lệ
Bước 4.1: Hệ thống lấy ra chữ ký của hóa đơn
Bước 5.1.1: Hệ thống kiểm tra tính xác thực chữ ký của hóa đơn, nếu chữ ký không hợp lệ thì chuyển sang bước 6.1.1, nếu khớp thì chuyển sang bước 6.1.2
Bước 6.1.1: Hệ thống hiển thị hóa đơn với dấu X đỏ
Bước 6.1.2: Hệ thống hiển thị hóa đơn với dấu tích xanh.
Thiết kế giao diện của chức năng xác thực hóa đơn
Thiết kế của giao diện danh sách hóa đơn được thể hiện trong hình 26
Hình 26: Giao diện danh sách hóa đơn
Giao diện danh sách hóa đơn: Gồm một danh sách các hóa đơn xếp theo thứ tự và cạnh mỗi hóa đơn có một nút để xem chi tiết hóa đơn
Hình 27: Giao diện thông báo thành công
Hình 28: Giao diện thông báo không thành công.
Biểu đồ lớp
Biểu đồ lớp rút gọn, chỉ tập trung vào các lớp và thuộc tính liên quan đến nghiệp vụ ký và phát hành hóa đơn, được thể hiện trong hình 29
Các lớp trong biểu đồ trên bao gồm như sau:
UserData: chứa thông tin về tài khoản người dùng
Company: chứa thông tin về đơn vị phát hành
Certificate: Chứa thông tin về chứng thư số của đơn vị phát hành đã đăng ký với hệ thống
InvoiceVATE: Chứa thông tin về hóa đơn Một đơn vị phát hành có thể có một hay nhiều hóa đơn
Mô tả các phương thức của lớp UserData:
STT Phương thức Mô tả
1 Login Đăng nhập vào hệ thống
2 Logout Đăng xuất khỏi hệ thống
3 SynAll Đồng bộ thông tin từ server về Client Tool
Bảng 8: Mô tả các phương thức của UserData
Mô tả các phương thức của lớp Company:
STT Phương thức Mô tả
1 CreateInv Tạo lập hóa đơn mới
2 EditInv Sửa hóa đơn tạo lập
3 PublishInv Phát hành hóa đơn
4 GetListInv Lấy danh sách hóa đơn
5 ViewInv Xem chi tiết hóa đơn
6 CheckInvoiceSign Xác thực hóa đơn
Bảng 9: Mô tả các phương thức của Company
Mô tả các phương thức của lớp Certificate:
STT Phương thức Mô tả
1 CheckCertUsed Kiểm tra chứng thư số đã được đăng ký với hệ thống
2 CheckCertSign Kiểm tra chứng thư số có thể dùng để ký số không
3 SaveCert Lưu chứng thư số trong cơ sở dữ liệu của hệ thống
4 CheckCertStatus Kiểm tra trạng thái của chứng thư số
Bảng 10: Mô tả các phương thức của Certificate
Mô tả các phương thức của lớp InvoiceVATE:
STT Phương thức Mô tả
1 GetCert Lấy chứng thư đã dùng để ký số hóa đơn
2 GetSignValue Lấy chữ ký của hóa đơn
Bảng 11: Mô tả các phương thức của lớp InvoiceVATE.
Thiết kế cơ sở dữ liệu
Biểu đồ thực thể liên kết (E-R Diagram)
Đề tài của em tập trung đến việc ứng dụng ký số vào quá trình phát hành hóa đơn Nên phần này, em cũng chỉ tập trung vào các thực thể có liên quan trực tiếp đến quá trình ký số và phát hành hóa đơn
Các thực thể có các thuộc tính khác nhau, và được đánh các kiểu khác nhau như Hóa đơn, Sản phẩm, Chứng thư, Đơn vị phát hành… Các thực thể có thể gắn kèm các dữ liệu đặc trưng của mình
Các thực thế liên kết(quan hệ) với nhau sẽ được định nghĩa theo một ID xác định Ví dụ: như đơn vị phát hành quan hệ với hóa đơn thông qua key ID của chính mình Khi một đơn vị phát hành muốn lấy về danh sách các hóa đơn mà đơn vị đó phát hành thì chỉ tìm kiếm các hóa đơn có ID đơn vị phát hành tương ứng
Chi tiết các thực thể và thuộc tính như sau:
Thưc thể Đơn vị phát hành: Mã đơn vị, Tên đơn vị, Địa chỉ, Điện thoại,…
Thực thể Chứng thư: Mã chứng thư, Serial chứng thư, Thông tin chứng thư, Tên chủ thể chứng thư, Tên nhà cung cấp, Ngày bắt đầu sử dụng, Ngày hết hạn,…
Thực thể hóa đơn: Mã hóa đơn, Tên hóa đơn, Mẫu số, Ký hiệu, Số hóa đơn, Tiền trước thuế, Tiền thuế, Tiền sau thuế, Ngày phát hành,…
Thực thể sản phẩm: Mã sản phẩm, Tên sản phẩm Đơn vị, Giá, Số lượng, Thành tiền,…
Đơn vị phát hành “phát hành” hóa đơn
Sản phẩm “thuộc” hóa đơn
Đơn vị phát hành “sử dụng” chứng thư
Chứng thư “ký số” hóa đơn
Hình 30: Biểu đồ thực thể liên kết.
Sơ đồ bảng cơ sở dữ liệu
Hình 31: Sơ đồ bảng cơ sở dữ liệu
Cơ cở dữ liệu của hệ thống được thiết kế theo sơ đồ hình 31, bao gồm các bảng và mối quan hệ giữa các bảng Các bảng trong cơ sở dữ liệu được mô tả chi tiết như trong bảng 12
STT Tên bảng Mô tả
1 COMPANY Thông tin công ty, đơn vị phát hành hóa đơn
2 DECISION Thông tin quyết định phát hành hóa đơn
3 INVOICEVAT Dữ liệu hóa đơn
4 INVTEMPLATE Dữ liệu mẫu hóa đơn
5 KEYSTORES Thông tin chứng thư số
6 PRODUCTINV Dữ liệu sản phẩm, dịch vụ hóa đơn
7 PUBLISH Thông tin thông báo phát hành hóa đơn
8 PUBLISHINVOICE Dữ liệu chi tiết thông báo phát hành hóa đơn
9 REGISTERTEMP Dữ liệu đăng ký mẫu hóa đơn của đơn vị phát hành
10 USER Dữ liệu tài khoản hệ thống của đơn vị phát hành
Bảng 12: Mô tả các bảng trong cơ sở dữ liệu
CHƯƠNG 3: XÂY DỰNG DỊCH VỤ VÀ ĐÁNH GIÁ HỆ THỐNG
Môi trường triển khai
Phần mềm ký và phát hành hóa đơn điện tử được triển khai trên hệ thống máy tính có cấu hình như sau:
CPU: 2 nhân, xung nhịp 2.4 GHz
Hệ điều hành: Microsoft Windows 10 64 bit
Phần mềm: Client Tool (tệp ClientTool.msi)
Biểu đồ mô hình triển khai
Biểu đồ triển khai của hệ thống đã xây dựng được thể hiện trong hình 32 và đặc tả trong bảng 13
Hình 32: Biểu đồ mô hình triển khai
Tên thành phần Thuộc phía
PC đơn vị phát hành Client Máy trạm của đơn vị phát hành, chạy trên hệ điều hành Windows
Client Tool Client Phần mềm quản lý và phát hành hóa đơn điện tử Database Tool Client Cơ sở dữ liệu của Client Tool (Sqlite)
Server Server Server chạy trên hệ điều hình Windowns
Database Server Server Cơ sở dữ liệu của Server (MySql Server)
Bảng 13: Đặc tả biểu đồ mô hình triển khai.
Kịch bản kiểm thử
Kịch kiểm thử của các chức năng đăng ký chứng thư số, chức năng ký, phát hành hóa đơn và chức năng xác thực hóa đơn được mô tả lần lượt trong các bảng 14, 15, 16
Tên kịch bản Kịch bản 1
Mục đích Kiểm thử chức năng đăng ký chứng thư số
Các bước chuẩn bị Bước 1: Đăng nhập với tài khoản đơn vị phát hành Hệ thống chuyển đến form thông tin của đơn vị phát hành Bước 2: Chọn "Chứng thư số" trong thanh menu Hệ thống chuyển đến form chứng thư
Bước 3: Kết nối USB Token với máy tính
Các bước thực hiện - Bước 1: Nhấn nút "Cập nhật/Đăng ký" Hệ thống mở cửa sổ chọn chứng thư để cập nhật/đăng ký với hệ thống
Bước 2: Chọn một chứng thư số trong danh sách và nhấn
Kết quả Nếu chứng thư số đã chọn chưa được đăng ký trước đó và hợp lệ dùng để ký, hệ thống lưu chứng thư số vào cơ sở dữ liệu, đẩy lên thông tin chứng thư lên server và hiển thị thông báo cập nhật/đăng ký chứng thư thành công
Nếu chứng thư số đã chọn đã được đăng ký trước đó hoặc đã bị thu hổi hoặc không thể dùng để ký, hệ thống hiển thị thông báo cập nhật/đăng ký chứng thư số không thành công
Bảng 14: Kịch bản kiểm thử chức năng đăng ký chứng thư số
Tên kịch bản Kịch bản 2
Mục đích Kiểm thử chức năng ký và phát hành hóa đơn
Các bước chuẩn bị Bước 1: Đăng nhập với tài khoản admin Hệ thống chuyển đến giao diện chính của Tool
Bước 2: Chọn "Danh sách hóa đơn" trong thanh menu Hệ thống chuyển đến form danh sách hóa đơn
Bước 3: Nhấn nút "Tạo mới" trong form Hệ thống chuyển đến form tạo mới hóa đơn
Bước 4: Kết nối USB Token với máy tính
Bước 5: Nhập thông tin vào các trường
Các bước thực hiện Bước 1: Nhấn nút "Lưu" Hệ thống lưu hóa đơn tạo lập
Bước 2: Quay lại form danh sách hóa đơn Tích chọn hóa đơn và ấn phát hành
Bước 3: Form chọn chứng thư được bật lên Chọn một chứng thư số trong danh sách và nhấn "OK" Hệ thống mở cửa sổ nhập mật khẩu của USB Token
Bước 4: Nhập mật khẩu và nhấn "OK"
Kết quả Nếu mật khẩu nhập đúng và chứng thư số đã chọn hợp lệ để ký, hệ thống hiển thị thông báo đã ký và phát hành hóa đơn Thông tin hóa đơn phát hành sẽ được lưu lại trong cơ sở dữ liệu và được đẩy lên server
Nếu mật khẩu nhập sai, hệ thống mở lại cửa sổ nhập mật khẩu, với thông tin số lần được phép nhập sai giảm đi 1 Nếu nhập sai mật khẩu quá số lần được phép, hệ thống hiển thị thông báo đã tạm khóa USB Token
Nếu chứng thư số đã chọn không hợp lệ dùng để ký, hệ thống hiển thị thông báo lỗi
Bảng 15: Kịch bản kiểm thử chức năng ký và phát hành hóa đơn
Tên kịch bản Kịch bản 3
Mục đích Kiểm thử chức năng xác thực hóa đơn
Các bước chuẩn bị Bước 1: Đăng nhập với tài khoản đơn vị quản trị Hệ thống chuyển đến form thông tin đơn vị quản trị
Bước 2: Chọn "Danh sách hóa đơn" trong thanh menu Hệ thống chuyển đến trang danh sách hóa đơn
Các bước thực hiện Nhấn nút "Chi tiết" trong một hàng của bảng danh sách hóa đơn
Kết quả Hệ thống sẽ hiển thị kết quả kiểm tra chữ kí của hóa đơn
Bảng 16: Kịch bản kiểm thử chức năng xác thực hóa đơn
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Hướng phát triển
Do thời gian ngắn, trong phạm vi của ĐATN và kiến thức, kỹ năng của bản thân còn nhiều hạn chế nên trong phạm vi đồ án tốt nghiệp không thể nghiên cứu chuyên sâu hơn, các chức năng nghiệp vụ của hệ thống vẫn còn ở mức cho cửa hàng và doanh nghiệp nhỏ Nghiệp vụ hóa đơn trong công việc thực tế rất phức tạp với nhiều vấn đề phát sinh và có tính đặc thù đối với từng cửa hàng hoặc doanh nghiệp, do đó hệ thống còn cần tiếp tục xây dựng và hoàn thiện hơn nữa
Môi trường xây dựng, thử nghiệm mới chỉ có trên desktop và hệ điều hành Windows, do đó cần phát triển trên các nền tảng khác như web và hệ điều hành phổ biến khác (MacOS, iOS, Android…) để mang lại một hệ sinh thái cho người dùng sử dụng một cách đơn giản và dễ dàng Ngoài ra, còn cần tích hợp thanh toán điện tử vào hệ thống ký và phát hành hóa đơn điện tử.