DKIM (اختصار عبارت DomainKeys Identified Mail)، یک استاندارد امنیتی ایمیل است که به منظور اطمینان از عدم تغییر پیامها در هنگام انتقال بین سرورهای فرستنده و گیرنده طراحی شده است.
این استاندارد، از رمزنگاری کلید عمومی به منظور امضای ایمیل (ارسال شده توسط یک سرور فرستنده) با یک کلید خصوصی استفاده میکند. سرورهای گیرنده در آن، برای تأیید منبع پیام از کلید عمومی منتشر شده در یک DNS دامنه استفاده مینمایند تا مطمئن شوند، بدنه پیام در حین انتقال تغییر نکرده است. هنگامیکه امضا با کلید عمومی توسط سرور گیرنده تأیید شد، پیام از DKIM عبور کرده و معتبر در نظر گرفته میشود.
اهمیت رکورد DKIM
اگرچه DKIM ضروری نیست؛ ولیکن داشتن ایمیلهایی که با DKIM امضا شدهاند، برای گیرندگان شما قانونیتر به نظر میرسد و در نتیجه کمتر به پوشههای Junk یا Spam میروند. جعل ایمیل از دامنههای معتبر، یک روش محبوب برای هرزنامههای مخرب و حملات phishing است و بدین صورت، DKIM، جعل ایمیل را از دامنههایی که از آن استفاده میکنند، دشوارتر مینماید.
DKIM، با زیرساختهای ایمیل موجود سازگار است و با SPF و DMARC برای ایجاد چندین لایه امنیتی، به منظور دامنههای مربوط به ارسال ایمیل کار میکند. سرورهای ایمیل که از امضای DKIM پشتیبانی نمیکنند، همچنان میتوانند پیامهای امضا شده را بدون هیچ مشکلی دریافت نمایند. این، یک پروتکل امنیتی اختیاری است و بنابراین، DKIM یک استاندارد جهانی نیست.
اگرچه استفاده از DKIM الزامی نیست ولیکن توصیه میکنیم در صورت امکان برای تأیید اعتبار ایمیل از دامنه خود، یک رکورد DKIM به DNS خود اضافه نمایید.
در اینجا، از DKIM برای امضای پیام در Postmark و ISPهایی مانند Yahoo ،AOL و Gmail به منظور بررسی پیامهای دریافتی استفاده میکنیم. آزمایشهای انجام شده در این زمینه ثابت کرده است که زمانی که از این پروتکلهای امنیتی استفاده میشود، پیامها با احتمال بیشتری توسط گیرنده دریافت میشوند.
یک مزیت دیگر DKIM این است که ISPها از آن برای ایجاد اعتبار در دامنه شما با گذشت زمان استفاده میکنند. همانطور که شما ایمیل ارسال مینمایید و شیوههای تحویل خود را بهبود میبخشید، به دامنه خود کمک میکنید تا اعتبار ارسال خوبی را با ISP ایجاد کند که قابلیت تحویل را بهبود میبخشد.
همانطور که بیان شد، با استفاده از DKIM میتوان متوجه شد که آیا پیام ارسال شده بدون تغییر دریافت شده است یا خیر. با این حال، با استفاده از آن، محتوای پیام رمزگذاری نمیشود. بسیاری از ESPها از TLS به منظور رمزگذاری پیامها هنگام انتقال بین فرستنده و گیرنده استفاده میکنند؛ اما اگر سرور ایمیل از اتصال TLS خودداری نماید، ارسال پیامهای رمزگذاری نشده همچنان امکانپذیر است. پس از تحویل پیام، امضای DKIM در سرآیندهای ایمیل باقی میماند؛ اما به هیچ وجه محتوای پیام را رمزگذاری نمیکند.
پس از شرح نحوه عملکرد DKIM، در ادامه به نحوه محافظت از ایمیل دامنه پرداخته میشود.
نحوه عملکرد رکوردهای DKIM
DKIM، برای تأیید پیامهای شما از دو اقدام استفاده میکند. اولین اقدام بر روی سروری است که ایمیلهای امضا شده توسط DKIM را ارسال مینماید و اقدام دوم در سرور گیرنده انجام میشود که امضای DKIM را در پیامهای دریافتی بررسی میکند. کل فرآیند توسط یک جفت کلید خصوصی / عمومی انجام میشود. کلید خصوصی شما، چه بر روی سرور خود و چه با استفاده از ESP شما، مخفی و ایمن نگه داشته میشود و کلید عمومی به رکورد DNS دامنه شما اضافه میشود تا آن را برای تأیید پیامهای شما به دنیا پخش کند. در ادامه، نحوه عملکرد DKIM در سرورهای ارسال کننده و دریافت کننده با جزئیات بیشتری شرح داده شده است.
ارسال پیام DKIM امضا شده
اگر سرور ایمیل خود را اجرا کنید، میتوانید جفت کلید مخصوص خود را تولید نمایید. هر زمان که از سرویسی مانند Google Apps ،Campaign Monitor ،Postmark یا سایر ارائه دهندگان ایمیل استفاده کنید که از DKIM پشتیبانی مینمایند، به طور معمول کلید را برای شما تولید میکنند.
قبل از شرح جزئیات نحوه عملکرد DKIM، در ابتدا روند کار را در Postmark توضیح میدهیم.
فرض میکنیم که کلید خصوصی شما به طور ایمن در سرورهای شما ذخیره شده است و هر پیام را هنگام ارسال امضا مینماید. هنگام ارسال یک پیام، ابتدا یک هش از محتوای سرآیند پیام ایجاد شده و سپس از کلید خصوصی شما برای امضای هش استفاده میشود. این امضا هر آنچه سرور گیرنده برای تأیید پیام به آن نیاز دارد را با خود حمل میکند و به شکل زیر است:
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=20130519032151pm; d=postmarkapp.com;
h=From:Date:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:To:Message-ID;
i=support@postmarkapp.com; bh=vYFvy46eesUDGJ45hyBTH30JfN4=;
b=iHeFQ+7rCiSQs3DPjR2eUSZSv4i/Kp+sipURfVH7BGf+SxcwOkX7X8R1RVObMQsFcbIxnrq7Ba2QCf0YZlL9iqJf32V+baDI8IykuDztuoNUF2Kk0pawZkbSPNHYRtLxV2CTOtc+x4eIeSeYptaiu7g7GupekLZ2DE1ODHhuP4I=
معنی هر بخش از سرآیند در ادامه شرح داده شده است:
- بخش زیر، سرآیند ثبت شده برای پیامهای امضا شده توسط DKIM را نشان می دهد.
-
DKIM-Signature:
- قطعه کد زیر، نسخه DKIM است که توسط سرور ارسال کننده استفاده میشود.
-
v = 1:
- در بخش زیر، الگوریتمی را نشان می دهد که به منظور تولید هش برای کلید خصوصی / عمومی استفاده میشود. دو الگوریتم امضای رسمی پشتیبانی شده برای این هش وجود دارد که rsa-sha1 و rsa-sha256 است.
-
a = rsa-sha1:
- قطعه کد زیر، وضعیت متعارف سازی را برای دامنه ارسال کننده تنظیم میکند که فضای خالی و تغییرات انتهای متن را در یک پیام تنظیم مینماید. برای این پارامتر، دو حالت متعارف وجود دارد: ‘Simple’ که اجازه هیچ تغییری را نمیدهد و ‘relaxed’ که اجازه میدهد تا تغییرات معمول در فضای خالی و خط پایانی سرآیند ایجاد شود. متعارف سازی در سرآیند و بدنه به صورت جداگانه قابل مدیریت است و از قالب سرآیند / بدنه استفاده میکند.
-
c = relaxed / relaxed:
- بخش زیر، به عنوان یک selector کلید عمومی DKIM برای تأیید استفاده میشود. دامنهها میتوانند، چندین کلید عمومی DKIM داشته باشند و مقدار selector تضمین میکند که سرورهای گیرنده از کلید عمومی صحیح استفاده مینمایند.
-
s = 20130519032151:
- قطعه کد زیر، دامنه ایمیلی را نشان میدهد که پیام را امضا کرده است. امضای DKIM شما باید از نام دامنه شما در اینجا استفاده کند؛ زیرا این باعث میشود، صرف نظر از ارائه دهنده سرویس ایمیلی که استفاده میکنید، اعتبار دامنه شما با ISP در هنگام ارسال ایمیل معتبر تقویت شود.
-
d = postmarkapp.com:
- بخش زیر نشان دهنده سرآیندهای پیام است؛ هنگامی که بصورت رمزنگاری امضا شده است.
-
From:Date:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:To:Message-ID:
- قطعه کد زیر، هویت امضا کننده را نشان میدهد که معمولاً به عنوان آدرس ایمیل ارائه میشود.
-
i=support@postmarkapp.com:
- بخش زیر، مقدار هش بدنه پیام قبل از امضای سرآیندهای پیام را نشان میدهد.
-
bh = vYFvy46eesUDGJ45hyBTH30JfN4 =:
- قطعه کد زیر، امضای رمزنگاری از تمام اطلاعات را نشان میدهد. این ورودی در طی مراحل تأیید به عنوان یک رشته خالی در نظر گرفته میشود.
-
b=iHeFQ+7rCiSQs3DPjR2eUSZSv4i/Kp+sipURfVH7BGf+SxcwOkX7X8R1RVObMQsFcbIxnrq7Ba2QCf0YZlL9iqJf32V+baDI8IykuDztuoNUF2Kk0pawZkbSPNHYRtLxV2CTOtc+x4eIeSeYptaiu7g7GupekLZ2DE1ODHhuP4I=:
پس از محاسبه امضا و افزوده شدن آن به عناوین ایمیل خروجی، پیام اکنون برای یک سرور گیرنده آماده است تا تأیید کند که پیام در طول انتقال تغییر نکرده است.
تأیید یک پیام DKIM امضا شده
سیستمهای ایمیل با اطمینان از اینکه شماره نسخه با مشخصات DKIM مطابقت دارد، شناسه دامنه فرستنده با دامنه تنظیم شده در امضا مطابقت دارد و اینکه برچسب "h =" حاوی قسمت سرآیند است، تأیید DKIM را آغاز میکند.
پس از تأیید اعتبار، سرور گیرنده سعی میکند کلید عمومی دامنه ارسال کننده را بازیابی نماید. سرور، برای جستجوی رکوردهای DNS دامنه ارسال کننده از برچسب "d =" و برای انتخاب کلید صحیح DKIM از برچسب "s =" استفاده میکند. در اینجا، کلید عمومی Postmark به این صورت است:
20130519032151pm._domainkey.postmarkapp.com. 3599 IN TXT "k=rsa\;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSGLvJw6sZ5YEeFe5tl6D7h6IiE1J5kmMH6TEpG99BIHDuXg3vz/qRblKa0WcbI4SLDwsMkq17VheGt7ZZANqrCjcieHkKC8u52h5mezNFHRcKiOpr06o8PfkbqQsCX58ZpALcH0S1aQb6zkpebYsA111l1pGv5qlKvsbJ9t+9jwIDAQAB"
کلید عمومی، هش رمزگذاری شده ارسالی را رمزگشایی مینماید. سپس سرور ایمیل دریافت کننده، هش خود را محاسبه میکند. اگر این دو با هم مطابقت داشته باشند، پیام اجازه عبور پیدا میکند.
نحوه افزودن رکورد DKIM به دامنه
مهم نیست که از کدام ESP یا سرور ایمیل استفاده مینمایید؛ در هر صورت تنظیمات کلی DKIM یکسان است. بدین معنی که شما به یک کلید خصوصی نیاز دارید که در جایی امن ذخیره شده باشد و باید یک کلید عمومی در رکورد DNS دامنه خود به اشتراک بگذارید. مشابه SPF، استاندارد DKIM نیز از رکوردهای DNS TXT با یک قالب خاص استفاده میکند.
چرخش دورهای کلیدهای DKIM یکی از بهترین روشها به منظور افزایش امنیت است. استاندارد DKIM توصیه میکند که کلیدهای خود را هر سه ماه یکبار بچرخانید؛ همچنین به شما توصیه میکند، کلیدهای DKIM قدیمی خود را به عنوان بخشی از این چرخش حذف نمایید. بهترین روش برای مدیریت این کار، اضافه کردن کلیدهای جدید و حذف کلیدهای قدیمی رکوردهای DNS پس از گذشت چند روز برای دامنه است. Postmark، مدیریت این چرخش را بسیار آسان کرده است.
منبع:
0 دیدگاه
نوشتن دیدگاه