2009-12-28 21 views
8

Tôi đang tạo một ứng dụng mà tôi phải sử dụng RSA để mã hóa một số nội dung bằng khóa công khai. Tôi muốn mã hóa này rất nhanh. Ban đầu, tôi đã thử một khóa 2048 bit với F4 (= 65537) làm số mũ nhưng nó không đủ nhanh. Vì vậy, bây giờ tôi đang xem xét 2 lựa chọn sau:Làm thế nào xấu là 3 là số mũ công khai RSA

  1. 2048 chút mô đun, e = 3
  2. 1024 bit mô đun, e = 65537

Cả hai đáp ứng yêu cầu hoạt động của tôi, nhưng mà người ta cung cấp tốt hơn Bảo vệ? Tôi cũng nên lưu ý rằng tôi sử dụng sơ đồ đệm PKCS # 1.

Trả lời

9

Nếu bạn sử dụng đệm ngẫu nhiên như OAEP trong PKCS # 1, phần lớn (tất cả?) Của các điểm yếu đã biết từ việc sử dụng số mũ thấp không còn liên quan.

Bạn cũng đã thử sử dụng e = 17 chưa? Không có quy tắc nào nói rằng bạn phải chọn 3 hoặc 65537.

+0

Nếu bạn lấy thẻ tín dụng và tăng quyền, bạn sẽ không thể điền vào 2048 bit. 17 cũng không nên sử dụng. –

+0

Bạn nói đúng. Nó chỉ là tôi đang sử dụng openssl để tạo ra chìa khóa và như của 0.9.8 nó không hỗ trợ bằng cách sử dụng bất kỳ số mũ khác. – safsaf32

+0

Hãy nhớ rằng, "Một thiết bị phần cứng lý thuyết có tên TWIRL và được mô tả bởi Shamir và Tromer vào năm 2003 được gọi là câu hỏi về bảo mật của các khóa 1024 bit. Hiện tại chúng tôi khuyên bạn nên có ít nhất 2048 bit." http://en.wikipedia.org/wiki/RSA#Security_and_practical_considerations –

1

Nếu số mũ của bạn thấp và giá trị của m * e < mô-đun, bạn chỉ có thể lấy gốc rễ của ciphertext để giải mã.

Đây là từ ghi chú của tôi về mật mã từ hai năm trước. Nhưng, để trả lời câu hỏi của bạn, có vẻ như lựa chọn 2 là tốt hơn.

Một người nào đó háo hức hơn để làm toán có thể cung cấp cho bạn giải thích rõ hơn tại sao.

2

Trong sách 'Practical Cryptography', Bruce Schneier và Niels Ferguson đề xuất sử dụng số mũ công khai là 3 cho chữ ký và 5 cho mã hóa. Bạn nên kiểm tra kỹ các tiêu chí khác mà họ khuyên bạn nên tránh những thảm họa. Phần 13.4 trình bày điều này (p229ff), và thảo luận về yêu cầu không phức tạp với n = pq (trong đó p và q là các số nguyên tố ngẫu nhiên), không (p-1) và (q-1) có thể là bội số của 3 hoặc 5 Nhưng vẫn kiểm tra lại cuốn sách để biết chi tiết.

(Tôi tin rằng có một new edition của cuốn sách sẽ ra mắt vào năm 2010.)

5

Với điều kiện là bạn sử dụng một chương trình đệm tốt, thì không có lý do được biết lý do tại sao e = 3 nên có an ninh tồi tệ hơn bất kỳ khác số mũ công khai. Sử dụng một số mũ ngắn có vấn đề nếu bạn cũng không sử dụng một sơ đồ đệm tốt, nhưng vấn đề nằm trong lược đồ đệm hơn là trong số mũ.

Các "cảm giác ruột" của nhiều nhà nghiên cứu là e = 3 là không tốt hơn hơn bất kỳ số mũ công cộng khác, và e = 3 có thể bật ra được một chút yếu vào một ngày xác định trong tương lai, mặc dù điểm không có gì ở đó một điểm yếu ngay bây giờ.

