پروتکل تبادل کلید دیفی-هلمن

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

پروتکل تبادل کلید دیفی-هلمن، یک پروتکل رمزنگاری است که با استفاده از آن، دو نفر یا دو سازمان، می‌توانند بدون نیاز به هر گونه آشنایی قبلی، یک کلید رمز مشترک ایجاد و آن را از طریق یک مسیر ارتباطی غیر امن، بین خود تبادل نمایند. این پروتکل، اولین روش عملی مطرح شده برای تبادل کلید رمز در مسیرهای ارتباطی غیر امن است و مشکل تبادل کلید رمز در رمزنگاری کلید متقارن را آسان می‌سازد.

این پروتکل، در سال ۱۹۷۶ توسط دو دانشمند رمزشناس به نام‌های ویتفیلد دیفی و مارتین هلمن طراحی شده و در قالب یک مقالهٔ علمی منتشر گردیده است. مطرح شدن این پروتکل، گام مهمی در معرفی و توسعهٔ رمزنگاری کلید نامتقارن به حساب می‌آید.

تاریخچه پروتکل دیفی-هلمن در رمزنگاری[ویرایش]

تا قبل از انتشار این پروتکل، رمزنگاری بیشتر به صورت رمزنگاری کلید متقارن مورد استفاده قرار می‌گرفته است. در سال ۱۹۷۶، با انتشار این پروتکل، پایهٔ اولیهٔ رمزنگاری کلید نامتقارن بنا شد که بعداً با فعالیت‌های رالف مرکل تکمیل گردید. مدتی بعد نیز الگوریتم رمز مشهور آراس‌ای که از مبانی مشابهی برخوردار است مطرح گردید.

در سال ۱۹۹۷، یک مؤسسه تحقیقاتی جاسوسی در انگلستان ادعا کرد که پروتکل دیفی-هِلمن، قبل از سال ۱۹۷۶ توسط فردی به نام مالکولم ویلیامسون در آن مؤسسه اختراع شده و تنها به دلایل امنیتی از انتشار آن جلوگیری شده بوده است.

در سال ۲۰۰۲، مارتین هِلمن در کتابش خاطرنشان کرد که رالف مِرکل نیز به همان اندازهٔ دیفی و هِلمن در ایجاد و گسترش رمزنگاری کلید نامتقارن تأثیرگذار بوده است و پیشنهاد نمود که این پروتکل به نام دیفی-هِلمن-مِرکل شناخته شود.

در سال‌های بعد از ۱۹۷۶ و با گسترش تدریجی رمزنگاری کلید نامتقارن، پروتکل‌های تبادل کلید مختلفی با استفاده از پروتکل دیفی-هلمن و با قابلیت‌های بیشتری نسبت به آن طراحی شده است.

جزئیات پروتکل دیفی-هلمن[ویرایش]

در فرمول‌های پیشنهادی اولیه این پروتکل، از گروه همنهشتی اعداد صحیح با پیمانهٔ عدد اول p و عملگر ضرب اعداد صحیح استفاده شده است. در این گروه عددی، یک ریشهٔ اولیه محاسبه می‌شود که آن را با g نشان می‌دهند.

ایجاد و تبادل کلید رمز با پروتکل دیفی-هلمن

سپس مراحل زیر که در شکل روبرو هم نشان داده شده است، انجام می‌شود:

  1. مقدار عدد اول دلخواه بزرگ p (پیمانهٔ عمل ضرب) و مقدار محاسبه شده برای g بین طرفین رد و بدل می‌شود.
  2. هر یک از طرفین یک عدد صحیح دلخواه (a و b) را به صورت پنهانی در نظر می‌گیرد.
  3. هر یک از طرفین با استفاده از عمل توان پیمانه‌ای و مقادیر قبلی (p و g و مقدار پنهانی)، یک مقدار جدید محاسبه کرده (A و B) و برای طرف مقابل ارسال می‌کند.
  4. طرف اول با استفاده از مقادیر p و g و a و B، و طرف دوم با استفاده از مقادیر p و g و b و A، و با همان عمل توان پیمانه‌ای مقدار جدیدی را محاسبه می‌کنند. مقدار جدید محاسبه شده -چنانکه فرمول نشان می‌دهد- در دو طرف یکسان است و همان کلید رمز مشترک می‌باشد.

توجه به دو نکته دربارهٔ این پروتکل لازم است:

  • مقادیر a و b و مقدار مشترک محاسبه شده، هرگز مستقیماً از کانال ارتباطی عبور نمی‌کنند. بقیهٔ مقادیر یعنی p و g و A و B از کانال ارتباطی عبور می‌کنند و برای دیگران قابل دسترسی هستند.
  • دشواری حل مسألهٔ لگاریتم گسسته تضمین می‌کند که مقادیر a و b و مقدار کلید رمز مشترک، با داشتن مقدار اعداد دیگر در عمل قابل محاسبه نباشد.
