Điểm:0

Triển khai RSA không hoạt động với các giá trị lớn cho văn bản gốc

lá cờ it

Trong khi triển khai mã hóa/giải mã RSA (sử dụng python), bản rõ không khớp với bản mã đã giải mã đối với các giá trị lớn của bản rõ. Hoạt động tốt đối với các giá trị nhỏ hơn cho văn bản gốc (giá trị số).

Dữ liệu vào: p=53 q=59 e=3 bản rõ = 1000 (khóa riêng được tính là 2011)

Ở đây, việc giải mã cho 1000 như bản rõ, đó là chính xác. Bây giờ nếu

Dữ liệu vào: p=53 q=59 e=3 bản rõ = 10000 (khóa riêng được tính là 2011)

Ở đây, sau khi giải mã, bản rõ được tính toán là 619 (cần được 10000)

Mã cho cùng là ở đây,

    mã hóa def (bản rõ):
            ciphertext = (plaintext**publicKey) % (self.n)
            trả lại bản mã
   giải mã def (bản mã):
            bản rõ = (bản mã**privateKey) % (self.n)
            trả lại bản rõ

Xem xét thuật toán sẽ được sử dụng để mã hóa/giải mã văn bản chữ và số, sẽ tạo ra các giá trị số lớn, tôi cần sửa đổi gì hoặc tôi đang thiếu thứ gì?

ps: Kiểm tra nhiều giá trị của bản rõ, nó có thể xảy ra vì n=3127 và bất kỳ bản rõ nào lớn hơn 3127 sẽ không tạo ra bản rõ ban đầu khi giải mã. Tôi có thể sai.

Làm thế nào để làm cho nó hoạt động cho văn bản gốc lớn hơn N, đây 3127?

kelalaka avatar
lá cờ in
RSA là một hoán vị cửa sập! Làm thế nào để bạn mong đợi nhận được một bản rõ lớn hơn kích thước mô-đun được mã hóa và giải mã một cách chính xác? Tin nhắn $m$ phải là $m
kelalaka avatar
lá cờ in
có thể trùng lặp với [Làm cách nào để giải quyết giới hạn kích thước thư trong mã hóa RSA?](https://crypto.stackexchange.com/q/71092/18298)
kelalaka avatar
lá cờ in
$10000 \pmod{53\cdot 51} = 619$ như mong đợi!
Maarten Bodewes avatar
lá cờ in
Tôi đã trả lời câu hỏi này hơn một lần tôi nghĩ, nhưng [câu trả lời này](https://crypto.stackexchange.com/a/50183/1172) đã chỉ ra một cách để thực hành: chia nhỏ tin nhắn của bạn và mã hóa từng mảnh riêng biệt. Xin lưu ý rằng bạn sẽ có thể phân biệt các bản mã riêng biệt (tức là nếu bạn không thể phân biệt giữa 5 theo sau bởi 23 và 52 theo sau bởi 3 thì bạn đang gặp rắc rối).
SAI Peregrinus avatar
lá cờ si
Cách tốt hơn là sử dụng mã hóa lai. Chọn một số ngẫu nhiên trong khoảng từ 0 đến N. Gọi số đó là X. Sử dụng KDF để lấy khóa từ X. Mã hóa bằng AEAD như ChaCha20-Poly1305. Mã hóa X bằng RSA. Gửi X được mã hóa và bản mã của tin nhắn (và IV & thẻ). Người nhận có thể giải mã X, sử dụng cùng một KDF, xác minh thẻ và giải mã thư. Điều này ít phức tạp hơn so với việc sử dụng RSA-OAEP và coi RSA giống như một mật mã khối.
Maarten Bodewes avatar
lá cờ in
@SAIPeregrinus Điều đó thường không hiệu quả đối với các bài tập thực hành như trên. Tất nhiên, bạn có thể tạo một khóa và sau đó sử dụng bộ đệm nhiều lần hoặc mật mã Caesar/Vigenere hoặc thứ gì đó tương tự - những thứ đó chỉ cần kích thước khóa nhỏ và thực tế là chúng hoàn toàn không an toàn không phải là vấn đề.
SAI Peregrinus avatar
lá cờ si
Vâng, đó không phải là những gì bài tập muốn. Nhưng nó cũng an toàn, nơi mà những gì tập thể dục muốn không có.Tôi nghĩ rằng nên đề cập đến cách sử dụng RSA để mã hóa "trong thế giới thực" (mặc dù RSA-OAEP cũng phổ biến đối với các sơ đồ kết hợp) ngay cả khi đó không phải là câu trả lời cho bài tập.
kelalaka avatar
lá cờ in
Vẫn không bắt buộc -1.
ayush7ad6 avatar
lá cờ it
Sau khi đọc đề xuất của bạn @MaartenBodewes, tôi đã chia văn bản gốc thành các chữ số và mã hóa nó, đồng thời khi giải mã, ghép các chữ số đã giải mã vào câu lạc bộ. Ngoài ra, cảm ơn bạn đã phản hồi SAI và Maarten

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.