הגדרה
DKIM (DomainKeys Identified Mail) הוא מפרט אימות מייל המשתמש בקריפטוגרפיה של מפתח ציבורי לחתום על הודעות יוצאות, ומאפשר לשרתי דואר מקבלים לאשר שהמייל הגיע מהדומיין שהוא טוען שמקורו בו ושגוף ההודעה וכותרות נבחרות לא שונו במהלך המעבר. דומיין החתימה מפרסם את המפתח הציבורי שלו ב-DNS; שרתי קבלה מאחזרים את המפתח הזה ומשתמשים בו לאמת את החתימה המוטבעת בכותרת המייל DKIM-Signature.
DKIM פותח משתי הצעות חופפות מוקדמות יותר — DomainKeys של Yahoo ו-Identified Internet Mail של Cisco — ופורסם לראשונה כ-IETF RFC 4871 בשנת 2007. המפרט הסמכותי הנוכחי הוא RFC 6376, שפורסם בספטמבר 2011 ועודכן על ידי RFC 8301 (2018) ו-RFC 8463 (2018) כדי לחייב אלגוריתמים קריפטוגרפיים חזקים יותר. DKIM נפרס באופן נרחב ברחבי האקוסיסטם של המייל והוא רכיב נדרש של מדיניות DMARC המספקת הגנה משמעותית.
כיצד זה פועל
כאשר שרת הדואר של ארגון שולח הודעה, מודול חתימת DKIM (מובנה ב-MTAs כגון Postfix, Exim ו-Microsoft Exchange, או מסופק כשירות על ידי ספקי טרנזקציה כולל SendGrid, Mailgun, Amazon SES ו-Postmark) מבצע את הפעולות הבאות.
החתום בוחר תת-קבוצה של כותרות לכלול בחתימה — בדרך כלל From, To, Subject, Date ו-Content-Type — ומקנן אותן באמצעות אחד משני אלגוריתמים מוגדרים: simple (נורמליזציה מינימלית של רווחים) או relaxed (יותר סבלני, סובל שכתובים קלים של כותרות במהלך המעבר). גוף ההודעה מקונן באופן דומה ומגובב באמצעות SHA-256 (האלגוריתם המחויב מאז ש-RFC 8301 הוציאה את SHA-1 הישן יותר). החתום מחשב לאחר מכן חתימה דיגיטלית RSA או Ed25519 על גיבוב הכותרת בתוספת מחרוזת מובנית של מטה-נתוני חתימה, ומכניס כותרת DKIM-Signature בראש ההודעה.
הכותרת DKIM-Signature מכילה: v=1 (גרסה), a=rsa-sha256 (אלגוריתם), d=example.com (דומיין חותם, ידוע כתג d=), s=selector1 (סלקטור, משמש לחיפוש המפתח הציבורי הספציפי), h=from:to:subject (כותרות חתומות), bh=<body hash> ו-b=<base64 signature>.
בעל הדומיין מפרסם את המפתח הציבורי המתאים ב-<selector>._domainkey.<domain> כרשומת DNS TXT. כאשר Gmail, Outlook, Yahoo Mail או כל MTA תואם RFC 6376 מקבלים את ההודעה, הם מבצעים שאילתה ב-DNS עבור הרשומה הזו, מאחזרים את המפתח הציבורי, ומאמתים את החתימה הקריפטוגרפית. חתימה תקפה מייצרת תוצאת DKIM של pass. חתימה חסרה או לא תקפה, או כל שינוי לכותרות החתומות או לגוף במהלך המעבר, מייצרים תוצאת fail או neutral, אשר מועברת לאחר מכן למנוע ההערכה של DMARC.
סלקטורים (תג s=) מאפשרים לדומיין לפרסם מספר מפתחות DKIM בו זמנית — שימושי לסיבוב מפתחות ללא הפרעת שירות, או לבידוד מפתחות בין מערכות שליחה שונות (לדוגמה, marketing._domainkey.example.com לעומת transactional._domainkey.example.com).
היכן תיתקלו ב-DKIM
DKIM הוא דרישת מסירה בסיסית עבור כל שירות התלוי במייל. ספקי מייל טרנזקציוני כגון Amazon SES, SendGrid (חלק מ-Twilio), Mailgun (חלק מ-Sinch), Postmark ו-SparkPost כוללים חתימת DKIM כשלב תצורה חובה במהלך אימות הדומיין. הספק יוצר זוג מפתחות RSA-2048 או Ed25519, מציג את המפתח הציבורי כרשומת DNS TXT, ומבקש מבעל הדומיין לפרסם אותו לפני אפשרות שליחה מהדומיין הזה.
עבור פלטפורמות תחרות השולחות הצבעות אישור מייל, חתימת DKIM חשובה במיוחד מכיוון שהמיילים של האישור חייבים לעבור את בדיקות האימות שמיישמים ספקי תיבות דואר גדולים — Google Workspace / Gmail, Microsoft Outlook ו-Exchange Online Protection, Yahoo Mail, Apple iCloud Mail ו-ProtonMail. הודעות לא חתומות או הודעות שהחתימות שלהן נכשלות הן בעלות סיכוי גבוה הרבה יותר להימסר לספאם או להיחסם לחלוטין, מה שמונע ממצביעים לאשר את ההגשות שלהם.
כלי בדיקת מייל כגון Mail-Tester, GlockApps ו-MXToolbox DKIM Lookup מאפשרים לשולחים לבדוק ולאמת את תצורת ה-DKIM שלהם לפני שליחת הייצור. Google Postmaster Tools ו-Microsoft SNDS מספקים נתוני מסירה ברמה מצטברת המשקפים שיעורי מעבר DKIM לאורך זמן.
דוגמאות מעשיות
פלטפורמת תחרות המוגדרת עם סלקטור DKIM s=contest עבור הדומיין votes.example.com מפרסמת את המפתח הציבורי ב-contest._domainkey.votes.example.com. כל מייל אישור יוצא נושא כותרת DKIM-Signature חתומה במפתח הפרטי המתאים. כאשר חשבון Gmail של מצביע מקבל את ההודעה, מסנן הכניסה של Gmail מבצע שאילתה ב-DNS, מאמת את החתימה, רושם מעבר ומעביר את התוצאה למסווג הספאם שלו. מעבר ה-DKIM המאושר, יחד עם יישור SPF, מספק את התנאים לעמידה ב-DMARC.
מנהל תחרות מסובב ממפתח RSA 1024-bit (כבר לא נחשב קריפטוגרפית מספק) למפתח RSA 2048-bit לאחר קריאת RFC 8301. הסלקטור הישן נשמר פעיל למשך שבעה ימים כדי לכסות הודעות במעבר, ואז מוסר מ-DNS. כל ההודעות החדשות משתמשות בסלקטור והמפתח המעודכנים.
מושגים קשורים
DKIM פועל יחד עם רשומת SPF — המאמת את כתובת ה-IP של שרת השליחה — ו-DMARC — המגדיר פעולת מדיניות ומנגנון דיווח בהתבסס על תוצאות SPF ו-DKIM. שני האותות חייבים להיות מובנים יחד; מעבר DKIM לבד אינו הופך הודעה לתואמת DMARC אם דומיין ה-d= אינו מיושר עם דומיין RFC5322.From. עבור ההקשר של תפעול תחרות, ההשלכות המעשיות של כשלי DKIM מוסברות ב-הצבעת אישור מייל, שבה מיקום תיבת הדואר הנכנס של הודעת האישור קובע ישירות אם הצבעה שהוטלה נספרת.