طرف اول
پنهان محاسبه ارسال
p ، g
a
ga mod p
gb mod p)a mod p)
\leftarrow
\rightarrow
=
طرف دوم
ارسال محاسبه پنهان
p ، g
b
gb mod p
ga mod p)b mod p)

مثال عددی[ویرایش]

در اینجا برای سهولت در فهم مطلب یک مثال عددی از ایجاد و تبادل کلید با پروتکل دیفی-هلمن ارائه شده است. در عمل، اعدادی که مورد استفاده قرار می‌گیرند اعداد بسیار بزرگ هستند که ممکن است بیش از یکصد رقم داشته باشند.

  1. طرفین روی مقدار عدد اول ۲۳ = p و مقدار اولیهٔ ۵ = g توافق می‌کنند.
  2. طرف اول مقدار پنهانی ۶ = a را انتخاب و (ga mod p) را برای طرف دوم ارسال می‌کند.
    • ۸ = ( ۲۳ ۵۶mod )
  3. طرف دوم مقدار پنهانی ۱۵ = b را انتخاب و (gb mod p) را برای طرف اول ارسال می‌کند.
    • ۱۹ = ( ۲۳ ۵۱۵mod )
  4. طرف اول مقدار gb mod p)a mod p) را محاسبه کرده و به عنوان کلید رمز مشترک در نظر می‌گیرد.
    • ۲ = ( ۲۳ ۱۹۶mod )
  5. طرف دوم مقدار ga mod p)b mod p) را محاسبه کرده و به عنوان کلید رمز مشترک در نظر می‌گیرد.
    • ۲ = ( ۲۳ ۸۱۵mod )

امنیت پروتکل دیفی-هلمن[ویرایش]

امنیت این پروتکل مبتنی بر دشواری حل مسألهٔ لگاریتم گسسته است.

در حال حاضر مسائل زیر باید در ارتباط با امنیت پروتکل دیفی-هلمن لحاظ گردد:

  • بر اساس قدرت محاسباتی رایانه‌های امروزی، استفاده از عدد اول p با حدود ۳۰۰ رقم و اعداد a و b با حدود ۱۰۰ رقم می‌تواند شکستن امنیت این پروتکل و یافتن کلید رمز مشترک را در عمل غیر ممکن سازد.
  • در عمل هر عدد اول بزرگی را نمی‌توان در این پروتکل به کار گرفت، بلکه لازم است عدد p مورد استفاده یک عدد اول امن باشد. در غیر این صورت شکستن امنیت این پروتکل و یافتن کلید رمز مشترک، با استفاده از الگوریتم‌هایی مانند الگوریتم پولیگ-هلمن، نسبتاً آسان و در زمان کمتری قابل انجام خواهد شد.
  • اعداد پنهانی a و b باید به صورت عدد تصادفی تولید شوند و مولد عدد تصادفی مورد استفاده هم نباید تکرارپذیر و قابل پیش‌بینی باشد. در غیر این صورت، یافتن کلید رمز مشترک آسان‌تر و در زمان کمتری قابل انجام خواهد شد.

مشکل شناسایی طرفین در پروتکل دیفی-هلمن[ویرایش]

فرمول‌های پیشنهادی اولیه این پروتکل که در قسمت بالا ارائه شد، امکان شناسایی متقابل طرفین را فراهم نمی‌سازد. به همین دلیل اگر طرف سومی روی خط ارتباطی و بین طرف اول و دوم قرار بگیرد، می‌تواند بدون اینکه شناسایی شود، با هر یک از طرفین به طور جداگانه طبق پروتکل دیفی-هلمن به رد و بدل کلید رمز بپردازد. (به چنین نوع حمله ای، حمله مرد میانی گفته می‌شود). به این ترتیب طرف سوم خواهد توانست بدون اینکه طرفین اول و دوم متوجه شوند، تمام پیام‌های آن دو را بخواند که برای این کار کافی است ابتدا پیام هر یک از آن‌ها را با کلید رمز مربوط به خودش رمزگشایی کند و سپس با کلید رمز طرف دیگر رمزگذاری نموده و برایش ارسال نماید.

برای مقاوم کردن پروتکل دیفی-هلمن در مقابل این مشکل، لازم است که یک مکانیزم برای شناسایی طرفین به مراحل این پروتکل اضافه گردد. همین امر باعث شده است که پروتکل‌های مختلف شناسایی با استفاده از مکانیزم تبادل کلید دیفی-هلمن ارائه شود.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  • ویکی‌پدیای انگلیسی

پیوند به بیرون[ویرایش]