So sánh công nghệ mã hóa dữ liệu: AES vs RSA
AES và RSA là hai thuật toán mã hóa dữ liệu mạnh mẽ, nhưng hoạt động theo những nguyên tắc hoàn toàn khác nhau. AES là thuật toán mã hóa đối xứng, sử dụng một khóa duy nhất cho cả mã hóa và giải mã, trong khi RSA là thuật toán bất đối xứng, sử dụng cặp khóa công khai và khóa bí mật. Vậy đâu là sự khác biệt giữa hai công nghệ mã hoá này? Hãy cùng Hà Phương tìm hiểu chi tiết qua bài viết dưới đây!

Giới thiệu tổng quan về AES
AES là một thuật toán mã hóa đối xứng, sử dụng cùng một khóa cho cả quá trình mã hóa và giải mã. Được phát triển vào cuối những năm 1990 để thay thế DES (Data Encryption Standard) đã lỗi thời, AES nhanh chóng trở thành tiêu chuẩn mã hóa được sử dụng rộng rãi trên toàn thế giới.
AES hoạt động trên các khối dữ liệu có kích thước cố định (128 bit), sau đó lặp lại một số vòng biến đổi trên khối dữ liệu này. AES hỗ trợ các độ dài khóa 128 bit, 192 bit và 256 bit, độ dài khóa càng lớn thì mức độ bảo mật càng cao, nhưng cũng đòi hỏi nhiều tài nguyên tính toán hơn.
Mã hoá AES được thiết kế để có hiệu suất tốt trên cả phần cứng và phần mềm, cho phép mã hóa và giải mã dữ liệu tốc độ cao. Cho đến nay, AES vẫn được coi là rất an toàn và chưa có cuộc tấn công thực tế nào phá vỡ được thuật toán này một cách hiệu quả.

Nguyên lý hoạt động của mã hoá AES
AES là thuật toán mã hóa khối đối xứng, hoạt động trên các khối dữ liệu 128-bit, sử dụng cùng một khóa bí mật cho cả quá trình mã hóa và giải mã. Quá trình mã hóa bao gồm nhiều vòng lặp (rounds), số lượng vòng lặp phụ thuộc vào độ dài khóa:
- 10 vòng cho khóa 128-bit
- 12 vòng cho khóa 192-bit
- 14 vòng cho khóa 256-bit

Mỗi vòng lặp bao gồm các bước biến đổi sau:
- AddRoundKey (Cộng Khóa Vòng): Khóa vòng (round key) được XOR (phép toán loại trừ hoặc) với trạng thái (state) hiện tại của khối dữ liệu. Khóa vòng được tạo ra từ khóa gốc thông qua một quy trình mở rộng khóa (key expansion).
- SubBytes (Thay Thế Byte): Mỗi byte trong trạng thái được thay thế bằng một byte khác theo bảng S-box. Bảng S-box là một bảng tra cứu phi tuyến tính, được thiết kế để chống lại các cuộc tấn công tuyến tính.
- ShiftRows (Dịch Chuyển Hàng): Các byte trong mỗi hàng của trạng thái được dịch chuyển theo một quy tắc nhất định. Hàng đầu tiên không bị dịch chuyển, hàng thứ hai dịch chuyển sang trái 1 byte, hàng thứ ba dịch chuyển sang trái 2 byte, và hàng thứ tư dịch chuyển sang trái 3 byte.
- MixColumns (Trộn Cột): Các byte trong mỗi cột của trạng thái được trộn lẫn với nhau thông qua một phép nhân ma trận. Bước này tạo ra sự khuếch tán (diffusion), làm cho mỗi byte đầu ra phụ thuộc vào tất cả các byte đầu vào.
Ví dụ minh họa:
Giả sử chúng ta muốn mã hóa khối dữ liệu 4-bit “1011” với khóa 4-bit “0110”.
- AddRoundKey: “1011” XOR “0110” = “1101”
- SubBytes: Giả sử bảng S-box cho “1” là “01” và cho “0” là “10”. Vậy “1101” sẽ biến thành “01011001”.
- ShiftRows: Giả sử ta có ma trận 2×2 biểu diễn “01011001”. Bước này sẽ dịch hàng thứ 2 sang trái 1 bit.
- MixColumns: Thực hiện phép nhân ma trận để trộn lẫn các bit trong mỗi cột.
Các bước này được lặp lại nhiều lần với các khóa vòng khác nhau được tạo ra từ khóa gốc. Vòng cuối cùng không bao gồm bước MixColumns.
Ứng dụng của AES
Do tính chất đối xứng (sử dụng chung một khóa cho mã hóa và giải mã) và tốc độ xử lý nhanh, AES được ứng dụng rộng rãi trong các trường hợp cần mã hóa lượng lớn dữ liệu.
Mã hóa dữ liệu lưu trữ (Data at rest)
- Mã hóa ổ đĩa (Full-disk encryption): Các phần mềm như BitLocker (Windows), FileVault (macOS) sử dụng AES để mã hóa toàn bộ nội dung ổ cứng, bảo vệ dữ liệu ngay cả khi thiết bị bị mất cắp.
- Mã hóa cơ sở dữ liệu (Database encryption): Các hệ quản trị cơ sở dữ liệu (DBMS) như Oracle, SQL Server hỗ trợ mã hóa dữ liệu trong bảng, cột hoặc toàn bộ cơ sở dữ liệu bằng AES, bảo vệ thông tin nhạy cảm như thông tin khách hàng, thông tin tài chính.
- Mã hóa tệp tin và thư mục (File and folder encryption): Các công cụ như 7-Zip, VeraCrypt cho phép người dùng mã hóa từng tệp tin hoặc thư mục bằng AES, tạo ra các kho lưu trữ an toàn.

