Sự khác biệt giữa DSA và RSA là gì?


114

Có vẻ như chúng đều là các thuật toán mã hóa yêu cầu khóa công khai và khóa riêng. Tại sao tôi chọn cái này so với cái kia để cung cấp mã hóa trong ứng dụng máy chủ khách hàng của mình?


3
Như henri đã đề cập , DSA không phải để mã hóa, chỉ là ký.
Samveen

Câu trả lời:


27

Tham khảo, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html

RSA
Mã hóa và giải mã RSA có tính chất giao hoán
do đó nó có thể được sử dụng trực tiếp như một lược đồ chữ ký số
được đưa ra một lược đồ RSA {(e, R), (d, p, q)}
để ký một thông điệp M, tính:
S = M power d (mod R)
để xác minh chữ ký, tính:
M = S power e (mod R) = M power ed (mod R) = M (mod R)

RSA có thể được sử dụng cho cả mã hóa và chữ ký điện tử, đơn giản bằng cách đảo ngược thứ tự sử dụng số mũ: số mũ bí mật (d) để tạo chữ ký, số mũ công khai (e) để bất kỳ ai xác minh chữ ký. Mọi thứ khác đều giống hệt nhau.

DSA (Thuật toán chữ ký số)
DSA là một biến thể của thuật toán ElGamal và Schnorr tạo ra chữ ký 320 bit, nhưng với tính bảo mật 512-1024 bit lại phụ thuộc vào độ khó tính toán logarit rời rạc đã được chấp nhận khá rộng rãi

DSA Key Generation
lần đầu tiên được chia sẻ công khai toàn cầu các giá trị khóa (p, q, g) được chọn:
chọn số nguyên tố lớn p = 2 lũy thừa L
trong đó L = 512 đến 1024 bit và là bội số của 64
chọn q, hệ số nguyên tố 160 bit của p-1
chọn g = h power (p-1) / q
cho bất kỳ h1 nào
sau đó mỗi người dùng chọn một khóa riêng và tính khóa công khai của họ:
chọn x tính y = g power x (mod p)

Thế hệ khóa DSA có liên quan đến, nhưng hơi phức tạp hơn El Gamal. Chủ yếu là do việc sử dụng mô-đun 160-bit thứ cấp q được sử dụng để giúp tăng tốc độ tính toán và giảm kích thước của chữ ký kết quả.

Tạo và Xác minh Chữ ký DSA

để ký một tin nhắn M
tạo khóa chữ ký ngẫu nhiên k, k tính
r = (g power k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
gửi chữ ký (r, s) với thông báo

xác minh chữ ký, tính:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g power u1.y power u2 (mod p)) (mod q)
nếu v = r thì chữ ký được xác minh

Tạo chữ ký một lần nữa tương tự như ElGamal với việc sử dụng khóa chữ ký tạm thời k trên mỗi tin nhắn, nhưng thực hiện calc mod p trước, sau đó mod q để giảm kích thước của kết quả. Lưu ý rằng việc sử dụng hàm băm SHA là rõ ràng ở đây. Việc xác minh cũng bao gồm việc so sánh hai phép tính, một lần nữa phức tạp hơn một chút, nhưng có liên quan đến El Gamal.
Lưu ý rằng gần như tất cả các phép tính là mod q, và do đó nhanh hơn nhiều.
Tuy nhiên, ngược lại với RSA, DSA chỉ có thể được sử dụng cho chữ ký điện tử

Bảo mật DSA
Sự hiện diện của kênh danh nghĩa tồn tại trong nhiều sơ đồ (bất kỳ sơ đồ nào cần một số ngẫu nhiên để được chọn), không chỉ DSA. Nó nhấn mạnh sự cần thiết của "bảo mật hệ thống", không chỉ là một thuật toán tốt.


liên kết đến tài liệu tham khảo của bạn bị hỏng
Paul Wintz

82

Kiểm tra câu trả lời của AVA bên dưới .

Câu trả lời cũ của tôi có vẻ sai


Vậy điều đó có nghĩa là nếu lượng dữ liệu cần mã hóa lớn, nó sẽ chạy nhanh hơn bằng cách sử dụng RSA?
WilliamKF

2
Không, ngược lại. DSA ký nhanh hơn (về mặt toán học nhiều hơn hoặc ít hơn so với mã hóa), vì vậy nếu bạn phải mã hóa nhiều và giải mã thường xuyên, DSA nhanh hơn.
Henri

Rất nhiều dữ liệu để mã hóa ở phía máy khách nhưng nó chỉ được giải mã một lần tại máy chủ, vậy DSA có còn chiến thắng?
WilliamKF

30
DSA không mã hóa. Nhắc lại, DSA không mã hóa. Đây là một câu đố: "S" trong DSA có nghĩa là gì?
Tổng thống James K. Polk

4
@GregS RSA có thể mã hóa so với DSA không thể mã hóa hầu hết là một vấn đề về thuật ngữ. Chúng tôi gọi một số thuật toán khác nhau là RSA, một số thuật toán ký hiệu (ví dụ RSA-PSS), một số mã hóa (ví dụ RSA-OAEP). Nhưng chúng tôi đã đặt tên khác cho mọi thuật toán trong tiền điện tử dựa trên nhóm, gọi một trong các thuật toán mã hóa là mã hóa ElGamal và gọi một trong các thuật toán chữ ký là DSA.
CodesInChaos

24

Btw, bạn không thể mã hóa bằng DSA, chỉ có thể ký. Mặc dù chúng tương đương về mặt toán học (ít nhiều), bạn không thể sử dụng DSA trong thực tế như một lược đồ mã hóa, chỉ như một lược đồ chữ ký số.


20

Với tham chiếu tới man ssh-keygen, độ dài của khóa DSA được giới hạn ở chính xác 1024 bit để duy trì tuân thủ FIPS 186-2 của NIST. Tuy nhiên, về mặt lý thuyết, các khóa DSA dài hơn là có thể; FIPS 186-3 cho phép chúng một cách rõ ràng. Hơn nữa, bảo mật không còn được đảm bảo với các khóa RSA hoặc DSA dài 1024 bit.

Kết luận, khóa RSA 2048 bit hiện là lựa chọn tốt nhất.

THẬN TRỌNG THÊM

Việc thiết lập một kết nối SSH an toàn đòi hỏi nhiều hơn là lựa chọn công nghệ cặp khóa mã hóa an toàn. Theo quan điểm của tiết lộ NSA của Edward Snowden, người ta thậm chí phải thận trọng hơn những gì trước đây được cho là đủ.

Để nêu tên một ví dụ, sử dụng thuật toán trao đổi khóa an toàn cũng quan trọng không kém. Dưới đây là tổng quan tốt đẹp về các phương pháp làm cứng SSH tốt nhất hiện nay .


Một số phiên bản cũ hơn của cũng ssh-keygencho phép các khóa có kích thước bit khác (bản thân tôi sử dụng khóa DSA 2048 bit được tạo bằng cách sử dụng ssh-keygenRHEL).
Samveen

6

Và ngoài những câu trả lời hay ho ở trên.

  • DSA sử dụng logarit rời rạc.
  • RSA sử dụng Dữ liệu số nguyên.

RSA là viết tắt của Ron R ivest, Adi S hamir và Leonard A dleman.

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.