RSA
RSA (Rivest-Shamir-Adleman)
Thuật toán mã hóa bất đối xứng được sử dụng rộng rãi, dựa trên độ khó toán học của việc phân tích thừa số các số nguyên tố lớn, cho phép trao đổi khóa an toàn, chữ ký số và truyền thông mã hóa mà không cần chia sẻ khóa bí mật.
Chi tiết kỹ thuật
RSA tạo cặp khóa: khóa công khai (n, e) để mã hóa và khóa riêng (n, d) để giải mã, trong đó n là tích của hai số nguyên tố lớn. Mã hóa tính c = m^e mod n, giải mã tính m = c^d mod n. Kích thước khóa 2.048 bit là khuyến nghị tối thiểu hiện tại; 4.096 bit cung cấp biên an toàn lớn hơn. RSA chậm hơn thuật toán đối xứng, nên trong thực tế nó mã hóa một khóa phiên AES ngẫu nhiên thay vì dữ liệu lớn (mã hóa lai). RSA-OAEP (Optimal Asymmetric Encryption Padding) ngăn chặn tấn công bản mã được chọn. RSA-PSS là lược đồ chữ ký được khuyến nghị.
Ví dụ
```javascript
// AES-256-GCM encryption (Web Crypto API)
const key = await crypto.subtle.generateKey(
{ name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv },
key,
new TextEncoder().encode('secret message')
);
```