c. Giải mã
5.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.
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 2: Quá trình kiểm tra xác nhận chữ ký trên tài liệu
Như vậy quá trình hoạt động của một digital signature được minh hoạ như hình sau:
Encrypt
Hình 3: 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.
5.3.Chương trình cài đặt
Chương trình chạy trên hầu hết các hệ điều hành của windows. Cài đặt bằng ngôn ngữ C# trên môi trường Visual Studio 2005.
Với tính năng mạnh mẽ của .NET gồm hơn 5000 class và tích hợp 25 ngôn ngữ, .NET hỗ trợ sẳn cho chúng ta thư viện System.Security.Cryptography; để mã hóa thông tin bằng các thuật toán như: RSA, MD5, SHA1, SHA256, SHA384, SHA512… Ví dụ đoạn code sau đây dùng để mã hóa bằng thuật toán MD5.
Decrypt Private Key
Giao diện chương trình
Giao diện chính của chương trình