기본적으로 현재 버전( 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
. 맨페이지에 따르면 내 시스템의 기본값은 다음과 같습니다.
- [이메일 보호됨]
- [이메일 보호됨]
- [이메일 보호됨]
- [이메일 보호됨]
- [이메일 보호됨]
- [이메일 보호됨]
- [이메일 보호됨]
- [이메일 보호됨]
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- SSH-ed25519
- SSH-RSA
- 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비트보다 작은 곡선을 사용해서는 안 됩니다.