Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

1.

RSA là gì
RSA là một sản phẩm nghiên cứu với sự hợp lực của 3 nhà khoa học lớn là Adi Shamir,
Len Adleman và Ron Rivest và được đưa ra mô tả lần đầu vào năm 1977 tại Học viện
MIT. Cái tên RSA được lấy từ những chữ cái đầu tiên của 3 nhà khoa học.
RSA là một thuật toán hay còn được gọi là hệ mã hóa bất đối xứng có phạm vi ứng dụng
rộng rãi và phổ biến. Người ta thường sử dụng RSA ở công tác mã hóa hay thiết lập chữ
ký điện tử với vai trò là mã hóa khóa công khai. Bất kỳ ai cũng có thể sử dụng khóa công
khai để mã hóa được dữ liệu muốn gửi đi nhưng để giải mã được chúng cần phải có sự hỗ
trợ của khóa bí mật.
Hoạt động gửi và nhận cần có sự can thiệp bởi RSA vì bản thân nó chứa hai khóa là công
khai và bí mật để đảm nhận hai nhiệm là mã hóa và giải mã.
Khác với các loại mã hóa có khóa đối xứng, khóa bí mật của RSA không truyền được tin
ra bên ngoài kể cả có kẻ tấn công nếu không có khóa bí mật cũng sẽ không giải mã được
những thông tin đó.

2. Cách hoạt động:


2.1 Quá trình tạo khóa:
Khóa của RSA được sinh như sau:
Chọn 2 số nguyên tố p và q
Tính n = pq. Sau này, n sẽ được dùng làm module cho cả 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á trị này sẽ được giữ bí mật.
Chọn một số tự nhiên e trong khoảng (1, λ(n)) sao cho:
ƯCLN (e, λ(n)) = 1, tức là e và λ(n) cùng là nguyên tố và e nằm trong khoảng giá trị từ 1
đến giá trị của λ (n)
Tính toán d sao cho d ≡ 1/e (mod λ(n)) hay viết dễ hiểu hơn thì de ≡ 1 (mod λ(n))
Số d được gọi là số nghịch đảo modulo của e (theo modulo mod λ(n)).
Public key sẽ là bộ số (n, e), và private key sẽ là bộ số (n, d). Chúng ta cần giữ private key
thật cẩn thận cũng như các số nguyên tố p và q. Bởi từ đây, chính chúng ta hoặc những
người khác có thể tính được giá trị của các khóa khác dễ dàng.
Ngoài ra, chúng ta có thể tính số giả nguyên tố bằng phi hàm Euler φ(n) = (p − 1)(q −
1) và dùng φ(n) như λ(n). Vì φ(n) là bội của λ(n) nên các số d thỏa mãn de ≡ 1 (mod
φ(n)) cũng sẽ thỏa mãn d ≡ 1/e (mod λ(n)).

Tạo số nguyên tố (n = p x q)
Để đảm bảo tính bảo mật cho các khóa, các số nguyên tố trong RSA buộc phải rất lớn và
cách xa nhau (các số càng nhỏ và gần nhau sẽ dễ bị bẻ khóa).
Ví dụ kiểm tra tính nguyên tố cho các số nguyên tố mà chúng ta đã sử dụng 907 và 773:
n=pxq
vì p = 907 và q = 773
nên:
n = 907 x 773
n = 701111

Phi hàm Carmichael


