Chữ ký số RSA là gì? Giải thích thuật ngữ RSA dễ hiểu nhất
14/03/2022 10:40 am | Lượt xem : 13716
Nhằm đảm bảo được tính toàn vẹn dữ liệu và bảo mật cao, chữ ký số sử dụng một hệ mã hóa bất đối xứng. Tuy có nhiều hệ mã hóa khác nhau nhưng hệ mã hóa bất đối xứng RSA được coi là khá kinh điển trong việc sản xuất công cụ số hóa này.
Cùng TENTEN tìm hiểm xem Chữ ký số RSA là gì? nhé. Bài viết sau sẽ giải thích thuật ngữ RSA một cách dễ hiểu và đơn giản nhất cho bạn.
Contents
1. Chữ ký số RSA là gì?
Theo Khoản 6, Điều 3, Nghị định 130/2018/NĐ-CP quy định về Luật giao dịch điện tử về chữ ký số và Dịch vụ chứng thực chữ ký số:
“Chữ ký số là một dạng chữ ký điện tử được tạo ra bằng sự biến đổi một thông điệp dữ liệu sử dụng hệ thống mật mã không đối xứng, theo đó, người có được thông điệp dữ liệu ban đầu và khóa công khai của người ký có thể xác định được chính xác.”
Vậy có thể hiểu, chữ ký số RSA là loại chữ ký số sử dụng hệ mã hóa RSA để tăng độ an toàn và truyền đạt dữ liệu dạng số hóa bảo mật hơn.
2. Cấu tạo của chữ ký số RSA
RSA được hiểu là một thuật toán mật mã hóa khóa công khai. Đây cũng là thuật toán đầu tiên phù hợp cho việc tạo ra chữ ký điện tử và mã hóa chúng. Nó là sự tiến bộ vượt bậc nằm trong lĩnh vực mật mã học và áp dụng thành công vào việc sử dụng khóa công cộng.
Chữ ký số RSA rất phổ biến trong thương mại điện tử, giao dịch trực tuyến vì nó đảm bảo an toàn khi điều kiện độ dài khóa đủ lớn. Dựa trên công nghệ mã hóa trên, Chữ ký số RSA gồm một cặp khóa được mã hóa không đối xứng như một khóa công khai (Public Key) và khóa bí mật (Private Key). Cụ thể như sau:
Khóa bí mật | Dùng để tạo ra chữ ký số RSA |
Khóa công khai | tác dụng trong việc thẩm định, kiểm tra chữ ký số và xác thực về người dùng. Nó được tạo bởi khóa bí mật tương ứng trong mỗi cặp khóa. |
Người ký | Đối tượng dùng khóa bí mật của mình để ký số vào một dữ liệu nào đó thể hiện tên mình. |
Người nhận | Đối tượng nhận được thông điệp dữ liệu được ký số, bằng việc sử dụng các chứng thư số để kiểm tra chữ ký số cho dữ liệu nhận được. Ngoài ra còn tiến hành các hoạt động, giao dịch điện tử.. |
Ký số | Đưa khóa bí mật RSA vào phần mềm tự động tạo và gắn chữ ký số cho thông điệp dữ liệu nào đó. |
3. Giải thích thuật ngữ RSA – ít người biết
RSA là tên của hệ mã hóa bất đối xứng. nó cũng được viết tắt bởi tên của những nhà phát triển ra hệ mã hóa này: Ron Rivest, Adi Shamir và Leonard Adleman. RSA được sử dụng rộng rãi với mục đích mã hoá và đặc biệt là công nghệ tạo chữ ký RSA.
Trong đó, khóa công khai có thể chia sẻ cho tất cả mọi người. Hoạt động của hệ mã hóa RSA nói chung và chữ ký số RSA nói riêng đều dựa trên 4 bước chính: sinh khóa, chia sẻ mã, mã hóa và giải mã.
3.1. Sinh khóa cho hệ mã hóa RSA
Mấu chốt của việc sinh khóa trong hệ mã hóa RSA là tìm được những bộ 3 e, d và n là số tự nhiên sao cho:
m^(ed)=m mod n
Và một điểm không thể bỏ qua là bảo mật cho d để sao cho dù biết e, n hay thậm chí m thì cũng không thể tìm ra d được.
Cụ thể, hệ mã hóa RSA được sinh như sau:
- Chọn 2 số p và q là số nguyên tố.
Tính n = pq. Khi đó, n sẽ được dùng làm modulus cho public key và private key.
- Tính một số giả nguyên tố bằng phi hàm Carmichael như sau:
(n) = BCNN(λ(p), λ(q)) = BCNN(p − 1, q − 1).
Giữ bí mật cho giá trị này.
- Chọn một số tự nhiên e trong khoảng (1, λ(n))
e thỏa mãn điều kiện ƯCLN(e, λ(n)) = 1, hay chính là e và λ(n) nguyên tố cùng nhau.
- Tính toán số d
Điều kiện là d ≡ 1/e (mod λ(n)) hay de ≡ 1 (mod λ(n)). Từ đó, số d được gọi là nghịch đảo modulo của e (theo modulo mod λ(n)). Dịch vụ chữ ký số rẻ nhất chỉ từ 770.000đ/ năm
Khóa công khai sẽ là bộ số (n, e), và khóa bí mật sẽ là bộ số (n, d). Cần giữ khóa bí mật cẩn thận cũng như các số nguyên tố p và q để từ đó tính toán các khóa dễ dàng hơn.
Thường chọn e tương đối nhỏ vì nó giúp việc mã hóa và giải mã nhanh hơn. Giá trị thường dùng nhất là e = 65537. Bên cạnh đó, có thể tính số giả nguyên tố bằng phi hàm Euler φ(n) = (p − 1)(q − 1) và coi nó như λ(n).
Vì φ(n) là bội của λ(n) nên d cần thỏa mãn điều kiện de ≡ 1 (mod φ(n)) cvà d ≡ 1/e (mod λ(n)).
3.2. Mã hóa và giải khóa cho hệ mã hóa RSA
Đây là bước mã hóa với Khóa công khai (n, e) và giải mã với khóa bí mật (n, d).
Nếu có bản rõ M, cần chuyển nó thành số tự nhiên m trong khoảng (0, n) với điều kiện m, n cùng là nguyên tố. Việc này thường được thực hiện bằng cách thêm kỹ thuật padding. Tiếp đến là mã hóa m thành c theo công thức:
c ≡ m^e mod n c
Sau đó giá trị c sẽ chuyển cho người nhận.
Ở phía người nhận, c được giải mã để lấy được m theo công thức:
c^d ≡ m^(de) ≡ m mod n
Đây chính là cách đảo ngược padding để lấy m và có lại dữ liệu mã hóa,
Ví dụ:
p = 5, q = 7 => n = pq = 35 => φ(n) = 24
Chọn e = 5 vì ƯCLN(5, 24) = 1, dhọn d = 29 vì ed – 1 = 29×5 – 1 chia hết cho 24.
Giả sử có m = 32, chúng ta sẽ mã hóa m và thu được kết quả:
c = 32 ^ 5 % 35 = 2
Giải mã c để thu m theo công thức: m = 2 ^ 29 % 35 = 32. Đây chính là giá trị của m ban đầu.
Bạn có thể thứ các giá trị khác nhau của m để kiểm tra thuật toán xem có hoàn toàn chính xác hay không. Mức độ bảo mật của hệ mã hóa RSA phụ thuộc vào khả năng phân tích thừa số nguyên tố của các số.
Lí do là vì chúng ta cung cấp khóa công khai một cách rộng rãi, nếu phân tích thừa số nguyên tố đơn giản sẽ dẫn đến việc bị lộ khóa bí mật. Chữ ký số RSA cũng dựa trên nguyên lý trên.
Có thể thấy khi tiến hành sinh khóa, cần chọn các số nguyên tố p và q tương đối ngẫu nhiên. Hai số nguyên tố có giá trị rất lớn, để phân tích thừa số nguyên tố là khá khó khăn. Vì vậy chưa có phương pháp nào cho phép thực hiện công đoạn này với máy tính cá nhân.
4. Chữ ký số RSA có an toàn không?
Quá trình sử dụng chữ ký số RSA và xác thực nó tương tự như việc mã hóa mà chúng tôi vừa giải thích. Tuy nhiên khóa công khai và khóa bí mật của các chữ ký số RSA có nhiều sự đổi khác.
Để tạo chữ ký số RSA, người gửi sẽ dùng khóa công khai và người nhận sẽ dùng khóa bí mật với mục đích xác thực là chính.
Dữ liệu có thể khá dài nên việc mã hóa toàn bộ chúng sẽ tốn nhiều thời gian, vì vậy người ta sử dụng thêm phương pháp mã hóa giá trị hash của dự liệu nhằm mang lại các lợi ích:
Các hàm hash là hàm 1 chiều, nên dù biết được hash cũng khó biết được về dữ liệu gốc. Chữ ký số RSA sẽ có ý nghĩa và giá trị hơn chữ ký tay nhiều, dẫn tới việc xử lý và mã hóa chúng cũng tương đối phức tạp. Tuy nhiên bù lại, chữ ký số RSA vô cùng an toàn và khó để lộ thông tin cho bên thứ ba.
Đặc biệt với các giao dịch điện tử, khi dữ liệu có kèm chữ ký số RSA sẽ rất dễ dàng tìm ra nguồn gốc của chữ ký đó. Người gửi và người nhận cũng khó chối bỏ được vai trò của mình. Vì vậy bạn yên tâm về giá trị pháp lý của chữ ký số RSA nhé!
Hi vọng cách giải thích thuật ngữ RSA mà chúng tôi vừa chia sẻ trong bài viết trên đã đủ để bạn hiểu về hệ mã hóa này, cũng như trả lời cho câu hỏi chữ ký số RSA là gì. Đây là công cụ hữu hiệu cho hoạt động của doanh nghiệp, vì vậy hãy tìm hiểu nó thật kỹ nhé!
Dịch vụ chữ ký số rẻ nhất chỉ từ 770.000đ/ năm