Điều gì tốt hơn cho các khóa GPG - RSA hoặc DSA?


58

ssh-keygenmặc định để tạo khóa RSA, nhưng gpg --gen-keythích DSA / ElGamal.

Cái nào - RSA hoặc DSA - tốt hơn cho GPG?


1
Xem thêm câu hỏi StackOverflow này cũng như câu trả lời của tôi cho một bản sao của câu hỏi đó, thảo luận về lý do tại sao RSA an toàn hơn đáng kể so với DSA, cả trong năm 2010 và với các lỗ hổng đã biết ngày nay (tất cả đều dành cho DSA).
Adam Katz

Câu trả lời:



25

RSA và DSA - những quan niệm sai lầm và thông tin hữu ích
có một vàitài liệu tham khảo RSA cũ hơnvàtài liệu tham khảo DSA gần đây,


Năm 2003, Chữ ký RSA vs DSA - Người chiến thắng là ... - RSA .

Vì vậy, về cơ bản việc tạo khóa là nhanh hơn đáng kể cho DSA, điều này có ý nghĩa nếu bạn hiểu các thuật toán. Việc ký cũng nhanh hơn đối với DSA, nhưng không phải là một yếu tố lớn. Sức mạnh to lớn của RSA là xác minh nhanh hơn DSA rất nhiều .

Dự thảo IETF gần đây : DSA với SHA-2 cho DNSSEC , hết hạn vào ngày 7 tháng 1 năm 2010.
Nó có một số lý do để quảng bá DSA qua RSA ngày hôm nay.

Sử dụng DSA với SHA-256 trong DNSSEC có một số ưu điểmnhược điểm so với sử dụng RSA với SHA-256 khi sử dụng các khóa 2048 bit. Chữ ký DSA ngắn hơn nhiều so với chữ ký RSA ; ở kích thước này, sự khác biệt là 512 bit verus 2048 bit. Trên các nền tảng thông thường sử dụng khóa 2048 bit, ký DSA nhanh hơn khoảng ba lần so với RSA, nhưng xác minh chữ ký RSA nhanh hơn mười lần so với DSA .

Sức mạnh mật mã của DSA thường được coi là tương đương với RSA khi khóa công khai DSA và khóa công khai RSA có cùng kích thước. Tất nhiên, một đánh giá như vậy có thể thay đổi trong tương lai nếu các cuộc tấn công mới hoạt động tốt hơn với một hoặc các thuật toán khác được tìm thấy.

Hiện tại không có cuộc tấn công nào được biết đến vào tập hợp các tham số DSA cụ thể được chọn cho tài liệu này. Tất nhiên, một đánh giá như vậy có thể thay đổi trong tương lai.

Nhưng, đây chỉ là một bản nháp vào lúc này.

Mọi người đều thích tốc độ xác minh của RSA (!).



6

Trích dẫn một cuộc thảo luận diễn đàn :

Lời khuyên của tôi là sử dụng khóa ký RSA (khóa "chính" hoặc "chính") và khóa con RSA để mã hóa. Lý do sử dụng RSA để ký chủ yếu là vì RSA cho phép bạn sử dụng các giá trị băm lớn hơn DSA. DSA2 cũng cho phép bạn sử dụng các giá trị băm lớn hơn, nhưng RSA đã được hỗ trợ lâu hơn nhiều năm so với DSA2.

Tôi nghĩ rằng nếu bạn đang sử dụng nó theo cách tiêu chuẩn (nghĩa là bạn không mã hóa một lượng dữ liệu khổng lồ) thì cả hai sẽ hoạt động tốt.

Cá nhân tôi sẽ chọn RSA vì tôi đã học được thuật toán và đó là một trong những thuật toán đẹp nhất tôi từng thấy.


4

Ngoài ra, việc sử dụng thuật toán SHA-2 là có thể và được cho phép kể từ khi sửa đổi DSS hiện tại; nhưng tôi không thể tìm ra GPG sửa đổi nào sau đây.

Liên quan đến đặc điểm kỹ thuật DSS hiện tại ( Trin-186-3 , p. I) bất kỳ hàm băm nào được chỉ định trong SHS (Trin-180-3, p. Iv) có thể được sử dụng:

DSS:

Các thuật toán chữ ký số được phê duyệt của Trin sẽ được sử dụng với hàm băm thích hợp được chỉ định trong SHS.

SHS:

Tiêu chuẩn này quy định năm thuật toán băm an toàn - SHA-1, SHA-224, SHA-256, SHA-384 và SHA-512 - để tính toán biểu diễn dữ liệu điện tử (tin nhắn) cô đọng.


Đối với câu hỏi: Cả hai thuật toán đều dựa trên các vấn đề toán học không được chứng minh là an toàn (RSA sử dụng vấn đề nhân số hóa và DSA sử dụng bài toán logarit rời rạc), bạn không thể nói một thuật toán này an toàn hơn các vấn đề khác, bởi vì không phải là một vấn đề cũng không phải là khác đã được giải quyết.

Nhưng bằng cách sử dụng DSA với SHA-1, bạn có thể gặp vấn đề về bảo mật, như đã nói bởi pss .


1

Thực tế có lẽ nó không quan trọng với bạn :) Là một phần của việc chuẩn bị tạo cặp khóa và là một phần của việc duy trì các cặp khóa hiện tại - bất kể bạn chọn loại tiền điện tử bất đối xứng nào: 1) nên kiểm tra hiện tại độ dài khóa 2) đã chọn cơ sở / modulo để tối ưu hóa cho việc ký hoặc xác minh - tùy thuộc vào việc sẽ được thực hiện thường xuyên hơn (các khóa được sử dụng để cấp chứng chỉ máy chủ TLS / SSL nên được tối ưu hóa để xác minh vì mọi trình duyệt web sẽ kiểm tra chữ ký ... Các khóa được sử dụng để ký phần mềm phải được tối ưu hóa tương tự) 3) đảm bảo bạn già đi các khóa của mình - đã sử dụng cùng một khóa cho ssh-auth trong một vài năm, có thể là thời gian để lấy lại ngay cả khi bạn chọn một khóa kích thước mà vẫn hợp lý cho các ứng dụng ngày nay.

Cả RSA và DSA đã được đánh giá thực chất; nếu bạn đang sử dụng cơ sở mã có thể xác thực (RSAREF, RSA thương mại, Mozilla / Netscape, Microsoft, OpenSSL, ...) thì bạn có thể không quan tâm đến việc sử dụng hệ thống mật mã nào miễn là bạn sử dụng đúng cách và sử dụng các thực tiễn tốt nhất hiện tại

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.