Mời các bạn cùng Tincoinviet đi tìm hiểu xem Digital signature là gì, thành phần để tạo ra được Digital signature qua bài viết dưới đây.
Vậy Digital signature là gì ?
Digital Signature (hay còn gọi là chữ ký điện tử) là một kĩ thuật xác thực cho phép người chủ nội dung của một thông điệp được quyền đính kèm một đoạn dữ liệu số như là chữ kí đánh dấu của người chủ đối với nội dung đã tạo ra. Về cơ bản, chữ kí số sẽ được tạo ra bằng cách hash nội dung thông điệp sau đấy mã hoá chuỗi hash bằng khoá bí mật (private key) của người chủ nội dung.
Digital signature là công cụ mật mã hóa (crytographic primitive) được sử dụng rất nhiều trong nền tảng công nghệ blockchain, chữ ký điện tử và hàm hash là nền tảng cơ bản mà công nghệ blockchain sử dụng.
Mục đích của Digital Signature (chữ ký số) có thể kể đến sau đây:
- Non-repudiation: giúp cho người nhận khi kiểm tra nội dung đã được ký chữ ký số kèm theo sẽ biết chắc người ký không thể chối cãi về những gì đã tạo ra ở thời điểm bắt đầu tạo chữ kí số.
- Integrity: chữ ký số giúp kiểm tra tính toàn vẹn dữ liệu của nội dung được gửi đi là không bị thay đổi hay chỉnh sửa kể từ lúc khởi tạo chữ ký số và ký vào văn bản gửi đi.
- Authenticity: chữ ký số cũng dùng để chứng thực nguồn gửi nội dung thông điệp đi. Thường thì thông tin về người chủ của chữ ký sẽ được thêm vào kèm với nội dung chữ ký số để giúp người nhận chứng thực được ai đã gửi thông điệp đi.
Phạm vi ứng dụng của chữ kí số: trong các hoạt động cấp chứng chỉ Certificate SSL,… Chữ ký số cũng có có thể sử dụng trong các giao dịch thư điện tử, để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến, chuyển tiền ngân hàng, thanh toán trực tuyến mà không sợ bị đánh cắp tiền như với các tài khoản Visa, Master.
Những thành phần để tạo ra Digital Signature (chữ ký số)
Chữ ký số dựa trên công nghệ mã hoá khóa công khai (RSA): mỗi người dùng phải có 1 cặp khóa (key pair) bao gồm khóa công khai (public key) và khóa bí mật (private key).
Cụ thể:
- Private key: là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được dùng để tạo chữ ký số.
- Public key: là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được sử dụng để giả mã kiểm tra chữ ký số được tạo bởi khóa bí mật tương ứng trong cặp khóa.
Digital Sign (ký số): là việc đưa khóa bí mật vào một chương trình phần mềm để tự động tạo và gắn chữ ký số vào thông điệp dữ liệu. Khi đọc các tài liệu chuyên ngành, bạn sẽ gặp nhiều cụm từ sign hoặc signed<object>, bạn hãy hiểu những nội dung đó có liên quan đến hoạt động của chữ kí số. - Signer (người ký): là đối tượng dùng đúng khóa bí mật của mình để tạo chữ ký số và ký vào một thông điệp dữ liệu dưới tên của mình.
- Recipient (người nhận): là tổ chức, cá nhân nhận được thông điệp dữ liệu được ký số bởi người ký, sử dụng chứng thư số (digital certificate) của người ký đó để kiểm tra chữ ký số trong thông điệp dữ liệu nhận được và tiến hành các hoạt động, giao dịch có liên quan.
Digital Signature (chữ ký số) hoạt động như thế nào?
Hoạt động tạo ra chữ ký số Digital Signature (chữ ký số) yêu cầu phải có 1 cặp key public & private. Người kí sẽ giữ private key và dùng để mã hoá thông tin tạo ra chữ kí số, người nhận phải có public key của người kí tương ứng cặp với private key để giải mã chữ kí số nhằm đối chiếu thông tin.
Bạn có thể hình dung một cách dễ hiểu hơn như sau: bạn có 1 văn bản word hợp đồng và cần gửi cho luật sư. Điều quan trọng là làm thế nào để luật sư biết chắc chắn văn bản word hợp đồng này là chính chủ, được soạn thảo bởi chính bạn hay đã được xét duyệt bởi bạn.
Quá trình kí (Signing)
Quá trình kí (Signing) sẽ diễn ra như sau:
1. Bạn có văn bản word hợp đồng .word (data).
2. Bạn sử dụng chương trình thuật toán băm (MD5 hoặc SHA), băm văn bản word ra sẽ được 1 chuỗi kí tự duy nhất với độ dài cố định. Ta gọi là chuỗi H: (software) -> hash word file -> string H .
– Thuật toán băm phải được thống nhất giữa 2 bên để có được kết quả chính xác giống nhau khi kiểm tra.
3. Sau đấy bạn sử dụng private key của bạn để mã hoá chuỗi băm từ văn bản word. Ta sẽ được 1 chuỗi ký tự hash đã được mã hoá gọi là cipher hash. Ta có thể gọi là chuỗi C: string H private key người kí -> cipher hash A.
4. Lúc này cipher hash A chính là chữ kí số của người kí tạo ra là bạn (cipher hash A = digital signature). Nhiệm vụ lúc này của ta là thêm nó vào nội dung file word vào cuối văn bản, để bên kia nhận được nội dung văn bản và các chữ kí số.
Quá trình kiểm tra thông tin chữ kí số (Verification)
Quá trình kiểm tra thông tin chữ ký số (Verification) sẽ diễn ra như sau:
1. Người nhận sẽ nhận được văn bản hợp đồng bao gồm nội dung chính chữ kí số cipher hash A. Lúc này người nhận sẽ tách riêng nội dung văn bản hợp đồng và chữ kí số ra xử lý độc lập.
2. Ở phần nội dung văn bản hợp đồng, người nhận làm công việc giống người kí đó là ta sử dụng chương trình thuật toán băm (MD5 hoặc SHA) giống bên kí, băm văn bản word ra sẽ được 1 chuỗi kí tự duy nhất với độ dài cố định. Ta gọi là chuỗi H2 chẳng hạn, chuỗi H2 sẽ đại diện cho chuỗi string hash của người nhận đã hash ra: (software) -> hash word file -> string H2.
3. Người nhận sử dụng public key của người kí (signer’s public key) để giải mã chuỗi cipher hash A đính kèm trong văn bản hợp đồng ra được chuỗi string H: cipher hash A public key người kí -> string H.
4. Đối chiếu thông tin trùng khớp giữa string H và string H2. Nếu khớp nhau tức nội dung chính xác, không bị thay đổi nội dung, chính xác của người đã tạo ra văn bản và hoàn tất quá trình kiểm tra thông tin chữ ký số (verification).
Lưu ý
- Bất cứ thay đổi dù là nhỏ nhất vào nội dung thông điệp gửi đi (data) hay nôm na là văn bản hợp đồng sau khi đã khởi tạo chữ kí số cũng sẽ tạo ra kết quả hoàn toàn khác ở phía người nhận khi họ hash băm văn bản ra và đối chiếu với thông tin hash ở chữ kí số của bạn.
- Chữ ký số cũng tồn tại một số vấn đề về bảo mật nhưng trong phạm vi bài viết này sẽ không đề cập đến. Bạn có thể tìm hiểu thêm nội dung liên quan về việc sử dụng Chữ ký số nhiều nhất là Digital Signature Certificate và Digital Certificate.
Mật mã hóa Khóa công khai (Public-key Cryptography)
Digital Signature (chữ ký số) là chữ ký điện tử dùng trong blockchain được xây dựng trên hệ mật mã hóa khóa công khai hay còn được gọi là mật mã hóa khóa bất đối xứng (asymmetrical crytography).
Hệ thống này sử dụng một cặp khóa mật mã: khóa công khai như tên gọi của nó, được đưa ra cho mọi người biết, không yêu cầu bảo mật, và khóa cá nhân chỉ có chủ nhân mới biết, yêu cầu giữ bí mật. Để một người sử dụng hệ mật mã này, việc đầu tiên người đó sẽ dùng một thuật toán tạo khóa G để tạo ra một cặp khóa mật mã ký hiệu là (sk,pk).
Như ví dụ minh họa trên, thì sk sẽ là khóa bí mật của Alice, còn pk sẽ là khóa công khai của Alice.
Bây giờ Bob có thể gửi một thông điệp m đến cho Alice bằng cách dùng khóa công khai của Alice pk để mã hóa c←E(m,pk), sao đó Bob gửi thông điệp đã được mã hóa c cho Alice. Alice muốn đọc được nội dung cả văn bản đã được mã hóa c thì sẽ dùng khóa bí mật (private key) của mình để giải mã m=D(c,sk). Người ta gọi đây là hệ mật mã hóa khóa bất đối xứng vì việc mã hóa E và giải mã D dùng hai khóa khác nhau.
Một hệ thống mã hóa dùng khóa công khai thì bao gồm 3 thuật toán chính (G,E,D): thuật toán sinh khóa G, thuật toán mã hóa E, và thuật toán giải mã D. Với hệ thống mã hóa này thì với mọi thông điệp m và mọi cặp khóa (sk,pk) được sinh ra bởi thuật toán G thì nếu ta dùng khóa bí mật sk để giải mã một nội dung được mã hóa bằng khóa công khai pk thì chúng ta sẽ phải có được nội dung gốc Dsk(Epk(m))=m.