Mặc dù RSA không dùng để mã hóa nhưng người ta có thể sử dụng RSA để mã hóa. Nếu một người sử dụng TextBook RSA thì nó sẽ không an toàn vì mã hóa miễn phí nên bất kỳ kẻ tấn công nào cũng có thể kiểm tra các giá trị. Chúng tôi gọi đây là tiên tri mã hóa và nó miễn phí trên các hệ thống khóa công khai
đơn giản tiên tri mã hóa RSA trò chơi...
def Ind_CPA_RSA(đối thủ, mục tiêu):
(e,n,d,...) = generate_RSA_key() // phần keygen
def RSA_encryption_oracle_PKCS#1_v1.5(plaintext): // Tiên tri mã hóa
EM = PKCS#1_v1.5_padding(bản rõ)
bản mã = EM^e mod n
trả lại bản mã
cho mỗi m trong thể_message_space: //queries
c = RSA_encryption_oracle_PKCS#1_v1.5(m)
nếu c == mục tiêu
mục tiêu in)
trở lại thành công
thất bại trở lại
Vì vậy, đối thủ cố gắng bằng mọi cách có thể, miễn là có thể, để thấy sự bình đẳng để giành chiến thắng.
Trong sách giáo khoa RSA nếu số mũ công khai $e=3$ sau đó tấn công căn bậc ba hoạt động cho tất cả các tin nhắn như vậy $len(m) < \sqrt[3]{n}$.
Đối với tất cả các cuộc tấn công khác, bài báo của Dan Boneh là một điểm khởi đầu tốt;
$$\textbf{Không bao giờ sử dụng RSA Sách giáo khoa miễn là bạn biết mình làm gì!}$$
Để được an toàn, người ta phải sử dụng mã hóa RSA với các phần đệm thích hợp PKCS#1 v1.5 (RSAES-PKCS1-v1_5) hoặc OAEP (RSAES-OAEP) đệm. Các phần đệm này thêm ngẫu nhiên để đạt được mã hóa xác suất.
Mỗi người sử dụng các mã hóa đặc biệt để đạt được điều này như phần đệm PKCS#1 v1.5;
EM = 0x00 || 0x02 || Tái bút || 0x00 || m.
m
là tin nhắn. Các Tái bút
bao gồm phần ngẫu nhiên
Tạo xâu bộ tám PS độ dài k - mLen - 3
bao gồm các octet khác không được tạo giả ngẫu nhiên.
Độ dài của PS sẽ ít nhất là tám octet.
Ví dụ cho RSA 2048-bit; $k = 256$, $mLen=4$ sau đó Tái bút
độ dài là 249 byte ngẫu nhiên cho một tin nhắn có kích thước bằng chữ cái. Do đó, kẻ tấn công không thể kiểm tra các giá trị bằng tiên tri mã hóa. Phần còn lại tấn công vấn đề RSA.
Tương tự, OAEP có tính ngẫu nhiên và OAEP đã được chứng minh là có bảo mật IND-CCA1. Thích OAEP hơn PKCS#1 v1.5 vì nó có nhiều cuộc tấn công do triển khai không đúng cách.
Nếu bất cứ ai muốn có một bài viết học thuật về số liệu mã hóa RSA thì đây là bài viết có tường phí;