3 คะแนน โดย GN⁺ 2025-01-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จากงานวิจัยพบว่าพบคีย์ DKIM สาธารณะขนาดน้อยกว่า 1,024 บิตมากกว่า 1,700 ตัว
  • หากเป็น RSA ขนาดน้อยกว่า 1,024 บิตแล้วการรักษาความปลอดภัยจะอ่อนแอ และถูกยกเลิกการใช้งานตั้งแต่หลัง RFC 8301 ปี 2018
  • วัตถุประสงค์การทดสอบ: สกัดคีย์ส่วนตัวจากคีย์สาธารณะ RSA 512 บิต เพื่อยืนยันว่าผ่านการตรวจสอบ DKIM บนผู้ให้บริการอีเมลหลัก (Gmail, Outlook, Yahoo Mail ฯลฯ) หรือไม่
    • ทดสอบว่าสามารถลงนามอีเมลเพื่อให้ดูเหมือนผู้ส่งต้นทางได้หรือไม่

การถอดรหัสคีย์สาธารณะ RSA และการสร้างคีย์

  • คีย์สาธารณะคือคีย์ RSA 512 บิตของโดเมน Redfin.com ซึ่งเข้ารหัสด้วยรูปแบบ ASN.1 DER และถูกเข้ารหัสด้วย Base64 เพิ่มเติม
  • กระบวนการถอดรหัสคีย์
    • ถอดรหัสคีย์สาธารณะที่เข้ารหัส Base64 ในแท็ก p ด้วย Python
    • สกัดค่า n (modulus) และ e (public exponent)
  • การแยกตัวประกอบของโมดูลัส RSA
    • ใช้ CADO-NFS: อิงตามอัลกอริทึม Number Field Sieve
    • สเปกเซิร์ฟเวอร์คลาวด์: 8 vCPU, 32GB RAM (ใช้ Hetzner)
    • ตั้งค่า swap เสริม 32GB แล้วรัน CADO-NFS
    • ผลลัพธ์: ใช้เวลา 86 ชั่วโมงและแยก n ออกเป็นตัวประกอบเฉพาะ p และ q ได้สำเร็จ
  • การสร้างคีย์ส่วนตัว RSA
    • สร้างคีย์ส่วนตัว RSA จาก p และ q
    • ใช้ Python และไลบรารี PyCryptodome เพื่อส่งออกคีย์ส่วนตัวในรูปแบบ PEM

ทดสอบลายเซ็น DKIM

  • รวมคีย์ส่วนตัวเข้ากับ OpenDKIM แล้วส่งอีเมล
  • ตรวจสอบผลการตรวจสอบ DKIM ในผู้ให้บริการอีเมลหลายราย
  • ผลการทดสอบ:
    • ผ่าน DKIM: Yahoo Mail, Mailfence, Tuta
    • ล้มเหลว DKIM: Gmail, Outlook, Zoho, Fastmail และอื่น ๆ
  • Yahoo, Mailfence และ Tuta ไม่พบช่องโหว่ของคีย์ 512 บิตและให้ผ่านการตรวจสอบ

