RSA 2048: Thuật Toán Sinh Ra Từ Đêm Say Rượu Năm 1977
Tháng 4/1977, sau bữa tiệc Passover với nhiều rượu, Ron Rivest về nhà nằm trên sofa không ngủ được, mở sách toán ra đọc. Đến sáng, ông có một thuật toán sẽ định hình cả internet trong 50 năm sau. Plot twist? Người Anh đã nghĩ ra nó từ 1973 nhưng giữ bí mật đến tận 1997. Đây là câu chuyện về RSA - "ông cụ" của mã hóa internet.
Năm 2025, mỗi khi bạn mở một trang web có ổ khóa xanh, gửi email qua Gmail, hay kết nối vào máy chủ từ xa, bạn đang dùng RSA. Một thuật toán gần 50 tuổi, chậm hơn AES đến 5000 lần, và sắp bị máy tính lượng tử đập tan. Vậy tại sao nó vẫn sống dai?
Câu Chuyện Đêm Không Ngủ
Trước 1977, mã hóa có một vấn đề chết người: làm sao hai người giao tiếp an toàn khi chưa bao giờ gặp nhau?
Với mã hóa đối xứng kiểu AES, bạn và tôi phải dùng chung một khóa bí mật. Nhưng nếu chúng ta chưa từng gặp, làm sao trao đổi cái khóa đó? Gửi qua email? Thế ai mã hóa cái email đó? Gọi điện? Thế ai đảm bảo không ai nghe lén? Đây là bài toán "con gà và quả trứng" của ngành mật mã.
Ron Rivest, Adi Shamir và Leonard Adleman - ba nhà khoa học máy tính tại MIT - đã vật lộn với bài toán này cả năm. Tháng 4/1977, sau bữa tiệc Passover, ba người uống khá nhiều rượu rồi về nhà lúc nửa đêm. Rivest không ngủ được, nằm trên sofa lật đở cuốn sách toán.
Và đột nhiên, nó hiện ra.
Một hệ thống mã hóa dùng hai khóa riêng biệt: một khóa công khai để mã hóa, một khóa bí mật để giải mã. Bạn có thể ném khóa công khai lên internet cho cả thế giới, nhưng chỉ mình bạn có khóa bí mật. Bất kỳ ai cũng có thể gửi tin nhắn mã hóa cho bạn, nhưng chỉ bạn mới đọc được.
Đến sáng, Rivest đã viết xong bài báo.
Ron Rivest nghĩ ra RSA sau khi uống rượu, không ngủ được, nằm sofa đọc sách toán lúc 2 giờ sáng. Các bạn lập trình viên đọc đến đây có lẽ đang nghĩ: "Thế ra mình cũng có thể làm đột phá nếu mất ngủ, đọc sách và say rượu đủ nhiều" ✌️
Plot Twist: Người Anh Đã Biết Từ 1973
Nhưng có một chi tiết ít ai biết.
Năm 1973 - bốn năm trước Rivest - một nhà toán học tên Clifford Cocks tại GCHQ (cơ quan tình báo Anh) đã phát triển một hệ thống tương tự. Hoàn toàn độc lập. Hoàn toàn giống RSA.
Nhưng đây là thời Chiến tranh Lạnh. GCHQ giữ nó làm bí mật quốc gia.
Clifford Cocks không được công bố bài báo. Không được kể với bạn bè. Không được đề tên trong CV. Suốt 24 năm, ông phải im lặng trong khi Ron Rivest, Adi Shamir và Leonard Adleman nhận hết vinh quang, giải thưởng Turing, thành lập công ty RSA Security trị giá hàng tỷ đô.
Đến tận 1997, GCHQ mới declassify. Và thế giới mới biết: người Anh đã có RSA từ 1973.
Đó là lý do tại sao làm việc cho tình báo chính phủ không phải là điều bạn khoe trên mạng xã hội nghề nghiệp.
Bí Mật Toán Học: Tại Sao RSA Lại An Toàn?
Okay, giờ đến phần kỹ thuật. RSA hoạt động dựa trên một bài toán toán học cực kỳ đơn giản, nhưng cực kỳ khó phá.
Bài Toán Số Nguyên Tố
Bạn lấy hai số nguyên tố lớn, ví dụ:
- p = 61
- q = 53
Nhân chúng lại:
- \( n = p \times q = 61 \times 53 = 3233 \)
Dễ ợt, phải không?
Bây giờ tôi cho bạn số 3233. Hãy tìm lại p và q.
Với 3233 thì dễ. Nhưng nếu n có 617 chữ số (tức 2048 bit), bạn sẽ phải thử hàng tỷ tỷ tỷ tỷ tổ hợp. Không có thuật toán nào - ngay cả siêu máy tính - có thể phân tích số nguyên tố 2048-bit trong thời gian hữu hạn.
Đó chính là sức mạnh của RSA: dễ nhân, khó phân tích.
Cách RSA Hoạt Động (Phiên Bản Đơn Giản)
- Tạo khóa:
- Chọn hai số nguyên tố lớn p và q
- Tính \( n = p \times q \) (đây là modulus - số dư)
- Tính \( \phi(n) = (p-1)(q-1) \) (hàm phi Euler)
- Chọn số e (số mũ công khai, thường là 65537)
- Tính d sao cho: \( d \times e \equiv 1 \pmod{\phi(n)} \) (số mũ bí mật)
- Khóa công khai: (e, n) - ném lên internet cho ai cũng thấy
- Khóa bí mật: (d, n) - giữ kín
- Mã hóa:
- Thông điệp m → bản mã \( c = m^e \mod n \)
- Giải mã:
- Bản mã c → thông điệp \( m = c^d \mod n \)
Đơn giản? Không hẳn. Để tính được d từ e, bạn cần biết φ(n). Để biết φ(n), bạn cần biết p và q. Mà để biết p và q, bạn phải phân tích n thành thừa số nguyên tố.
Và đó là điều không ai làm được với số 2048-bit.
Code Python Minh Họa
Để hiểu rõ hơn, đây là code Python đơn giản mô phỏng RSA (dùng số nhỏ cho dễ hiểu).
Output:
Số nguyên tố p: 61
Số nguyên tố q: 53
n = p × q = 3233
φ(n) = (p-1)(q-1) = 3120
Khóa công khai (e, n): (17, 3233)
Khóa bí mật (d, n): (2753, 3233)
Thông điệp gốc: 1234
Sau khi mã hóa: 1453
Sau khi giải mã: 1234
✓ Thông điệp gốc == Thông điệp sau giải mã!
Giải thích:
- Chọn p=61, q=53 (hai số nguyên tố nhỏ)
- Tính n = 3233 (công khai)
- Tính φ(n) = 3120 (bí mật)
- Chọn e = 17 (số mũ công khai)
- Tính d = 2753 (số mũ bí mật, tính từ nghịch đảo modulo)
- Mã hóa: 1234^17 mod 3233 = 1453
- Giải mã: 1453^2753 mod 3233 = 1234 ✓
Điều kỳ diệu: Bất kỳ ai cũng biết e=17 và n=3233, nhưng chỉ mình bạn biết d=2753. Và không có cách nào tính d nếu không biết p và q (mà để biết p và q phải phân tích 3233).
Với số 2048-bit, n sẽ có 617 chữ số, và việc phân tích nó trở nên bất khả thi.
Tại Sao 2048 Bit?
512-bit đã bị phá năm 1999 (RSA-155). 1024-bit bị nghi ngờ từ 2003. Năm 2020, Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ (NIST) khuyến nghị tối thiểu 2048-bit.
Con số 2048 có nghĩa là n có độ dài 2048 bit = 617 chữ số thập phân. Nó trông như này:
25195908475657893494027183240048398571429282126204...
(thêm 567 chữ số nữa)
Để phân tích số này, theo ước tính, bạn cần:
- Hàng triệu năm thời gian CPU
- Hoặc hàng nghìn GPU chạy liên tục nhiều năm
- Hoặc một máy tính lượng tử với thuật toán Shor (sẽ nói sau)
NIST nói 2048-bit an toàn đến 2030. Sau đó? Chuyển sang 3072-bit hoặc bỏ RSA hẳn.
RSA vs AES vs ECC: Khi Nào Dùng Cái Gì?
Nhiều người nhầm tưởng RSA là thuật toán mã hóa "mạnh nhất". Không phải. Nó thậm chí còn yếu và chậm hơn nhiều so với các đối thủ.
So Sánh Mức Độ Bảo Mật
| Thuật toán | Độ dài khóa | Mức bảo mật tương đương |
|---|---|---|
| AES-128 | 128 bit | 128-bit |
| RSA-2048 | 2048 bit | 112-bit |
| ECC-256 | 256 bit | 128-bit |
| AES-256 | 256 bit | 256-bit |
| RSA-3072 | 3072 bit | 128-bit |
| ECC-512 | 512 bit | 256-bit |
| RSA-15360 | 15360 bit | 256-bit |
Bạn thấy điều gì ở bảng trên?
Để bằng mức bảo mật của AES-256, RSA cần khóa dài… 15,360 bit. Tức là số nguyên tố có 4600+ chữ số. Lúc đó mã hóa một câu "Xin chào" có lẽ mất thời gian bằng biên dịch dự án Rust lần đầu.
So Sánh Hiệu Năng
AES-256 nhanh hơn RSA-2048 từ 100 đến 5000 lần tùy phần cứng.
ECC-256 nhanh hơn RSA-3072 khoảng 10-100 lần.
Vậy tại sao vẫn dùng RSA?
Vì Chúng Giải Quyết Các Bài Toán Khác Nhau
- AES (đối xứng): Cả hai bên dùng chung một khóa. Cực nhanh. Nhưng làm sao trao đổi khóa?
- RSA (bất đối xứng): Dùng khóa công khai để mã hóa, khóa bí mật để giải mã. Chậm. Nhưng giải quyết bài toán trao đổi khóa.
- ECC (bất đối xứng): Giống RSA nhưng dựa trên đường cong elliptic thay vì số nguyên tố. Nhanh hơn, nhẹ hơn. Nhưng mới hơn (1985), ít được kiểm chứng hơn.
Phương Pháp Lai: Tốt Nhất Của Hai Thế Giới
Trong thực tế, các giao thức web an toàn dùng cả ba:
- RSA để trao đổi khóa phiên (bắt tay ban đầu)
- AES để mã hóa dữ liệu thực tế (vì nhanh)
- RSA để ký chữ ký số
Hoặc dần dần thay RSA bằng ECC (các thuật toán như ECDSA, ECDH) vì hiệu năng tốt hơn.
Bạn không chọn "cái nào tốt nhất". Bạn dùng đúng công cụ cho đúng công việc.
Mối Đe Dọa Lượng Tử (Nhưng Chưa Phải Bây Giờ)
Máy tính lượng tử với thuật toán Shor có thể phân tích số nguyên tố trong thời gian đa thức. Tức là RSA-2048 sẽ bị phá trong vài giây thay vì vài triệu năm.
Nhưng có hai điều:
- Máy tính lượng tử đủ mạnh vẫn chưa tồn tại. Các máy hiện tại mới chỉ phân tích được số 21 (= 3 × 7). Để phá RSA-2048 cần hàng triệu qubit ổn định, và chúng ta vẫn còn xa lắm.
- Mật mã hậu lượng tử đang được chuẩn bị. NIST đã chọn các thuật toán chống lượng tử (như CRYSTALS-Kyber, CRYSTALS-Dilithium) để thay thế RSA trong tương lai.
Nên mối đe dọa lượng tử là thật, nhưng không phải mối lo cấp bách nhất của RSA. Mối lo lớn hơn là: 2048-bit chỉ còn an toàn đến 2030, và di chuyển toàn bộ internet lên 3072-bit hoặc ECC không phải chuyện dễ.
Tại Sao "Cụ Già" RSA Vẫn Chưa Chết?
512-bit chết năm 1999. 1024-bit chết năm 2010s. 2048-bit sẽ "hết hạn" năm 2030. Vậy tại sao chúng ta không bỏ RSA hẳn, chuyển sang ECC cho nhanh?
Hệ Thống Cũ Khổng Lồ
Hàng tỷ thiết bị trên thế giới đã được cài đặt cứng với RSA:
- Mô-đun bảo mật phần cứng trong ngân hàng
- Thiết bị nhúng không cập nhật được firmware
- Hệ thống cũ của chính phủ, quân đội
- Hạ tầng cơ quan cấp chứng chỉ số
Thay đổi chúng không phải là "tái cấu trúc code". Đó là một cuộc di cư toàn cầu tốn hàng tỷ đô.
Tin Tưởng & Kiểm Chứng Thời Gian
RSA đã tồn tại 48 năm. Hàng triệu nhà toán học, hacker, nhà nghiên cứu đã cố phá nó. Nó vẫn đứng.
ECC mới hơn (1985), hiệu quả hơn, nhưng chưa được kiểm chứng "thời gian" như RSA. Trong bảo mật, "mới" không phải lúc nào cũng là "tốt".
Đủ Tốt Cho Hầu Hết Trường Hợp
2048-bit vẫn an toàn đến 2030. Với phần lớn ứng dụng (email, duyệt web, kết nối từ xa), mức bảo mật này là quá đủ.
Bạn không cần AES-256 + ECC-521 để bảo vệ mật khẩu xem phim. RSA-2048 đã quá đủ rồi.
Bài Học: Khi Nào Dùng RSA?
Nếu bạn đang thiết kế hệ thống mới ngày hôm nay, đây là hướng dẫn:
Dùng RSA khi:
- Cần chữ ký số (ký/xác thực)
- Cần tương thích ngược với hệ thống cũ
- Làm việc với hạ tầng khóa công khai đã tồn tại
Dùng ECC khi:
- Hiệu năng quan trọng (di động, thiết bị IoT, nhúng)
- Muốn khóa nhỏ gọn hơn
- Xây dựng hệ thống mới, không bị ràng buộc hệ thống cũ
Dùng AES khi:
- Mã hóa dữ liệu lớn (tệp, cơ sở dữ liệu)
- Hai bên đã có khóa chung
- Tốc độ là ưu tiên số 1
Dùng cả ba (lai):
- Các giao thức web: RSA/ECC cho bắt tay + AES cho dữ liệu
- Email mã hóa: RSA cho trao đổi khóa + AES cho thông điệp
- Kết nối từ xa: RSA cho xác thực + AES cho phiên làm việc
Và nhớ: 2048-bit chỉ còn 5 năm nữa thôi. Nếu bạn đang xây hệ thống sống lâu hơn 2030, hãy lên kế hoạch cho 3072-bit hoặc chuyển sang ECC ngay.
Kết: Di Sản Không Phải Lúc Nào Cũng Xấu
Năm 2025, RSA vẫn là xương sống của các giao thức web an toàn, kết nối từ xa - những giao thức bạn dùng mỗi ngày. Không phải vì nó tốt nhất, mà vì nó ở đó trước, và thay đổi hạ tầng toàn cầu không dễ như tái cấu trúc code.
Đây không chỉ là câu chuyện về mật mã học. Đây là câu chuyện về di sản công nghệ, nợ kỹ thuật, và cái giá của "chuẩn hóa sớm". Ron Rivest không ngờ rằng thuật toán ông nghĩ ra trong đêm say rượu năm 1977 sẽ trở thành chuẩn mực trong gần nửa thế kỷ.
Và giờ, khi chúng ta biết có ECC nhanh hơn, AES mạnh hơn, máy tính lượng tử đang đến gần, việc "bỏ RSA" vẫn là một bài toán khó hơn cả phân tích số nguyên tố 2048-bit.
Có lẽ đó chính là bài học lớn nhất: Trong công nghệ, đôi khi "đủ tốt + đến sớm" quan trọng hơn "hoàn hảo + đến muộn". RSA không hoàn hảo. Nhưng nó đã ở đúng nơi, đúng lúc. Và đó là lý do nó vẫn sống.