Bảo mật truyền thông (Data in transit)
- VPN (Virtual Private Network): Các giao thức VPN như OpenVPN, IPsec sử dụng AES để mã hóa lưu lượng truy cập giữa thiết bị của người dùng và máy chủ VPN, tạo ra một kết nối an toàn trên mạng công cộng.
- TLS/SSL (Transport Layer Security/Secure Sockets Layer): Giao thức bảo mật nền tảng của internet, được sử dụng để bảo mật kết nối giữa trình duyệt và máy chủ web (HTTPS), thường sử dụng AES để mã hóa dữ liệu trao đổi sau khi khóa phiên được thiết lập bằng RSA hoặc Diffie-Hellman.
- Wi-Fi Protected Access (WPA2/3): Các giao thức bảo mật wifi sử dụng AES để mã hóa dữ liệu truyền qua mạng wifi, ngăn chặn người dùng trái phép truy cập vào mạng.
Bảo mật phần cứng
- Thẻ thông minh (Smart cards): Thẻ tín dụng, thẻ căn cước, thẻ SIM sử dụng chip bảo mật tích hợp AES để bảo vệ dữ liệu được lưu trữ trên thẻ.
- Thiết bị di động: Điện thoại thông minh, máy tính bảng sử dụng AES để mã hóa dữ liệu người dùng, bảo vệ thông tin cá nhân trong trường hợp thiết bị bị mất hoặc bị tấn công.
Giới thiệu tổng quan về RSA
RSA là một thuật toán mã hóa bất đối xứng sử dụng hai khóa khác nhau: một khóa công khai (public key) để mã hóa và một khóa bí mật (private key) để giải mã. RSA được phát minh vào năm 1977 bởi Ron Rivest, Adi Shamir và Leonard Adleman và đã trở thành một trong những thuật toán mã hóa bất đối xứng được sử dụng rộng rãi nhất.
Khóa bất đối xứng sử dụng cặp khóa công khai và khóa bí mật. Khóa công khai được phân phối rộng rãi, trong khi đó khóa bí mật sẽ được giữ bí mật bởi chủ sở hữu. Bảo mật của RSA dựa trên độ khó của việc phân tích một số lớn thành tích của hai số nguyên tố lớn. So với AES, RSA chậm hơn đáng kể trong cả quá trình mã hóa và giải mã.
Nguyên lý hoạt động của RSA
RSA hoạt động dựa trên độ khó của bài toán phân tích một số lớn thành tích của hai số nguyên tố lớn. Cụ thể, RSA sử dụng một cặp khóa: khóa công khai (public key) dùng để mã hóa và khóa bí mật (private key) dùng để giải mã. Chỉ người nắm giữ khóa bí mật mới có thể giải mã thông tin đã được mã hóa bằng khóa công khai tương ứng. Dưới đây là chi tiết các bước trong nguyên lý hoạt động của RSA:
1. Tạo khóa (Key Generation)
Đây là bước đầu tiên và quan trọng nhất, bao gồm các công đoạn sau:
- Chọn hai số nguyên tố lớn p và q: Hai số này phải đủ lớn (thường từ 1024 bit trở lên) để đảm bảo tính bảo mật. Việc tìm ra hai số nguyên tố lớn như vậy là tương đối dễ, nhưng việc phân tích tích của chúng thành hai số nguyên tố ban đầu (bài toán phân tích thừa số nguyên tố) là cực kỳ khó nếu chúng đủ lớn.
- Tính n (modulus): n = p * q. n là một phần của cả khóa công khai và khóa bí mật.
- Tính hàm Euler φ(n) (totient): φ(n) = (p-1) * (q-1). Hàm Euler cho biết số lượng các số nguyên dương nhỏ hơn n và nguyên tố cùng nhau với n.
- Chọn số nguyên e (public exponent): e phải thỏa mãn điều kiện 1 < e < φ(n) và ước số chung lớn nhất (GCD) của e và φ(n) phải bằng 1 (tức là e và φ(n) nguyên tố cùng nhau). e là một phần của khóa công khai. Giá trị phổ biến cho e là 65537 (2<sup>16</sup> + 1) vì nó có một số ưu điểm về hiệu suất.
- Tính số nguyên d (private exponent): d là nghịch đảo modulo của e theo modulo φ(n). Điều này có nghĩa là d * e ≡ 1 (mod φ(n)). Nói cách khác, (d * e) chia cho φ(n) dư 1. d là một phần của khóa bí mật. Thuật toán Euclid mở rộng thường được sử dụng để tính d.
Kết quả của quá trình tạo khóa:
- Khóa công khai (Public Key): (n, e)
- Khóa bí mật (Private Key): (n, d)
2. Mã hóa (Encryption)
Giả sử chúng ta muốn mã hóa một thông điệp m (message), với điều kiện 0 ≤ m < n. Quá trình mã hóa được thực hiện như sau:
Tính bản mã c (ciphertext): c = m<sup>e</sup> mod n.
3. Giải mã (Decryption)
Để giải mã bản mã c, người nhận sử dụng khóa bí mật (n, d) và thực hiện phép tính sau:
Tính bản rõ m (plaintext): m = c<sup>d</sup> mod n.
Ứng dụng của RSA
Với đặc tính bất đối xứng (sử dụng cặp khóa công khai và khóa bí mật), RSA được ứng dụng chủ yếu trong việc trao đổi khóa và chữ ký số. Cụ thể:
Trao đổi khóa (Key exchange)
Trong các giao thức như TLS/SSL, RSA được sử dụng để thiết lập một kênh an toàn để trao đổi khóa bí mật cho thuật toán mã hóa đối xứng như AES. Bên gửi mã hóa khóa bí mật bằng khóa công khai của bên nhận, chỉ có bên nhận với khóa bí mật tương ứng mới có thể giải mã.
Chữ ký số (Digital signatures)
- Chữ ký số: RSA được sử dụng để tạo chữ ký số, đảm bảo tính xác thực (authentication) và tính toàn vẹn (integrity) của dữ liệu. Người gửi sử dụng khóa bí mật của mình để ký vào dữ liệu, người nhận có thể xác minh chữ ký bằng khóa công khai của người gửi.
- Xác thực phần mềm: Các nhà phát triển phần mềm sử dụng chữ ký số để ký vào phần mềm của họ, giúp người dùng xác minh được phần mềm có phải là bản gốc và không bị chỉnh sửa.
- Xác thực email: Chữ ký số được sử dụng để xác thực người gửi email và đảm bảo nội dung email không bị thay đổi trong quá trình truyền tải.

