id_rsa.pub กับ id_dsa.pub ต่างกันอย่างไร


คำตอบ:


64

id_rsa.pubและid_dsa.pubเป็นกุญแจสาธารณะและid_rsaid_dsa

หากคุณถามในความสัมพันธ์กับSSH, id_rsaเป็นอาร์เอสที่สำคัญและสามารถใช้กับโปรโตคอล SSH 1 หรือ 2 ในขณะที่id_dsaเป็นDSAที่สำคัญและสามารถนำมาใช้กับโปรโตคอล SSH 2. ทั้งสองมีความปลอดภัยมาก แต่ DSA ดูเหมือนจะ มาตรฐานในปัจจุบัน (สมมติว่าลูกค้า / เซิร์ฟเวอร์ทั้งหมดของคุณรองรับ SSH 2)

อัปเดต:เนื่องจากสิ่งนี้ถูกเขียนขึ้น DSA จึงแสดงให้เห็นว่าไม่ปลอดภัย ข้อมูลเพิ่มเติมมีอยู่ในคำตอบด้านล่าง


ฉันต้องไม่เห็นด้วยกับเรื่องนี้ วันนี้ (และแม้ว่าจะน้อยกว่า แต่ในปี 2010 เมื่อมีการโพสต์) 1024 บิต (ขนาดคีย์ที่ใหญ่ที่สุดที่มีให้กับ DSA) ถือว่าอ่อนแอเกินไป ดังนั้น RSA จึงเป็นตัวเลือกที่ดีกว่า สำหรับ SSH v1: ฉันไม่ได้พิจารณาความปลอดภัยนี้เมื่อสิบปีที่แล้ว
Adam Katz

3
@AdamKatz DSA รองรับการรองรับคีย์ 2048 บิตและ 3072 บิตตั้งแต่ปี 2009 (ตามFIPS 186-3 ) ไคลเอนต์ / เซิร์ฟเวอร์ ssh ส่วนใหญ่รองรับคีย์ DSA ขนาดใหญ่รวมถึง OpenSSH และ PuTTY ตัวสร้างคีย์ส่วนใหญ่รองรับคีย์ DSA ที่ใหญ่กว่าเช่นกัน แต่ ssh-keygen จาก OpenSSH ยังไม่ทำงาน (แม้ว่าทั้ง ssh และ sshd จะทำ) สำหรับ Linux คุณสามารถสร้างคีย์ DSA ขนาดใหญ่โดยใช้ OpenSSL ตามที่อธิบายไว้ในบล็อกโพสต์นี้
Mike Pelley

1
น่าสนใจ! ฉันไม่รู้มาก่อนและนั่นช่วยยกระดับสนามระหว่างทั้งสองได้อย่างแน่นอน (แม้ว่าการขาดการสนับสนุน OpenSSH นั้นค่อนข้างน่ากลัว) ถึงกระนั้นฉันจะไม่บอกว่า DSA เป็นมาตรฐาน (ไม่ว่าในตอนนี้หรือในปี 2010) ในขณะที่ RSA นั้นแน่นอน (และเรากำลังเปลี่ยนไปใช้ระบบเส้นโค้งวงรีเช่น Ed25519)
Adam Katz

46

SSHใช้คู่คีย์สาธารณะ / ส่วนตัวดังนั้น คีย์ส่วนตัวRSAid_rsaของคุณ(ตามจำนวนเฉพาะ) ซึ่งปลอดภัยกว่าคีย์ส่วนตัวDSAของคุณ(ตามเลขชี้กำลัง) เก็บคีย์ส่วนตัวของคุณให้ปลอดภัยและแบ่งปันคีย์ของคุณและสาธารณะในวงกว้างid_dsa id_rsa.pubid_dsa.pub

DSA ไม่ปลอดภัย

