در مورد روشهای تایید اعتبار ایمیل در اینترنت توضیحات شفاف و دقیقی ارائه نشده است. به همین دلیل در این مقاله قرار است به بررسی یکی از راهکارهای مهم و پیچیده تایید اعتبار ایمیل به نام DKIM پرداخته و این راهکار را به زبان ساده شرح دهیم.
DKIM چیست
DKIM یک پروتکل در تبادل ایمیل است که به سازمانها اجازه میدهد مسئولیت انتقال پیامهای خود را بپزیرند تا آن پیام برای ارائهدهندگان خدمات ایمیل معتبر و مجاز شمرده شود.
این شناسایی و تایید اعتبار از طریق “رمزگذاری” محقق میگردد.
DKIMچگونه کار میکند؟
روش کار DKIM بسیار پیچیده است. گامهای زیادی در این فرایند وجود دارند که در ادامه تا حدامکان به زبان ساده بیان میشوند:
گام اول: شناسایی المانها یا اجزای پیام که باید با DKIM امضا شوند
ابتدا، فرستنده پیام تصمیم میگیرد که میخواهد کدام یک از قسمتهای یک ایمیل را توسط DKIM به اصطلاح ” امضا” نماید. این امکان وجود دارد که تمامی قسمتهای پیام از Header یا سر پیام تا قسمت بدنه پیام یا Body آن برای امضا انتخاب شود یا اینکه تنها بعضی از قسمتهای Header پیام برای این کار انتخاب شود.
بخشهایی از ایمیل که برای فرایند امضای DKIM انتخاب میشوند در طول انتقال باید بدون تغییر باقی بمانند زیرا در غیر این صورت امضای DKIM در تایید اعتبار رد خواهد شد.
به عنوان مثال؛ در صورتی که یک ایمیل از حساب Yahoo یا GMAIL فروارد شود، ممکن است Yahoo یک خط به متن ایمیل اضافه کند مثل این: “forwarded by Yahoo mail”
در این شرایط، بدنه ایمیل تغییر کرده است. در صورتی که بدنه ایمیل هم یکی از قسمتهایی باشد که مشمول فرایند امضای DKIM باشد، تایید اعتبار DKIM برای ایمیل فروارد شده نقض خواهد شد.
با وجود این، در صورتی که تنها اجزای سر پیام یا هدر مانند قسمت “ّFrom” یا فرستنده دراین پروسه امضای DKIM قرار داشته باشند و پیام از طریق Yahoo یا Gmail فروارد شود، اعتبار ایمیل تائید خواهد شد. زیرا قسمتی از پیام که تغییرکرده است مشمول پروسه امضای DKIM نبوده است.
گام دوم: فرایند رمزگذاری
رمز گذاری گام اصلی و هسته راهکار DKIM است. در این روش، ارسال کننده پیام باید پلتفرم خود را بگونهای تنظیم کنند که بطور خودکار یک Hash از بخشی از ایمیل که برای رمزگذاری انتخاب شده است تهیه کنند. به عبارت ساده، فرایند Hash یک متن قابل خواندن را به یک رشته منحصر به فرد از حروف تبدیل خواهد کرد. اینجا یک نمونه از پیامی که توسط تابع Hash MD5 تولید شده است را میبینید:
From: Robert Holmes <robert.holmes@returnpath.com>
Subject: Testing
که بعد از Hash به این رشته تبدیل میگرد:
3303baf8986f910720abcfa607d81f53
پیش از ارسال ایمیل؛ این رشته Hash شده توسط یک کلید خصوصی رمزگذاری خواهد شد. این کلید خصوصی به ترکیب منحصر به فردی از نام “دامنه و سلکتور” تخصیص مییابد. به این ترتیب هر دامنه میتواند تعداد زیادی کلید خصوصی داشته باشد که برای مدیریت ایمیلها و همچنین اهداف امنیتی بسیار اهمیت دارد. تنها کسی که به این کلید خصوصی دسترسی دارد فرستنده پیام است.
پس از این که فرایند رمزگذاری تکمیل شد ایمیل ارسال میگردد.
گام سوم: تائید اعتبار امضای DKIM با یک کلید عمومی
سرور ایمیل پس از دریافت ایمیلی که امضای DKIM دارد متوجه میشود که کدام “دامنه/سلکتور” فرایند رمزگذاری را امضا کرده است. بنابراین به منظور تایید اعتبار ایمیل، سرور ارائه دهنده ایمیل با انجام جستجوی DNS اقدام به یافتن کلید عمومی متعلق به زوج دامنه/ سلکتور مینماید.
این کلید عمومی ویژگیهای منحصر به فردی دارد و تنها کلیدی است که با کلید خصوصی (Private Key) که ایمیل با آن امضا شده است مطابقت دارد و به عنوان “Keypair Match” هم شناخته میشود.
سرورهای ایمیل با استفاده از این کلید Keypair Mathch میتوانند رشته Hash رمزگذاری شده را رمزگشایی کرده و به حالت اول برگرداند.
سپس سرور ایمیل؛ یک Hash جدید از همان قسمتهایی از ایمیل که در امضای DKIM وجود دارد تولید میکنند.
در نهایت، سرور ایمیل Hash تولید شده خود را با Hash اصلی امضای DKIM را مقایسه میکند. در صورتی که این دو Hash با هم مطابقت داشته باشند میتوان نتیجه گرفت که:
- دامنه DKIM واقعا مالک ایمیل است. زیرا در غیر این صورت فرایند رمزگشایی Hash اصلا کار نمیکرد.
- المانهایی از ایمیل که توسط DKIM هش شدهاند در طول انتقال تغییر نکردهاند، زیرا در صورت تغییر دیگر Hash اصلی این قسمتها با Hash تولید شده توسط سرور ایمیل با هم مطابقت نداشتند.
چرا DKIM مهم است؟
سورورهای ایمیلی که امضای DKIM را ارزیابی میکننند میتوانند از اطلاعات مربوط به امضای DKIM به عنوان بخشی از فرایند محدودسازی اسپمها و حملات فیشینگ استفاده کنند. همچنین DKIM از دریافتکنندگان ایمیل نمیخواهد هیچ کار خاصی انجام دهند.
در مجموع میتوان نتیجه رفت که بسته به نوع پیاده سازی، DKIM میتواند تضمین کند که یک پیام در طول انتقال دستکاری نشده یا تغییر نکند.
مشکلات استفاده از راهکار DKIM
مسئلهای که در پیادهسازی راهکار DKIM وجود دارد این است که به دلیل پیادهسازی سخت آن، تعداد کمی از فرستندگان ایمیل از آن استفاده میکنند. بنابراین عدم وجود امضای DKIM در یک ایمیل لزوما به معنی تقلبی بودن ایمیل نیست و در نتیجه DKIM به تنهایی نمیتواند یک راهحل فراگیر و قابل اطمینان برای تایید اعتبار یک فرستنده باشد.
به علاوه دامنه DKIM برای کاربران نهایی غیر فنی قابل مشاهده نیست. از آنجایی که تنها یکی از فرستندههای ایمیل در معرض دید کاربر عادی است (مقاله فرستنده پنهان در ایمیل را ببینید) این راهکار نمیتواند کاری جهت جلوگیری از جعل دامنه “فرستنده قابل مشاهده” در Header ایمیل انجام دهد.