9 คะแนน โดย GN⁺ 2024-03-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • tinysshd เป็นเซิร์ฟเวอร์ SSH แบบมินิมัลที่รองรับเพียงบางส่วนของความสามารถ SSHv2
  • รองรับความปลอดภัยอย่างน้อย 128 บิต และรองรับเฉพาะการเข้ารหัสที่ปลอดภัยซึ่งป้องกันการโจมตีแบบ cache-timing
  • ไม่ได้รองรับการเข้ารหัสรุ่นเก่าอย่าง RSA, DSA, HMAC-MD5, HMAC-SHA1, 3DES, RC4 เป็นต้น
  • ไม่ได้รองรับความสามารถที่ไม่ปลอดภัย เช่น การยืนยันตัวตนด้วยรหัสผ่านหรือการยืนยันตัวตนแบบอิงโฮสต์
  • ไม่รองรับความสามารถอย่างโปรโตคอล SSH1, การบีบอัด, การส่งต่อพอร์ต, การส่งต่อเอเจนต์, การส่งต่อ X11 เป็นต้น
  • ไม่ใช้การจัดสรรหน่วยความจำแบบไดนามิก จึงไม่มีปัญหาอย่างการจัดสรรล้มเหลว

ความสามารถพื้นฐานด้านคริปโตกราฟี

  • เทคโนโลยีการเข้ารหัสสมัยใหม่: ssh-ed25519, curve25519-sha256, chacha20-poly1305@openssh.com
  • มาตรฐานก่อนหน้า (ถูกถอดออกในเวอร์ชัน 20190101): ecdsa-sha2-nistp256, ecdh-sha2-nistp256, aes256-ctr, hmac-sha2-256
  • การเข้ารหัสที่เตรียมพร้อมรับยุคคอมพิวเตอร์ควอนตัม: sntrup761x25519-sha512@openssh.com, chacha20-poly1305@openssh.com

ไทม์ไลน์ของโครงการ

  • ระยะทดลอง (ปี 2014): มีไว้เพื่อการทดลอง
  • ระยะอัลฟา (ปี 2015-2017): ยังไม่เหมาะกับสภาพแวดล้อมโปรดักชัน แต่พร้อมสำหรับการทดสอบ
  • ระยะเบตา (ตั้งแต่ปี 2018 ถึงปัจจุบัน): เหมาะสำหรับใช้งานในโปรดักชัน
  • ระยะเสถียร: คาดว่าจะเหมาะสำหรับสภาพแวดล้อมโปรดักชัน รวมถึงรองรับการเข้ารหัสที่เตรียมพร้อมรับยุคคอมพิวเตอร์ควอนตัม

รีลีสปัจจุบัน (20240101)

  • โค้ดมีขนาด 63899 คำ
  • อยู่ในสถานะเบตารีลีส

วิธีการรัน

  • TCPSERVER: tcpserver -HRDl0 0.0.0.0 22 /usr/sbin/tinysshd -v /etc/tinyssh/sshkeydir &
  • BUSYBOX: busybox tcpsvd 0 22 tinysshd -v /etc/tinyssh/sshkeydir &
  • INETD: เพิ่ม ssh stream tcp nowait root /usr/sbin/tinysshd tinysshd -l -v /etc/tinyssh/sshkeydir ลงในไฟล์ /etc/inetd.conf
  • SYSTEMD: ตั้งค่าและรันบริการผ่านไฟล์ tinysshd.socket และ tinysshd@.service

ความเห็นของ GN⁺

  • tinysshd เป็นเซิร์ฟเวอร์ SSH ที่มีความสามารถขั้นต่ำ โดยมีการออกแบบที่เน้นความปลอดภัยเป็นจุดเด่น ซึ่งมีข้อดีคือเบาเพราะไม่มีความสามารถส่วนเกิน และอาจมีช่องโหว่ด้านความปลอดภัยน้อยกว่า
  • เนื่องจากเซิร์ฟเวอร์ SSH เป็นองค์ประกอบสำคัญของความปลอดภัยเครือข่าย แนวทางแบบมินิมัลอย่าง tinysshd จึงอาจมีประโยชน์อย่างยิ่งในสภาพแวดล้อมที่ให้ความสำคัญกับความปลอดภัย
  • อย่างไรก็ตาม สำหรับผู้ใช้บางราย การไม่มีความสามารถขั้นสูงอย่างการส่งต่อพอร์ตหรือการส่งต่อ X11 อาจเป็นข้อเสีย
  • การรองรับการเข้ารหัสที่เตรียมพร้อมรับยุคคอมพิวเตอร์ควอนตัมเป็นแนวทางที่มองไปข้างหน้า และสะท้อนถึงความใส่ใจด้านความปลอดภัยและการอัปเดตอย่างต่อเนื่อง
  • โครงการโอเพนซอร์สอื่นที่ให้ความสามารถคล้ายกันคือ OpenSSH ซึ่งมีความสามารถมากกว่า แต่ก็ซับซ้อนกว่าและมีประเด็นด้านความปลอดภัยที่ต้องดูแลมากกว่า
  • เมื่อนำ tinysshd มาใช้งาน ควรพิจารณาว่าข้อจำกัดด้านความสามารถสอดคล้องกับความต้องการของโครงการหรือไม่ โดยข้อดีที่ได้คือความเรียบง่ายและความปลอดภัยที่เข้มแข็งขึ้น ส่วนข้อเสียคือการไม่มีความสามารถขั้นสูงบางอย่าง

