OpenSSH는 사용할 호스트 키를 어떻게 결정합니까?

OpenSSH는 사용할 호스트 키를 어떻게 결정합니까?

기본적으로 현재 버전( 6.9p1)에서 OpenSSH 서버는 네 가지 유형의 호스트 키를 생성합니다.

$ ls /etc/ssh/ssh_host_*_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub

6.9p1테스트를 통해 적어도 동일한 버전의 OpenSSH 클라이언트( )를 사용하면 클라이언트의 키 유형에 관계없이 호스트에서 ECDSA 키를 사용한다는 사실을 확인했습니다 .

OpenSSH는 지원되는 알고리즘의 우선순위를 어디에서 결정합니까? 이 정보는 편집 가능합니까, 아니면 현재 버전의 소스 코드에 하드코딩되어 있습니까?

그리고 더 중요한 것은 OpenSSH가 ECDSA 알고리즘에 최우선 순위를 부여하기로 결정한 이유는 무엇입니까?

답변1

순서는 구성 옵션을 사용하여 클라이언트에 의해 선택됩니다 HostKeyAlgorithms. 맨페이지에 따르면 내 시스템의 기본값은 다음과 같습니다.

  1. [이메일 보호됨]
  2. [이메일 보호됨]
  3. [이메일 보호됨]
  4. [이메일 보호됨]
  5. [이메일 보호됨]
  6. [이메일 보호됨]
  7. [이메일 보호됨]
  8. [이메일 보호됨]
  9. ecdsa-sha2-nistp256
  10. ecdsa-sha2-nistp384
  11. ecdsa-sha2-nistp521
  12. SSH-ed25519
  13. SSH-RSA
  14. SSH-dss

이를 재정의하려면 다음과 같이 하십시오.

ssh -oHostKeyAlgorithms=ssh-ed25519 [email protected]

답변2

그리고 더 중요한 것은 OpenSSH가 ECDSA 알고리즘에 최우선 순위를 부여하기로 결정한 이유는 무엇입니까?

ECDSA는 버전 5.7의 openssh에 도입되었습니다.여기에서 릴리스 노트를 확인하세요.. 특히 다음과 같이 명시되어 있습니다.

RFC5656에 지정된 대로 키 교환(ECDH) 및 호스트/사용자 키(ECDSA)에 대해 타원 곡선 암호화 모드를 구현합니다. ECDH 및 ECDSA는 동일한 대칭 키 길이와 훨씬 짧은 키에서 일반 DH 및 DSA보다 더 나은 성능을 제공합니다.

.......

새로운 ECDSA 키 유형을 사용하는 인증서 호스트 및 사용자 키가 지원됩니다. ECDSA 키는 인증될 수 있으며 ECDSA 키는 인증서 서명을 위한 CA 역할을 할 수 있습니다.

256비트 곡선 필드의 ECDH는 클라이언트와 서버가 모두 지원할 때 선호되는 키 일치 알고리즘입니다. ECDSA 호스트 키는 호스트 키를 처음 학습할 때 선호되거나 ssh-keyscan(1)을 사용하여 학습할 수 있습니다.

또한,RFC 5656상태:

많은 추정에서는 2^80-2^90 작업이 실현 불가능하다고 간주하므로 최소 160-180비트의 타원 곡선을 사용하는 것이 좋습니다. 이 문서의 필수 곡선은 256, 384 및 521비트 곡선입니다. 구현에서는 160비트보다 작은 곡선을 사용해서는 안 됩니다.

관련 정보