ข้อสรุป

  • ความเปราะบางของคีย์ RSA 512 บิต
    • ที่เคยทำได้ด้วยซูเปอร์คอมพิวเตอร์เมื่อ 30 ปีก่อน ตอนนี้ทำได้ในคลาวด์ภายในเวลาไม่กี่ชั่วโมงด้วยต้นทุนไม่เกิน 8 ดอลลาร์
    • ไม่ควรใช้คีย์ที่ต่ำกว่า 1,024 บิตเมื่อทำ DKIM signature
  • คำแนะนำ
    • ผู้ให้บริการอีเมลควรปฏิเสธอัตโนมัติ DKIM ที่ใช้คีย์ RSA ต่ำกว่า 1,024 บิต
    • เจ้าของโดเมนควรตรวจสอบระเบียน DKIM และอัปเดตเป็นคีย์ที่มีขนาดอย่างน้อย 1,024 บิต
    • สามารถตรวจสอบคีย์ DKIM ได้ด้วยความยาวสตริง Base64: คีย์ 1,024 บิตมีอย่างน้อย 216 ตัวอักษร

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

 
GN⁺ 2025-01-09
ความคิดเห็นจาก Hacker News
  • มีการกล่าวถึงการเขียนโพสต์เมื่อ 14 ปีก่อนว่าเคสบางอย่างยังสามารถทำได้ด้วยคีย์ 512 บิต ขณะผู้คนค้นหาตัวประกอบของจำนวนเฉพาะหรือตามหาบิทคอยน์ จึงมีข้อสงสัยว่าอาจมีไลบรารี "ทางลัด" ที่ลดขอบเขตพื้นที่ค้นหาได้หรือไม่ และตั้งคำถามว่าไลบรารีแบบนั้นอาจส่งผลต่อการออกแบบบริการด้านการเข้ารหัสอย่างไร

  • มีข้อเสนอแนะให้ลองตั้งค่า DKIM key ขนาด 4096 บิตในการทดลอง แม้ว่าตัวตรวจสอบ DKIM/SPF ออนไลน์ส่วนใหญ่รายงานว่าตรวจสอบ DNS ได้ปกติ แต่เมื่อส่งอีเมลทดสอบกลับกลับเป็นผลล้มเหลว อย่างไรก็ตามได้เรียนรู้ว่าการใช้คีย์มากกว่า 2048 บิตนั้นได้รับอนุญาต แม้การรองรับเพิ่มเติมจะไม่จำเป็น

  • มีคำถามว่าเหตุใดจึงไม่เพิ่มขนาดคีย์ในงานเข้ารหัสอย่างมาก ทั้งที่ประสิทธิภาพการคำนวณเพิ่มขึ้นอย่างรวดเร็ว และการถกเถียงเรื่องคอมพิวเตอร์ควอนตัมยังคงดำเนินต่อไป เหตุใดจึงไม่ใช้คีย์ที่ใหญ่ขึ้นเพื่อเพิ่มความปลอดภัย

  • ใช้ CADO-NFS แยกคีย์ 512 บิต RSA DKIM ได้ภายใน 28 ชั่วโมงด้วยคอมพิวเตอร์เดสก์ท็อป บอกว่า คีย์ 1024 บิตยังคงยากเกินไปในระดับงานอดิเรก แต่เชื่อว่าด้านวิชาการสามารถทำได้

  • ชื่อบทความมีการปรับเปลี่ยนเล็กน้อย ชื่อเดิมคือ “How We Cracked a 512-Bit DKIM Key for Less Than $8 in the Cloud”

  • ผู้ให้บริการ DNS บางรายมีการจำกัดให้ตั้งค่าคีย์ได้เพียง 1024 บิตเท่านั้น ตัวอย่างเช่น wordpress.com

  • Hover ไม่รองรับ TXT record ยาวเกิน 255 ตัวอักษร จึงต้องหยุดการจัดการ DNS ชั่วคราว และแก้ไขด้วยการใช้ Digital Ocean หวังว่าการเข้ารหัสแบบ ECC (อิลิปติกเคิร์ฟ) จะกลายเป็นมาตรฐาน

  • ผู้ให้บริการส่วนใหญ่มองว่าคีย์ 512 บิตไม่ปลอดภัยและปฏิเสธการลงลายเซ็น DKIM แต่ Yahoo Mail, Mailfence, Tuta รายงานผล dkim=pass จึงมีคำถามว่ายอดจาก Google ล้มเหลวเพราะลายเซ็น DKIM หรือมาจากความล้มเหลวของ SPF

  • มีการชมเชยแนวทางปฏิบัติที่ใช้งานได้จริง ไม่ชัดเจนว่าบทความนี้เก่าแค่ไหน แต่เชื่อว่ามาจากโพสต์ก่อนหน้าของผู้เขียนและน่าจะถูกเขียนขึ้นใหม่ในวันนี้