Mã hóa email (Email encryption):
Sử dụng RSA để mã hóa nội dung email, đảm bảo chỉ người nhận với khóa bí mật tương ứng mới có thể đọc được nội dung. Tuy nhiên, do tốc độ chậm, RSA thường được sử dụng để mã hóa khóa phiên đối xứng, khóa này sau đó được dùng để mã hóa nội dung email.
Các ứng dụng khác
- Xác thực người dùng (User authentication): Sử dụng RSA trong các hệ thống xác thực hai yếu tố (2FA).
- Bảo mật giao dịch trực tuyến: Sử dụng RSA để bảo mật thông tin giao dịch trên các trang web thương mại điện tử.
So sánh giữa AES và RSA
AES là một tiêu chuẩn vàng trong việc mã hóa dữ liệu ở trạng thái nghỉ. Với cấu trúc khối và khóa đối xứng, AES cung cấp tốc độ mã hóa và giải mã cực kỳ nhanh, khiến thuật toán này trở thành lựa chọn lý tưởng cho việc bảo vệ các khối lượng dữ liệu lớn như ổ cứng, cơ sở dữ liệu và các tệp lưu trữ. Ứng dụng của AES trải rộng từ việc mã hóa toàn bộ ổ đĩa, bảo vệ dữ liệu nhạy cảm trong các hệ thống lưu trữ đám mây đến việc đảm bảo tính toàn vẹn của dữ liệu trong các cơ sở dữ liệu quan trọng.
Trong khi đó, thuật toán RSA, dựa trên vấn đề phân tích số nguyên lớn, lại được thiết kế chủ yếu cho các hoạt động liên quan đến việc trao đổi khóa và xác thực danh tính. Khóa công khai và khóa riêng của RSA tạo nên một hệ thống mã hóa bất đối xứng mạnh mẽ, thường được sử dụng để bảo vệ các giao thức truyền thông an toàn như HTTPS, đảm bảo rằng dữ liệu truyền đi giữa máy khách và máy chủ không bị kẻ tấn công nghe lén hoặc giả mạo. Tuy nhiên, do dựa trên các phép toán số học lớn, RSA thường có tốc độ xử lý chậm hơn nhiều so với AES.
| Tiêu chí | AES | RSA |
| Loại mã hóa | Đối xứng | Bất đối xứng |
| Khóa | Một khóa (bí mật) | Hai khóa (công khai và bí mật) |
| Tốc độ | Nhanh | Chậm |
| Ứng dụng chính | Mã hóa dữ liệu số lượng lớn | Trao đổi khóa, chữ ký số |
| Bảo mật | Rất cao | Phụ thuộc vào độ dài khóa và độ khó của bài toán phân tích thừa số nguyên tố |
| Độ dài khóa | 128, 192, 256 bit | Thường là 2048 bit trở lên |
Sự kết hợp giữa AES và RSA
Trong thực tế, AES và RSA thường được sử dụng kết hợp với nhau để tận dụng điểm mạnh của cả hai. Ví dụ điển hình là trong giao thức TLS/SSL:
- Máy khách (ví dụ: trình duyệt) kết nối đến máy chủ (ví dụ: website).
- Máy chủ gửi chứng chỉ số chứa khóa công khai RSA của mình cho máy khách.
- Máy khách tạo ra một khóa bí mật đối xứng (ví dụ: khóa AES).
- Máy khách mã hóa khóa bí mật này bằng khóa công khai RSA của máy chủ và gửi lại cho máy chủ.
- Máy chủ giải mã khóa bí mật đối xứng bằng khóa bí mật RSA của mình.
- Từ đây, cả máy khách và máy chủ đều có chung khóa bí mật đối xứng và sử dụng nó để mã hóa và giải mã dữ liệu trao đổi bằng AES.
Sự kết hợp này đảm bảo tính bảo mật của việc trao đổi khóa (bằng RSA) và hiệu suất cao của việc mã hóa dữ liệu (bằng AES).
Sản phẩm đề xuất
Tổng kết
AES và RSA là hai thuật toán mã hóa mạnh mẽ hiện đang được sử dụng rộng rãi trong nhiều ứng dụng bảo mật. AES là lựa chọn tốt trong việc mã hóa dữ liệu số lượng lớn nhờ tốc độ và hiệu suất cao, trong khi RSA phù hợp cho việc trao đổi khóa và chữ ký số nhờ tính bất đối xứng. Sự kết hợp giữa AES và RSA thường được sử dụng để đạt được mức độ bảo mật tối ưu. Hà Phương hi vọng bài viết đã cung cấp cho bạn một cái nhìn chi tiết về ứng dụng cũng như sự khác biệt của hai công nghệ mã hoá dữ liệu AES và RSA.














