Sự khác biệt giữa các khóa RSA, DSA và ECDSA mà ssh sử dụng là gì?


13

Trong /etc/ssh/thư mục của tôi , tôi có thể thấy ba rằng tôi có ba loại khóa ssh khác nhau:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

Sự khác biệt giữa các khóa RSA, DSA và ECDSA của ssh là gì và tôi có cần cả ba không?

Câu trả lời:


9

Chúng là các khóa được tạo bằng các thuật toán mã hóa khác nhau. Bạn có thể chọn sử dụng các hình thức mã hóa khác nhau khi sử dụng SSH, hơi giống với khả năng chọn các phương thức mã hóa khác nhau cho WiFi (WPA2, WPA, WEP, v.v.).

SSH sử dụng mã hóa khóa công khai, nghĩa là khi bạn kết nối với máy chủ SSH, nó sẽ phát một khóa chung mà bạn có thể sử dụng để mã hóa lưu lượng truy cập tiếp theo được gửi đến máy chủ đó. Nếu máy chủ được cấu hình để sử dụng RSA, nó sẽ là một khóa được tạo bởi thuật toán RSA.

Máy tính của bạn gửi lại khóa RSA công khai của chính nó từ tệp chính bạn đã liệt kê trong câu hỏi của mình. Máy chủ cần chìa khóa này để kết nối lại với bạn và trả lời.

Tất cả ba khóa tồn tại trên máy tính của bạn bởi vì bất kỳ máy chủ SSH cụ thể nào bạn đang kết nối có thể được định cấu hình để sử dụng bất kỳ một trong các thuật toán này. Máy tính của bạn sẽ gửi lại một khóa duy nhất khớp với loại máy chủ sử dụng, khóa của bạn đã được tạo trên máy tính của bạn bằng cùng một thuật toán.

Đây là một số tài nguyên khác:

/security/5096/rsa-vs-dsa-for-ssh-authentication-keys

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/RSA_( Thuật toán)

http://en.wikipedia.org/wiki/Digital_Signature_Alacticm

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA


2
Bạn nói ngắn gọn về lý do tại sao cả ba đều ở đó, mục đích của khóa ssh và điểm chung của các khóa: các khóa sử dụng thuật toán mã hóa. Những gì bạn đã không nói về sự khác biệt giữa các khóa RSA, DSA và ECDSA.
Enkouyami

6

Bạn có cần tất cả chúng?
Không, máy chủ ssh của bạn chỉ cần một và máy khách chỉ cần hỗ trợ một loại khóa đó cho các kết nối ssh.


RSA, DSA, ECDSA, EdDSA, & Ed25519 đều được sử dụng để ký kỹ thuật số, nhưng chỉ RSA cũng có thể được sử dụng để mã hóa.

RSA ( RivestTHER ShamirTHER Adeld ) là một trong những hệ thống mật mã khóa công khai đầu tiên và được sử dụng rộng rãi để truyền dữ liệu an toàn. Đó là bảo mật dựa trên yếu tố số nguyên , do đó không cần RNG an toàn (Trình tạo số ngẫu nhiên). So với DSA, RSA nhanh hơn để xác nhận chữ ký nhưng chậm hơn để tạo.

DSA ( Thuật toán chữ ký số ) là một tiêu chuẩn xử lý thông tin liên bang cho chữ ký số. Đó là bảo mật dựa trên một vấn đề logarit rời rạc . So với RSA, DSA nhanh hơn cho việc tạo chữ ký nhưng chậm hơn để xác nhận. Bảo mật có thể bị phá vỡ nếu sử dụng máy phát số xấu .

ECDSA ( Thuật toán chữ ký số đường cong Elliptical ) là một triển khai đường cong Elliptic của DSA (Thuật toán chữ ký số). Mật mã đường cong elip có thể cung cấp mức độ bảo mật tương đối giống như RSA với một khóa nhỏ hơn. Nó cũng chia sẻ nhược điểm của DSA là nhạy cảm với các RNG xấu.

EdDSA ( Thuật toán chữ ký số đường cong Edwards ) là sơ đồ chữ ký số sử dụng một biến thể của chữ ký Schnorr dựa trên các đường cong Twisted Edwards . Việc tạo chữ ký có tính quyết định trong EdDSA và bảo mật của nó dựa trên tính dễ hiểu của một số vấn đề logarit riêng biệt, vì vậy nó an toàn hơn DSA & ECDSA, đòi hỏi tính ngẫu nhiên chất lượng cao cho mỗi chữ ký.

Ed25519 , là lược đồ chữ ký EdDSA, nhưng sử dụng SHA-512/256Curve25519 ; đó là một đường cong elip an toànan ninh cung cấp tốt hơn so với DSA, ECDSA, & EdDSA, cộng với có hiệu suất tốt hơn (không phải do con người đáng chú ý).


Các lưu ý khác
Khóa RSA được sử dụng rộng rãi nhất và do đó dường như được hỗ trợ tốt nhất.

ECDSA, (được giới thiệu trong OpenSSH v5.7 ), tính toán nhẹ hơn DSA, nhưng sự khác biệt không đáng chú ý trừ khi bạn có một máy có công suất xử lý rất thấp.

Kể từ OpenSSH 7.0 , SSH không còn hỗ trợ các khóa DSA (ssh-dss) theo mặc định. Khóa DSA được sử dụng để hoạt động ở mọi nơi, theo tiêu chuẩn SSH (RFC 4251 và tiếp theo).

Ed25519 đã được giới thiệu trong openSSH 6.5 .


1
Đó là EdDSA hay ECDSA ?
muru

@muru Đó là ECDSA. Tôi sẽ cập nhật câu trả lời với thông tin trên cả hai và sửa liên kết.
Enkouyami

Điều tôi không thể tìm thấy là khi EdDSA được giới thiệu trong OpenSSH.
Enkouyami

Một máy tính lượng tử có thể phá vỡ tất cả?
Kjeld Flarup

@KjeldFlarup, Có; dựa trên các câu trả lời và nhận xét về security.stackexchange.com/questions/211587/ , một máy tính lượng tử có thể phá vỡ tất cả.
Enkouyami
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.