RSA là gì? Cơ chế hoạt động của RSA ra sao?

Với lĩnh vực mật mã học, RSA là một thuật ngữ khá quen thuộc, không những thế nó còn khá nổi tiếng bởi nó được tìm ra định nghĩa bởi 3 nhà khoa học lớn. RSA đã đánh dấu sự tiến bộ vượt bậc trong lĩnh vực mật mã học. Ngoài ra RSA còn được dùng rộng rãi trong các hoạt động thương mại điện tử. Vậy RSA là gì? Cơ chế hoạt động của RSA ra sao? Tìm hiểu ngay qua bài viết dưới đây để bổ sung cho mình những thông tin hữu ích nhé!

Giới thiệu về RSA

RSA là gì?

Trong mật mã học, RSA là một thuật toán mã học hóa khóa công khai. Đây là thuật toán thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa nó. RSA đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến trong lĩnh vực thương mại điện tử và được cho là đảm bảo về an toàn với điều kiện độ dài khóa đủ lớn.

RSA là gì ?

RSA là gì ?

Lịch sử của RSA như thế nào?

RSA là thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu vào năm 1977 tại học viện công nghệ Massachusetts (MIT). RSA chính là lấy từ 3 chữ cái đầu của 3 tên tác giả.

Trước đó, năm 1973 Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ đã có một bản mô tả thuật toán tương tự. Với khả năng tính toán tại thời điểm này thì thuật toán này không khả thi và nó chưa được thực nghiệm. Nhưng, phát minh này lại được công bố vào năm 1997 vì nó được xếp vào loại tuyệt mật.

Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ năm 1983, số đăng ký là 4,405, 829). Bằng sáng chế RSA này hết hạn vào ngày 21/09/2000. Do thuật toán này đã được công bố trước khi có đăng ký bảo hộ, vì thế sự bảo hộ hầu như không  hề có giá trị bên Hoa Kỳ. Bên cạnh đó, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể đăng ký.

Bạn đọc tham khảo thêm: Clustering là gì? Tổng quan về công nghệ Clustering

Mô tả quá trình hoạt động của RSA

Hệ mã hóa RSA có một cơ chế hoạt động rất dễ hiểu. Cơ chế public key sẽ được chia sẻ một cách công khai nhưng RSA lại có thể tối ưu rất tốt cơ chế công khai và bảo mật. Trải qua những bước sau đây, RSA sẽ hoàn thiện mọi yếu tố để có thể hoàn thiện chức năng bảo mật.

Quá trình dùng mã hóa bất đối xứng để trao đổi thông tin

Quá trình dùng mã hóa bất đối xứng để trao đổi thông tin

Sinh khóa

Sinh khóa làm nhiệm vụ tìm kiếm được 1 bộ phận có 3 số tự nhiên e, d, n cần thỏa mãn công thức sau đây:

Med trùng m mod n

Trong đó, giá trị d cần phải được bảo mật 1 cách tuyệt đối để khi có biết các giá trị khác là n, e hay m thì cũng không có cách nào để tìm được giá trị của d. Với công thức này, khóa RSA sẽ có cơ chế sinh hóa theo quy trình:

  • Chọn ra 2 số nguyên tố là p và q.
  • Tính phương trình: n=pq. Giá trị của n đóng vai trò modulus ở cả 2 loại private key và public key.
  • Có một vài giả nguyên tố dựa trên Carmichael sẽ được tính toán và giữ bí mật.
  • Chọn lấy 1 số e ở khoảng 1 và giữ nguyên tố n sao cho ước chung lớn nhất của 2 số này có giá trị bằng 1. Nghĩa là, giá trị e và giả nguyên tố n có cùng nguyên tố với nhau.
  • Giá trị của d trùng với 1/e, viết theo 1 cách khác là de trùng 1. Số tự nhiên d lúc này chính là nghịch đảo của modulo của e theo công thức modulo mod λ(n).

