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