1 ความคิดเห็น

 
GN⁺ 2024-03-25
ความเห็นจาก Hacker News
  • กรณีใช้งานของ TinySSH:

    • ใช้สำหรับปลดล็อกไดรฟ์ที่เข้ารหัสจากระยะไกลระหว่างการบูต Linux
    • ใช้ dm-crypt/LUKS และ ZFS บนเซิร์ฟเวอร์ NAS แบบ headless
    • เมื่ออัปเดตเคอร์เนล/ZFS จะรีบูตเซิร์ฟเวอร์จากระยะไกล แล้วเชื่อมต่อไปยังพรอมป์ต์คีย์เข้ารหัสผ่าน TinySSH เพื่อปลดล็อกไดรฟ์
    • เมื่อ TinySSH ปิดตัวลง ก็จะถูกออกจากระบบ SSH ทันที และถ้าเชื่อมต่อ SSH อีกครั้งหลังจากนั้นไม่กี่วินาที ก็จะเข้าถึงระบบที่บูตเสร็จสมบูรณ์แล้วได้
  • ลิงก์ที่เกี่ยวข้องกับ TinySSH:

    • ตอนนี้เข้าถึงได้ยากเนื่องจากผลของ Slashdot effect
    • สามารถดูหน้า TinySSH ได้ผ่าน Web Archive
  • ความเห็นเกี่ยวกับปริมาณโค้ดของ TinySSH:

    • การอธิบายปริมาณโค้ดเป็น "จำนวนคำ" ฟังดูน่าสนใจ
    • โดยทั่วไป โปรเจ็กต์ที่เน้นความปลอดภัยมักจะโปรโมตว่าเป็น "โค้ด X บรรทัด" แต่การใช้ "คำ" ถือว่าไม่ค่อยพบ
  • ขอบเขตการรองรับของ TinySSH:

    • น่าเสียดายที่ไม่รองรับ ed25519-sk
    • นอกเหนือจากนั้นก็ดูมีอนาคตมาก
  • ความสามารถในการตรวจสอบโค้ดของ TinySSH:

    • มีการตั้งคำถามว่าโค้ด 100,000 คำนั้นอยู่ในระดับที่ตรวจสอบได้ง่ายจริงหรือไม่
  • คำถามเกี่ยวกับความแตกต่างระหว่าง TinySSH กับ Dropbear SSH

  • ความเห็นเกี่ยวกับการแทนที่ OpenSSH:

    • OpenSSH ถูกใช้งานโดยผู้คนจำนวนมากและผ่านการพิสูจน์มานาน จึงมีความเสถียรและน่าเชื่อถือสูง
    • OpenSSH มาจาก OpenBSD ซึ่งขึ้นชื่อเรื่องความรอบคอบในการเขียนโค้ดด้านความปลอดภัย
    • แทนที่จะเปลี่ยน OpenSSH ทั้งหมด ควรหันไปใช้การยืนยันตัวตนด้วยกุญแจ และเสริมความแข็งแกร่งให้ OpenSSH ด้วยการปรับแต่งคอนฟิกง่าย ๆ ไม่กี่อย่าง รวมถึงแนวคิดการตั้งค่าของ Mozilla
  • คำชื่นชมต่อผลงานของผู้พัฒนา TinySSH:

    • นอกจาก TinySSH แล้ว ยังพัฒนา network utility และเซิร์ฟเวอร์ขนาดเล็กอื่น ๆ อีกหลายตัว
    • งานเหล่านี้ดูเหมือนเกิดจากความพยายามที่จะ "สร้าง" บางอย่างขึ้นมาและทำความเข้าใจมันอย่างลึกซึ้ง
  • ฟีเจอร์ด้านความปลอดภัยของ TinySSH:

    • TinySSH ไม่ได้ implement ฟีเจอร์ที่ไม่ปลอดภัย เช่น การยืนยันตัวตนด้วยรหัสผ่านหรือแบบอิงโฮสต์
    • มีคำถามเกี่ยวกับวิธีลงทะเบียน private key บนอุปกรณ์ที่ใช้ร่วมกัน