DSA มีพารามิเตอร์ที่คาดเดาได้หากตัวสร้างตัวเลขสุ่มของคอมพิวเตอร์ของคุณเป็นพาร์ย่อยซึ่งจะเปิดเผยคีย์ลับของคุณ ECDSA (DSA อัพเกรดโค้งรูปไข่) จะมีความเสี่ยงในทำนองเดียวกัน แม้ว่าจะมีตัวเลขสุ่มที่ดี แต่ DSA ก็มีข้อกังวลด้านความแข็งแกร่งอื่น ๆไฟล์ PDF ( พบได้ใน Diffie-Hellman )

OpenSSH สร้างที่ไม่ปลอดภัยคีย์บิต 1024 ( วิธีแก้ปัญหา )และตอนนี้ปิดการใช้งาน DSA โดยค่าเริ่มต้น

ใช้ Ed25519 เมื่อเป็นไปได้

การเข้ารหัสเส้นโค้งรูปไข่ช่วยเพิ่มความซับซ้อนด้วยขนาดคีย์ที่เล็กลง Ed25519 (ขึ้นอยู่กับความซับซ้อนของเส้นโค้งวงรีแบบจำลองเครื่องบิน ) เป็นการนำไปใช้งานที่ต้องการเนื่องจากสันนิษฐานว่าไม่มีการแทรกแซง (เอกสารที่รั่วไหลแสดงให้เห็นว่าNSA ของสหรัฐอเมริกาทำให้มาตรฐานการเข้ารหัสลับอ่อนลง )

น่าเสียดายที่ Ed25519 ยังค่อนข้างใหม่ซึ่งต้องใช้OpenSSH 6.5หรือGnuPG 2.1 (ดูรายการทั้งหมด )

ใช้ RSA กับ 4096 บิตเมื่อ Ed25519 ไม่พร้อมใช้งาน

ขนาดคีย์ RSA 4096 บิตควรมีความซับซ้อนเทียบเท่ากับ Ed25519

Ed25519 ยังคงเป็นที่ต้องการของ RSA เนื่องจากกังวลว่า RSA อาจเสี่ยงต่อความกังวลด้านความแข็งแกร่งเช่นเดียวกับ DSA แม้ว่าการใช้ประโยชน์จาก RSA นั้นคาดว่าจะยากกว่ามาก


2
การแก้ไขเพียงครั้งเดียว: DSA รองรับคีย์ 2048 บิตและ 3072 บิตตั้งแต่ปี 2009 (ตามFIPS 186-3 ) ข้อมูลเพิ่มเติมในความคิดเห็นของฉันด้านบน
Mike Pelley

2
Infosec SE มีคำตอบที่ดีสำหรับคำถามนี้ที่เจาะลึกมากขึ้น มันอ้างถึงคำพูดของ Black Hat 2013ที่ชี้ให้เห็นว่า DSA ไม่มีความปลอดภัยอีกต่อไปแม้จะมีขนาดคีย์ที่ใหญ่กว่าก็ตาม
Adam Katz

2
ฉันได้อัปเดตคำตอบนี้เพื่อให้ครอบคลุมมากขึ้นเกี่ยวกับปัญหาของ DSA ตอนนี้มีรายละเอียดมากกว่าคำตอบ Infosec SE (ถูกต้องเท่ากัน) มีรายละเอียดเพิ่มเติมเมื่อคุณวางเมาส์เหนือลิงก์บางส่วน
Adam Katz

1
โพสต์นี้สอนฉันมากต้องการการโหวตมากขึ้น
liljoshu

2

rsa ถือว่าปลอดภัยกว่า

ไม่มีอีกแล้ว (พฤษภาคม 2020 สิบปีต่อมา) ด้วยOpenSSH 8.2ตามรายงานของJulio

การแจ้งเตือนการเลิกใช้งานในอนาคต

ตอนนี้เป็นไปได้ที่1 ที่จะทำการโจมตีแบบเลือกคำนำหน้ากับอัลกอริทึมแฮช SHA-1 ในราคาต่ำกว่า 50K ดอลลาร์สหรัฐ
ด้วยเหตุนี้เราจะปิดการใช้งาน "SSH-RSA" อัลกอริทึมลายเซ็นที่สำคัญของประชาชนที่ขึ้นอยู่กับ SHA-1 โดยเริ่มต้นในการเปิดตัวในอนาคตอันใกล้

