رمزنگاری دانش تغییر دادن متن پیام یا اطلاعات به کمک کلید رمز و با استفاده از یک الگوریتم رمز است، به صورتی که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمز شده باشد و شخصی که از یکی یا هر دوی آنها اطلاع ندارد، نتواند به اطلاعات دسترسی پیدا کند. دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تئوری اطلاعات، نظریه اعداد و آمار بنا شدهاست و امروزه به طور خاص در علم مخابرات مورد بررسی و استفاده قرار میگیرد. معادل رمزنگاری در زبان انگلیسی کلمه Cryptography است، که برگرفته از لغات یونانی kryptos به مفهوم «محرمانه» و graphien به معنای «نوشتن» است.
رمزنگاری، پنهاننگاری، کدگذاری
در رمزنگاری، وجود اطلاعات یا ارسال شدن پیام به هیچ وجه مخفی نمیباشد، بلکه ذخیره اطلاعات یا ارسال پیام مشخص است، اما تنها افراد مورد نظر میتوانند اطلاعات اصلی را بازیابی کنند. بالعکس در پنهاننگاری، اصل وجود اطلاعات یا ارسال پیام محرمانه، مخفی نگاه داشته میشود و غیر از طرف ارسالکننده و طرف دریافتکننده کسی از ارسال پیام آگاه نمیشود.
در رمزنگاری محتویات یک متن به صورت حرف به حرف و در بعضی موارد بیت به بیت تغییر داده میشود و هدف تغییر محتوای متن است نه تغییر ساختار زبانشناختی آن. در مقابل کدگذاری تبدیلی است که کلمهای را با یک کلمه یا نماد دیگر جایگزین میکند و ساختار زبانشناختی متن را تغییر میدهد.
ریشهٔ واژهٔ Cryptography برگرفته از یونانی به معنای «محرمانه نوشتن متون» است. رمزنگاری پیشینهٔ طولانی ودرخشان دارد که به هزاران سال قبل برمی گردد. متخصصین رمزنگاری بین رمز وکد تمایز قائل میشوند. رمز عبارتست از تبدیل کاراکتر به کاراکتر یا بیت به بیت بدون آن که به محتویات زبان شناختی آن پیام توجه شود. در طرف مقابل، کد تبدیلی است که کلمهای را با یک کلمه یا علامت دیگر جایگزین میکند. امروزه از کدها استفادهٔ چندانی نمیشود اگر چه استفاده از آن پیشینهٔ طولانی و پرسابقهای دارد. موفق ترین کدهایی که تاکنون نوشته شده ابداع شدهاند توسط ارتش ایالات متحده و در خلال جنگ جهانی دوم در اقیانوس آرام بکار گرفته شد.
تاریخچه رمزنگاری
نمونهای از روش رمز کردن موسوم به رمز سزار که بر اساس جابجایی ساده حروف الفبا عمل میکنددر بررسی نخستین استفادهکنندگان از تکنیکهای رمزنگاری به سزار (امپراتور روم) و نیز الکندی که یک دانشمند مسلمان است برمیخوریم، که البته روشهای خیلی ابتدایی رمزنگاری را ابداع و استفاده کردهاند. به عنوان مثال، با جابجا کردن حروف الفبا در تمام متن به اندازهٔ مشخص آن را رمز میکردند و تنها کسی که از تعداد جابجا شدن حروف مطلع بود میتوانست متن اصلی را استخراج کند.
استفاده از استوانه و نوار کاغذی برای رمز کردن پیامیکی دیگر از شیوههای رمزنگاری ابتدایی، پیچیدن یک نوار کاغذی بر روی استوانهای با قطر مشخص و سپس نوشتن پیام روی کاغذ پیچیده شده بودهاست. بدیهی است بدون اطلاع از مقدار قطر استوانه، خواندن پیام کار بسیار دشواری خواهد بود و تنها کسانی که نسخههای یکسانی از استوانه را داشته باشند میتوانند پیام را بخوانند.
ماشین رمزکنندهٔ لورنتز که در جنگ جهانی دوم توسط آلمان برای رمز کردن پیامهای نظامی مورد استفاده قرار گرفتهاست
در قرن بیستم میلادی از همین روش به همراه موتورهای الکتریکی برای رمزنگاری با سرعت بالا استفاده شد که نمونههای آن در ماشین رمز لورنتز و ماشین رمز انیگما دیده میشود.
اصول ششگانه کرکهف
آگوست کرکهف شهرت خود را از پژوهشهای زبانشناسی و کتابهایی که در این خصوص و زبان ولاپوک نوشته بود بدست آورد.او در سال ۱۸۸۳ دو مقاله با عنوان «رمز نگاری نظامی» منتشر کرد. در این دو مقاله شش اصل اساسی وجود داشت که اصل دوم آن به عنوان یکی از قوانین رمز نگاری هنوز هم مورد استفاده دانشمندان در رمز نگاری پیشرفتهاست:
سیستم رمزنگاری اگر نه به لحاظ تئوری که در عمل غیر قابل شکست باشد.
سیستم رمز نگاری باید هیچ نکته پنهان و محرمانهای نداشته باشد. بلکه تنها چیزی که سری است کلید رمز است.
کلید رمز باید به گونهای قابل انتخاب باشد که اولا بتوان براحتی آن را عوض کرد و ثانیا بتوان آنرا به خاطر سپرد و نیازی به یاداشت کردن کلید رمز نباشد.
متون رمز نگاری باید از طریق خطوط تلگراف قابل مخابره باشند.
دستگاه رمز نگاری یا اسناد رمز شده باید توسط یکنفر قابل حمل و نقل باشد.
سیستم رمزنگاری باید به سهولت قابل راه اندازی باشد.
رمزنگاری پیشرفته
با پدید آمدن رایانهها و افزایش قدرت محاسباتی آنها، دانش رمزنگاری وارد حوزهٔ علوم رایانه گردید و این پدیده، موجب بروز سه تغییر مهم در مسائل رمزنگاری شد:
وجود قدرت محاسباتی بالا این امکان را پدید آورد که روشهای پیچیدهتر و مؤثرتری برای رمزنگاری به وجود آید.
روشهای رمزنگاری که تا قبل از آن اصولا برای رمز کردن پیام به کار میرفتند، کاربردهای جدید و متعددی پیدا کردند.
تا قبل از آن، رمزنگاری عمدتاً روی اطلاعات متنی و با استفاده از حروف الفبا انجام میگرفت؛ اما ورود رایانه باعث شد که رمزنگاری روی انواع اطلاعات و بر مبنای بیت انجام شود.
تعاریف و اصطلاحات
عناصر مهمی که در رمزنگاری مورد استفاده قرار میگیرند به شرح زیر میباشد:
متن آشکار
پیام و اطلاعات را در حالت اصلی و قبل از تبدیل شدن به حالت رمز، متن آشکار یا اختصارا پیام مینامند. در این حالت اطلاعات قابل فهم توسط انسان است.
متن رمز
به پیام و اطلاعات بعد از درآمدن به حالت رمز، گفته میشود. اطلاعات رمز شده توسط انسان قابل فهم نیست.
رمزگذاری (رمز کردن)
عملیاتی است که با استفاده از کلید رمز، پیام را به رمز تبدیل میکند.
رمزگشایی (باز کردن رمز)
عملیاتی است که با استفاده از کلید رمز، پیام رمز شده را به پیام اصلی باز میگرداند. از نظر ریاضی، این الگوریتم عکس الگوریتم رمز کردن است.
کلید رمز
اطلاعاتی معمولاً عددی است که به عنوان پارامتر ورودی به الگوریتم رمز داده میشود و عملیات رمزگذاری و رمزگشایی با استفاده از آن انجام میگیرد. انواع مختلفی از کلیدهای رمز در رمزنگاری تعریف و استفاده میشود.
رمزنگاری دانش گستردهای است که کاربردهای متنوعی دارد. در این حوزهٔ وسیع، تعاریف زیر از اهمیت ویژهای برخوردار هستند:
سرویس رمزنگاری
به طور کلی، سرویس رمزنگاری، به قابلیت و امکانی اطلاق میشود که بر اساس فنون رمزنگاری حاصل میگردد. قبل از ورود رایانهها به حوزهٔ رمزنگاری، تقریباً کاربرد رمزنگاری محدود به رمز کردن پیام و پنهان کردن مفاد آن میشدهاست. اما در رمزنگاری پیشرفته سرویسهای مختلفی از جمله موارد زیر ارائه گردیدهاست:
محرمانگی یا امنیت محتوا[۱]: ارسال یا ذخیره اطلاعات به نحوی که تنها افراد مجاز بتوانند از محتوای آن مطلع شوند، که همان سرویس اصلی و اولیهٔ پنهان کردن مفاد پیام است.
سلامت محتوا[۲]
به معنای ایجاد اطمینان از صحت اطلاعات و عدم تغییر محتوای اولیهٔ آن در حین ارسال است. تغییر محتوای اولیهٔ اطلاعات ممکن است به صورت اتفاقی (در اثر مشکلات مسیر ارسال) و یا به صورت عمدی باشد.
احراز هویت یا اصالت محتوا[۳]
به معنای تشخیص و ایجاد اطمینان از هویت ارسالکننده اطلاعات و عدم امکان جعل هویت افراد میباشد.
عدم انکار[۴]
به این معنی است که ارسالکنندهٔ اطلاعات نتواند در آینده ارسال آن را انکار یا مفاد آن را تکذیب نماید.
چهار مورد بالا، سرویسهای اصلی رمزنگاری تلقی میشوند و دیگر اهداف و سرویسهای رمزنگاری، با ترکیب چهار مورد بالا قابل حصول میباشند.
این سرویسها مفاهیم جامعی هستند و میتوانند برای کاربردهای مختلف پیادهسازی و استفاده شوند. به عنوان مثال سرویس اصالت محتوا هم در معاملات تجاری اهمیت دارد و هم در مسائل نظامی و سیاسی مورد استفاده قرار میگیرد. برای ارائه کردن هر یک از سرویسهای رمزنگاری، بسته به نوع کاربرد، از پروتکلهای مختلف رمزنگاری استفاده میشود.
پروتکل رمزنگاری
به طور کلی، یک پروتکل رمزنگاری، مجموعهای از قواعد و روابط ریاضی است که چگونگی ترکیب کردن الگوریتمهای رمزنگاری و استفاده از آنها به منظور ارائهٔ یک سرویس رمزنگاری خاص در یک کاربرد خاص را فراهم میسازد.
معمولاً یک پروتکل رمزنگاری مشخص میکند که
اطلاعات موجود در چه قالبی باید قرار گیرند
چه روشی برای تبدیل اطلاعات به عناصر ریاضی باید اجرا شود
کدامیک از الگوریتمهای رمزنگاری و با کدام پارامترها باید مورد استفاده قرار گیرند
روابط ریاضی چگونه به اطلاعات عددی اعمال شوند
چه اطلاعاتی باید بین طرف ارسالکننده و دریافتکننده رد و بدل شود
چه مکانیسم ارتباطی برای انتقال اطلاعات مورد نیاز است
به عنوان مثال میتوان به پروتکل تبادل کلید دیفی-هلمن[۵] برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره نمود.
الگوریتم رمزنگاری
الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته میشود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکلهای رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.
در گذشته سازمانها و شرکتهایی که نیاز به رمزگذاری یا سرویسهای دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصربهفردی را طراحی مینمودند. به مرور زمان مشخص گردید که گاهی ضعفهای امنیتی بزرگی در این الگوریتمها وجود دارد که موجب سهولت شکسته شدن رمز میشود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شدهاست و در روشهای جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شدهاست و آنچه پنهان است فقط کلید رمز است.
بنا بر این تمام امنیت حاصل شده از الگوریتمها و پروتکلهای رمزنگاری استاندارد، متکی به امنیت و پنهان ماندن کلید رمز است و جزئیات کامل این الگوریتمها و پروتکلها برای عموم منتشر میگردد.
بر مبنای تعریف فوق، توابع و الگوریتمهای مورد استفاده در رمزنگاری به دستههای کلی زیر تقسیم میشوند:
توابع بدون کلید
توابع درهمساز[۶]
تبدیلهای یکطرفه[۷]
توابع مبتنی بر کلید
الگوریتمهای کلید متقارن
الگوریتمهای رمز بلوکی
الگوریتمهای رمز دنبالهای
توابع تصدیق پیام[۸]
الگوریتمهای کلید نامتقارن
الگوریتمهای مبتنی بر تجزیهٔ اعداد صحیح
الگوریتمهای مبتنی بر لگاریتم گسسته
الگوریتمهای مبتنی بر منحنیهای بیضوی
الگوریتمهای امضای رقومی[۹]
الگوریتمهای رمزنگاری بسیار متعدد هستند، اما تنها تعداد اندکی از آنها به صورت استاندارد درآمدهاند.
رمزنگاری کلید متقارن
رمزنگاری کلید متقارن[۱۰] یا تک کلیدی، به آن دسته از الگوریتمها، پروتکلها و سیستمهای رمزنگاری گفته میشود که در آن هر دو طرف رد و بدل اطلاعات از یک کلید رمز یکسان برای عملیات رمزگذاری و رمزگشایی استفاده میکنند. در این قبیل سیستمها، یا کلیدهای رمزگذاری و رمزگشایی یکسان هستند و یا با رابطهای بسیار ساده از یکدیگر قابل استخراج میباشند و رمزگذاری و رمزگشایی اطلاعات نیز دو فرآیند معکوس یکدیگر میباشند.
واضح است که در این نوع از رمزنگاری، باید یک کلید رمز مشترک بین دو طرف تعریف گردد. چون کلید رمز باید کاملاً محرمانه باقی بماند، برای ایجاد و رد و بدل کلید رمز مشترک باید از کانال امن استفاده نمود یا از روشهای رمزنگاری نامتقارن استفاده کرد. نیاز به وجود یک کلید رمز به ازای هر دو نفرِ درگیر در رمزنگاری متقارن، موجب بروز مشکلاتی در مدیریت کلیدهای رمز میگردد.
رمزنگاری کلید نامتقارن
رمزنگاری کلید نامتقارن[۱۱]، در ابتدا با هدف حل مشکل انتقال کلید در روش متقارن و در قالب پروتکل تبادل کلید دیفی-هلمن پیشنهاد شد. در این نوع از رمزنگاری، به جای یک کلید مشترک، از یک زوج کلید به نامهای کلید عمومی و کلید خصوصی استفاده میشود. کلید خصوصی تنها در اختیار دارندهٔ آن قرار دارد و امنیت رمزنگاری به محرمانه بودن کلید خصوصی بستگی دارد. کلید عمومی در اختیار کلیهٔ کسانی که با دارندهٔ آن در ارتباط هستند قرار داده میشود.
به مرور زمان، به غیر از حل مشکل انتقال کلید در روش متقارن، کاربردهای متعددی برای این نوع از رمزنگاری مطرح گردیدهاست. در سیستمهای رمزنگاری نامتقارن، بسته به کاربرد و پروتکل مورد نظر، گاهی از کلید عمومی برای رمزگذاری و از کلید خصوصی برای رمزگشایی استفاده میشود و گاهی نیز، بر عکس، کلید خصوصی برای رمزگذاری و کلید عمومی برای رمزگشایی به کار میرود.
دو کلید عمومی و خصوصی با یکدیگر متفاوت هستند و با استفاده از روابط خاص ریاضی محاسبه میگردند. رابطهٔ ریاضی بین این دو کلید به گونهای است که کشف کلید خصوصی با در اختیار داشتن کلید عمومی، عملاً ناممکن است.
مقایسه رمزنگاری کلید متقارن و کلید نامتقارن
اصولاً رمزنگاری کلید متقارن و کلید نامتقارن دارای دو ماهیت متفاوت هستند و کاربردهای متفاوتی نیز دارند. بنا بر این مقایسهٔ این دو نوع رمزنگاری بدون توجه به کاربرد و سیستم مورد نظر کار دقیقی نخواهد بود. اما اگر معیار مقایسه، به طور خاص، حجم و زمان محاسبات مورد نیاز باشد، باید گفت که با در نظر گرفتن مقیاس امنیتی معادل، الگوریتمهای رمزنگاری متقارن خیلی سریعتر از الگوریتمهای رمزنگاری نامتقارن میباشند.
تجزیه و تحلیل رمز
تجزیه و تحلیل رمز[۱۲] یا شکستن رمز، به کلیهٔ اقدامات مبتنی بر اصول ریاضی و علمی اطلاق میگردد که هدف آن از بین بردن امنیت رمزنگاری و در نهایت باز کردن رمز و دستیابی به اطلاعات اصلی باشد. در تجزیه و تحلیل رمز، سعی میشود تا با بررسی جزئیات مربوط به الگوریتم رمز و یا پروتکل رمزنگاری مورد استفاده و به کار گرفتن هرگونه اطلاعات جانبی موجود، ضعفهای امنیتی احتمالی موجود در سیستم رمزنگاری یافته شود و از این طریق به نحوی کلید رمز به دست آمده و یا محتوای اطلاعات رمز شده استخراج گردد.
تجزیه و تحلیل رمز، گاهی به منظور شکستن امنیت یک سیستم رمزنگاری و به عنوان خرابکاری و یک فعالیت ضد امنیتی انجام میشود و گاهی هم به منظور ارزیابی یک پروتکل یا الگوریتم رمزنگاری و برای کشف ضعفها و آسیبپذیریهای احتمالی آن صورت میپذیرد. به همین دلیل، تجزیه و تحلیل رمز، ذاتاً یک فعالیت خصومتآمیز به حساب نمیآید؛ اما معمولاً قسمت ارزیابی و کشف آسیبپذیری را به عنوان جزئی از عملیات لازم و ضروری در هنگام طراحی الگوریتمها و پروتکلهای جدید به حساب میآورند و در نتیجه تجزیه و تحلیل رمز بیشتر فعالیتهای خرابکارانه و ضد امنیتی را به ذهن متبادر میسازد. با توجه به همین مطلب از اصطلاح حملات تحلیل رمز[۱۳] برای اشاره به چنین فعالیتهایی استفاده میشود.
تحلیل رمز، در اصل اشاره به بررسی ریاضی الگوریتم (یا پروتکل) و کشف ضعفهای احتمالی آن دارد؛ اما در خیلی از موارد فعالیت خرابکارانه، به جای اصول و مبنای ریاضی، به بررسی یک پیادهسازی خاص آن الگوریتم (یا پروتکل) در یک کاربرد خاص میپردازد و با استفاده از امکانات مختلف سعی در شکستن رمز و یافتن کلید رمز مینماید. به این دسته از اقدامات خرابکارانه، حملات جانبی[۱۴] گفته میشود.
رمزهای جانشینی
در رمز نگاری جانشینی هر حرف یا گروهی از حروف بایک حرف یا گروهی دیگراز حروف جابجا میشوند تا شکل پیام بهم بریزد.یکی از قدیمی ترین رمزهای شناخته شده روش رمز نگاری سزار است که ابداع آن به ژولیوس سزار نسبت داده میشود.در این روش حرف a به d تبدیل میشود bبه c، e به fوبه همین ترتیب تاz که با حروفc جایگزین میشوند.
افزونگی
اولین اصل آن است که تمام پیامهای رمز شده بایدشامل مقداری«افزونگی»[دادههای زائد]باشندبه عبارت دیگر لزومی ندارد که اطلاعات واقعی به همان گونه که هستند رمز و ارسال شوند. یک مثال میتواند به فهم دلیل این نیاز کمک کند. فرض کنید یک شرکت به نام TCP با۶۰۰۰۰کالااز طریق سیستم پست الکترونیکی سفارش خرید میپذیرد. برنامه نویسان شرکت TCP به خیال آن که برنامههای موثر و کار آمدی مینویسند پیامهای سفارش کالا را مشتمل بر ۱۶بایت نام مشتری و به دنبال آن سه بایت فیلد داده (شامل یک بایت برای تعدادکالا ودو بایت برای شمارهٔ کالا)در نظر میگیرد که سه بایت آخر توسط یک کلید بسیار طولانی رمزنگاری میشود واین کلید را فقط مشتری و شرکت TCP میداند.
تازگی پیامها
دومین اصل اساسی در رمزنگاری آن است که باید محاسباتی باید صورت بگیرد تا مطمئن شویم هرپیام دریافتی تازه و جدید است یا به عبارتی اخیراً فرستاده شدهاست این بررسی برای جلوگیری از ارسال مجدد پیامهای قدیمی توسط یک اخلالگر فعّال الزامی است اگر چنین بررسیهایی انجام نشود کارمند اخراجی ما قادر است با ایجاد یک انشعاب مخفی از خط تلفن پیامهای معتبری را که قبلاً ارسال شده مکرراً ارسال نماید، حتی اگر نداند محتوای ان چیست.
راهکاری برای ایجاد تازگی پیام
یک چنین محاسبهای را میتوان با قرار دادن یک مهر زمان در پیامها پیش بینی کرد به نحوی که پیامها مثلاً برای ده ثانیه معتبر باشد گیرندهٔ پیام میتواند آن را برای حدود ده ثانیه نگه دارد تا بتواند پیامهای جدید را با آن مقایسه کرده و نسخههای تکراری را که دارای مهر زمان هستند به عنوان پیامهای قدیمی شناخته و حذف خواهند شد.
رمزنگاری به صورت سخت افزاری
الگوریتمهای رمزنگاری رامی توان هم به صورت سخت افزاری(به منظورسرعت بالاتر) وهم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد روشهای جانشینی وجایگشتی میتوانند با یک مدار سادهٔ الکترونیکی پیاده سازی شوند. p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد دارد.بود با سیم بندی و برنامه ریزی درونی این p-box قادراست هر گونه جایگشت بیتی راعملاً با سرعتی نزدیک به سرعت نور انجام بدهد چرا که هیچ گونه محاسبهای لازم نیست وفقط تأخیر انتشار سیگنال وجود دارد.این طراحی از اصل کرکهف تبعیت میکند یعنی:حمله کننده از روش عمومی جایگشت بیتها مطلّع است آن چه که او از آن خبر ندارد آن است که کدام بیت به کدام بیت نگاشته میشود کلید رمز همین است.
الگوریتمهای کلید عمومی
همواره توزیع و مبادلهٔ کلید رمز یکی از مشکلات سیستمهای رمزنگاری بودهاست. فارغ از آن که یک سیستم رمزنگاری چقدر قدرتمند و محکم است، هرگاه یک اخلالگر بتواند کلید رمز را سرقت کند، کل سیستم بی ارزش خواهد شد. رمزشکنها همیشه از روشهایی که در آنها کلید رمزنگاری و رمزگشایی یکسان است (یا ازطریق یکدیگر قابل محاسبه هستند) قلباً استقبال میکنند. در این روشها بالاخره باید کلیدها بین کاربران سیستم توزیع شود. در همین نقطه به نظر میرسد که یک اشکال ذاتی ودرونی وجود دارد. از یک طرف این کلیدها باید در مقابل سرقت حفاظت شوند و از طرف دیگر باید بین کاربران توزیع شوند. در سال۱۹۷۶دوپژوهشگر در دانشگاه استنفورد به نامهای دیفی و هلمنیک سیستم رمز کاملاً جدید را پیشنهاد کردندکه در آن کلیدهای رمز نگاری ورمزگشایی متفاوت بودند وبا در اختیار داشتن کلیدهای رمز نگاری عملاَ نمیشدکلیدهای رمز گشایی رااستنتاج کرد در طرح پیشنهادی این دو نفرالگوریتم رمزنگاریE(باکلید(e الگوریتم رمز گشاییD(باکلید(dباید سه نیاز زیر را برآورده میکرد. این نیازها را میتوان به سادگی به صورت زیر توصیف کرد: ۱.D(E(P))=P ۲.استنتاجd(کلید رمز گشایی)از روی e(کلیدرمز نگاری)بی نهایت مشکل میباشد. ۳.از طریق مکانیزم«حمله با متنهای انتخابی وشناخته شده»شکسته نشود. اولین نیاز بیانگر آن است که هر گاه الگوریتم رمز گشاییDرابر روی یک متن رمز شده یعنی(p)E اعمال کنیم مجددا َاصل پیام را بدست بیاوریم. بدون این ویژگی گیرندهٔ پیام نیز قادر به رمز گشایی متن رمز نخواهد بود. نیاز دوم به قدر کافی گویاست واحتیاجی به توضیح اضافی ندارد. نیاز سوم به نحوی که بعداَ خواهیم دید از آن جهت است که یک رمز شکن ممکن است الگوریتم رابا استفاده از متنهای شناخته شده بیازماید وبه روش سعی وخطا متن رمز شده را بشکند. با این سه شرط دلیلی وجود نداردکه کلیدرمز نگاری رانتوان به صورت عمومی در اختیار همه قرار داد. روش کار بدین نحو است که یک شخص مثلاَََ آلیس وقتی تمایل داردپیامهای محرمانه در یافت کند باید ابتدا دو الگوریتم منطبق با شرایط فوق ابداع کند.الگوریتم وکلید رمز نگاری آلیس به صورت عمومی وآشکار اعلام میشود.آلیس حتی میتواند کلید عمومی [برای رمز نگاری ]را در صفحه اصلی از وب سایت خودش به همه اعلام کند.مااز نماد EAبه معنای الگوریتم رمز نگاری با پارامترA یعنی کلید عمومی آلیس استفاده میکنیم همچنین از نماد DA به معنای الگوریتم رمز گشایی با پارامتر A یعنی کلید خصوصی آلیس استفاده مینماییم باب نیز دقیقاَ همین کار را میکند EB را به صورت عمومی آشکار میکند در حالی که DBرا به صورت سری نزد خود نگهداری میکند. حال ببینیم مشکل برقراری یک کانال مطمئن بین آلیس وباب که هیچ ارتباط قبلی با هم نداشتهاند چگونه حل میشود فرض شده کلید رمز نگاری آلیس یعنی EAوکلید رمز نگاری باب یعنی EB را در فایلهای قابل خواندن و به صورت آشکار قرار دارد. آلیس اولین پیام خود یعنی p را میگیرد و E(p) را محاسبه کرده و نتیجه را برای باب میفرستد. باب با اعمال کلید سری خود یعنی DB آن را رمزگشایی میکند. هیچ شخص دیگری نمیتواند از پیام رمزنگاری شده بهره برداری کند چرا که سیستم رمزنگاری بسیار قدرتمند فرض شده و استنتاج DB از کلید رمزگشایی EB بسیار مشکل و غیر عملی است. برای ارسال پاسخ پیام R را ارسال میکند.حال آلیس و باب میتوانند به صورت مطمئن با یکدیگر مبادلهٔ پیام نمایند بدون آن که کلیدهای سری آنها راغیرازخود شان کسی بداند. شاید اشاره به چند اصطلاح در خصوص این روش مفید باشد.رمزنگاری با کلید عمومی ایجاب میکند که هر کاربر دو کلید داشته باشد: یک کلید عمومی که تمام دنیا برای ارسال پیام به کاربر ازآن استفاده میکنند و یک کلید خصوصی که کاربر برای رمزگشایی پیامها بدان احتیاج دارد.
امضاهای دیجیتالی
مسئلهٔ ابداع یک روش جایگزین به جای امضاهای دست نویس یکی از موضوعات دشوار به حساب میآید در اصل به سیستمی نیاز است که براساس آن یک طرف بتواند پیامی امضاء شده را برای طرف دیگر بفرستد به گونهای که شرایط زیر به درستی احراز شود: ۱.گیرنده بتواند هویت شخص فرستندهٔ پیام را بررسی کند. ۲.فرستنده بعداً نتواند محتوای پیام ارسالی خود را انکار کند. ۳.گیرنده نیز نتواند پیامهای جعلی را برای خود بسازد.
امضاهای دیجیتالی با کلید متقارن
یکی ازروشهای ساماندهی امضاهای دیجیتالی آنست که یک مرکز معتبر و مجاز گواهی امضاء داشته باشیم که همه را میشناسد ومورد اعتماد همه نیزهست آن را اصطلاحاً BB مینامیم. هرکاربر برای خود یک کلید رمز سری انتخاب کرده وشخصاًبه ادارهٔ BB و آن را ثبت مینماید به این ترتیب کاربری مثل آلیس فقط خودش و BBکلید سری وتوافق شدهٔ KAرامی دانند به همین روال دیگرکاربران نیزکلید خودشان رادر BB ثبت مینمایند. وقتی آلیس بخواهد پیامهای امضاء شدهٔ خود یعنی p را برای کارپرداز بانک خود بفرستد KA راتولید میکند که در آن B مشخصی شناسایی باب بفرستد، KA(B,RA,t,P) را تولید میکند که در آن B مشخصهٔ شناسایی باب، RAیک عدد تصادفی که توسط آلیس انتخاب شده، tمهر زمان برای اطمینان از جدید وتازه بودن آن، Pاصل پیام و نتیجهٔ رمزنگاری مجموعهٔ این چهار آیتم توسط کلید سری آلیس یعنی است. سپس او این دادههای رمز شده را برای BB میفرستد. BB متوجه میشود که پیام از آلیس است لذا آن را با کلید سری آلیس رمزگشایی میکند وآن را مجدداً رمز کرده و برای باب میفرستد. پیام ارسالی به باب شامل اصل پیام آلیس ویک پیام امضاء شده KBB(A,t,P) است. حال باب میتواند درخواست آلیس را با اطمینان خاطر انجام بدهد.
امضاهای با کلید عمومی
مشکل ساختاری در به کارگیری رمزنگاری با کلید متقارن برای امضاهای دیجیتالی آن است که همه باید به BB اعتماد کنند. در ضمن BB باید تمام پیامهای امضاء شده را بخواند. خوشبختانه رمزنگاری با کلید عمومی میتواند در این زمینه نقش بسیار مؤثر و مثبتی ایفاء کند. فرض را بر آن میگذاریم که الگوریتمهای رمزنگاری و رمزگشایی دارای این خصوصیات که E(D(P))=P وهمچنین D (E (P))=P. با فرض وجود این ویژگی، آلیس میتواند متن رمز و امضاء شدهٔ P را به صورت EB(DA(P))برای باب بفرستد. دقت داشته باشید که آلیس فقط وفقط خودش کلید خصوصی خود یعنی DA را میداند همچنین کلید عمومی باب یعنی EB را در اختیار دارد بنابراین ایجاد پیام فوق برای آلیس ممکن خواهد بود. وقتی باب پیام را دریافت میکند، ابتدا آن را با کلید خصوصی خود رمزگشایی کرده.او این متن را در جای امنی ذخیره میکند سپس کلید عمومی آلیس را بر روی آن اعمال کرده و DA(P) متن اصلی را بدست میاورد.
منبع: ویکی پدیا
Linkback: https://irmeta.com/meta/b1714/t6072/