OpenSSH : 키 기반 인증, 최대 키 길이 비트 키로 완전히

키 기반 인증으로 Windows에서 Putty를 사용하여 일부 내 서버에 액세스하고 있습니다.

~ 3700- 비트 키로 완전히 작동하지만 ~ 17000- 비트 키로 클라이언트 측에서 20 초 동안 생각한 다음 “액세스 거부”라고 말하고 비밀번호를 묻습니다.

키 기반 인증을 위해 OpenSSH에 키 길이 제한이나 시간 초과가 있습니까?

이러한 큰 키를 사용하면 특히 20 초의 계산을 볼 때 실제로 직면하는 문제를 해결하려고 할 때 실용적이지 않습니다.



답변

어느 시점에서 Diffie-Hellman 키에 대한 OpenSSL 소스를 조사한 결과 DH 키 크기에 “임의”10K 제한이 있음을 발견했습니다. 테스트 소스를 변경했는데 효과가 있음을 알았습니다. 저자들에게 버그를 썼고, 방대한 키를 사용하여 DoS를 막기위한 의도로 설계되었다고 답했다.

OpenSSH에서 비슷한 것을 보니 놀라지 않을 것입니다.


답변

프로토콜에 최대 키 크기 또는 시간 초과가 정의되어 있지 않거나 적중하지 않은 경우도 있지만 구현에서 이러한 긴 키를 지원하지 않을 수 있습니다. 개인 키를 사용한 20 초의 처리 시간은 17kbit RSA 키에 대해 높게 들리지 않습니다. 그런 다음 서버는 인증되지 않은 사용자에게 너무 많은 컴퓨팅 성능을 소비하고 싶지 않을 수 있습니다. 매우 큰 키를 거부하는 것은 DoS 공격에 대한 보호입니다.

현재 2048 비트는 RSA 키에 적합한 것으로 간주됩니다. 4096 비트는 필요한 것보다 높지만 일반적으로 지원됩니다. 이 외에도 일부 프로그램이 키를 거부하더라도 놀라지 않아야합니다.


답변

원하는 대상 시스템에서 해당 크기의 키를 생성 할 수 있었습니까? 지원 대상에 제한이있을 수 있습니다. 오히려 현재의 Centos 시스템은 최대 16k를 지원하며 이는 거대한 키에 충분합니다. 아래와 같이 ssh-keygen을 사용하여 최대 값을 초과하면 최대 값을 볼 수 있습니다.

[nathan@omni ~]# ssh-keygen -t rsa -b 32768
key bits exceeds maximum 16384

답변

openssh 서버에는 LoginGraceTime 설정이 있습니다. 매뉴얼 페이지에서 :

The server disconnects after this time if the user has not suc-
cessfully logged in.  If the value is 0, there is no time limit.
The default is 120 seconds.

20 초로 설정하면 치는 한계가 될 수 있습니다.

사소한 추측 : 퍼티 자체가이 한계를 가지고있을 수 있으며, 공개 키 인증의 클라이언트 측 처리 시간이 오래 걸리면 무언가 잘못되었다고 생각할 수 있습니다.