Lúc này, Public Key được tìm ra chính là bộ số (n,e) còn và private key bộ số (n,d). Nhiệm vụ của bạn là cần phải giữ cẩn thận private key và số nguyên tố p,d từ đó việc tính toàn các khóa sẽ trở nên một cách dễ dàng.

Đưa vào thực tiễn thực hành thì con người hay lựa chọn những giá trị e nhỏ để có được lợi thế giải mã nhanh chóng, thông thường thì e có giá trị = 65537. Ngoài công thức tính giả nguyên tố đã nêu trên thì hàm E φ(n) cũng có thể được sử dụng để thay thế công thức tính như sau: Euler φ(n) = (p-1)(q-1) = λ(n).

Bạn có thể hiểu công thức trên một cách như sau: φ(n) là bội số của λ(n), vì thế, d cần thỏa mãn điều kiện de = 1 (mod φ(n)) = d ≡ 1/e (mod  λ(n)). Thuật toán này không hoàn toàn mang tới độ hoàn hảo tuyệt đối, vì nó có thể khiến giá trị d trở nên lớn hơn.

Bạn đọc tham khảo thêm : ESLint là gì? Những thông tin tổng quan về ESLint

Mã hóa và giải mã

RSA được bảo mật 1 cách tuyệt đối và việc mở khóa chỉ người nhận mới có thể thực hiện được. Vì thế, nếu bạn là người nhận trong quá trình này, thì bạn đã biết cách giải mã chưa?

Mã hóa và giải mã là như thế nào? 

Mã hóa và giải mã là như thế nào? 

Nếu bạn tìm hiểu trọn vẹn từ khâu mã hóa đến việc giải mã, sẽ giúp bạn có được một logic đúng để giải mã thành công. Bạn cần tìm hiểu một cách cụ thể về cách sử dụng public key (n, e) để có thể mã hóa và dùng Private key (n, d) để giải mã.

Nếu có M thì chuyển nó sang thành số tự nhiên m ở khoảng (0, n) và có thể đảm bảo giá trị m và n có cùng nguyên tố. Bạn hãy thêm kỹ thuật padding vào, sau đó có thể tiến hành mã hóa m để chuyển m thành c. Bạn có thể áp dụng theo công thức sau: 

c ≡ me mod n

c sẽ được chuyển tới người nhận. Người nhận lúc này sẽ có nhiệm vụ là giải mã c để có thể lấy được giá trị của m bằng công thức sau:

cd ≡ mde ≡ m mod n

Sau đó, lấy giá trị m, bạn đảo ngược padding lại nhé thì sẽ lấy được thông tin gốc. Bạn có thể xem một ví dụ đơn giản sau đây:

  • Nếu ta có giá trị p=5, q=7 thì n= pq = 35. Vì thế, φ(n) = 24

Sau đó, chọn e=5 vì UCLN của 5 và 24 là 1

Chọn d = 29 do ed -1 = 29*5 -1 đều có giá trị chia hết cho 24.

  • Lấy giả sử, giá trị m = 32 (cách) thì mã hóa m sẽ có thể thu được kết quả là: c = 32 ^ 5 % 35 = 2

Ngược lại, khi giải mã c sẽ có thể thu được giá trị của m: m = 2 ^ 29% 35 = 32.

m = 32 là giá trị ban đầu mà người nhận muốn và cần phải giải mã, cũng là giá trị người gửi cần mã hóa.

Công thức trên được áp dụng theo thuật toán đã được chứng minh, vì thế bạn có thể thử với bất kỳ giá trị nào của m theo công thức chuẩn RSA đã được công bố thì vẫn có được một kết quả chính xác.

RSA được bảo mật phần lớn là phụ thuộc vào chính khả năng phân tích thừa số nguyên tố từ các giá trị lớn. Lý do là chúng ta đã cung cấp rộng rãi chế độ public cho nên theo logic, việc phân tích các thừa số nguyên tố sẽ trở nên dễ dàng thì các private bị lộ cũng trở nên dễ dàng, khiến cho RSA không được bảo mật.