(โปรดดู " SHA-1 is a Shambles: First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust " Leurent, G and Peyrin, T (2020))

อัลกอริทึมนี้ยังคงใช้กันอย่างแพร่หลายแม้ว่าจะมีทางเลือกอื่นที่ดีกว่าซึ่งเป็นเพียงอัลกอริธึมลายเซ็นคีย์สาธารณะที่เหลือซึ่งระบุโดย SSH RFC ดั้งเดิม

ทางเลือกที่ดีกว่า ได้แก่ :

  • อัลกอริธึมลายเซ็น RFC8332 RSA SHA-2 rsa-sha2-256 / 512
    อัลกอริทึมเหล่านี้มีข้อได้เปรียบในการใช้คีย์ประเภทเดียวกันกับ " ssh-rsa" แต่ใช้อัลกอริทึมแฮช SHA-2 ที่ปลอดภัย
    สิ่งเหล่านี้ได้รับการสนับสนุนตั้งแต่ OpenSSH 7.2 และถูกใช้เป็นค่าเริ่มต้นแล้วหากไคลเอนต์และเซิร์ฟเวอร์รองรับ

  • อัลกอริทึมลายเซ็น ssh-ed25519
    ได้รับการสนับสนุนใน OpenSSH ตั้งแต่รุ่น 6.5

  • อัลกอริทึม RFC5656 ECDSA: ecdsa-sha2-nistp256 / 384/521
    สิ่งเหล่านี้ได้รับการสนับสนุนโดย OpenSSH ตั้งแต่รุ่น 5.7

หากต้องการตรวจสอบว่าเซิร์ฟเวอร์ใช้อัลกอริทึมคีย์สาธารณะ ssh-rsa ที่อ่อนแอสำหรับการตรวจสอบความถูกต้องของโฮสต์หรือไม่ให้ลองเชื่อมต่อหลังจากลบssh-rsaอัลกอริทึมออกจากรายการที่อนุญาตของ ssh (1):

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

หากการตรวจสอบคีย์โฮสต์ล้มเหลวและไม่มีคีย์โฮสต์ประเภทอื่นที่รองรับให้ใช้งานซอฟต์แวร์เซิร์ฟเวอร์บนโฮสต์นั้นควรได้รับการอัพเกรด

OpenSSH รุ่นในอนาคตจะเปิดใช้งานUpdateHostKeysตามค่าเริ่มต้นเพื่อให้ไคลเอนต์โยกย้ายไปยังอัลกอริทึมที่ดีขึ้นโดยอัตโนมัติ ผู้ใช้อาจพิจารณาเปิดใช้ตัวเลือกนี้ด้วยตนเอง


1

ใช่ rsa ถือว่าปลอดภัยกว่า

ในเดือนตุลาคม 2014 OpenSSH 7 (ค่าเริ่มต้นของ Ubuntu 16.04LTS) ได้ปิดใช้งานการรองรับ DSA เริ่มต้น ถือเป็นสัญญาณที่ชัดเจนว่า DSA ไม่ใช่วิธีที่แนะนำอีกต่อไป

https://www.gentoo.org/support/news-items/2015-08-13-openssh-weak-keys.html


-8

หนึ่งใช้DSAและเป็นหนึ่งในการใช้อาร์เอส


สมมติว่าคุณใช้ชื่อเริ่มต้น (ซึ่งมีเหตุผลที่ดูเหมือน) Theatrus ก็ตีมันลงบนหัว
David Larrabee

คุณไม่ได้ตอบส่วนที่แท้จริงของคำถาม: ซึ่งปลอดภัยกว่า การลดคะแนนเนื่องจากนี่เป็นคำตอบสูงสุด ไม่จำเป็นต้องเป็น
akauppi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.