DomainKeys ระบุอีเมล
| ชุดโปรโตคอลอินเทอร์เน็ต |
|---|
| ชั้นแอปพลิเคชัน |
| ชั้นการขนส่ง |
| ชั้นอินเทอร์เน็ต |
| เลเยอร์เชื่อมโยง |
DomainKeys Identified Mail ( DKIM ) เป็น วิธี การตรวจสอบความถูกต้องของอีเมลที่อนุญาตให้บุคคล บทบาท หรือองค์กรที่เป็นเจ้าของโดเมนลงนามสามารถอ้างความรับผิดชอบบางส่วนต่อข้อความได้โดยการเชื่อมโยงโดเมนกับข้อความนั้น
ผู้รับสามารถตรวจสอบได้ว่าอีเมลที่อ้างว่ามาจากโดเมน เฉพาะ นั้นได้รับอนุญาตจากเจ้าของโดเมนนั้นจริงหรือไม่[ 1 ]โดยทำได้โดยการแนบลายเซ็นดิจิทัลที่เชื่อมโยงกับชื่อโดเมนลงในข้อความอีเมลขาออกแต่ละฉบับ ระบบของผู้รับสามารถตรวจสอบได้โดยการค้นหาคีย์สาธารณะ ของผู้ส่ง ที่เผยแพร่ในDNSลายเซ็นที่ถูกต้องยังรับประกันว่าบางส่วนของอีเมล (อาจรวมถึงไฟล์แนบ ) ไม่ได้รับการแก้ไขนับตั้งแต่มีการแนบลายเซ็น[ 2 ]โดยปกติแล้ว ลายเซ็น DKIM จะไม่ปรากฏให้ผู้ใช้ปลายทางเห็น และจะถูกแนบหรือตรวจสอบโดยโครงสร้างพื้นฐานมากกว่าผู้เขียนและผู้รับข้อความ
DKIM เป็นมาตรฐานอินเทอร์เน็ต [ 3 ]ได้รับการกำหนดไว้ในRFC 6376 ลงวันที่ กันยายน 2011 พร้อมการอัปเดตในRFC 8301 , RFC 8463 , RFC 8553และRFC 8616
ภาพรวม
ความจำเป็นในการตรวจสอบยืนยันอีเมลเกิดขึ้นเนื่องจากที่อยู่และเนื้อหาที่ปลอมแปลงนั้นสร้างได้ง่ายและถูกนำไปใช้อย่างแพร่หลายในการส่งสแปมฟิชชิ่งและการฉ้อโกงทางอีเมลอื่นๆตัวอย่างเช่น ผู้ฉ้อโกงอาจส่งข้อความที่อ้างว่ามาจาก[email protected]โดยมีเป้าหมายเพื่อโน้มน้าวให้ผู้รับยอมรับและอ่านอีเมลนั้น และเป็นเรื่องยากสำหรับผู้รับที่จะตรวจสอบว่าควรเชื่อถือข้อความนี้หรือไม่ ผู้ดูแลระบบยังต้องจัดการกับข้อร้องเรียนเกี่ยวกับอีเมลที่เป็นอันตรายซึ่งดูเหมือนว่าจะมาจากระบบของตน แต่ไม่ใช่[ 4 ]
DKIM ช่วยให้สามารถลงนามในข้อความได้ และอนุญาตให้ผู้ลงนาม ( องค์กร ผู้ส่ง ) สื่อสารได้ว่าอีเมลใดที่ตนพิจารณาว่าถูกต้องตามกฎหมาย อย่างไรก็ตาม DKIM ไม่ได้ป้องกันหรือเปิดเผยพฤติกรรมที่ไม่เหมาะสมโดยตรง
DKIM ยังมีกระบวนการตรวจสอบความถูกต้องของข้อความที่ลงนามแล้วด้วย โดยปกติแล้วโมดูลตรวจสอบความถูกต้องจะทำหน้าที่ในนามของ องค์กร ผู้รับซึ่งอาจทำในแต่ละช่วงการส่งต่อข้อมูล
ทั้งหมดนี้เป็นอิสระจาก แง่มุมการกำหนดเส้นทางของ Simple Mail Transfer Protocol (SMTP) เนื่องจากทำงานกับข้อความ RFC 5322 ซึ่ง ก็คือส่วนหัวและเนื้อหาของอีเมลที่ส่งผ่าน ไม่ใช่ "ซองจดหมาย" SMTP ที่กำหนดไว้ใน RFC 5321 ดังนั้น ลายเซ็น DKIM จึงยังคงใช้งานได้แม้จะมีการส่งต่อแบบพื้นฐานผ่านตัวแทนการถ่ายโอนข้อความ หลายตัว
รายละเอียดทางเทคนิค
การลงนาม
องค์กรที่ลงนามอาจเป็นผู้จัดการข้อความโดยตรง เช่น ผู้เขียนตัวแทนส่งอีเมลเว็บไซต์ หรือตัวกลางอื่นๆ ตามเส้นทางการส่งผ่าน หรืออาจเป็นผู้จัดการทางอ้อม เช่น บริการอิสระที่ให้ความช่วยเหลือแก่ผู้จัดการโดยตรง
โมดูลการลงนามจะแทรกฟิลด์ส่วนหัวอย่างน้อยหนึ่งDKIM-Signature:ฟิลด์ ซึ่งอาจทำในนามของ องค์กร ผู้เขียนหรือผู้ให้บริการต้นทาง ข้อกำหนดอนุญาตให้ผู้ลงนามเลือกฟิลด์ส่วนหัว ที่ จะลงนาม แต่From:ฟิลด์นั้นจะต้องได้รับการลงนามเสมอ[ 5 ] [ 6 ]ฟิลด์ส่วนหัวที่ได้จะประกอบด้วยรายการtag=valueส่วนต่างๆ ดังตัวอย่างด้านล่าง:
DKIM-Signature: v=1; a=rsa-sha256; d= example.net ; s=brisbane; c=relaxed/simple; q=dns/txt; [email protected] ; t=1117574938; x=1118006938; l=200; h=from:to:subject:date:keywords:keywords; z=From: [email protected] |To: [email protected] | Subject:demo=20run|Date:July=205,=202005=203:44:08=20PM=20-0700; bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=; b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ VoG4ZHRNiYzR โดยแท็กที่ใช้มีดังนี้:
- v (จำเป็น), เวอร์ชัน
- อัลกอริทึมการลงนาม (จำเป็น)
- d (จำเป็น), ตัวระบุโดเมนการลงนาม (SDID)
- s (จำเป็น), ตัวเลือก
- c (ไม่บังคับ) อัลกอริทึม การแปลงส่วนหัวและส่วนเนื้อหาให้ เป็นรูปแบบมาตรฐาน
- q (ตัวเลือกเสริม) วิธีการค้นหาเริ่มต้น
- i (ไม่บังคับ), รหัสประจำตัวตัวแทนหรือผู้ใช้ (AUID)
- t (แนะนำ), เวลาประทับลายเซ็น
- x (แนะนำ), เวลาหมดอายุ
- l (ไม่บังคับ) ความยาวลำตัว
- h (จำเป็น), ฟิลด์ส่วนหัว - รายชื่อฟิลด์ที่ได้รับการลงนาม
- z (ตัวเลือกเสริม), ฟิลด์ส่วนหัว - สำเนาของฟิลด์ส่วนหัวและค่าที่เลือกไว้
- bh (จำเป็น), แฮชของเนื้อหา
- ข (จำเป็น) ลายเซ็นของส่วนหัวและส่วนเนื้อหา
ส่วนที่เกี่ยวข้องมากที่สุด ได้แก่bสำหรับลายเซ็นดิจิทัลจริงของเนื้อหา (ส่วนหัวและส่วนเนื้อหา) ของข้อความอีเมล, bhสำหรับแฮชของเนื้อหา (ซึ่งอาจจำกัดเฉพาะอ็อกเท็ตแรกlตัวของเนื้อหา), dสำหรับโดเมนที่ลงนาม และsสำหรับตัวเลือก
สามารถระบุตัวระบุตัวแทนหรือผู้ใช้ (AUID) ได้ตามต้องการ โดยรูปแบบจะเป็นที่อยู่อีเมลพร้อมส่วนท้องถิ่นที่เป็นตัวเลือก โดเมนต้องเท่ากับหรือเป็นโดเมนย่อยของโดเมนที่ลงนาม ความหมายของ AUID นั้นไม่ได้กำหนดไว้อย่างชัดเจน และโดเมนที่ลงนามอาจใช้เพื่อกำหนดขอบเขตความรับผิดชอบที่ละเอียดขึ้นได้
ทั้งส่วนหัวและส่วนเนื้อหามีส่วนช่วยในการสร้างลายเซ็น ขั้นแรก ส่วนเนื้อหาของข้อความจะถูกแฮช โดยเริ่มจากส่วนต้นเสมอ และอาจถูกตัดให้เหลือความยาวl ที่กำหนด (ซึ่งอาจเป็นศูนย์ก็ได้) ขั้นที่สอง ฟิลด์ส่วนหัวที่เลือกไว้จะถูกแฮชตามลำดับที่กำหนดโดยhชื่อฟิลด์ที่ซ้ำกันจะถูกจับคู่จากด้านล่างของส่วนหัวขึ้นไป ซึ่งเป็นลำดับที่Received:ฟิลด์ถูกแทรกในส่วนหัว ฟิลด์ที่ไม่มีอยู่จริงจะตรงกับสตริงว่าง ดังนั้นการเพิ่มฟิลด์ที่มีชื่อนั้นจะทำให้ลายเซ็นเสียหายDKIM-Signature:ฟิลด์ของลายเซ็นที่กำลังสร้าง โดยที่bhเท่ากับค่าแฮชของเนื้อหาที่คำนวณได้ และbเท่ากับสตริงว่าง จะถูกเพิ่มเข้าไปในค่าแฮชที่สองโดยปริยาย แม้ว่าชื่อของฟิลด์นั้นจะต้องไม่ปรากฏในhก็ตาม หากปรากฏ จะหมายถึงลายเซ็นอื่นที่มีอยู่ก่อนแล้ว สำหรับค่าแฮชทั้งสอง ข้อความจะถูกทำให้เป็นรูปแบบมาตรฐานตาม อัลกอริทึม c ที่เกี่ยวข้อง ผลลัพธ์หลังจากเข้ารหัสด้วย คีย์ส่วนตัวของผู้ลงนามและเข้ารหัสโดยใช้ Base64 คือb
นอกเหนือจากรายการฟิลด์ส่วนหัวที่ระบุไว้ในhแล้ว อาจมีรายการฟิลด์ส่วนหัว (รวมทั้งชื่อฟิลด์และค่า) ที่มีอยู่ ณ เวลาที่ลงนามอยู่ในzรายการนี้ไม่จำเป็นต้องตรงกับรายการส่วนหัวในh
อัลกอริทึม ฟิลด์ และความยาวของเนื้อหาจะถูกเลือกเพื่อให้มั่นใจได้ว่าการระบุข้อความจะไม่คลุมเครือ ในขณะเดียวกันก็ยังคงอนุญาตให้ลายเซ็นสามารถคงอยู่ได้แม้จะมีการเปลี่ยนแปลงที่หลีกเลี่ยงไม่ได้ซึ่งจะเกิดขึ้นระหว่างการส่ง ไม่มีการบอกเป็นนัยถึงความสมบูรณ์ของข้อมูลแบบ end-to-end [ 2 ]
การตรวจสอบ
เซิร์ฟเวอร์ SMTPผู้รับที่ต้องการตรวจสอบจะใช้ชื่อโดเมนและตัวเลือกเพื่อทำการค้นหา DNS [ 7 ]ตัวอย่างเช่น จากลายเซ็นตัวอย่างข้างต้น แท็ก dระบุโดเมนของผู้เขียนที่จะตรวจสอบ เช่นexample.netแท็ ก sระบุตัวเลือก เช่นbrisbaneสตริง_domainkeyเป็นส่วนคงที่ของข้อกำหนด ซึ่งระบุ ระเบียนทรัพยากร TXTที่จะค้นหาดังนี้:
brisbane._domainkey.example.net
โปรดทราบว่าตัวเลือกและชื่อโดเมนสามารถเป็น UTF-8 ในอีเมลสากลได้[ 8 ]ในกรณีนั้น ป้ายกำกับจะต้องถูกเข้ารหัสตามIDNA ก่อนการค้นหา ข้อมูลที่ส่งคืนจากการสอบถามของระเบียนนี้ยังเป็นรายการคู่แท็ก-ค่า ซึ่งรวมถึง คีย์สาธารณะของโดเมนพร้อมด้วยโทเค็นการใช้งานคีย์และแฟล็กอื่นๆ (เช่น จากบรรทัดคำสั่ง: nslookup -q=TXT brisbane._domainkey.example.net) ดังตัวอย่างนี้:
"k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDmzRmJRQxLEuyYiyMg4suA2Sy MwR5MGHpP9diNT1hRiwUd/mZp1ro7kIDTKS8ttkI6z6eTRW9e9dDOxzSxNuXmume60Cjbu08gOyhPG3 GfWdg7QkdN6kR4V75MFlw624VY35DaXBvnlTJTgRg/EW72O1DiYVThkyCgpSYS8nmEQIDAQAB"
แท็กที่ใช้งานได้คือ: [ 3 ]
- v (แนะนำ), เวอร์ชัน (ค่าเริ่มต้น
DKIM1ต้องเป็นแท็กแรกหากมีอยู่) - h (ตัวเลือกเสริม), อัลกอริทึมแฮชที่ยอมรับได้ (ค่าเริ่มต้นคือทั้งหมด)
- k (ไม่บังคับ), ประเภทคีย์ (ค่าเริ่มต้น
rsa) - หมายเหตุสำหรับผู้ดูแลระบบ (ไม่บังคับ) ที่อ่านง่าย
- p (จำเป็น), ข้อมูลกุญแจสาธารณะ (เข้ารหัสแบบ base64 หรือเว้นว่างไว้หากกุญแจสาธารณะถูกเพิกถอนแล้ว)
- s (ไม่บังคับ), ประเภทบริการ (ค่าเริ่มต้น
*, มิฉะนั้นemail) - t (ตัวเลือกเสริม), สลับสถานะ (รายการที่คั่นด้วยเครื่องหมายโคลอน ค่าเริ่มต้นคือไม่มี อาจรวมถึง
yสำหรับการทดสอบ DKIM โดยไม่ปฏิเสธการตรวจสอบลายเซ็นที่ล้มเหลว และ/หรือsซึ่งแนะนำสำหรับความเข้มงวดของโดเมนย่อยตามที่อธิบายไว้ใน RFC)
นอกจากนี้ ยังสามารถใช้ ระเบียนCNAMEเพื่อชี้ไปยังระเบียน TXT อื่นได้ เช่น ในกรณีที่องค์กรหนึ่งส่งอีเมลในนามของอีกองค์กรหนึ่ง
ผู้รับสามารถใช้คีย์สาธารณะ (ค่าของ แท็ก p ) เพื่อตรวจสอบความถูกต้องของลายเซ็นบนค่าแฮชในฟิลด์ส่วนหัว และตรวจสอบกับค่าแฮชของข้อความอีเมล (ส่วนหัวและเนื้อหา) ที่ได้รับ หากค่าทั้งสองตรงกัน จะเป็นการพิสูจน์ทางคริปโตกราฟีว่าอีเมลนั้นได้รับการลงนามโดยโดเมนที่ระบุและไม่ได้ถูกแก้ไขเปลี่ยนแปลงระหว่างการส่ง
ความล้มเหลวในการตรวจสอบลายเซ็นไม่ได้หมายความว่าข้อความนั้นจะถูกปฏิเสธ แต่ควรแจ้งเหตุผลที่แน่ชัดว่าทำไมจึงไม่สามารถพิสูจน์ความถูกต้องของข้อความได้ให้แก่กระบวนการต้นทางและปลายทางทราบ วิธีการดังกล่าวอาจรวมถึงการส่งข้อความ FBL กลับไป หรือการเพิ่มAuthentication-Results:ฟิลด์ส่วนหัวลงในข้อความตามที่อธิบายไว้ใน RFC 7001
สิทธิบัตร
DomainKeys ได้รับการคุ้มครองโดยสิทธิบัตรของสหรัฐอเมริกาหมายเลข 6,986,049 ซึ่งหมดอายุแล้ว Yahoo! ได้อนุญาตให้ใช้สิทธิบัตรภายใต้รูปแบบใบอนุญาตแบบคู่: ข้อตกลงใบอนุญาตสิทธิบัตร DomainKeys v1.2 [ 9 ]หรือใบอนุญาตสาธารณะทั่วไปของ GNU v2.0 (และไม่มีเวอร์ชันอื่น ) [ 10 ] [ 11 ]
ความสัมพันธ์กับ SPF และ DMARC
โดยพื้นฐานแล้ว ทั้ง DKIM และSPF ต่าง ก็มีมาตรการที่แตกต่างกันในการตรวจสอบ ความถูกต้องของอีเมล DMARCFrom: ช่วยให้องค์กรสามารถเผยแพร่นโยบายที่ระบุว่าจะใช้กลไกใด (DKIM, SPF หรือทั้งสองอย่าง) เมื่อส่งอีเมลจากโดเมนนั้น วิธีการตรวจสอบ ฟิลด์ที่แสดงต่อผู้ใช้ปลายทาง วิธีที่ผู้รับควรจัดการกับความล้มเหลว และกลไกการรายงานสำหรับการดำเนินการภายใต้นโยบายเหล่านั้น[ 12 ]
ข้อดี
ข้อได้เปรียบหลักของระบบนี้สำหรับผู้รับอีเมลคือการอนุญาตให้โดเมนที่ลงนามสามารถระบุสตรีมอีเมลที่ถูกต้องได้อย่างน่าเชื่อถือ ซึ่งจะทำให้บัญชีดำและบัญชีขาวตามโดเมนมีประสิทธิภาพมากขึ้น[ 13 ]นอกจากนี้ยังอาจทำให้การตรวจจับการโจมตีแบบฟิชชิ่ง บางประเภททำได้ง่ายขึ้นด้วย
มีแรงจูงใจบางประการที่ทำให้ผู้ส่งอีเมลควรลงชื่อในอีเมลขาออก:
- ระบบนี้ช่วยลดภาระงานด้านการตรวจสอบการละเมิดได้อย่างมากสำหรับโดเมนที่เปิดใช้งาน DKIM หากผู้รับอีเมลใช้ระบบ DKIM ในการระบุข้อความอีเมลปลอมที่อ้างว่ามาจากโดเมนนั้น
- จากนั้นเจ้าของโดเมนก็สามารถมุ่งเน้นพลังงานของทีมตรวจสอบการละเมิดไปที่ผู้ใช้ของตนเองที่ใช้โดเมนนั้นอย่างไม่เหมาะสมได้
ใช้ร่วมกับการกรองสแปม
DKIM เป็นวิธีการติดฉลากข้อความ และตัวมันเองไม่ได้กรองหรือระบุสแปม อย่างไรก็ตาม การใช้ DKIM อย่างแพร่หลายสามารถป้องกันผู้ส่งสแปมจากการปลอมแปลงที่อยู่ต้นทางของข้อความ ซึ่งเป็นเทคนิคที่พวกเขามักใช้ในปัจจุบัน หากผู้ส่งสแปมถูกบังคับให้แสดงโดเมนต้นทางที่ถูกต้อง เทคนิคการกรองอื่นๆ ก็จะทำงานได้อย่างมีประสิทธิภาพมากขึ้น โดยเฉพาะอย่างยิ่ง โดเมนต้นทางสามารถป้อนเข้าสู่ระบบชื่อเสียงเพื่อระบุสแปมได้ดียิ่งขึ้น ในทางกลับกัน DKIM สามารถทำให้การระบุอีเมลที่ทราบว่าไม่ใช่สแปมและไม่จำเป็นต้องกรองทำได้ง่ายขึ้น หากระบบรับมีรายการโดเมนผู้ส่งที่ดีที่ทราบอยู่แล้ว ไม่ว่าจะได้รับการดูแลในพื้นที่หรือจากผู้รับรองบุคคลที่สาม ระบบก็สามารถข้ามการกรองอีเมลที่ลงนามจากโดเมนเหล่านั้น และอาจกรองอีเมลที่เหลืออย่างเข้มงวดมากขึ้น[ 13 ]
การป้องกันฟิชชิ่ง
DKIM มีประโยชน์ในฐานะเทคโนโลยีป้องกันฟิชชิงผู้ส่งอีเมลในโดเมนที่มีการฟิชชิงอย่างหนักสามารถลงนามในอีเมลของตนเพื่อแสดงว่าเป็นของแท้ ผู้รับสามารถตีความการไม่มีลายเซ็นที่ถูกต้องในอีเมลจากโดเมนเหล่านั้นว่าเป็นข้อบ่งชี้ว่าอีเมลนั้นน่าจะเป็นของปลอม วิธีที่ดีที่สุดในการกำหนดชุดของโดเมนที่สมควรได้รับการตรวจสอบในระดับนี้ยังคงเป็นคำถามที่เปิดกว้าง DKIM เคยมีฟีเจอร์เสริมที่เรียกว่าADSPซึ่งช่วยให้ผู้เขียนที่ลงนามในอีเมลทั้งหมดสามารถระบุตัวตนได้ แต่ถูกลดระดับเป็นสถานะในอดีตในเดือนพฤศจิกายน 2013 [ 14 ]ในทางกลับกันDMARCสามารถใช้เพื่อวัตถุประสงค์เดียวกันได้[ 15 ]และอนุญาตให้โดเมนเผยแพร่เทคนิค (รวมถึงSPFและ DKIM) ที่พวกเขาใช้ ซึ่งทำให้ผู้รับสามารถตัดสินใจได้อย่างมีข้อมูลมากขึ้นว่าอีเมลใดเป็นสแปมหรือไม่[ 16 ]ตัวอย่างเช่น การใช้ DMARC ทั้งeBayและPayPalต่างก็เผยแพร่นโยบายที่ระบุว่าอีเมลทั้งหมดของพวกเขาจะต้องได้รับการตรวจสอบความถูกต้อง และขอให้ระบบรับอีเมลใดๆ เช่นGmailปฏิเสธอีเมลใดๆ ที่ไม่ได้รับการตรวจสอบความถูกต้อง[ 17 ]
ความเข้ากันได้
เนื่องจากมีการใช้งานโดยใช้ระเบียน DNS และฟิลด์ส่วนหัว RFC 5322 เพิ่มเติม DKIM จึงเข้ากันได้กับโครงสร้างพื้นฐานอีเมลที่มีอยู่ โดยเฉพาะอย่างยิ่ง ระบบอีเมลที่มีอยู่ซึ่งไม่รองรับ DKIM จะโปร่งใส[ 18 ]
แนวทางการออกแบบนี้ยังเข้ากันได้กับบริการอื่นๆ ที่เกี่ยวข้อง เช่นมาตรฐานการปกป้องเนื้อหาS/MIMEและOpenPGP นอกจากนี้ DKIM ยังเข้ากันได้กับมาตรฐาน DNSSECและSPF อีก ด้วย
ค่าใช้จ่ายในการคำนวณ
DKIM กำหนดให้ต้องสร้าง checksum การเข้ารหัสสำหรับแต่ละข้อความที่ส่งผ่านเซิร์ฟเวอร์อีเมล ซึ่งส่งผลให้เกิดภาระการคำนวณที่ไม่จำเป็นสำหรับการส่งอีเมล ภาระการคำนวณเพิ่มเติมนี้เป็นลักษณะเด่นของตราประทับดิจิทัล ทำให้การส่งสแปมจำนวนมากมีค่าใช้จ่าย (ในการคำนวณ) มากขึ้น[ 19 ] ลักษณะนี้ของ DKIM อาจดูคล้ายกับhashcashยกเว้นว่าการตรวจสอบฝั่งผู้รับเป็นงานที่น้อยมาก ในขณะที่อัลกอริทึม hashcash ทั่วไปจะต้องใช้ความพยายามมากกว่ามาก
การไม่สามารถปฏิเสธได้
คุณสมบัติ การปฏิเสธความรับผิดชอบของ DKIM ป้องกันไม่ให้ผู้ส่ง (เช่น สแปมเมอร์) ปฏิเสธได้อย่างน่าเชื่อถือว่าไม่ได้ส่งอีเมล ซึ่งพิสูจน์แล้วว่ามีประโยชน์ต่อแหล่งข่าวอย่างWikiLeaksซึ่งสามารถใช้ลายเซ็นเนื้อหา DKIM เพื่อพิสูจน์ว่าอีเมลที่รั่วไหลนั้นเป็นของแท้และไม่ได้ถูกดัดแปลง[ 20 ]ในทางปฏิบัติ การตรวจสอบอีเมลเก่าจำนวนมากทำได้ยากเนื่องจากการหมุนเวียนคีย์และความยากลำบากในการค้นหาคีย์ดั้งเดิมก่อนการหมุนเวียน เนื่องจากไม่มีการเผยแพร่ที่ใดเลย วิธีหนึ่งในการตรวจสอบอีเมลเก่าคือการใช้คลังข้อมูลที่รวบรวมลายเซ็นและตัวเลือกจากอีเมลที่มีอยู่ และสามารถกู้คืนคีย์สาธารณะที่หมดอายุจากคู่ลายเซ็นที่ทำโดยคีย์เดียวกันได้[ 21 ]
Matthew D. Greenถือว่าการไม่สามารถปฏิเสธได้เป็นคุณสมบัติที่ไม่พึงประสงค์ของ DKIM ซึ่งถูกบังคับโดยพฤติกรรมต่างๆ เช่นที่ได้อธิบายไว้ข้างต้น อันที่จริง โปรโตคอล DKIM กำหนดให้มีการหมดอายุ มี แท็ก x ที่เป็นตัวเลือก ในแต่ละลายเซ็น ซึ่งกำหนดเวลาหมดอายุอย่างเป็นทางการ อย่างไรก็ตาม ผู้ตรวจสอบสามารถเพิกเฉยได้ นอกจากนี้ เจ้าของโดเมนสามารถเพิกถอนคีย์สาธารณะได้โดยการลบข้อมูลการเข้ารหัสออกจากบันทึก ซึ่งจะป้องกันการตรวจสอบลายเซ็น เว้นแต่จะมีคนบันทึกข้อมูลคีย์สาธารณะไว้ก่อนหน้านี้ การหมุนเวียนคีย์ DKIM มักได้รับการแนะนำเพื่อลดผลกระทบของคีย์ที่ถูกบุกรุก อย่างไรก็ตาม เพื่อปิดใช้งานการไม่สามารถปฏิเสธได้อย่างแน่นอน คีย์ลับที่หมดอายุแล้วสามารถเผยแพร่ได้ ซึ่งจะทำให้ทุกคนสามารถสร้างลายเซ็นปลอมได้ จึงทำให้ความสำคัญของลายเซ็นดั้งเดิมเป็นโมฆะ[ 22 ] [ 23 ] [ 24 ]
การแก้ไขที่พิสูจน์ได้
โดยค่าเริ่มต้น การเผยแพร่อีเมลที่ถูกแก้ไขจะไม่สามารถตรวจสอบได้ เนื่องจากไม่สามารถสร้างแฮชเนื้อหา DKIM ได้ อย่างไรก็ตาม คุณยังสามารถตรวจสอบอีเมลดังกล่าวได้ หากเจ้าของสร้างหลักฐานความรู้เป็นศูนย์ของลายเซ็น DKIM บนส่วนหัวหรือข้อความเนื้อหาที่ถูกปิดบังไว้ ในขณะที่จำกัดส่วนที่เปิดเผยให้ตรงกับข้อความที่ลงนาม การใช้งานมักใช้ regex หรือการปิดบังเพื่อซ่อนหรือแสดงเนื้อหาที่เลือก หลักฐานนี้สามารถให้แทนลายเซ็น DKIM แก่บุคคลที่สามเพื่อให้ทุกคนสามารถตรวจสอบความถูกต้องของอีเมลได้[ 25 ]หลักฐานเหล่านี้ยังสามารถสร้างขึ้นในเครื่องของผู้ใช้ได้ เพื่อไม่ให้ข้อมูลที่ถูกแก้ไขถูกส่งไปยังบุคคลที่สาม สามารถใช้เพื่อสร้างกระดานข้อความนิรนามที่ปลอดภัยด้วยข้อมูลประจำตัวที่เป็นส่วนตัว แต่มีการตรวจสอบความสัมพันธ์ เช่น Blind ที่เป็นส่วนตัวอย่างสมบูรณ์ นอกจากนี้ยังสามารถใช้เมื่อจำเป็นต้องตรวจสอบความถูกต้องของการอ้างสิทธิ์ของผู้ส่ง แต่ผู้รับต้องการคงความเป็นนิรนาม
จุดอ่อน
RFC เองระบุเวกเตอร์การโจมตีที่เป็นไปได้จำนวนหนึ่ง[ 26 ]
ลายเซ็น DKIM ไม่ครอบคลุมส่วนซองจดหมายของข้อความ ซึ่งประกอบด้วยเส้นทางส่งกลับและผู้รับข้อความ เนื่องจาก DKIM ไม่ได้พยายามป้องกันการระบุที่อยู่ผิดพลาด ดังนั้นจึงไม่ส่งผลกระทบต่อประโยชน์ใช้สอยของมัน
มีข้อกังวลหลายประการที่ถูกหยิบยกขึ้นมาและถูกหักล้างในปี 2013 ในช่วงเวลาของการกำหนดมาตรฐาน[ 27 ]
ข้อกังวลสำหรับโซลูชันการเข้ารหัสใดๆ ก็คือ การ ใช้ข้อความซ้ำในทาง ที่ผิด ซึ่งเป็นการหลีกเลี่ยงเทคนิคที่ปัจจุบันจำกัดระดับการละเมิดจากโดเมนขนาดใหญ่การใช้ข้อความซ้ำสามารถอนุมานได้โดยการใช้คีย์สาธารณะต่อข้อความ ติดตามการสืบค้น DNS สำหรับคีย์เหล่านั้น และกรองการสืบค้นจำนวนมากที่เกิดจากการส่งอีเมลไปยังรายชื่อผู้รับจำนวนมาก หรือการสืบค้นที่เป็นอันตรายโดยผู้ไม่ประสงค์ดี
สำหรับการเปรียบเทียบวิธีการต่างๆ ที่ใช้แก้ปัญหาเดียวกันนี้ โปรดดูที่ การตรวจ สอบสิทธิ์อีเมล
การส่งต่อตามอำเภอใจ
ดังที่กล่าวไว้ข้างต้น การตรวจสอบสิทธิ์ไม่เหมือนกับการป้องกันการละเมิด ผู้ใช้อีเมลที่เป็นอันตรายของโดเมนที่มีชื่อเสียงสามารถเขียนข้อความที่ไม่ดีและให้มีการลงนาม DKIM แล้วส่งจากโดเมนนั้นไปยังกล่องจดหมายใดก็ได้ที่พวกเขาสามารถดึงข้อมูลเป็นไฟล์ได้ เพื่อให้ได้สำเนาข้อความที่ลงนามแล้ว การใช้ แท็ก lในลายเซ็นทำให้การแก้ไขข้อความดังกล่าวทำได้ง่ายยิ่งขึ้น จากนั้นสำเนาที่ลงนามแล้วสามารถส่งต่อไปยังผู้รับนับล้านคน เช่น ผ่านบอทเน็ตโดยไม่มีการควบคุม ผู้ให้บริการอีเมลที่ลงนามในข้อความสามารถบล็อกผู้ใช้ที่กระทำผิดได้ แต่ไม่สามารถหยุดการแพร่กระจายของข้อความที่ลงนามแล้วได้ ความถูกต้องของลายเซ็นในข้อความดังกล่าวสามารถจำกัดได้โดยการรวมแท็กเวลาหมดอายุไว้ในลายเซ็นเสมอ หรือโดยการเพิกถอนคีย์สาธารณะเป็นระยะ หรือเมื่อได้รับการแจ้งเตือนเกี่ยวกับเหตุการณ์ ประสิทธิภาพของสถานการณ์แทบจะไม่สามารถจำกัดได้ด้วยการกรองอีเมลขาออก เนื่องจากนั่นหมายถึงความสามารถในการตรวจจับว่าข้อความอาจเป็นประโยชน์ต่อผู้ส่งสแปมหรือไม่[ 28 ]
การแก้ไขเนื้อหา
ปัจจุบัน DKIM มี อัลกอริ ธึมการทำให้เป็นมาตรฐาน สองแบบ คือแบบง่ายและแบบผ่อนปรนซึ่งทั้งสองแบบไม่ได้คำนึงถึงMIME [ 29 ] เซิร์ฟเวอร์อีเมลสามารถแปลงเป็นชุดอักขระอื่นได้อย่างถูกต้องตามกฎหมาย และมักจะบันทึกสิ่งนี้ไว้ในฟิลด์ส่วนหัว นอกจากนี้ ในบางสถานการณ์ เซิร์ฟเวอร์ต้องเขียนโครงสร้าง MIME ใหม่ ซึ่งจะทำให้คำนำคำลงท้ายและขอบเขตของเอนทิตีเปลี่ยนแปลงไป ซึ่งทั้งหมดนี้จะทำให้ลายเซ็น DKIM เสียหาย มีเพียงข้อความธรรมดาที่เขียนด้วยus-ascii เท่านั้น โดยที่ฟิลด์ส่วนหัว MIME ไม่ได้รับการลงนาม[ 30 ]ที่จะได้รับความทนทานที่ความสมบูรณ์แบบ end-to-end ต้องการX-MIME-Autoconverted:
โครงการ OpenDKIM ได้รวบรวมข้อมูลที่เกี่ยวข้องกับเซิร์ฟเวอร์อีเมล 21 เครื่องและข้อความหลายล้านข้อความ ลายเซ็นที่สังเกตได้ 92.3% ได้รับการตรวจสอบสำเร็จ ซึ่งอัตราความสำเร็จนี้ลดลงเล็กน้อย (90.5%) เมื่อพิจารณาเฉพาะการรับส่งข้อมูลของรายชื่อผู้รับอีเมลเท่านั้น[ 31 ]
คำอธิบายประกอบโดยรายชื่อผู้รับจดหมาย
ปัญหาอาจรุนแรงขึ้นเมื่อซอฟต์แวร์กรองหรือส่งต่อทำการเปลี่ยนแปลงข้อความ หากผู้ส่งไม่ระมัดระวังเป็นพิเศษ การเพิ่มส่วนท้ายที่ดำเนินการโดยรายชื่อผู้รับจดหมาย ส่วนใหญ่ และ โซลูชัน ป้องกันไวรัส ส่วนกลางจำนวนมาก จะทำให้ลายเซ็น DKIM เสียหาย วิธีแก้ปัญหาที่เป็นไปได้คือการลงนามเฉพาะจำนวนไบต์ที่กำหนดของเนื้อหาข้อความเท่านั้น ซึ่งระบุโดย แท็ก lใน ส่วนหัวของลาย เซ็น DKIMสิ่งใดก็ตามที่เพิ่มเข้ามาเกินความยาวที่กำหนดของเนื้อหาข้อความจะไม่ถูกนำมาพิจารณาในการคำนวณลายเซ็น DKIM วิธีนี้ใช้ไม่ได้กับข้อความ MIME [ 32 ]
วิธีแก้ปัญหาอีกวิธีหนึ่งคือการกำหนดรายการที่อนุญาตสำหรับผู้ส่งต่อที่รู้จัก เช่น โดยใช้SPFสำหรับวิธีแก้ปัญหาอีกวิธีหนึ่ง มีการเสนอให้ผู้ส่งต่อตรวจสอบลายเซ็น แก้ไขอีเมล แล้วลงนามข้อความอีกครั้งด้วยส่วนหัว Sender: [ 33 ] อย่างไรก็ตาม วิธีแก้ปัญหานี้มีความเสี่ยงกับข้อความที่ลงนามโดยบุคคลที่สามที่ส่งต่อซึ่งได้รับที่ตัวรับ SMTP ที่รองรับโปรโตคอล RFC 5617 ADSP ดังนั้น ในทางปฏิบัติ เซิร์ฟเวอร์ผู้รับยังคงต้องกำหนดรายการที่อนุญาตสำหรับสตรี มข้อความที่รู้จัก
Authenticated Received Chain (ARC) เป็น ระบบการตรวจสอบความถูกต้อง ของอีเมลที่ออกแบบมาเพื่อให้เซิร์ฟเวอร์อีเมลระดับกลาง เช่น รายชื่อผู้รับจดหมายหรือบริการส่งต่อ สามารถลงนามในผลการตรวจสอบความถูกต้องดั้งเดิมของอีเมลได้ ซึ่งช่วยให้บริการรับสามารถตรวจสอบความถูกต้องของอีเมลได้เมื่อ ระเบียน SPFและDKIM ของอีเมล ไม่ถูกต้องเนื่องจากการประมวลผลของเซิร์ฟเวอร์ระดับกลาง[ 34 ] ARC ถูกกำหนดไว้ใน RFC 8617 ซึ่งเผยแพร่ในเดือนกรกฎาคม 2019 ว่าเป็น "แบบทดลอง" [ 35 ]
ช่องโหว่คีย์สั้น
ในเดือนตุลาคม 2012 นิตยสาร Wiredรายงานว่า แซค แฮร์ริส นักคณิตศาสตร์ ตรวจพบและสาธิตช่องโหว่การปลอมแปลงแหล่งที่มาของอีเมลด้วยคีย์ DKIM สั้นๆ สำหรับgoogle.comโดเมนขององค์กร รวมถึงโดเมนสำคัญอื่นๆ อีกหลายโดเมน เขาชี้แจงว่า การตรวจสอบสิทธิ์ด้วยคีย์ 384 บิต สามารถถอดรหัสได้ภายในเวลาเพียง 24 ชั่วโมง "บนแล็ปท็อปของเขา" และคีย์ 512 บิต ใช้เวลาประมาณ 72 ชั่วโมง ด้วยทรัพยากรการประมวลผลบนคลาวด์ แฮร์ริสพบว่าหลายองค์กรลงนามอีเมลด้วยคีย์สั้นๆ ดังกล่าว เขาจึงถอดรหัสคีย์เหล่านั้นทั้งหมดและแจ้งให้องค์กรเหล่านั้นทราบถึงช่องโหว่ เขาชี้แจงว่า คีย์ 768 บิต สามารถถอดรหัสได้ด้วยการเข้าถึงพลังการประมวลผลจำนวนมหาศาล ดังนั้นเขาจึงแนะนำว่า การลงนาม DKIM ควรใช้ความยาวคีย์มากกว่า 1,024 บิต
Wiredระบุว่า Harris รายงาน และ Google ยืนยันว่าพวกเขาเริ่มใช้คีย์ที่ยาวขึ้นใหม่หลังจากที่เขาเปิดเผยข้อมูลไม่นาน ตาม RFC 6376 ฝ่ายผู้รับจะต้องสามารถตรวจสอบลายเซ็นด้วยคีย์ที่มีความยาวตั้งแต่ 512 บิตถึง 2048 บิต ดังนั้นการใช้คีย์ที่สั้นกว่า 512 บิตอาจไม่เข้ากันและควรหลีกเลี่ยง RFC 6376 ยังระบุด้วยว่าผู้ลงนามต้องใช้คีย์ที่มีความยาวอย่างน้อย 1024 บิตสำหรับคีย์ที่มีอายุการใช้งานยาวนาน แม้ว่าอายุการใช้งานที่ยาวนานจะไม่ได้ระบุไว้ก็ตาม[ 36 ]
ประวัติศาสตร์
DKIM เกิดขึ้นในปี 2547 จากการรวมความพยายามที่คล้ายคลึงกันสองอย่างเข้าด้วยกัน ได้แก่ "enhanced DomainKeys" จากYahoo และ "Identified Internet Mail" จากCisco [ 37 ] [ 38 ]ข้อกำหนดที่รวมกันนี้เป็นพื้นฐานสำหรับชุด ข้อกำหนดมาตรฐานของ IETF และเอกสารสนับสนุน ซึ่งในที่สุดก็ส่งผลให้เกิด STD 76ซึ่งปัจจุบันคือ RFC 6376 [ 39 ] "Identified Internet Mail" ได้รับการเสนอโดยCiscoในฐานะมาตรฐานการตรวจสอบความถูกต้องของอีเมลแบบใช้ลายเซ็น[ 40 ] [ 41 ] ในขณะที่ DomainKeys ได้รับการออกแบบโดยYahoo [ 42 ] [ 43 ]เพื่อตรวจสอบโดเมน DNSของ ผู้ส่ง อีเมลและความสมบูรณ์ของข้อความ
แง่มุมต่างๆ ของ DomainKeys พร้อมกับส่วนต่างๆ ของ Identified Internet Mail ได้ถูกนำมารวมกันเพื่อสร้าง DomainKeys Identified Mail (DKIM) [ 42 ] [ 44 ] [ 45 ] ผู้ให้บริการชั้นนำที่ใช้ DKIM ได้แก่Yahoo , Gmail , AOLและFastMailอีเมลใดๆ จากองค์กรเหล่านี้ควรมีลายเซ็น DKIM [ 42 ] [ 46 ] [ 47 ] [ 48 ]
การอภิปรายเกี่ยวกับลายเซ็น DKIM ที่ส่งผ่านการไหลของอีเมลทางอ้อม อย่างเป็นทางการในกลุ่มทำงาน DMARC เกิดขึ้นหลังจากที่การนำโปรโตคอลใหม่มาใช้ครั้งแรกทำให้เกิดความวุ่นวายใน การใช้งาน รายชื่อผู้รับอีเมล ปกติ อย่างไรก็ตาม ไม่มีข้อเสนอการเปลี่ยนแปลง DKIM ใด ๆ ที่ผ่านการอนุมัติ แต่ซอฟต์แวร์รายชื่อผู้รับอีเมลกลับถูกเปลี่ยนแปลงแทน[ 49 ]
ในปี 2017 ได้มีการเปิดตัวกลุ่มทำงานอีกกลุ่มหนึ่งชื่อ DKIM Crypto Update (dcrup) โดยมีข้อจำกัดเฉพาะในการตรวจสอบเทคนิคการลงนาม[ 50 ] RFC 8301 ได้รับการเผยแพร่ในเดือนมกราคม 2018 โดยห้ามใช้SHA-1และอัปเดตขนาดคีย์ (จาก 512–2048 เป็น 1024–4096) [ 51 ] RFC 8463 ได้รับการเผยแพร่ในเดือนกันยายน 2018 โดยเพิ่มอัลกอริทึมเส้นโค้งวงรีลงในRSA ที่มีอยู่เดิม ประเภทคีย์ที่เพิ่มเข้ามานั้นมีความแข็งแกร่งเพียงพอในขณะที่มีคีย์สาธารณะสั้น ทำให้เผยแพร่ใน DNS ได้ง่ายขึ้น[ 52 ]k=ed25519
การพัฒนา
DomainKeysดั้งเดิมได้รับการออกแบบโดย Mark Delany จาก Yahoo! และได้รับการปรับปรุงแก้ไขผ่านความคิดเห็นจากบุคคลอื่นๆ อีกมากมายนับตั้งแต่ปี 2004 มีการระบุไว้ใน RFC 4870 ฉบับประวัติศาสตร์ ซึ่งต่อมาถูกแทนที่ด้วย RFC 4871 ฉบับมาตรฐาน DomainKeys Identified Mail (DKIM) Signatures ทั้งสองฉบับเผยแพร่ในเดือนพฤษภาคม 2007 หลังจากนั้นได้มีการรวบรวมคำชี้แจงและแนวคิดต่างๆ และระบุไว้ใน RFC 5672 เดือนสิงหาคม 2009 ในรูปแบบของการแก้ไขข้อกำหนดที่มีอยู่ ในเดือนกันยายน 2011 RFC 6376 ได้รวมและปรับปรุงเอกสารสองฉบับหลังเข้าด้วยกัน โดยยังคงรักษาสาระสำคัญของโปรโตคอล DKIM ไว้ ความเข้ากันได้ของคีย์สาธารณะกับ DomainKeys รุ่นก่อนหน้าก็เป็นไปได้เช่นกัน
DKIM ถูกพัฒนาขึ้นครั้งแรกโดยกลุ่มผู้เชี่ยวชาญในอุตสาหกรรมที่ไม่เป็นทางการ จากนั้นจึงถูกส่งไปปรับปรุงและกำหนดมาตรฐานโดยคณะทำงาน DKIM ของIETF ซึ่งมี Barry Leibaและ Stephen Farrell เป็นประธาน โดยมี Eric Allmanจากsendmail , Jon CallasจากPGP Corporation , Mark Delany และ Miles Libbey จากYahoo!และ Jim Fenton กับ Michael Thomas จากCisco Systemsเป็นผู้เขียนหลัก
การพัฒนารหัสต้นฉบับของไลบรารีทั่วไปหนึ่งรายการนั้นดำเนินการโดยโครงการ OpenDKIMโดยปฏิบัติตามการเพิ่มโปรโตคอลล่าสุด และได้รับอนุญาตภายใต้ใบอนุญาต New BSD [ 53 ]
การบังคับใช้กฎหมาย
ผู้ให้บริการอีเมลต่าง ๆ กำลังกำหนดให้ผู้ส่งต้องใช้ระบบยืนยันตัวตนอีเมลมากขึ้นเรื่อย ๆ เพื่อให้สามารถส่งอีเมลไปยังกล่องจดหมายของผู้ใช้ได้อย่างสำเร็จ
ในเดือนกุมภาพันธ์ พ.ศ. 2567 Google เริ่มกำหนดให้ผู้ส่งจำนวนมากต้องยืนยันอีเมลของตนด้วย DKIM เพื่อส่งอีเมลไปยังกล่องจดหมายที่โฮสต์โดย Google ได้สำเร็จ[ 54 ] [ 55 ]
ในทำนองเดียวกัน ในเดือนกุมภาพันธ์ พ.ศ. 2567 Yahoo เริ่มกำหนดให้ผู้ส่งอีเมลจำนวนมากต้องใช้ SPF และ DKIM เพื่อส่งอีเมลไปยังผู้ใช้ Yahoo ได้สำเร็จ[ 56 ] [ 57 ]
ดูเพิ่มเติม
- Authenticated Received Chain (ARC)
- แนวปฏิบัติในการลงนามโดเมนของผู้เขียน
- ข้อความตีกลับ
- การกรองตามบริบท
- DMARC (ระบบตรวจสอบความถูกต้อง การรายงาน และการปฏิบัติตามข้อกำหนดของข้อความตามโดเมน)
- DomainKeys
- การตรวจสอบอีเมล
- โอเพ่นพีจีพี
- เอส/ไมมี
- กรอบนโยบายผู้ส่ง (SPF)
- รับรองโดยการอ้างอิง
อ่านเพิ่มเติม
- RFC 4686การวิเคราะห์ภัยคุกคามที่เป็นแรงผลักดันให้เกิดการใช้ DomainKeys Identified Mail (DKIM)
- มาตรฐานที่เสนอสำหรับลายเซ็น DomainKeys Identified Mail (DKIM) ตาม RFC 4871
- RFC 5617 DomainKeys Identified Mail (DKIM) Author Domain Signing Practices (ADSP)
- ภาพรวมบริการ DomainKeys Identified Mail (DKIM) ตาม RFC 5585
- RFC 5672 RFC 4871 ลายเซ็น DomainKeys Identified Mail (DKIM) — การอัปเดต
- RFC 5863การพัฒนา การใช้งาน และการดำเนินงานของ DKIM
- ร่างมาตรฐานRFC 6376ลายเซ็น DomainKeys Identified Mail (DKIM)
- RFC 6377การระบุคีย์โดเมนสำหรับอีเมล (DKIM) และรายชื่อผู้รับจดหมาย
- RFC 8301การปรับปรุงอัลกอริธึมการเข้ารหัสและการใช้คีย์สำหรับ DomainKeys Identified Mail (DKIM)
- RFC 8463วิธีการลงลายมือชื่อเข้ารหัสลับแบบใหม่สำหรับ DomainKeys Identified Mail (DKIM)
ลิงก์ภายนอก
- DomainKeys Identified Mail (DKIM)