Độ dài khóa có tác động thực tế cao hơn nhiều đối với bảo mật. Một khóa RSA 768 bit đã bị bẻ khóa gần đây (điều này không dễ dàng! Bốn năm làm việc với các máy tính lớn và bộ não lớn hơn). Khóa 1024 bit được coi là đủ cho ngắn hạn, nhưng sử dụng lâu dài (ví dụ: dữ liệu được mã hóa có giá trị cao và vẫn phải được giữ bí mật trong năm 2030) sẽ yêu cầu thứ gì đó lớn hơn, ví dụ: 2048 bit. Xem this site để biết nhiều thông tin về cách thức có thể ước tính sức mạnh mã hóa và được ước tính bởi nhiều nhà nghiên cứu và tổ chức khác nhau.

Nếu bạn sử dụng mã hóa bất đối xứng rất nhanh, bạn có thể muốn điều tra Rabin-Williams encryption scheme nhanh hơn RSA, đồng thời cung cấp cùng mức bảo mật cho cùng độ dài đầu ra (nhưng không dễ sử dụng) tiêu chuẩn chi tiết cho chương trình đó, trái với RSA với PKCS # 1, vì vậy bạn có một chút về chính mình ở đây).

2

Mặc dù hiện tại không có cuộc tấn công nào được biết đến nếu sử dụng đệm đúng, số mũ nhỏ có nhiều khả năng dẫn đến khai thác trong trường hợp lỗi triển khai. Và lỗi triển khai không may là một mối đe dọa. Ví dụ. this là một lỗ hổng khá phổ biến. Tôi chỉ muốn cho thấy rằng ngay cả phần mềm thương mại cũng có thể có lỗi nghiêm trọng.)

Nếu bạn phải cắt góc, thì bạn phải xem xét những tác động tiềm ẩn của hành động của bạn. I E. việc chọn một mô đun nhỏ hoặc một số mũ nhỏ đều có những hạn chế riêng.

Nếu bạn chọn mô-đun nhỏ (1024 bit) thì bạn không thể giả định rằng dữ liệu của bạn có thể được bảo mật trong nhiều thập kỷ.

Nếu bạn chọn số mũ nhỏ, bạn có thể dễ bị lỗi triển khai hơn.

Trong trường hợp đầu tiên, bạn biết khá nhiều khi bí mật của bạn đang gặp nguy hiểm, vì nó khá dễ dàng để theo dõi tiến trình thực hiện trong bao thanh toán. (Điều này giả định tất nhiên là các cơ quan không xuất bản, ví dụ NSA không phải là kẻ thù của bạn). Trong trường hợp thứ hai (lỗi triển khai), bạn không biết khi nào bạn mắc lỗi. Bạn có thể an toàn khi sử dụng e = 3 hoặc bạn có thể đã phạm sai lầm lớn. I E. trong một trường hợp, bạn có một cách khá tốt để ước tính rủi ro của bạn, và trong trường hợp khác bạn không có.

Vì vậy, tôi khuyên bạn không nên sử dụng e = 3. Tôi muốn sử dụng nhiều mức độ an toàn hơn so với những mối đe dọa khó dự đoán, hơn những mối đe dọa được công khai rộng rãi.

0

Để trích dẫn "Giải pháp nhỏ để đa thức phương trình, và thấp Exponent RSA lỗ hổng" 1997 giấy Don Coppersmith của:

mã hóa với số mũ

RSA 3 là dễ bị tổn thương nếu đối thủ biết hai phần ba thông điệp.

Mặc dù điều này có thể không có vấn đề nếu lược đồ đệm RSA-OAEP được sử dụng, sơ đồ đệm PKCS # 1 (sử dụng op) dễ bị tổn thương nếu sử dụng số mũ công khai 3.

Các vấn đề liên quan