Một khi đã có n, chúng ta sẽ sử dụng hàm phi Carmichael:
λ(n) = lcm (p − 1, q − 1)
Trong đó:
λ(n) là ký hiệu của hàm phi Carmichael
lcm là lowest common multiple (bội số chung nhỏ nhất p và q
2.1.1 Tạo public key
Theo RSA, public key được tạo thành từ số nguyên tố e và module n. Trong đó, e là giá
trị bất kì trong phạm vi từ 1 đến giá trị của λ (n). Vì public key được chia sẻ một cách
công khai, nên việc chọn ngẫu nhiên một số e sẽ không ảnh hưởng đến quá trình tạo
khóa.
Dữ liệu được mã hóa cuối cùng được gọi là ciphertext (c). Chúng ta lấy nó từ plaintext
message (m). Mã hóa tin nhắn public key bằng cách áp dụng công thức sau:
c = me mod n
Ví dụ, cho e = 11, p = 907 và q = 773.
Đầu tiên, ta tìm giá trị n với công thức:
n=pxq
n = 907 x 773
n = 701111.
Đến giai đoạn này ta có được public key (e, n) = (11, 701111)

2.1.2 Tạo private key


Trong mã hóa RSA, khi dữ liệu hoặc tin nhắn được mã hóa với public key, nó chỉ có thể
được giải mã bằng private key từ cùng một cặp key được tạo. Private key bao gồm d và n.
Ví dụ, chúng ta có e = 11, n = 701111, p = 907 và q = 773
Đầu tiên ta tìm giá trị λ(n):
λ(n) = lcm (p − 1, q − 1) (áp dụng Phi hàm Carmichael)
λ(n) = lcm (907 − 1, 773 − 1)
λ(n) = lcm (906772)
λ(n) = 349716
Khi có được giá trị λ(n) chúng ta tìm d với công thức là:
d =1/e mod λ(n)
d =1/11 mod 349716
d = 254339
Đến giai đoạn này ta đã có được private key (d, n) = (254339, 701111)

3. RSA trong thực tế


Hiện nay RSA được ứng dụng trong rất nhiều lĩnh vực như:
 Chứng thực dữ liệu: Gửi các mã về email hoặc sdt giúp xác minh rằng chính chủ
đang sử dụng. Đây chính là phương pháp bảo mật thông tin, dữ liệu ứng dụng
thuật toán RSA để tránh những tình trạng mạo danh, hack tài khoản gây ảnh
hưởng cho người dùng và xã hội.
 Truyền tin: Hiện nay tình trạng lấy cắp dữ liệu cá nhân trên mạng xã hội cũng như
các trang web ghi lại các hoạt động truy cập để phục vụ các mục đích marketing.
Do đó với thuật toán RSA sẽ giúp dữ liệu không bị đánh cắp từ các hacker.
 Chữ ký số/ chữ ký điện tử: Là thông tin đi kèm theo dữ liệu (văn bản, âm
thanh,hình ảnh, video...) nhằm mục đích xác định chính chủ của dữ liệu đó. Ví dụ
như trên các thẻ ATM luôn có phần chữ ký điện tử đã được mã hóa từ chữ ký của
khách hàng khi đăng ký tài khoản tại ngân hàng giúp người dùng thực hiện những
giao dịch ngân hàng, đem lại trải nghiệm tốt và giúp khách hàng an tâm hơn.
Điểm yếu:
 tốc độ mã hoá chậm hơn nhiều so với mã hoá DES, do vậy trong một vài
trường hợp để tăng tốc độ, người mã hoá sẽ mã hoá tài liệu bằng một phương
pháp mã hoá khác nhưng khoá sẽ được mã hoá bằng RSA.
 Nếu người dùng chưa có kênh an toàn để chia sẻ khóa thì khả năng bị tấn công
man in the middle attack (kẻ tấn công lợi dụng quá trình trao đổi khoá công
khai để đánh tráo khóa công khai. Sau khi đã giả mạo được khóa công khai, kẻ
tấn công đứng ở giữa 2 bên để nhận các gói tin, giải mã rồi lại mã hóa với khóa
đúng và gửi đến nơi nhận để tránh bị phát hiện.)
 Không dùng cho truyền dữ liệu vì tốc độ mã hóa chậm.
Điểm mạnh:
 Tiêu chuẩn RSA được ứng dụng rộng rãi trong nhiều lĩnh vực như chữ ký
số, thương mại điện tử, bảo mật, xác thực… Trong Thông tư số
01/2011/TT-BTTTT ngày 04/01/2011 của Bộ trưởng Bộ Thông tin và
Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công
nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu
chuẩn RSA, là một trong những giải thuật mã hóa và được xếp vào nhóm
Tiêu chuẩn về an toàn thông tin.
 Có thể chia sẻ khoá mã hoá (khoá công khai) một cách công khai, thoải mái
nên RSA thường được ứng dụng trong các hệ thống mở.
 Khóa giải mã (khóa bí mật) chỉ có người nhận biết nên thông tin được đảm
bảo an toàn hơn và có thể dễ dàng xác thực được nguồn gốc thông tin

You might also like