OpenSSH: การอนุญาตตามคีย์, ความยาวคีย์สูงสุด


9

ฉันใช้ Putty บน windows พร้อมการรับรองความถูกต้องด้วยคีย์เพื่อเข้าถึงเซิร์ฟเวอร์ของฉัน

มันใช้งานได้ดีกับคีย์ ~ 3700 บิต แต่ด้วยคีย์ ~ 17000 บิตมันคิดว่าเป็นเวลา 20 วินาทีที่ฝั่งไคลเอ็นต์จากนั้นก็บอกว่า "การเข้าถึงถูกปฏิเสธ" และขอรหัสผ่าน

มีการจำกัดความยาวของคีย์หรือการหมดเวลาใน OpenSSH สำหรับการตรวจสอบความถูกต้องโดยใช้คีย์หรือไม่

ฉันเข้าใจว่าการใช้ปุ่มขนาดใหญ่ดังกล่าวไม่มีความรู้สึกเชิงปฏิบัติมากนักโดยเฉพาะอย่างยิ่งเมื่อดูที่การคำนวณ 20 วินาทีเหล่านี้เพียงแค่พยายามแก้ไขปัญหาที่ฉันเผชิญ: -) ...


ฉันได้เห็นปัญหาที่คล้ายกันเกิดขึ้นในบางรุ่นของ OpenSSH ซึ่งฉันได้แก้ไขโดยใช้ความยาวของกุญแจซึ่งเป็นพลังของสอง
kasperd

คำตอบ:


9

เมื่อถึงจุดหนึ่งฉันได้ค้นหาแหล่งที่มาของ OpenSSL สำหรับคีย์ Diffie-Hellman และพบว่ามีข้อ จำกัด 10K "โดยพลการ" กับขนาดของปุ่ม DH ฉันเปลี่ยนที่มาสำหรับการทดสอบและพบว่าใช้งานได้ ฉันเขียนบั๊กให้กับผู้เขียนและพวกเขาตอบกลับว่าเป็นความตั้งใจออกแบบเพื่อป้องกัน DoS โดยใช้ปุ่มขนาดใหญ่

จะไม่ทำให้ฉันประหลาดใจเมื่อเห็นสิ่งที่คล้ายกันใน OpenSSH


5

ไม่มีการกำหนดขนาดของคีย์สูงสุดหรือหมดเวลาใช้งานในโปรโตคอล (หรืออย่างน้อยก็ไม่มีอะไรที่คุณจะกดปุ่ม) แต่การใช้งานอาจไม่รองรับคีย์ยาวดังกล่าว เวลาประมวลผล 20 วินาทีพร้อมคีย์ส่วนตัวนั้นไม่ได้เสียงสูงสำหรับคีย์ 17kbit RSA จากนั้นเซิร์ฟเวอร์อาจไม่ต้องการใช้พลังการประมวลผลมากเกินไปกับผู้ใช้ที่ไม่ได้รับการรับรองความถูกต้องการปฏิเสธคีย์ที่มีขนาดใหญ่มากเป็นการป้องกันการโจมตี DoS

ปัจจุบัน 2,048 บิตถือว่ามีความเหมาะสมสำหรับคีย์ RSA; 4096 บิตสูงกว่าที่จำเป็น แต่มักรองรับ นอกเหนือจากนี้คุณไม่ควรแปลกใจหากบางโปรแกรมปฏิเสธคีย์


การป้องกันนี้ดูสมเหตุสมผล มันปรับได้หรือฮาร์ดโค้ดในซอร์สโค้ดหรือไม่?
BarsMonster

ไม่มีตัวเลือกสำหรับสิ่งนี้ในคู่มือดังนั้นข้อ จำกัด ใด ๆ จะต้องอยู่ในซอร์สโค้ด ที่กล่าวว่าฉันไม่ทราบว่ามีการป้องกันจริงฉันแค่หมายความว่ามันจะมีเหตุผลที่จะมีหนึ่ง ฉันสงสัยว่าคำตอบของ AndreasM นั้นใกล้กับเครื่องหมายมากขึ้น
Gilles 'หยุดชั่วร้าย'

4

คุณสามารถสร้างขนาดของคีย์บนระบบเป้าหมายที่ต้องการได้หรือไม่ คุณอาจมีข้อ จำกัด ในสิ่งที่รองรับ ระบบ Centos ของฉันค่อนข้างปัจจุบันรองรับสูงสุด 16k ซึ่งดูเหมือนว่าเพียงพอสำหรับปุ่มขนาดใหญ่ คุณควรจะเห็นค่าสูงสุดหากคุณพยายามที่จะเหนือมันด้วย ssh-keygen ดังที่แสดงด้านล่าง

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

เหมือนกันบน Debian 8.2 เน็ตบุ๊กของฉันอาจใช้เวลาสักครู่ในการสร้างคีย์ 16384 บิตนี้ ... สิ่งที่ฉันทำเพื่อหัวเราะ
underscore_d

เหมือนกันกับ "Git Bash" สำหรับ Windows 7 ซึ่งใช้ MinGW
1364368

ยังเหมือนกันใน OpenSuse Leap 42.1
user1364368

2

openssh Server มีการตั้งค่า 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 วินาที

คาดเดายาก: มันอาจเป็นไปได้ว่าตัวฉาบเองมีขีด จำกัด นี้โดยคิดว่าหากการประมวลผลการพิสูจน์ตัวตนโดยใช้พับลิกคีย์ฝั่งไคลเอ็นต์ใช้เวลานานสิ่งที่ผิด


ฉันคิดเหมือนกันและตั้ง LoginGraceTime 1200 ดีข้อผิดพลาดอยู่ในคอนโซลดังนั้นฉันสงสัยว่ามันเป็นอะไรใน Putty ...
BarsMonster

1
ตรวจสอบบันทึกของเซิร์ฟเวอร์ ด้วยขนาดคีย์ฉันได้รับ: RSA_public_decrypt ล้มเหลว: ข้อผิดพลาด: 04067069: lib (4): func (103): reason (105) (เนื่องจากขนาดของคีย์ชัดเจน) ฉันจะลองใช้คีย์ 2 ^ n
AndreasM

1
16384 บิตดูเหมือนว่าจะทำงาน เพื่อให้ได้ผลลัพธ์ที่มี 32kbits ดูhermann-uwe.de/blog/... :)
AndreasM

1
คุณร้ายแรงขวา: พบ thid: sshd [1014]: ข้อผิดพลาด: RSA_public_decrypt ล้มเหลว: ข้อผิดพลาด: 04067069: lib (4): func (103): เหตุผล (105) ดังนั้นนี่จะต้องเป็นข้อผิดพลาดใน sshd / OpenSSL :-)
BarsMonster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.