RSA - Chữ ký số

Legos LightLegos Light
2 min read
💡
Ở bài viết trước, mình đã giới thiệu kỹ thuật mã hóa khóa công khai RSA, ở bài này mình xin tiếp tục giới thiệu kỹ thuật tạo chữ ký số bằng thuật toán RSA.

Chữ ký số (Digital Signature) là gì?

Một điều đáng ngạc nhiên là có rất nhiều người, kể cả bao gồm dân IT, cũng không hiểu chữ ký số - digital signature là gì. Họ đa số vẫn cho rằng đó là một tấm ảnh có hình chữ ký và dán vào dưới một document.

Thực ra, không phải vậy. Chữ ký số là một đoạn thông tin khoảng vài chục bytes được gắn vào cuối văn bản nhằm đảm bảo:

  • Xác thực tính toàn vẹn (Integrity): Thông tin không bị sửa đổi, giả mạo trong quá trình truyền hay lưu trữ

  • Tính xác thực (Authentication): Xác thực danh tính của người gửi hoặc nguồn gốc của thông tin

  • Tính không chối bỏ (Non-repudiation): Người tạo ra thông tin được ký là người duy nhất có thể tạo ra chữ ký tương ứng, người tạo ra thông tin không thể phủ nhận rằng họ đã tạo ra dữ liệu ấy

Cách hoạt động

bài trước, chúng ta đã biết RSA tạo ra một cặp khóa:

  • Khóa bí mật - secret key: \((d, n)\)

  • Khóa công khai - public key: \((e,n)\)

Trong chữ ký số, khóa bí mật dùng để tạo chữ kýkhóa công khai được dùng để xác minh chữ ký.

Bước 1 - Tạo chữ ký

Giả sử bạn muốn tạo chữ ký cho một tài liệu \(m\):

  • Tính giá trị Hash cho \(m\): \(h=Hash(m)\) bước này nhằm đảm bảo thông tin được thu gọn nhưng vẫn giữ được tính toàn vẹn. Hàm hash được dùng có thể là SHA-256, Keccak, …

  • Tạo chữ ký bằng khóa bí mật: \(\text{signature} = h^d \mod n\)

  • Gắn chữ ký vào thông điệp để gửi đi, lúc này thông tin gửi đi sẽ bao gồm một cặp \((m,\text{signature})\)

Bước 2 - Xác minh chữ ký

Người nhận sẽ nhận được \((m,\text{signature})\), để xác minh, anh ta sẽ:

  • Tính lại giá trị Hash của \(m\): \(h' = Hash(m)\)

  • Giải mã chữ ký: \(h=\text{signature}^e \mod n\)

  • So sánh:

    • Nếu \(h=h'\) thì chữ ký hợp lệ

    • Nếu không, chữ ký không hợp lệ

Demo

0
Subscribe to my newsletter

Read articles from Legos Light directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Legos Light
Legos Light