DKIM چیست و چگونه کار می کند؟
برای احراز هویت در سیستم ایمیل ها از dkim استفاده می شود. در این مقاله بیشتر با dkim آشنا شده و با روش کار آن آشنا خواهید شد.
dkim چیست؟
dkim مخفف (Domain Key Identified Mail) است یک سیستم تصدیق هویت ایمیل که جهت شناسایی حقه های پست الکترونیکی طراحی شده است. این مکانیزم امکانی را فراهم می کند که میل سرور های گیرنده ایمیل بررسی کنند که ایمیل دریافتی از Domain مربوطه توسط مدیریت دامنه مجاز و تائید شده باشد. یک امضای دیجیتال شامل پیغامی است که می تواند توسط دریافت کننده از طریق Public Key امضا کننده که در DNS zone دامنه قرار داده شده است اعتبار سنجی شود.
کلید عمومی رمزنگاری شده چیست؟
Public Key Cryptography (کلید عمومی رمزنگاری شده) که همچنین به عنوان رمز نگاری نامتقارن شناخته می شود یک الگوریتم رمزنگاری است که نیاز به دو کلید (Key) جداگانه دارد. یکی از کلید ها بصورت رمز (Private) و دیگری به صورت عمومی (Public) است. به تعریف کلی Public Key غالبا برای ایمن سازی ارتباطات الکترونیکی در شبکه های عمومی مانند اینترنت استفاده می شود. Public Key به عنوان محتوای یک رکورد txt در DNS Zone دامنه تعریف می شود و Private key در Mail Server بسته به نوع Mail Server و نحوه کار آن تعریف می گردد. به عنوان مثال در Mail Server های Smarter mail که بصورت رسمی در هاست ایمیل مورد استفاده قرار می گیرند Private Key توسط Smarter mail برای هر دامنه تعریف می شود.
DKIM نتیجه ادغام Domain Key و Internet Identified Mail است. برجسته ترین سرویس دهنده های ایمیل در دنیا شامل Yahoo ، Gmail ، AOL و …DKIM را پیاده سازی کرده اند و هر ایمیلی که از این سازمان ها خارج می شود بایستی یک امضای DKIM را حمل کند.
اهمیت dkim
سرورهای ایمیلی که امضای DKIM را ارزیابی میکنند میتوانند از اطلاعات مربوط به امضای DKIM به عنوان بخشی از فرایند محدودسازی اسپمها و حملات فیشینگ استفاده کنند.
در مورد حملات فیشینگ پیشنهاد می شود مقاله معنی phishing چیست را بخوانید.
همچنین DKIM از دریافتکنندگان ایمیل نمیخواهد هیچ کار خاصی انجام دهند. در مجموع میتوان نتیجه رفت که بسته به نوع پیاده سازی، DKIM میتواند تضمین کند که یک پیام در طول انتقال دستکاری نشده یا تغییر نکند.
DKIM چگونه کار می کند؟
امضای DKIM (DKIM Signature) شامل یک لیست با قالب “Tag=Value” میباشد. Tag ها بصورت معمول یک یا دو حرف هستند. پر استفاده ترین Tag ها عبارتند از:
B : امضای دیجیتال واقعی محتوا (محتوای Header و متن ایمیل)
BH : بدنه کد رمز شده
D : دامنه مورد نظر
S : Selector (انتخاب کننده)
مکانیزم پیش فرض رمزنگاری DKIM روش SHA-256 می باشد. برای رمزنگاری Public Key از الگوریتم RSA استفاده می شود و جهت رمز گشایی کد رمز شده از الگوریتم Base64 استفاده می شود
یک نمونه از امضای DKIM به شرح زیر می باشد:
DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;
c=relaxed/simple; q=dns/txt; l=1234; t=1117574938; x=1118006938;
h=from:to:subject:date:keywords:keywords;
bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ
VoG4ZHRNiYzR
با توجه به این که در هر Mail server تنظیمات مربوط به تعریف DKIM متفاوت می باشد می بایست اعمال تنظیمات با توجه به استراتژی Mail server مربوطه انجام گردد، اما وبسایت هایی وجود دارند که با ذکر نام دامنه و نام Selector می توانند Public Key و Private Key را تولید نمایند و برای استفاده در Mail server مورد استفاده قرار می گیرند.
نام برخی از این وبسایتها به شرح زیر است:
www.port25.com/support/domainkeysdkim-wizard
dkimcore.org/tools/keys.html
جهت اطمینان از صحت عملکرد DKIM تنظیم شده می توانید در این وبسایت اطلاعات مربوط به دامنه و Selector را وارد نمایید و نتیجه را مشاهده نمایید.
در صورتی که در قسمت DKIM Check اطلاعات مربوط به رکورد txt ایجاد شده را نمایش داد به این معنی است که DKIM به درستی بر روی دامنه شما تنظیم شده است.
نحوه ساخت امضای DKIM
ابتدا باید Canonicalization انجام شود. یعنی تمام فاصلهها و فضاهای خالی بین کلمات متن ایمیل، به همراه بخشی از Header که در رکورد DKIM مشخص میشوند، حذف شوند که باعث ایجاد یک رشته متن بههمچسبیده به دست میآید. با این کار چه در سمت فرستنده و چه در سمت گیرنده رشته متن یکسانی ساخته می شود. بعد از این مرحله مقدار هش این رشته واحد محاسبه میشود. سپس مالک دامنه باید با استفاده از کلید خصوصی که در اختیار دارد، خروجی هش گام دوم را رمزگذاری کند. در این شرایط در هنگام ارسال ایمیل در بخش DKIM در Header ایمیل ارسالی از سوی فرستنده، هم هش به دست آمده در گام دوم و هم خروجی رمزگذاری این گام قرار میگیرند.
در اینجا موارد مورد نیاز برای رمزگشایی و احراز هویت توسط فرستنده در محتوای Header بر روی هر ایمیل قرار می گیرد. در آخر مالک دامنه، کلید عمومی جفتکلید را برای دسترسیهای گیرندگان بعدی، در رکورد TXT و با خصوصیات DKIM قرار میدهد.
دوستان کسی اینجا DKIM رو تو برنامه CakePHP با مؤلفه ایمیل داخلی راه اندازی کرده است؟ اگر انجام داده ممنون میشم راهنماییم کنید. من قسمت دوم پست محافظت از هرزنامه را نمیتونم پیاده سازی کنم
DKIM چیست از ترندترین مباحث در حوزه ایمیله ممنون از مقاله مفیدتون