Dựa vào nguyên lý này, việc sinh khóa cần lựa chọn ngẫu nhiên các số p và q đã khiến việc phân tích các thừa số nguyên tố trở nên khó khăn gây khó mở khóa. Muốn vậy, p và q sẽ không có cùng độ dài. Có thể khiến máy tính cá nhân vẫn chưa thể thực hiện được nhiệm vụ này. Nhưng dưới thời đại công nghệ số phát triển như vũ bão hiện nay thì những siêu máy tính sẽ cùng con người tìm ra những phương án tính toán tốt nhất cho RSA. Đến nay, việc một người sở hữu máy tính lượng tử với những ưu thế về tốc độ cao có khả năng phá vỡ sự bảo mật trong RSA. Đối với máy tính lượng tử, nó cần rất nhiều thời gian để có thể hoàn thiện rồi mới tính đến việc phá vỡ sự bảo mật của RSA.

Nếu đi từ public key thì nó khó mà suy ra được Private key cho người khác và yêu cầu họ mã hóa thì bạn đang tạo điều kiện cho kẻ tấn công có được cơ hội tính toán ra public key một cách dễ dàng. Từ đó, thay đổi hoàn toàn nội dung hay cuộc thoại quan trọng đang cần nhờ RSA bảo mật. Mọi bảo mật sẽ trở nên vô nghĩa vì bí mật đã bị tấn công. Điều này thật sự rất nguy hiểm. Đặc biệt, bí mật đó liên quan đến chính trị, quân sự và những vấn đề quan trọng của một quốc gia.

Dùng chữ ký số trong RSA

Đảo ngược giữa 2 vai trò của Private key và public key đã để lại những hậu quả khá là tai hại, nếu như bạn vẫn làm điều này và muốn được bảo mật giá trị truyền tại thì cần phải dùng đến cả sự hỗ trợ của chữ ký số. 

Cách chữ ký số hoạt động 

Cách chữ ký số hoạt động 

Ngày nay, việc ký tên đã được công nghệ khoác lên cho mình một chiếc áo mới, biến nó trở thành chữ ký điện tử hay còn gọi là chữ ký số. Loại chữ ký cao cấp này được sử dụng hệ mã hóa RSA để có thể gia tăng được tính bảo mật cho người dùng. Quy trình mã hóa và giải mã đối với RSA được áp dụng cho chữ ký số được tiến hành theo quy trình ở phần 2. Nhưng nó lại có sự khác biệt ở vai trò của 2 loại key.

Khi tạo chữ ký số thì người gửi thông tin sử dụng private còn người nhận dùng public key để phục vụ cho việc xác nhận chữ ký. Thông tin được gửi qua RSA khá dài, như thế sẽ gây trở ngại lớn đến việc mã hóa ở mặt thời gian. Vì thế, khi áp dụng vào thực tiễn chữ ký số còn được áp dụng kèm theo phương pháp mã hóa với cả giá trị Hash của nội dung thông tin.

Chữ ký số còn gây rắc rối ở khâu xác nhận vì nhiều lúc, mình chính là chủ thông tin, tài khoản nào đó. Nhưng nó vẫn không được chấp nhận nếu chữ ký có sự sai lệch. Cái khó ở đây lại là những cái lợi, vì kẻ xấu cũng sẽ gặp phải nhiều rắc rối nếu như muốn đột nhập hay hack tài khoản của bạn.

Bài viết trên đã cho chúng ta biết RSA là gì? Những lợi ích mà RSA mang lại đến cho cuộc sống con người. Mong rằng chia sẻ trên sẽ giúp bạn có thêm một bí quyết bảo vệ cuộc sống của mình trở nên tốt đẹp hơn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *