การลงลายมือชื่อ DKIM
การลงลายมือชื่อข้อความด้วยการเข้ารหัส
การลงลายมือชื่อ DKIM เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
สิ่งที่ DKIM มอบให้
DKIM (อีเมลที่ระบุผู้ส่งด้วย DomainKeys) จะแนบลายเซ็นเข้ารหัสไปกับอีเมลขาออก ผู้รับสามารถตรวจสอบลายเซ็นนั้นเพื่อยืนยันสองสิ่ง:
- ข้อความได้รับอนุญาตอย่างแท้จริงจากโดเมนที่ลงลายเซ็น
- เนื้อหาที่ลงลายเซ็น ไม่ได้ถูกแก้ไข ระหว่างทาง
ในขณะที่ SPF อนุญาตให้ เซิร์ฟเวอร์ ส่งอีเมล DKIM จะยืนยันตัวตนของ ตัวข้อความเอง และลายเซ็นนั้นยังคงใช้ได้เมื่อมีการส่งต่อ
พื้นฐานการเข้ารหัสด้วย key สาธารณะ
DKIM อาศัยการเข้ารหัสแบบอสมมาตร เจ้าของโดเมนถือ คู่ key ดังนี้:
- key ส่วนตัวจะถูกเก็บเป็นความลับบนเซิร์ฟเวอร์อีเมลขาออก และใช้เพื่อลงลายเซ็น
- key สาธารณะเผยแพร่ไว้ใน DNS และทุกคนสามารถใช้เพื่อตรวจสอบ
เนื่องจากมีเพียงผู้ถือ key ส่วนตัวเท่านั้นที่สร้างลายเซ็นที่ถูกต้องได้ การตรวจสอบที่สำเร็จจึงพิสูจน์ได้ว่าข้อความมาจากโดเมนที่ถูกต้อง
กระบวนการลงลายเซ็น
เมื่อเซิร์ฟเวอร์ขาออกส่งข้อความ เซิร์ฟเวอร์จะคำนวณลายเซ็นจากส่วนหัวและเนื้อหาที่เลือกไว้ จากนั้นเพิ่มส่วนหัว ลายเซ็น DKIM
Steps on the sender side:
1. Select headers to sign (From, Subject, Date, ...)
2. Hash the message body
3. Build the DKIM-Signature header with those fields
4. Sign the hash with the private key
5. Attach the signature to the outgoing messageส่วนประกอบของส่วนหัวลายเซ็น DKIM
ส่วนหัวลายเซ็น DKIM มีพารามิเตอร์ที่ผู้รับจำเป็นต้องใช้ในการตรวจสอบ:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=company.com; domain that signed
s=mail2024; selector (which key)
h=from:subject:date; signed headers
bh=base64bodyhash; body hash
b=base64signature the signature itselfตัวเลือกและ key สาธารณะใน DNS
ตัวเลือก (แท็ก s=) จะบอกผู้รับว่าต้องดึง key สาธารณะรายการใด โดย key จะอยู่ในตำแหน่ง DNS ที่คาดเดาได้:
Location: <selector>._domainkey.<domain>
Example DNS TXT record:
mail2024._domainkey.company.com. IN TXT \
"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..."
p = the base64-encoded public keyกระบวนการตรวจสอบ
เมื่อได้รับข้อความ เซิร์ฟเวอร์ตรวจสอบจะย้อนกระบวนการดังกล่าว:
- อ่านโดเมน
d=และตัวเลือกs=จากลายเซ็น DKIM - ดึง key สาธารณะจาก
selector._domainkey.domainใน DNS - คำนวณแฮชเนื้อหาและแฮชส่วนหัวใหม่
- ใช้ key สาธารณะตรวจสอบว่าลายเซ็นตรงกัน
หากลายเซ็นถูกต้อง DKIM จะผ่าน หากข้อความถูกแก้ไขหรือใช้ key ผิดรายการ การตรวจสอบจะไม่ผ่าน
แฮชเนื้อหาตรวจจับการแก้ไขดัดแปลง
ฟิลด์แฮชเนื้อหาคือสิ่งที่ทำให้ตรวจพบการแก้ไขดัดแปลงใน DKIM ผู้ส่งจะคำนวณแฮชของเนื้อหาและใส่แฮชนั้นไว้ในข้อมูลที่ลงลายเซ็น
หากมีผู้แก้ไขเนื้อหาข้อความระหว่างทาง แฮชที่ผู้รับคำนวณใหม่จะไม่ตรงกับ bh ที่ลงลายเซ็นไว้ และการตรวจสอบจะไม่ผ่าน นี่คือวิธีที่ DKIM มอบ ความสมบูรณ์ ไม่ใช่เพียงการยืนยันแหล่งที่มาเท่านั้น
การทำให้เป็นรูปแบบมาตรฐาน
เซิร์ฟเวอร์อีเมลระหว่างทางมักทำการเปลี่ยนแปลงเล็กน้อยที่ไม่เป็นอันตราย เช่น ปรับการตัดบรรทัดใหม่หรือเปลี่ยนช่องว่าง เพื่อไม่ให้การเปลี่ยนแปลงเหล่านี้ทำให้ลายเซ็นที่ถูกต้องใช้ไม่ได้ DKIM จึงใช้ การทำให้เป็นรูปแบบมาตรฐาน (แท็ก c=)
- แบบเข้มงวด — เคร่งครัด การเปลี่ยนแปลงเกือบทุกอย่างจะทำให้ลายเซ็นไม่ผ่าน
- แบบผ่อนปรน — ยืดหยุ่นต่อช่องว่างและการเปลี่ยนตัวพิมพ์เล็กใหญ่ของส่วนหัว
การนำไปใช้ส่วนใหญ่มักใช้ relaxed/relaxed เพื่อให้ทำงานได้อย่างน่าเชื่อถือกับโครงสร้างพื้นฐานอีเมลที่หลากหลาย
ตัวเลือกช่วยให้หมุนเวียน key ได้
ตัวเลือกไม่ได้เป็นเพียงป้ายกำกับ แต่ช่วยให้ หมุนเวียน key ได้อย่างปลอดภัย คุณควรเปลี่ยน key DKIM เป็นระยะเพื่อลดความเสี่ยง หาก key รายการใดรั่วไหล
กระบวนการหมุนเวียนมีดังนี้:
- สร้างคู่ key ใหม่ด้วยตัวเลือกใหม่ เช่น
mail2025 - เผยแพร่ key สาธารณะรายการใหม่ใน DNS
- เปลี่ยนผู้ลงลายเซ็นให้ใช้ตัวเลือกใหม่
- เก็บตัวเลือกเดิมไว้ใน DNS จนกว่าอีเมลที่กำลังส่งอยู่จะถูกส่งถึงผู้รับ จากนั้นจึงลบออก
การใช้ตัวเลือกใหม่ช่วยป้องกันช่วงว่างที่ไม่สามารถตรวจสอบลายเซ็นได้
DKIM ยังคงใช้ได้เมื่อส่งต่อ
ต่างจาก SPF, DKIM ยังคงใช้ได้เมื่อมีการส่งต่อ ลายเซ็นจะเดินทางไปพร้อมกับข้อความ ดังนั้นตราบใดที่ส่วนหัวและเนื้อหาที่ลงลายเซ็นไม่ได้ถูกแก้ไข ข้อความที่ส่งต่อก็ยังคงผ่านการตรวจสอบ
คุณสมบัตินี้ช่วยชดเชยจุดอ่อนของ SPF ได้อย่างเหมาะสม เมื่อมีการส่งต่อข้อความ SPF อาจไม่ผ่านเพราะ IP ที่เชื่อมต่อเปลี่ยนไป แต่ DKIM ยังคงผ่านได้ ทำให้ DMARC ยอมรับอีเมลที่ถูกต้อง
ข้อจำกัดของ DKIM
DKIM มีประสิทธิภาพสูง แต่ยังไม่สมบูรณ์เมื่อใช้เพียงลำพัง:
- DKIM พิสูจน์ว่าโดเมนหนึ่งลงลายเซ็นให้ข้อความ แต่ไม่ได้บังคับว่าโดเมนที่ลงลายเซ็นต้องตรงกับ ส่วนหัวผู้ส่งที่แสดงให้เห็น ซึ่งก็คือการจัดแนวของ DMARC
- ผู้โจมตีสามารถลงลายเซ็นให้อีเมลด้วย key DKIM ที่ถูกต้องของโดเมนตนเองได้
- หาก key ส่วนตัวรั่วไหล ผู้โจมตีจะปลอมแปลงลายเซ็นที่ถูกต้องได้จนกว่าจะเลิกใช้ key ดังกล่าวด้วยการหมุนเวียน
ต้องใช้ DKIM ร่วมกับ DMARC จึงจะป้องกันการปลอมแปลงได้อย่างมีประสิทธิผล
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับ DKIM
สรุป
คุณได้เรียนรู้วิธีที่ DKIM ลงลายเซ็นให้ข้อความ:
- DKIM แนบลายเซ็นเข้ารหัสเพื่อพิสูจน์แหล่งที่มาและ ความสมบูรณ์
- key ส่วนตัวใช้ลงลายเซ็นบนเซิร์ฟเวอร์ ส่วน key สาธารณะเผยแพร่ไว้ใน DNS ภายใต้ ตัวเลือก
- แฮชเนื้อหาตรวจจับการแก้ไขดัดแปลง ส่วน การทำให้เป็นรูปแบบมาตรฐานรองรับการเปลี่ยนแปลงเล็กน้อยที่ไม่เป็นอันตราย
- ตัวเลือกช่วยให้ หมุนเวียน keyได้อย่างปลอดภัย และ DKIM ยังคงใช้ได้เมื่อส่งต่อ ในกรณีที่ SPF ไม่ผ่าน
- DKIM ยังคงต้องอาศัย การจัดแนวของ DMARC เพื่อเชื่อมลายเซ็นกับผู้ส่งที่แสดงให้เห็น
ถัดไป คุณจะเชื่อม SPF และ DKIM เข้าด้วยกันด้วยนโยบาย DMARC และการรายงาน
คำถามที่พบบ่อย
บทเรียน “การลงลายมือชื่อ DKIM” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การลงลายมือชื่อ DKIM” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การลงลายมือชื่อ DKIM”
การลงลายมือชื่อข้อความด้วยการเข้ารหัส คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การลงลายมือชื่อ DKIM” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การปลอมแปลงอีเมลทำงานอย่างไร
- ระเบียน SPF
- การลงลายมือชื่อ DKIM
- นโยบายและการรายงาน DMARC