Bước một:
Bước hai: Tính Message Digest
Trong bước hai của tiến trình, một hash-value (giá trị băm) của một message
thường được gọi là Message Digest được tính toán bằng cách áp dụng các thuật toán băm mã hoá cryptographic hashing arthgorithm như MD2, MD4, MD5, SHA1,… Một hash-value đã tính của message là một dãy bit liên tục, có độ dài cố định, được trích rút từ message theo cách nào đó.
Tất cả các thuật toán chính xác cho việc tính toán message digest được cung cấp như một phép biến đổi toán học, trong đó cứ một bit đơn từ input message được biến đổi thì một digest khác được gửi đến. Với cách làm việc như vậy các thuật toán là rất bảo đảm độ tin cậy trước các cuộc tấn công.
Bước ba: Tính Digital Signature
Trong bước hai của việc ký message, thông tin nhận được trong bước băm message (Message Digest) đã mã hoá với khoá private key của người ký vào message, vì thế một giá trị băm giải mã cũng được gọi là Digital Signature được gửi đến. Vì mục đích này, các thuật toán mã hoá cho việc tính chữ ký số từ message digest được dùng. Thuật toán thường được sử dụng là RSA, DIGITAL SIGNATUREA, ECDIGITAL SIGNATUREA. Thông thường, chữ ký số gắn vào message trong định dạng đặc biệt để kiểm tra khi cần thiết.
Hình 6: Quá trình ký trong message
2.2.2 Quá trình kiểm tra xác nhận chữ ký trên tài liệu.
Kỹ thuật Digital Signature cho phép người nhận message có kèm chữ ký kiểm tra tính xác thực và tính toàn vẹn của nó. Quá trình kiểm tra chữ ký số - digital signature verification nhằm mục đích xác định một message gửi đi đã được ký bằng khoá private key đúng với khóa public key gửi đi hay không. Digital signature verification không
thể xác nhận có hay không một message đã được ký bởi người gửi. Nếu chúng ta muốn kiểm tra có hay không vài người đã ký trong một message gửi đi, chúng ta cần nhận được
public key theo cách nào đó. Điều này thực hiện hoặc bằng cách lấy public key trong
cách an toàn (ví dụ như floppy disk hoặc CD) hoặc với sự trợ giúp của Public Key
Intrasfication theo một giấy chứng nhận số. Nếu không có một cách an toàn để nhận
khoá public key thực sự từ người gửi, chúng ta không có khả năng kiểm tra message được gửi là có phải xác thực của người này hay không.
Như vậy, việc kiểm tra một Digital Signature được thực hiện trong 3 bước: Bước một: Tính Current Hash-Value
Trong bước một, một hash-value của message đã ký được tính. Với việc tính này thì vẫn sử dụng thuật toán băm như đã dùng trong suốt quá trình ký. Hash-value nhận được được gọi là current hash-value bởi vì nó được tính từ trạng thái hiện thời của message.
Bước hai: Tính Original Hash-Value
Trong bước hai của quá trình kiểm tra digital signature, digital signature được giải mã với cũng với thuật toán mã hoá đã được sử dụng trong suốt quá trình ký. Việc giải mã được thực hiện bằng khoá public key tương ứng với khoá private key được dùng trong suốt quá trình ký của message. Kết quả là, chúng ta nhận được original hash-value mà đã đựơc tính từ message gốc trong suốt bước một của quá trình ký (original message digest)
Bước ba: So sánh Current hash-value với Original hash-value
Trong bước ba, chúng ta đối chiếu current hash-value nhận được trong bước một với original hash-value nhận được trong bước hai. Nếu hai giá trị này giống hệt nhau thì việc kiểm tra sẽ thành công nếu chứng minh được message đã được ký với khoá private key đúng với khoá public key đã được dùng trong quá trình kiểm tra. Nếu hai giá trị này khác nhau thì nghĩa là digital signature là sai và việc kiểm tra là thất bại.
Hình 7: Quá trình kiểm tra xác nhận chữ ký trên tài liệu
Encrypt Private Key
Hình 8: Quá trình làm việc của một Digital Signature
Nguyên nhân của việc sai chữ ký: có 3 lý do của việc nhận một digital signature sai
Nếu digital signature là giả mạo và được giải mã với khoá public key, giá trị nguyên thuỷ nhận được sẽ không phải là original hash-value của message gốc tuy một vài giá trị khác có giống.
Nếu message đã bị đổi sau khi ký, current hash-value được tính từ message giả mạo này sẽ khác với original hash-value bởi vì hai message khác nhau thì hash-value khác nhau.
Nếu public key không tương ứng với private key được dùng trong khi ký, original hash-value nhận được bởi sự giải mã chữ ký với một khoá không đúng sẽ không phải là giá trị đúng.
2.3 chương trình ứng dụng2.3.1 Giới thiệu chương trình 2.3.1 Giới thiệu chương trình
Chương trình em xây dựng gồm 3 modul chính: # Form giới thiệu chương trình ứng dụng
# Form chương trình ký lên văn bản (*.txt)
# Form thông tin liên quan và sơ đồ hướng dẫn sử dụng Cách sử dụng chương trình :
Ký lên văn bản : người gửi cần làm các bước sau để ký lên văn bản
Decrypt Public Key
Bước 1: Mở chương trình lên ta nhìn thấy là form thông tin chương trình ứng dụng gồm các thông tin về đề bài, tên giáo viên, tên người thực hiện và ngày tháng năm xây dựng chương trình .
Bước 2: Chuyển sang tab chương trình chính “ ký và xác nhận” để ký lên van bản ta làm một số thao tác sau :
- Load file văn bản (*.txt ) cần ký bằng cách nhấn vào nút “Browse”. Nội dung văn bản được hiển thị trong textbox “Nội dung file”.
- Nhấn nut tạo khóa hoặc load key từ file có sẵn trong máy tính
- Nhấn botton “Ký nhận” để tạo chữ ký điện tử, chữ ký này được gắn vào cuối nội dung văn bản. Lưu lại văn bản này để gửi đi.
Bước 3: Gửi đi văn bản đã ký nhận và public key cho người nhận
Xác thực chữ ký: Người nhận sau khi nhận được văn bản đã ký, để xác thực cần làm các bước sau:
Bước 1: Mở chương trình và Load file văn bản đã ký nhận lên bằng nhấn botton “Browse”.
Bước 2: Load public key mà đã nhận được từ người gửi.
Bước 3: Xác thực bằng cách nhấn botton “Kiểm tra”. Nếu văn bản và chữ ký đúng của người gửi thì sẽ hiện thông báo nội dung văn bản không bị thay đổi và chữ ký chính xác là của người gửi.
Kết luận
Trong suốt quá trình tìm hiểu và hoàn thành đề tài của mình giúp cho tôi nắm bắt và hiểu được các khái niệm, cách thức tạo chữ ký điện tử cũng như các giải pháp xác thực chữ ký và ứng dụng của nó. Hơn nữa, còn hiểu được các cơ chế hoạt động của các hệ mã hóa bí mật, hệ mã công khai thông dụng như CAESAR, RSA. Tìm hiểu phương pháp sử lý với số lớn để xây dựng khóa . Bên cạnh đó, đã vận dụng được cách thức hoạt động của hệ mã RSA và giải thuật băm xây dựng được chương trình mã hóa và giải mã dữ liệu, và tạo ra chữ ký điện tử nhằm tăng tính năng an toàn và xác thực dữ liệu.
Tuy nhiên, trước những kết quả đạt được vẫn còn tồn tại nhiều hạn chế. Chẳn hạn như chương trình cài đặt chưa tổng quát, vẫn còn bám sát lý thuyết và tính ứng dụng thực tiễn chưa cao, chương trình chỉ ở phạm vi tạo chữ ký và kiểm tra tính toàn vẹn của dữ liệu mà chưa xác thực được người dùng. Ngoài ra, dữ liệu mã hóa chỉ có thể là những khối dữ liệu nhỏ.
Để khắc phục những hạn chế đó, cần có những hướng phát triển phù hợp như là mở rộng khả năng mã hóa và giải mã của các hệ mã hóa tăng tính an toàn và bảo mật cho những khối dữ liệu lớn trong quá trình truyền tin. Chương trình cần thêm tính năng quản lý thông tin cá nhân của người sử dụng, để xác thực người dùng và gán tính trách nhiệm cho họ đối với các thông điệp dữ liệu; nhằm giúp hoàn thiện chương trình mang tính thực tế, có ứng dụng thực tiễn đối với các tổ chức hay cá nhân có yêu cầu cao về tính bảo mật của thông điệp dữ liệu.
Em xin trân thành cảm ơn! Sinh viên: