الگوریتم دیفی-هلمن
الگوریتم دیفی-هلمن (به انگلیسی: Diffie–Hellman یا DH)، یک پروتکل رمزنگاری است که با استفاده از آن، دو نفر یا دو سازمان، میتوانند بدون نیاز به هر گونه آشنایی قبلی، یک کلید رمز مشترک ایجاد و آن را از طریق یک مسیر ارتباطی غیر امن، بین خود تبادل نمایند. این پروتکل، اولین روش عملی مطرح شده برای تبادل کلید رمز در مسیرهای ارتباطی غیر امن است و مشکل تبادل کلید رمز در الگوریتم کلید متقارن را آسان میسازد.
این پروتکل، در سال ۱۹۷۶ توسط دو دانشمند رمزشناس به نامهای ویتفیلد دیفی و مارتین هلمن طراحی شده و در قالب یک مقالهٔ علمی منتشر گردیده است. مطرح شدن این پروتکل، گام مهمی در معرفی و توسعهٔ رمزنگاری کلید عمومی یا الگوریتم نامتقارن به حساب میآید.
بیشتر بدانید:
تا قبل از انتشار این پروتکل، رمزنگاری بیشتر بصورت رمزنگاری کلید متقارن مورد استفاده قرار میگرفته است. در سال ۱۹۷۶، با انتشار این پروتکل، پایهٔ اولیهٔ رمزنگاری کلید نامتقارن بنا شد که بعداً با فعالیتهای رالف مرکل تکمیل گردید. مدتی بعد نیز الگوریتم رمز مشهور RSA که از مبانی مشابهی برخوردار است مطرح گردید. در حال حاضر این دو الگوریتم محبوبیت بالایی در رمزنگاری دارند که مشکلات مشابه را به روشهای گوناگون حل میکنند.
در سال ۱۹۹۷، یک مؤسسه تحقیقاتی جاسوسی در انگلستان ادعا کرد که پروتکل دیفی-هِلمن، قبل از سال ۱۹۷۶ توسط فردی به نام مالکولم ویلیامسون در آن مؤسسه اختراع شده و تنها به دلایل امنیتی از انتشار آن جلوگیری شده است.
در سال ۲۰۰۲، مارتین هِلمن در کتابش خاطر نشان کرد که رالف مِرکل نیز به همان اندازهٔ دیفی و هِلمن در ایجاد و گسترش رمزنگاری کلید نامتقارن تأثیرگذار بوده است و پیشنهاد کرد که این پروتکل به نام دیفی-هِلمن-مِرکل شناخته شود.
در سالهای بعد از ۱۹۷۶ و با گسترش تدریجی رمزنگاری کلید نامتقارن، پروتکلهای تبادل کلید مختلفی با استفاده از پروتکل دیفی-هلمن و با قابلیتهای بیشتری نسبت به آن طراحی شده است.
امنیت این پروتکل مبتنی بر دشواری حل مسئله لگاریتم گسسته است.
شکل زیر بصورت بسیار ساده نحوه عملکرد این الگوریتم را نشان میدهد:
نحوه رمزنگاری به روش دیفی-هلمن
- کوروش و داریوش بر روی عدد اول بزرگ p,g توافق میکنند که عدد p بسیار بزرگ خواهد بود. نیازی نیست که این دو عدد مخفی نگه داشته شوند.
- کوروش و داریوش دو عدد اول Xa , Xb را به صورت تصادفی انتخاب میکنند که کوچکتر از p میباشند. این دو عدد به عنوان کلید خصوصی میبایست مخفی نگاه داشته شوند.
- کوروش کلید قابل ارسال را با استفاده از فرمول Ya= (g^Xa) mod p و بطور مشابه داریوش کلید قابل ارسال را با استفاده از فرمول Yb= (g^Xb) mod p محاسبه میکند. اعداد بدست آمده از طریق یک کانال ناامن برای طرفین ارسال خواهد شد.
- کوروش کلید مورد نظر را با استفاده از فرمول Za= (Yb^Xa) mod p و بطور مشابه داریوش با استفاده از فرمول Zb=(Ya^Xb) mod p کلید مورد نظر را استخراج می کند.
- Za = Zb کلید مشترک محسوب شده و برای عملیات رمزنگاری متقارن قابل استفاده میباشد.
نکته: (عملگر ^ به معنی توان رساندن می باشد)
پرسش و پاسخ
دیفی هلمن یا RSA، کدام یک بهتر است؟
این که کدام یک بر دیگری ترجیح دارد، خیلی بستگی به شرایط و محدودیتهای شما دارد. به طور کلی از نظر کارایی و امنیت، قدرت یک کلید ۱۰۲۴ بیتی دیفی هلمن با یک کلید ۱۰۲۴ بیتی RSA، برابر است.
آیا الگوریتم دیفی هلمن همچنان استفاده می شود؟
بله، در رمزنگاری مدرن از الگوریتم دیفی هلمن استفاده میشود.
مرداد ۹۹
وبسایت خوبی راه اندازی کردید.
عالی توضیح دادید اگر مثال عددی خم میزدید جالبتر مشد گرچه مثال عددی در ویکیپدیا هست اما برای مخاطب شما اینکه مثال عددی بزنید جذابه