Tạo và sử dụng chữ ký số trong Java

17:22 31-08-2017BKAP Media

Tương tự như chữ ký truyền thống, chữ ký số được sử dụng để ký trên các tài liệu dạng file (bản mềm). Chữ ký số không chỉ được dùng xác minh rằng tài liệu không bị thay đổi mà còn giúp xác định tác giả của tài liệu.

Tương tự như chữ ký truyền thống, chữ ký số được sử dụng để ký trên các tài liệu dạng file (bản mềm). Chữ ký số không chỉ được dùng xác minh rằng tài liệu không bị thay đổi mà còn giúp xác định tác giả của tài liệu. 

Về mặt kỹ thuật thông điệp gửi đi có thể được mã hóa bằng Message Digest.  Tuy nhiên message digest chỉ bảo đảm trên thông điệp từ người gởi đến người nhận không bị làm giả trong quá trình vận chuyển, chứ không đảm bảo trên người gởi, tức là không thể xác nhận được người gởi chính xác là ai.

Khi tạo chữ kí điện tử, khóa bí mật (private-key) được sử dụng để mã hóa thông điệp và khóa công khai (public-key) được sử dụng để giải mã. Thuật toán này được thực hiện như sau:

- Bên gửi:

+ Bước 1 : Tạo ra message digest trên thông điệp muốn gửi

+ Bước 2 : Mã hóa message digest bằng private-key để cung cấp 1 chữ kí điện tử trên thông điệp và gửi nó đi.

- Bên nhận :

+ Bước 1 : Giải mã chữ kí điện tử bằng public-key để có được 1 message digest.

+ Bước 2 : Đem message digest này so sánh với message digest được tạo ra từ thông điệp chính.

 

Hai lợi ích cơ bản khi sử dụng chữ kí điện tử:

1. Giả mạo người gửi: Chữ kí điện tử được tạo từ khóa bí mật do vậy người khác không thể có khóa đó để tạo ra chữ kí giả mạo được.

2. Xác nhận người gửi: Vì public-key là khóa công khai vì vậy bất kỳ người nào có được public-key đều có thể xác nhận chính xác bạn là ai.

 

Chương trình mẫu:

Xử lý cặp khóa:

Xử lý ký số:

Xử lý kiểm chứng:

 

Chuyên gia: Nguyễn Duy Quang

   0968276996
< wire:id="1ne4IXZDebpAXCLl5K6z" wire:initial-data="{"fingerprint":{"id":"1ne4IXZDebpAXCLl5K6z","name":"embedded.footer","locale":"vn"},"effects":{"listeners":[]},"serverMemo":{"children":[],"errors":[],"htmlHash":"26380eb1","data":[],"dataMeta":[],"checksum":"1cb5983a583392c35d649dcb385dc29dd728c4eddff5cdfc9a95bbd7b65adb43"}}"!-- Messenger Plugin chat Code -->