หลังจากสี่เดือนของการพัฒนา
การเปลี่ยนแปลงที่สำคัญ:
- การเปลี่ยนแปลงด้านความปลอดภัย:
- ใน ssh-agent เมื่อใช้คีย์ FIDO ที่ไม่ได้สร้างขึ้นสำหรับการตรวจสอบสิทธิ์ SSH (รหัสคีย์ไม่ได้ขึ้นต้นด้วยสตริง "ssh:") ตอนนี้ระบบจะตรวจสอบว่าข้อความจะถูกลงนามโดยใช้วิธีการที่ใช้ในโปรโตคอล SSH การเปลี่ยนแปลงจะไม่อนุญาตให้เปลี่ยนเส้นทาง ssh-agent ไปยังโฮสต์ระยะไกลที่มีคีย์ FIDO เพื่อบล็อกความสามารถในการใช้คีย์เหล่านี้เพื่อสร้างลายเซ็นสำหรับคำขอตรวจสอบสิทธิ์เว็บ (กรณีย้อนกลับ เมื่อเบราว์เซอร์สามารถลงนามคำขอ SSH ได้ จะถูกแยกออกในตอนแรก เนื่องจากการใช้คำนำหน้า "ssh:" ในตัวระบุคีย์)
- การสร้างคีย์ประจำถิ่นของ ssh-keygen รวมถึงการสนับสนุนส่วนเสริม credProtect ที่อธิบายไว้ในข้อกำหนด FIDO 2.1 ซึ่งให้การป้องกันเพิ่มเติมสำหรับคีย์โดยกำหนดให้ต้องใช้ PIN ก่อนดำเนินการใดๆ ที่อาจส่งผลให้เกิดการแยกคีย์ประจำถิ่นออกจากโทเค็น
- การเปลี่ยนแปลงความเข้ากันได้ที่อาจเกิดขึ้น:
- เพื่อรองรับ FIDO/U2F ขอแนะนำให้ใช้ไลบรารี libfido2 อย่างน้อยเวอร์ชัน 1.5.0 ความสามารถในการใช้เวอร์ชันเก่าได้ถูกนำมาใช้บางส่วนแล้ว แต่ในกรณีนี้ ฟังก์ชันต่างๆ เช่น คีย์ประจำถิ่น คำขอ PIN และการเชื่อมต่อโทเค็นหลายรายการจะไม่สามารถใช้งานได้
- ใน ssh-keygen ข้อมูลตัวตรวจสอบความถูกต้องที่จำเป็นสำหรับการตรวจสอบยืนยันลายเซ็นดิจิทัลได้ถูกเพิ่มลงในรูปแบบของข้อมูลการยืนยัน ซึ่งเป็นทางเลือกที่บันทึกไว้เมื่อสร้างคีย์ FIDO
- API ที่ใช้เมื่อ OpenSSH โต้ตอบกับเลเยอร์สำหรับการเข้าถึงโทเค็น FIDO มีการเปลี่ยนแปลง
- เมื่อสร้าง OpenSSH เวอร์ชันพกพา ขณะนี้ automake จำเป็นต้องสร้างสคริปต์กำหนดค่าและไฟล์บิลด์ที่เกี่ยวข้อง (หากสร้างจากไฟล์ tar โค้ดที่เผยแพร่ ก็ไม่จำเป็นต้องสร้างการกำหนดค่าใหม่)
- เพิ่มการรองรับคีย์ FIDO ที่ต้องมีการยืนยัน PIN ใน ssh และ ssh-keygen ในการสร้างคีย์ด้วย PIN ได้มีการเพิ่มตัวเลือก "ต้องยืนยัน" ใน ssh-keygen หากใช้คีย์ดังกล่าว ก่อนที่จะดำเนินการสร้างลายเซ็น ผู้ใช้จะได้รับแจ้งให้ยืนยันการดำเนินการโดยป้อนรหัส PIN
- ใน sshd ตัวเลือก "ต้องยืนยัน" จะถูกนำมาใช้ในการตั้งค่าauthorized_keys ซึ่งต้องใช้ความสามารถในการตรวจสอบการมีอยู่ของผู้ใช้ระหว่างการดำเนินการกับโทเค็น มาตรฐาน FIDO มีตัวเลือกมากมายสำหรับการตรวจสอบดังกล่าว แต่ปัจจุบัน OpenSSH รองรับเฉพาะการตรวจสอบยืนยันด้วย PIN เท่านั้น
- sshd และ ssh-keygen ได้เพิ่มการรองรับสำหรับการตรวจสอบลายเซ็นดิจิทัลที่เป็นไปตามมาตรฐาน FIDO Webauthn ซึ่งอนุญาตให้ใช้คีย์ FIDO ในเว็บเบราว์เซอร์ได้
- ใน ssh ในการตั้งค่า CertificateFile
ControlPath, IdentityAgent, IdentityFile, LocalForward และ
RemoteForward อนุญาตให้ทดแทนค่าจากตัวแปรสภาพแวดล้อมที่ระบุในรูปแบบ "${ENV}" - ssh และ ssh-agent ได้เพิ่มการรองรับตัวแปรสภาพแวดล้อม $SSH_ASKPASS_REQUIRE ซึ่งสามารถใช้เพื่อเปิดหรือปิดใช้งานการโทร ssh-askpass
- ใน ssh ใน ssh_config ในคำสั่ง AddKeysToAgent ได้มีการเพิ่มความสามารถในการจำกัดระยะเวลาที่มีผลบังคับใช้ของคีย์แล้ว หลังจากที่ขีดจำกัดที่ระบุหมดอายุ คีย์จะถูกลบออกจาก ssh-agent โดยอัตโนมัติ
- ใน scp และ sftp เมื่อใช้แฟล็ก "-A" คุณสามารถอนุญาตการเปลี่ยนเส้นทางไปยัง scp และ sftp ได้อย่างชัดเจนโดยใช้ ssh-agent (การเปลี่ยนเส้นทางถูกปิดใช้งานโดยค่าเริ่มต้น)
- เพิ่มการสนับสนุนสำหรับการทดแทน '%k' ในการตั้งค่า ssh ซึ่งระบุชื่อคีย์โฮสต์ คุณสมบัตินี้สามารถใช้เพื่อกระจายคีย์เป็นไฟล์แยกกัน (เช่น “UserKnownHostsFile ~/.ssh/known_hosts.d/%k”)
- อนุญาตให้ใช้การดำเนินการ "ssh-add -d -" เพื่ออ่านคีย์จาก stdin ที่จะลบ
- ใน sshd จุดเริ่มต้นและจุดสิ้นสุดของกระบวนการตัดการเชื่อมต่อจะแสดงอยู่ในบันทึก ซึ่งควบคุมโดยใช้พารามิเตอร์ MaxStartups
นักพัฒนา OpenSSH ยังเรียกคืนการเลิกใช้งานอัลกอริทึมที่กำลังจะเกิดขึ้นโดยใช้แฮช SHA-1 เนื่องจาก
เพื่อให้การเปลี่ยนไปใช้อัลกอริทึมใหม่ใน OpenSSH ราบรื่นขึ้น รุ่นถัดไปจะเปิดใช้งานการตั้งค่า UpdateHostKeys ตามค่าเริ่มต้น ซึ่งจะย้ายไคลเอ็นต์ไปยังอัลกอริทึมที่เชื่อถือได้มากขึ้นโดยอัตโนมัติ อัลกอริธึมที่แนะนำสำหรับการย้ายข้อมูล ได้แก่ rsa-sha2-256/512 ที่ใช้ RFC8332 RSA SHA-2 (รองรับตั้งแต่ OpenSSH 7.2 และใช้เป็นค่าเริ่มต้น), ssh-ed25519 (รองรับตั้งแต่ OpenSSH 6.5) และ ecdsa-sha2-nistp256/384/521 บน RFC5656 ECDSA (รองรับตั้งแต่ OpenSSH 5.7)
ที่มา: opennet.ru