تاریخچه رمزنگاری

به مطالعات رمزنگاری، cryptography اطلاق می شود که از واژه های یونانی kryptos به معنی پنهان و graphia به معنی نوشتن تشکیل شده است. به فرآیند باز کردن (شکستن) یک پیغام رمزنگاری شده بدون داشتن کلید cryptanalysis، به علم ایجاد کدهای رمزنگاری و شکستن آنها به طور همزمان cryptology و به فرآیند نوشتن مطلبی به صورت رمز شده به طوری که تنها افراد مجاز قادر به رمزگشایی و خواندن آن باشند، encryption یا همان رمزنگاری گفته می شود.


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


صدها و شاید هزاران سال پیش پیغام های مهم که از میدان جنگ به پشت جبهه ارسال می شدند به صورت رمزی در می آمدند تا در صورتی که سرباز حامل نامه ها اسیر شود، اطلاعات حساس لو نروند. امروزه رمزنگاری برای مثال در مورد نامه های الکترونیکی مهم انجام می شود تا در صورتی که یک مهاجم به شبکه نفوذ کند، نتواند از محتوای ایمیل ها آگاهی پیدا کند.
اطلاعات رمزنگاری شده حتی در صورت انتقال از یک شبکه نا امن و حتی در صورت انتشار عمومی، امن باقی خواهند ماند. در برخی سیستم عاملها مانند یونیکس، فایلی که حاوی کلمه عبور است رمزنگاری می شود، به طوری که کشف آن برای مهاجمی که به صورت غیر قانونی به فایل مذکور دسترسی پیدا کرده بسیار سخت خواهد شد.
در گذشته رمزنگاری عملیاتی پرهزینه به حساب می آمد لذا تنها برای محافظت از اطلاعات طبقه بندی شده و حساس مانند اطلاعات نظامی، سرویسهای امنیتی، نقل و انتقالات مالی و کلمات عبور مورد استفاده قرار می گرفت. ولی امروزه استفاده از رمزنگاری متداول تر شده و تبدیل به روش ارزان قیمتی برای محافظت از ارتباطات و اطلاعات شده است. برای مثال تعداد زیادی از مرورگرها خدمات رمزنگاری را به صورت رایگان یا با هزینه بسیار کم به مشتریان عرضه می کنند.
سابقه سیستمهای اولیه رمزنگاری که گاهی به آنها کد (code) یا رمز (cipher) نیز گفته می شود، به مصر باستان و حدود 2000 سال پیش باز می گردد. در آن زمان پیغامهای دنیای پس از مرگ با کلمات هیروگلیف رمز شده یا تغییر شکل یافته بر روی قطعات سنگ حک می شدند. البته منظور آنها از این کار حفظ پیغام به صورت محرمانه نبوده است بلکه از این طریق حالت رمزآلود و معما گونه ای برای پیغامهای مذکور ایجاد می کردند. تاریخ رمزنگاری از مصر باستان تا هند، بین النهرین، یونان، تمدن غرب و بالاخره عصر کامپیوتر ادامه پیدا می کند. در طول تاریخ، رمزنگاری همواره جزئی از جنگ، سیاست و حکومت داری بوده است. برای مثال ملکه اسکاتلند جان خود را در قرن شانزدهم از دست داد زیرا دشمنانش، پیغامی را که از زندان و به صورت رمز شده ارسال کرده بود، رمز گشایی کردند. رمزنگاری و ابزارهای مربوط به آن در طی قرنها رشد کردند و در الگوریتمهای کامپیوتری و سیستمهای مدرن امروزی به اوج خود رسیدند.
محافظت از ارتباطات همواره به عنوان بخش حیاتی جنگ ها و نزاع های سیاسی محسوب می شود و به همین دلیل گسترش رمزنگاری مدرن تا حد زیادی مدیون تحقیقاتی است که زیر فشار جنگ جهانی دوم برای شکستن کدهای رمزنگاری تولید شده توسط ماشین Enigma انجام شده است.
ماشین رمزنگاری Enigma توسط یک مهندس الکترونیک آلمانی به نام Arthur Scherbius، در خلال جنگ جهانی اول اختراع شد. او در سال 1918 ماشین مذکور را به نیروی دریایی آلمان ارائه کرد که مورد قبول واقع نشد. اما چندین سال بعد با ارتقای امنیتی ماشین مذکور، نیروی دریایی آلمان استفاده از آن را در سال 1926 آغاز کرد. این ماشین که در شکل 1 نشان داده شده دارای چندین چرخ دنده است که حروف الفبا را به حروف دیگری نگاشت می کند، برای مثال حرف A به حرف P نگاشت می شود و الی آخر. برای این کار لازم است اپراتور یک سری تنظیمات اولیه را بر روی دستگاه انجام دهد که در طرف دیگر دریافت کننده پیغام نیز دقیقاً همان تنظیمات را انجام داده است. برای جلوگیری از کشف سریع نگاشت ها در هر بار تکرار یک حرف، چرخ دنده یک بار می چرخد و این بار مثلاً حرف A به جای اینکه به P نگاشت شود به X نگاشت می شود. این کار طبق همان تنظیمات اولیه صورت می پذیرد. در طرف دریافت کننده نیز جهت رمزگشایی پیغام نیاز به یک ماشین Enigma دقیقاً مطابق با طرف فرستنده و همچنین نیاز به دانستن تنظیمات اولیه چرخ دنده است.

شکل 1 – ماشین Enigma

اولین اقدامات برای شکستن کدهای Enigma در لهستان انجام شد. در اواخر دهه 1920 دولت لهستان گروهی از افرادی را که در شکستن کدهای رمزی مهارت داشتند، مأمور کرد تا از علم رمزنگاری برای کار بر روی شکستن کدهای آلمانها استفاده کنند. خانم Marian Rejewski و دو ریاضیدان دیگر توانستند برخی از پیغامهای اولیه Enigma را رمزگشایی کنند.
در اوایل دهه 1930 در فرانسه یک آلمانی به نام Hans-Thilo Schmidt اطلاعاتی را در مورد تنظیمات اولیه ماشینهای Enigma در اختیار سازمانهای اطلاعاتی فرانسه قرار داد. تحلیلگران رمزنگاری فرانسوی منابع لازم برای استفاده از اطلاعات مذکور را در اختیار نداشتند و انگلیسیها نیز به دلیل ناکافی بودن اطلاعات آن را نپذیرفتند. فرانسوی ها اطلاعات مذکور را در اختیار لهستانی ها قرار دادند و Marian Rejewski توانست با استفاده از آنها پیشرفت درخشانی در شکستن کدهای Enigma پیدا کند.
بعد از سقوط لهستان در سال 1939 ، آنها اطلاعاتشان را در اختیار فرانسوی ها و انگلیسی ها قرار دادند. البته آلمانی ها، کلیدها و طراحی ماشین Enigma را مرتباً تغییر می دادند و انگلیسی ها همچنان به راه حل لهستانی ها تکیه داشتند.
در اواخر جنگ یک پروژه فوق سری به نام Ultra زیر نظر ریاضیدان معروف آلن تورینگ شروع به کار کرد که هدف از آن رمزگشایی پیغام های نیروی دریایی آلمان در مدت زمانی معقول بود. انگیزه شروع این پروژه اوراقی بود که در یک قایق نجات غرق شده در مورد رمزنگاری Enigma کشف شد. در اوایل دهه 40 میلادی آمریکائیها با استفاده از دانش و فناوریی که از ماشینهای رمزنگاری ژاپن به دست آورده بودند، یک نسخه مخصوص خود را خلق کردند.
در دهه های پس از جنگ جهانی دوم استفاده از کامپیوترها در شکستن کدهای رمزنگاری شده انقلابی را در رمزنگاری ایجاد کرد و باعث انتشار گسترده رمزنگاری در سازمانهای نظامی و اطلاعاتی شد و دامنه استفاده از آن تا سیستم های کامپیوتری معمولی نیز گسترش پیدا کرده است.
در قسمت بعدی انواع الگویتم های رمزنگاری را شرح خواهیم داد.

رمزنگاری چیست؟

رمزنگاری منجر به تغییر شکل اصل اطلاعات که به آن متن آشکار یا Plaintext می گویند به اطلاعات دیگری به نام متن رمز شده یا cipher می شود که غالباً ظاهری نامفهوم و تصادفی دارد. اطلاعات تغییر شکل یافته را cryptogram می نامند.
معمولاً از روش های برگشت پذیر برای رمزنگاری متون استفاده می شود به طوری که دریافت کننده در مقصد بتواند متن رمز را به صورت متن آشکار یا همان متن اولیه در آورد.
تکنیک ها یا قوانینی که برای رمزنگاری مورد استفاده قرار می گیرند به عنوان الگوریتم های رمزنگاری شناخته می شوند که میزان سادگی یا پیچیدگی یک فرآیند رمزنگاری را تعیین می کنند. بسیاری از روشهای رمزنگاری از فرمولهای ساده ریاضی استفاده می کنند که چندین بار و با ترکیب های متفاوت به کار گرفته می شوند. بسیاری از آنها نیز از یک مقدار محرمانه به نام کلید برای رمزنگاری و رمزگشایی استفاده می کنند. کلید نوعی کلمه عبور است که تنها فرستنده و گیرنده متن از آن آگاهی دارند. الگوریتم رمزنگاری با استفاده از قوانین ریاضی کلید مزبور را که معمولاً رشته ای طولانی از اعداد است، بر اطلاعاتی که باید رمزنگاری یا رمزگشایی شوند، اعمال می کند.
بر خلاف یک کلمه عبور معمولی، کلید به کاربر اجازه دسترسی مستقیم به اطلاعات را نمی دهد. در عوض الگوریتم رمزنگاری با استفاده از کلید می تواند داده های رمز شده را به صورت اولیه درآورد. در واقع بدون کلید، اطلاعات رمزنگاری شده غیر قابل دسترسی هستند. در شماره بعدی سری مقالات رمزنگاری با ارائه مثال، به توضیح بیشتر کلیدهای رمزنگاری خواهیم پرداخت.
نوع الگوریتم رمزنگاری، میزان محرمانگی کلید و چند ویژگی دیگر در مجموع قدرت رمزنگاری را تعیین می کنند. قدرت رمزنگاری در واقع مشخص کننده میزان دشواری شکستن یک پیغام رمزنگاری شده است.
باید در نظر داشت که معیار اصلی قدرتمند بودن یک الگوریتم رمزنگاری ربطی به وجود احتمال شکستن آن ندارد، زیرا در صورتی که مقدار کافی از جفت متن آشکار و متن رمزنگاری شده در اختیار باشد، هر الگوریتم رمزنگاری بالاخره شکسته خواهد شد. قدرت اصلی هر الگوریتم رمزنگاری امکان اجرای آن در یک زمان قابل قبول است. متنی که امکان شکسته شدن آن بعد از سالها، آن هم با شبکه ای از سوپرکامپیوترها وجود دارد، در حقیقت بسیار امن است.
سیستم های رمزنگاری اولیه برای حفظ امنیت به محرمانه ماندن الگوریتم رمزنگاری بسیار وابسته بودند. به تدریج الگوریتمهای رمزنگاری بر مشکل وابستگی به طول کلید و محرمانگی آن غالب آمده اند. امروزه قابل اطمینان ترین الگوریتم های رمزنگاری ناچارند از پس چندین نوبت تحقیق موشکافانه و غیرمحرمانه به خوبی برآیند تا بتوانند اعتماد سازمان ها و مشتریان را جلب کنند. طبیعتاً بسیار سخت است که الگوریتم های رمزنگاری قابل اطمینان ایجاد کرد و آنها را به صورت عمومی و غیر محرمانه مورد آزمایش قرار داد.
انتخاب کلید ضعیف یا محافظت نامناسب از آن راه را برای ورود نفوذگران باز می کند. در صورتی که یک نفوذگر به یک کلید رمزنگاری دسترسی پیدا کند، حتی قویترین الگوریتم های رمزنگاری نیز قادر به حفاظت از داده های مورد نظر نیستند.
شکل زیر نشان دهنده یک سیستم ساده رمزنگاری و رمزگشایی است.


چرا رمزنگاری؟

رمزنگاری هر سه محور اصلی در مباحث مربوط به امنیت را در بر می گیرد که عبارتند از:

محرمانگی

رمزنگاری یک شیوه بسیار خوب برای حفظ اطلاعات به صورت محرمانه است. حتی اگر رایانه یا فایلهای حاوی اطلاعات رمزنگاری شده به سرقت روند، پی بردن به محتویات فایلهای رمزنگاری شده بسیار مشکل خواهد بود.

تمامیت

رمزنگاری همچنین روشی بسیار خوب برای اطمینان از صحت یا تمامیت اطلاعات است. برخی از الگوریتم های رمزنگاری علاوه بر حفظ محرمانگی اطلاعات، از آنها در برابر دستکاری اطلاعات نیز محافظت به عمل می آورند. این قبیل پردازشها قدرت تشخیص تغییرات جزئی بدخواهانه یا غیرعمدی در اطلاعات را دارا هستند. در حالی که بسیاری از کاربران نظامی، اطلاعاتی یا تجاری بسیار به محرمانه ماندن اطلاعات اهمیت می دهند، کاربران مؤسسات مالی برای صحت و دقت اطلاعات اهمیت بسیاری قائل هستند. برای آنها بسیار مهم است که یک ممیز جابجا یا یک صفر کم یا زیاد نشود. همچنین آزمون تمامیت به کاربران شبکه ها اطمینان می دهد که ارتباطات آنها تحت تأثیر ویروسها یا دیگر نفوذها قرار نگرفته است.

تأیید هویت

رمزنگاری یک روش موفق در فهمیدن موثق بودن اطلاعات است. در واقع با رمزنگاری می توان مطمئن شد که اطلاعات از همان جایی که ادعا می کنند، می آیند. برخی تکنیکهای خاص رمزنگاری به کاربر امکان می دهد تا مشخص کند دقیقاً چه کسی یک بسته اطلاعاتی را ارسال کرده است. این قضیه در مراودات حقوقی یا مالی اهمیت ویژه ای پیدا می کند. یکی از تکنیکهای رایج تأیید هویت، امضای دیجیتالی است. امضای دیجیتالی برای هر تراکنش یکتا بوده و جعل آن بسیار سخت می باشد.

شیوه های پایه رمزنگاری

دو شیوه پایه برای رمزنگاری به نامهای رمزنگاری جابجایی و رمزنگاری جایگزینی وجود دارند. در ادامه شیوه های مذکور را توضیح خواهیم داد.

رمزنگاری جابجایی (transposition)

رمزنگاری جابجایی به تغییر چیدمان بیت ها، کاراکترها و یا بلوکی از کاراکترهایی که قبلاً به صورت رمز درآمده اند، اطلاق می شود. در یک رمزنگاری ساده جابجایی که در شکل زیر نشان داده شده است، حروف متن اولیه بازچینی شده اند. در این نوع از رمزنگاری حروف به کار رفته در متن اولیه حفظ شده و تنها محل قرار گرفتن آنها جابجا می شود.

یکی دیگر از روشهای رمزنگاری جابجایی که کمی پیچیده تر است در شکل زیر نشان داده شده است. در این روش متن اولیه در سه ستون نوشته می شود و سپس متن به صورت عمودی بازنویسی می شود.

رمزنگاری جایگزینی (substitution)

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


یکی دیگر از مثالهای رمزنگاری جایگزینی شیوه ای است که ماشین Enigma از آن استفاده می کرد. برای کسب اطلاعات بیشتر در مورد ماشین مذکور و نحوه کار آن به مقاله تاریخچه رمزنگاری مراجعه فرمایید. یک مثال دیگر رمزنگاری سزار است که در آن هر حرف با سه حرف جلوتر جایگزین می شود.
نمونه های ذکر شده در اینجا بسیار ساده و رمزنگاری های واقعی با شیوه های مذکور بسیار پیچیده تر هستند. برای مثال ممکن است در یک الگوریتم رمزنگاری یک حرف، چندین بار با حروف و اعداد دیگر جایگزین شود یا چندین بار جابجا شود. همچنین در اغلب موارد جایگزینی حروف از هیچ قاعده مشخصی پیروی نمی کند.
در قسمت بعدی سری مقاله های رمزنگاری به توضیح بیشتر در مورد کلید های رمزنگاری، مدیریت و انتشار کلید و شیوه های استفاده از رمزنگاری در شبکه ها خواهیم پرداخت.
کلیدهای رمزنگاری

تکنیک های رمزنگاری پیچیده به راحتی از روش های جابجایی یا جایگزینی استفاده نمی کنند. در عوض از یک کلید محرمانه برای کنترل یک توالی طولانی از جابجایی و جایگزینی های پیچیده استفاده می کنند. کلیدهای رمزنگاری و الگوریتم های رمزنگاری با یکدیگر همکاری می کنند تا یک متن اولیه را به یک متن رمزی تبدیل کنند. در اغلب موارد الگوریتم رمزنگاری ثابت و شناخته شده است و این کلید رمزنگاری است که یک نسخه یکتا از اطلاعات رمزنگاری شده تولید می کند. در زیر انواع کلیدهای رمزنگاری توضیح داده شده اند.

o کلیدهای محرمانه

سیستمهای کلید محرمانه تنها از یک کلید برای رمزنگاری و رمزگشایی اطلاعات استفاده می کنند. در این شیوه رمزنگاری، لازم است که هر جفت فرستنده و گیرنده اطلاعات کلید جداگانه ای را برای رمزنگاری دارا باشند و حفظ کلید به صورت محرمانه بسیار اهمیت دارد. امنیت این روش در گرو حفظ امنیت کلید است. الگوریتم Data Encryption Standard (DES) که در قسمت بعدی سری مقاله های رمزنگاری توضیح داده خواهد شد، یک نمونه از الگوریتم های کلید محرمانه است. چون فرض بر این است که الگوریتم شناخته شده و معلوم است، امن بودن انتقال و ذخیره کلید بسیار مهم است. کارتهای هوشمند معمولا برای ذخیره کلیدهای محرمانه استفاده می‌شوند. در این حالت تضمین اینکه قلمرو کلید محدود است، مهم است: باید همیشه فرض کنیم که یک کارت ممکن است توسط افراد غیرمجاز با موفقیت تحلیل گردد، و به این ترتیب کل سیستم در مخاطره قرار گیرد.
در شکل زیر یک عملیات انتقال اطلاعات با استفاده از کلید محرمانه نشان داده شده است که در آن یک کاربر بانک، اطلاعات را با استفاده از کلید محرمانه رمزنگاری می کند و برای کارمند بانک ارسال می کند. وی نیز اطلاعات را با کلید مشابهی رمزگشایی می کند.


• کلیدهای عمومی و خصوصی

سیستم هایی که از این نوع کلیدها استفاده می کنند، نامتقارن خوانده شده و در واقع دارای یک زوج کلید هستند: یک کلید عمومی و یک کلید خصوصی. در این سیستم هر کاربر دارای دو کلید عمومی و خصوصی است که لازم است کلید خصوصی محرمانه نگهداری شود ولی کلید عمومی در اختیار همگان است. در اینجا کلید عمومی و خصوصی به یکدیگر از لحاظ ریاضی وابسته هستند. کاربر می تواند با استفاده از کلید خصوصی که در اختیار دارد پیغام خود را رمزنگاری کرده و گیرنده آن را با استفاده از کلید عمومی رمزگشایی کند یا بالعکس.
امتیاز اصلی و مهم سیستمهای کلید نامتقارن این است که آنها اجازه می‌دهند که یک کلید (کلید خصوصی) با امنیت بسیار بالا توسط صاحب آن نگهداری شود در حالیکه کلید دیگر (کلید عمومی) می‌تواند منتشر شود. کلیدهای عمومی می‌توانند همراه پیامها فرستاده شوند یا در فهرستها لیست شوند (شروط و قوانینی برای کلیدهای عمومی در طرح فهرست پیام‌رسانی الکترونیکی ITU X.500 وجود دارد)، و از یک شخص به شخص بعدی داده شوند. مکانیسم توزیع کلیدهای عمومی می‌تواند رسمی (یک مرکز توزیع کلید) یا غیررسمی باشد.
یکی از نکات منفی سیستمهای رمزنگاری با کلید عمومی توسط سناریوی زیر توضیح داده شده است. فرض کنید کاربر پیغام خود را با استفاده از کلید خصوصی رمزنگاری می کند. دریافت کننده پیغام می تواند از هویت فرستنده پیغام مطمئن باشد یعنی تأیید هویت به خوبی انجام می شود ولی مشکل اینست که هر کسی که دسترسی به کلید عمومی دارد می تواند اطلاعات مذکور را رمزگشایی کند. لذا این روش محرمانگی اطلاعات را حفظ نمی کند. از طرف دیگر در صورتی که اطلاعات توسط کلید عمومی رمزنگاری شوند، از آنجایی که تنها دارنده کلید خصوصی قادر به رمزگشایی آن است لذا محرمانگی آن حفظ می شود ولی مشکل در اینست که چون هر کسی می تواند به کلید عمومی دسترسی داشته باشد تأیید هویت با مشکل روبرو می شود.

راه حل مشکل مذکور، همان طور که در شکل زیر نشان داده شده است، استفاده ترکیبی از دو روش است به طوری که هم امکان تأیید هویت وجود داشته باشد و هم محرمانگی اطلاعات حفظ شود. فرستنده پیغام خود را با استفاده از کلید خصوصی که در اختیار دارد رمزنگاری می کند و سپس با استفاده از کلید عمومی که مربوط به گیرنده است آن را مجدداً رمزنگاری می کند. در این حالت لازم است گیرنده پیغام ابتدا با استفاده از کلید خصوصی خود پیغام را رمزگشایی کند و سپس نتیجه را با استفاده از کلید عمومی فرستنده مجدداً رمزگشایی کند تا به اصل پیغام دسترسی پیدا کند. در این صورت پیغام رمزنگاری شده تنها با کلید خصوصی دریافت کننده قابل رمزگشایی است و در نتیجه هم مشکل تأیید هویت و هم حفظ محرمانگی اطلاعات برطرف شده است. در همه حالات فرض می شود که دارندگان کلید خصوصی مراقبت های لازم را برای حفظ امنیت کلید مزبور به انجام می رسانند.
البته دو بار رمزنگاری و رمزگشایی همه پیغام لزوماً مورد نیاز نیست. از آنجایی که در صورت استفاده فرستنده از کلید عمومی گیرنده، محرمانگی اطلاعات حفظ می شود، در نتیجه رمزنگاری تنها بخش کوچکی از پیغام، برای تأیید هویت فرستنده کافی است. این قضیه ایده اصلی امضای دیجیتالی را تشکیل می دهد.


• کلیدهای اصلی و کلیدهای مشتق‌شده (Master keys and derived keys)

یکی از ایراداتی که به روشهای پیشین وارد است، تعداد زیاد کلیدها است که طبیعتاً منجر به سخت تر شدن مدیریت کلید می شود. یک روش برای کاستن از تعداد کلیدهایی که باید منتقل و ذخیره شوند، مشتق گرفتن از آنها در زمان مورد نیاز است. در یک برنامه اشتقاق کلید، یک کلید اصلی همراه با چند پارامتر مجزا برای محاسبه کلید مشتق‌شده استفاده می‌شود که بعداً برای رمزنگاری استفاده می‌گردد. برای مثال، اگر یک صادرکننده با تعداد زیادی کارت سروکار دارد، می‌تواند برای هر کارت، با استفاده از کلید اصلی، شماره کارت را رمز کند و به این ترتیب کلید مشتق‌شده حاصل می‌شود و به آن کارت اختصاص داده می‌شود.
شکل دیگری از کلیدهای مشتق‌شده با استفاده از tokenها به دست می آیند که tokenها محاسبه‌گرهای الکترونیکی با عملکردهای مخصوص هستند. ورودی آنها ممکن است، یک مقدار گرفته شده از سیستم مرکزی، یک PIN وارد شده توسط کاربر و یا تاریخ و زمان باشد. خود token شامل الگوریتم و یک کلید اصلی است. چنین tokenهایی اغلب برای دسترسی به سیستمهای کامپیوتری امن استفاده می‌شوند.

• کلیدهای رمزکننده‌کلید (Key-encrypting keys)
از آنجا که ارسال کلید یک نقطه ضعف از نظر امنیتی در سیستم ها بشمار می‌رود، رمزکردن کلیدها هنگام ارسال و ذخیره آنها بشکل رمزشده منطقی بنظر می‌رسد. کلیدهای رمزکننده کلید هرگز به خارج از یک سیستم کامپیوتری (یا کارت هوشمند) ارسال نمی‌شوند و بنابراین می‌توانند آسانتر محافظت شوند. اغلب برای تبادل کلیدها الگوریتم متفاوتی از آنچه که برای رمزکردن پیامها استفاده می‌شود، مورد استفاده قرار می‌گیرد.
از مفهوم دامنه کلید (key domain ) برای محدود کردن میدان کلیدها و محافظت کردن از کلیدها در دامنه‌شان استفاده می‌کنیم. معمولاً یک دامنه، یک سیستم کامپیوتری خواهد بود که می‌تواند به صورت فیزیکی و منطقی محافظت گردد. کلیدهای استفاده شده در یک دامنه توسط یک کلید رمزکننده‌ کلید محلی ذخیره می‌شوند. هنگامی که کلیدها می‌خواهند به یک سیستم کامپیوتری دیگر فرستاده شوند، رمزگشایی و تحت یک کلید جدید رمز می‌شوند که اغلب بعنوان کلید کنترل ناحیه (zone control key) شناخته می‌شوند. با دریافت این کلیدها در طرف دیگر، تحت کلید محلی سیستم جدید رمز می‌شوند. بنابراین کلیدهایی که در دامنه‌های یک ناحیه قرار دارند از دامنه‌ای به دامنه دیگر به صورتی که بیان گردید منتقل می‌شوند.

• کلیدهای نشست (Session keys)
برای محدود کردن مدت زمانی که کلیدها معتبر هستند، اغلب یک کلید جدید برای هر نشست یا هر تراکنش تولید می‌شود. این کلید ممکن است یک عدد تصادفی تولید شده توسط ترمینالی باشد که در مرحله تصدیق کارت قرار دارد. اگر کارت قادر به رمزگشایی روش کلید عمومی باشد، یعنی کلید نشست می‌تواند با استفاده از کلید عمومی کارت رمز شود.
بخشی از تراکنش که در آن کلید منتقل می‌شود اغلب در مقایسه با بقیه تراکنش کوتاهتر است؛ بنابراین بار اضافی این بخش نسبت به کل تراکنش قابل صرف نظر است. چنانچه بقیه تراکنش به سبب استفاده از کلید متقارن (محرمانه) با بالاسری کمتری رمز شود، زمان پردازش برای فاز تایید هویت و انتقال کلید قابل پذیرش است. (توضیح اینکه روشهای رمز متقارن از نامتقارن بمراتب سریعتر هستند بنابراین می‌توان ابتدا یک کلید متقارن را با استفاده از روش نامتقارن انتقال داد و سپس از آن کلید متقارن برای انجام بقیه تراکنش استفاده کرد.) در مورد الگوریتم های رمزنگاری در قسمت بعدی بیشتر توضیح خواهیم داد.
شکل خاصی از کلید نشست، سیستم انتقال کلید است که در برخی سیستمهای پرداخت الکترونیک و مبادله دیتای الکترونیک استفاده می‌شود. بدین صورت که در پایان هر تراکنش، یک کلید جدید منتقل می‌شود و این کلید برای تراکنش بعدی مورد استفاده قرار می‌گیرد.

رمزنگاری مبدأ به مقصد و رمزنگاری انتقال

دو سطح ارتباطی پایه وجود دارد که رمزنگاری می تواند در آن اجرا شود. رمزنگاری بر اساس این سطوح به دو دسته رمزنگاری مبدأ به مقصد و رمزنگاری انتقال تقسیم می شود.
در رمزنگاری مبدأ به مقصد یا end-to-end که گاهی اوقات به آن رمزنگاری آفلاین هم گفته می شود، پیغامها در مبدأ و در زمان ارسال رمزنگاری شده و سپس در مقصد رمزگشایی می شوند. در این سطح رمزنگاری نیازی نیست که شبکه از رمزی بودن پیغام آگاهی داشته باشد. گاهی اوقات این نوع رمزنگاری می تواند توسط کاربر مورد انتخاب قرار بگیرد. پیغام در تمام طول انتقال رمزشده باقی می ماند، از ابتدا تا انتها. فایده این روش در این است که احتیاجی نیست در تمام گامهای مسیر، تمام نقاط امن باشند. این اصلی است که امروزه در سیستمهای شناخته شده رمزنگاری پیغام به شیوه تونل مانند SSL و TLS مورد استفاده قرار می گیرد.
در رمزنگاری انتقال یا link encryption که گاهی به آن رمزنگاری آنلاین هم گفته می شود، مانند روش قبل پیغام در زمان ارسال رمزنگاری می شود ولی هر بار که به یک گره ارتباطی شبکه می رسد، رمزگشایی شده و دوباره رمزنگاری می شود. در این روش رمزنگاری از دید کاربر پنهان است و به عنوان بخشی از پروسه انتقال اعمال می شود.
برای هر دو روش نقاط مثبت و منفی وجود دارد که در زیر آورده شده است.

نقاط مثبت روش مبدأ به مقصد:

• قابلیت انعطاف بیشتری دارد. کاربر می تواند تنها اطلاعات مورد نظر خویش را رمزنگاری کند و هر کاربر نیز می تواند کلید جداگانه ای داشته باشد.
• در این روش انتشار کلید و مدیریت آن ساده تر است.
• با استفاده از این روش، اطلاعات از ابتدا تا انتها و در کل شبکه محافظت شده باقی می مانند.
• روشی کارآمدتر است زیرا لازم نیست شبکه هیچگونه تسهیلات خاص رمزنگاری را دارا باشد.

نقاط منفی روش مبدأ به مقصد:

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

نقاط مثبت روش انتقال:

• راحت تر است زیرا لازم نیست کاربر هیچ کاری انجام دهد.
• استفاده از آن، در شبکه ای که گره های زیادی دارد راحت تر است.
• در صورتی که یکی از گره ها مورد سوءاستفاده قرار گیرد تمام شبکه لو نمی رود زیرا هر جفت از گره ها از کلید جداگانه ای استفاده می کنند.
• در این روش تمام اطلاعات، حتی اطلاعات سرآیند و مسیریابی رمزنگاری می شوند.

نقاط منفی روش انتقال:

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

الگوریتم های رمزنگاری متقارن

یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می‌کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm یا DEA است که بیشتر بعنوان DES شناخته می‌شود. الگوریتم DES یک محصول دولت ایالات متحده است که امروزه بعنوان یک استاندارد بین‌المللی شناخته ‌شده و بطور وسیعی مورد استفاده قرار می گیرد. بلوکهای ۶۴ بیتی دیتا توسط یک کلید تنها که معمولا ۵۶بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند. الگوریتم DES از نظر محاسباتی ساده است و به راحتی می‌تواند توسط پردازنده‌های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد.
در دهه 60 میلادی، با رشد فزاینده فناوری کامپیوتر و نگرانی ها در مورد محرمانه و خصوصی بودن ارتباطات، علاقه به ایجاد یک استاندارد رمزنگاری ملی در آمریکا به شدت افزایش پیدا کرد. تلاشها در جهت ایجاد استانداردی بود که بتواند توسط کامپیوترها و شبکه های متفاوت دولتی در آمریکا مورد استفاده قرار گیرد و همچنین در سیستم های پیمانکاران دولتی نیز مفید واقع شود. تلاشهای مذکور منجر به ایجاد استاندارد رمزنگاری داده یا Data Encryption Standard (DES) گشت که امروزه به صورت وسیعی در رمزنگاری مورد استفاده قرار می گیرد.
در سال 1965 موسسه ملی استانداردها و فناوری آمریکا که امروزه با نام NIST شناخته می شود، مسئولیت تعیین استانداردهای محافظت از سیستم های کامپیوتری را بر عهده گرفت. موسسه مذکور در فاصله سالهای 1968 تا 1971 به مطالعه و تحقیق در مورد نیازهای امنیتی سیستم های کامپیوتری دولتی پرداخت که در نهایت منجر به تهیه یک استاندارد رمزنگاری شد. موسسه NIST با همکاری NSA یا آژانس امنیت ملی آمریکا، نخستین برنامه رمزنگاری را تولید کرد. در اوایل کار هدف ایجاد یک استاندارد واحد برای محافظت از داده های طبقه بندی شده دولتی و اطلاعات حساس بخش خصوصی بود که از طرفی بتواند بین 10 تا 15 سال دوام آورد (هدفی که DES بسیار پیشتر از آن رفت) و از طرفی نیز قابل استفاده در انواع سیستم های مختلف حتی سیستم های کند باشد.
در آگوست 1974، NSA از تولید کنندگان الگوریتم های رمزنگاری برای بار دوم دعوت کرد تا روش های خود را اعلام کنند تا شاید در ایجاد یک استاندارد رمزنگاری عمومی با کیفیت بالا مورد استفاده قرار گیرد. در این زمان IBM الگوریتمی را ارائه کرد که مورد قبول NSA واقع شد.
در شرکت IBM تا قبل از آن کارهایی برای توسعه چندین الگوریتم متفاوت رمزنگاری انجام شده بود. یکی از آنها یک الگوریتم 64 بیتی بود که برای محافظت از تراکنش های مالی به کار می رفت و دیگری یک الگوریتم 128 بیتی به نام Lucifer بود.
آژانس امنیت ملی آمریکا در آن زمان از طرفی IBM را تشویق به ثبت الگوریتم Lucifer کرد و از طرف دیگر به متخصصان خود اجازه داد تا سعی کنند ارتباطات رمزنگاری شده توسط الگوریتم مذکور را بشکنند. لذا الگوریتم مذکور بعد از بررسی پایه های ریاضی و سعی در شکستن آن، دچار تغییرات و اصلاحاتی شد (برای مثال طول کلید از 128 بیت به 56 بیت کاهش یافت و تغییراتی در توابع جایگزینی انجام شد) تا به تولد DES منجر شد.
بالاخره در سال 1977 این الگوریتم به عنوان استاندارد رمزنگاری داده منتشر شد و به عنوان روشی رسمی در محافظت از داده های طبقه بندی نشده در مؤسسات دولتی آمریکا مورد استفاده قرار گرفت. در عین حال NSA موظف شد تا هر پنج سال یک بار این الگوریتم را مورد مطالعه قرار دهد و تأیید کند که هنوز می تواند به عنوان استاندارد به کار رود.
قابل ذکر است که این روش بستگی به مخفی‌بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها می‌توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستمی مبادله می‌شود که قبلا هویت یکدیگر را تایید کرده‌اند. عمر کلیدها بیشتر از مدت تراکنش طول نمی‌کشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می‌شود.

استاندارد رمزنگاری یا DES چیست؟

در FIPS PUB 46 تعریف DES اینگونه آمده است:
استاندارد رمزنگاری داده (DES) یک الگوریتمی ریاضی است که برای رمزنگاری و رمزگشایی اطلاعات کدشده باینری به کار می رود. رمزنگاری داده ها را تبدیل به داده های نامفهومی به نام cipher می کند. رمزگشایی از cipher آن را به داده های اصلی بازمی گرداند. الگوریتم مذکور هر دو عملیات رمزنگاری و رمزگشایی را بر اساس یک عدد باینری به نام کلید مشخص می سازد ... داده ها تنها در صورتی قابل بازیابی از cipher هستند که دقیقاً از کلیدی که برای رمزنگاری استفاده شده برای رمزگشایی نیز استفاده شود.

الگوریتم DES دارای دو جزء است: یک الگوریتم رمزنگاری و کلید. الگوریتم DES منتشر شده شامل چندین تکرار از یک تغییر شکل ساده با استفاده از هر دو تکنیک جابجایی و جایگزینی (به رمزنگاری چیست مراجعه کنید) است. این الگوریتم تنها از یک کلید برای رمزنگاری و رمزگشایی استفاده می کند و به همین جهت به آن رمزنگاری کلید اختصاصی نیز گفته می شود. همان طور که در مقاله کلیدهای رمزنگاری توضیح دادیم در این حالت حفظ کلید به صورت محرمانه توسط فرستنده و گیرنده پیغام بسیار اهمیت دارد زیرا الگوریتم به صورت عمومی در اختیار همگان است و در صورت لو رفتن کلید، هر کسی می تواند پیغام محرمانه را ببیند. به همین جهت در رمزنگاری DES معمولاً عمر کلید به اندازه عمر تراکنش است.
کلید DES یک توالی هشت بایتی است که هر بایت شامل یک کلید هفت بیتی و یک بیت توازن است. در حین رمزنگاری، الگوریتم DES متن اصلی را به بلوک های 64 بیتی می شکند. این الگوریتم در هر زمان بر روی یک بلوک کار می کند و آن را از نصف شکسته و کاراکتر به کاراکتر رمزنگاری می کند. کاراکترها 16 بار تحت نظارت کلید تغییر شکل پیدا کرده و در نهایت یک متن رمزنگاری شده 64 بیتی تولید می شود. کلید حاوی 56 بیت معنادار و هشت بیت توازن است.
در سال 1997 در یک تلاش همگانی و با استفاده از 14 هزار رایانه یک پیغام رمزنگاری شده توسط DES شکسته شد که البته چندان باعث نگرانی نیست. زیرا در بیشتر انتقال پیغام ها، به خصوص در نقل و انتقالات مالی، یک بازه زمانی وجود دارد که در آن اطلاعات باید کاملاً محرمانه نگه داشته شود و بعد از آن فاش شدن آنها چندان اهمیت نخواهد داشت.
بعد از سقوط DES بسیاری از مؤسسات از DES سه گانه استفاده کردند که به عنوان 3DES شناخته می شود و در آن DES سه بار تکرار می شود(دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر). به این صورت طول کلید به طرز مؤثری افزایش پیدا می کند و منجر به ارتقای امنیت می شود، هر چند که هیچ کس مطمئن نیست این روش تا کی جواب می دهد.
به هرحال DES به حیات خود ادامه می دهد زیرا اولاً هر کسی می تواند به راحتی از آن استفاده کند و ثانیاً قابلیت حفظ محرمانگی را برای مدت کوتاهی دارد که برای بسیاری از برنامه های کاربردی، زمان مناسبی محسوب می شود.
رمزنگاری DES چهار مد مجزا را فراهم می کند که از لحاظ پیچیدگی و موارد کاربرد متفاوت هستند. در زیر هر کدام از مد ها به صورت خلاصه شرح داده شده اند:

ECB

این مد همان Electronic Codebook است و برای هر بلوک از داده مشخص و یک کلید مشخص، همواره یک متن رمزنگاری شده ثابت تولید می شود. از مد ECB برای رمزنگاری کلیدها استفاده می شود.

CBC

این مد Cipher Block Chaining است که مد ارتقایافته ECB است. در این مد بلوک های رمزنگاری شده به هم زنجیر می شوند. برخلاف مد ECB که در آن بلوک های ورودی یکسان خروجی یکسانی داشتند و ممکن بود منجر به افشای الگو شوند، در اینجا CBC هر بلوک را با استفاده از متن اصلی، کلید و یک مقدار سوم رمزنگاری می کند که وابسته به بلوک قبلی است و لذا تکرار رمزنگاری که به آن زنجیرسازی گفته می شود منجر به پنهان سازی الگوهای تکراری می شود.

CFB

مد Cipher Feedback از متونی که قبلاً رمزنگاری شده اند به عنوان ورودی DES برای تولید شبه تصادفی خروجی استفاده می کند. این خروجی با متن اصلی ترکیب شده تا متن رمزنگاری شده را تولید کند. از این مد برای رمزنگاری کاراکترهای تنها استفاده می شود.

OFB

مد Output Feedback بسیار شبیه به CFB است ولی مانند آن به زنجیر کردن متون رمزنگاری شده نمی پردازد و به جای آن یک سری پردازش دیگر بر روی متن اصلی انجام می دهد. از این مد برای رمزنگاری ارتباطات ماهواره ای استفاده می شود.

مدهای CBC و CFB تأیید پیغام و رمزنگاری را تؤاماً انجام می دهند. تأیید پیغام جهت اطمینان از مطابقت متن ارسال شده و متن دریافت شده است. در هنگام رمزنگاری DES بلوک های متن به هم لینک می شوند، در مدهای CFB و CBC رمزنگاری هر بلوک وابسته به رمزنگاری بلوک قبل از آن است. به علت وجود همین اتصال، در صورت ایجاد تغییر حتی در یک کاراکتر، بلوک نهایی رمزنگاری شده نیز تغییر خواهد کرد. لذا بلوک آخر به عنوان یک کد تأیید هویت کار می کند و از یک cryptographic checksum برای آزمایش دقت انتقال و تشخیص دستکاری پیغام استفاده می شود.
کلیدهای DES ۴۰بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می‌شوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت اعتبار طولانی استفاده شود. کلید ۵۶ بیتی عموما توسط سخت‌افزار یا شبکه‌های بخصوصی شکسته می‌شوند.

استاندارد پیشرفته رمزنگاری یا AES چیست؟

مؤسسه NIST سالها با گروههای رمزنگاری همکاری کرد تا استاندارد رمزنگاری پیشرفته ای را تدوین نماید. هدف کلی توسعه استانداردی بود که توانایی محافظت از اطلاعات حساس را برای حداقل یک دهه دارا باشد.
مسابقات بسیاری انجام شد تا الگوریتمی که باید پایه استاندارد رمزنگاری پیشرفته (AES) باشد، معین گردد. بالاخره در سال 1999، بین پنج الگوریتمی که به فاینال رسیدند، الگوریتم Rijndael انتخاب شد که توسط Joan Daemon و Vincent Rijmen نوشته شده بود. الگوریتم هایی که به فاینال راه پیدا کرده بودند عبارتند از: MARS ، RC6، Rijndael، Serpent و Twofish. استاندارد FIPS-197 در همین رابطه تهیه شده است و الگوریتم مذکور را به عنوان یک رمزنگاری متقارن تعریف می کند که سازمان های دولتی آمریکا باید با استفاده از آن، اطلاعات حساس را رمزنگاری کنند. از آنجایی که اثبات قابل اعتماد بودن الگوریتم مذکور کار بسیار دشواری بود، بسیاری از کشورها و ملیت های دیگر نیز به پروژه AES پیوستند و به آزمایش این الگوریتم پرداختند و از آنجایی که مشکلی در این مورد پیدا نشد، الگوریتم مذکور روز به روز قابلیت اعتماد بیشتری را کسب کرد.

طرز کار AES

الگوریتم Rijndael بایت به بایت کار می کند و ورودی اصلی را با کلید رمزنگاری در یک ماتریس 4×4 جفت می کند. کلید، به طریقی تقسیم یا برنامه ریزی شده است که بتواند در مراحل مختلف تکرار به تدریج تزریق شود. اولین قسمت کلید قبل از شروع پروسه 10 مرحله ای تزریق می شود. در هر کدام از این مراحل، بایتها جابجا می شوند، ردیف ها شیفت پیدا می کنند و ستونها ترکیب می شوند.

• SubBytes
در پروسه جابجایی، بایت های متن ورودی در یک جعبه جابجایی به نام S-box قرار می گیرند که یک ماتریس 16×16 است. هر بایت در یک تقاطع سطر و ستون این ماتریس جا می گیرد. برای پیدا کردن جای هر بایت اولین عدد صحیح مبنای 16 (nibble) در یک بایت متن اصلی گرفته شده و از آن برای مشخص کردن سطر S-box استفاده می شود و سپس از دومین nibble برای مشخص کردن ستون استفاده می شود. کاراکتری که در تقاطع سطر و ستون انتخاب شده ذخیره می گردد به عنوان SubByte برای متن اصلی شناخته می شود. این پروسه برای هر 16 بایت در ماتریس تکرار می شود.


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

• کلیدهای Round

در مرحله بعدی یک کلید round به هر ستون اضافه می شود. این کلید در واقع یک تکه کوچک از یک کلید محرمانه است که برای مراحل بعدی رمزنگاری تزریق می شود.

• تکرار
این تبدیل ها 9 بار دیگر تکرار می شوند. در تکرار آخر ترکیب ستون ها وجود ندارد و با اضافه کردن کلید round متن رمزنگاری شده به دست می آید. کلید نیز به نوبه خود شیفت پیدا می کند، گرد می شود و به خودش اضافه می شود.

دیگر الگوریتمهای رمزنگاری کلید متقارن

الگوریتم Twofish مشخصا برای پیاده‌سازی در پردازنده‌های توان‌ـ‌پایین مثلا در کارتهای هوشمند طراحی شد. برای رمزنگاری جریانی (streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت می‌گیرد به جای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4 سرعت بالا و دامنه‌ای از طول کلیدها از ۴۰ تا ۲۵۶ بیت را فراهم می‌کند. الگوریتم RC4 که متعلق به امنیت دیتای RSA است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده می‌شود.

.

الگوریتم های رمزنگاری با کلید نامتقارن

در قسمت قبلی در مورد الگوریتم های رمزنگاری متقارن DES و AES توضیح دادیم که از یک کلید برای رمزنگاری و رمزگشایی استفاده می کنند. در الگوریتم های مذکور در صورتی که کلید رمزنگاری به سرقت رود محرمانگی اطلاعات نیز از بین خواهد رفت.
الگوریتم های رمزنگاری با کلید نامتقارن از کلیدهای مختلفی برای رمزنگاری و رمزگشایی استفاده می‌کنند. بسیاری از سیستمها اجازه می‌دهند که یکی از کلیدها (کلید عمومی یا public key) منتشر شود در حالی که دیگری (کلید خصوصی یا private key) توسط صاحبش حفظ می شود. فرستنده پیام، متن را با کلید عمومی گیرنده، کد می‌کند و گیرنده آن را با کلید اختصاصی خود رمزگشایی می کند. بعبارتی تنها با کلید خصوصی گیرنده می‌توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی ‌تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هر گیرنده‌ای، به جز گیرنده مورد نظر فرستنده، بی ‌معنی خواهد بود.
معمول ترین سیستم نامتقارن بعنوان RSA شناخته می‌شود (این حروف، اول نام پدید آورندگان آن یعنی Rivest، Shamir و Adlemen است). این الگوریتم در سال 1978 در دانشگاه MIT ایجاد شده است و تأیید هویت (روشی برای مطمئن شدن از هویت ارسال کننده پیغام ) را به خوبی رمزنگاری انجام می دهد. الگوریتم RSA از دو کلید برای رمزنگاری استفاده می کند: کلید خصوصی و کلید عمومی. در الگوریتم مذکور تفاوتی بین توانایی عملیاتی کلید عمومی و خصوصی وجود ندارد و یک کلید می تواند هم به عنوان کلید خصوصی به کار رود و هم به عنوان کلید عمومی.
کلیدهای RSA با استفاده از روش های ریاضی و با ترکیب اعداد اول تولید می شوند. بزرگترین عددها با ضرب اعداد کوچک به دست می آیند و این اعداد کوچک از لحاظ ریاضی به هم وابسته هستند و دانستن یکی از آنها منجر به شناسایی دیگر اعداد اول به کار رفته در کلید می شود. این وضعیتی است که در استفاده از کلید های عمومی و خصوصی مورد نظر است. البته در صورتی که عدد خیلی بزرگ باشد، این کار به راحتی قابل انجام نیست و وضعیت های گمراه کننده بسیاری وجود دارند. تنها ترکیب درست از اعداد اول موجود در کلید رمزنگاری، قادر به رمزگشایی پیغام است. امنیت الگوریتم RSA و الگوریتم های مشابه آن وابسته به استفاده از اعداد خیلی بزرگ است و بیشتر نسخه های RSA از اعداد 154 رقمی یا 512 بیتی به عنوان کلید استفاده می کنند. دسترسی به فاکتورهای اعداد اول اعداد خیلی بزرگ که بیش از 100 رقم دارند کار بسیار مشکلی است. البته برخی از محققان توانسته اند با تلاش بسیار اعداد بزرگ را بشکنند ولی این کار برای هکرها برای ورود به یک سیستم یا سر در آوردن از یک پیغام مقرون به صرفه نمی باشد.
اساس سیستم RSA این فرمول است: X = Yk (mod r)
که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده‌اند. برای اطلاع از جزئیات بیشتر می‌توان به مراجعی که در این زمینه وجود دارند رجوع کرد. این شکل محاسبات روی پردازنده‌های بایتی بخصوص روی ۸ بیتی‌ها که در کارتهای هوشمند استفاده می‌شود بسیار کند است. بنابراین، اگرچه RSA هم تأیید هویت و هم رمزنگاری را ممکن می‌سازد، معمولاً تنها برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می‌شود.
می‌توان از یک سیستم نامتقارن برای نشان دادن اینکه فرستنده پیام همان شخصی است که ادعا می‌کند استفاده کرد که این عمل در اصطلاح امضاء نام دارد.
• فرستنده متن اصلی را با استفاده از کلید اختصاصی خود رمز می‌کند؛ این فرآیند امضا نام دارد.
• رمزگشایی عملیات مشابهی روی متن رمزشده اما با استفاده از کلید عمومی فرستنده است. برای تایید امضاء بررسی می‌کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید خصوصی متناظر رمز شده است.
به بیان ساده‌ تر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط کلید خصوصی همان شخص است. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمز گشایی شود، مطابقت متن حاصل و متن اصلی نشان دهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق می‌شود. سایر افراد که از کلید خصوصی این فرد اطلاع ندارند قادر به ایجاد متن رمز‌شده‌ ای نیستند که با رمزگشایی توسط کلید عمومی این فرد به متن اولیه تبدیل شود.
سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته می‌شوند مانند Diffie-Hellman، ElGamal و سایر طرحهای چندجمله ‌ای و منحنی‌ های بیضوی. بسیاری از این طرحها عملکردهای یک‌ طرفه‌ای دارند که اجازه تایید هویت را می ‌دهند اما رمزنگاری ندارند.
یک رقیب جدیدتر الگوریتم RPK است. الگوریتم رمزنگاری RPK یک سیستم رمزنگاری نسبتاً جدید بر پایه کلید عمومی است که مبتنی بر ریاضیاتی است که امروزه به صورت گسترده در رمزنگاری استفاده می شود. این الگوریتم برای کاربردهای تجاری طراحی شده است و نیاز به مطالعات و تحقیقات گسترده در زمینه های جدید ریاضی ندارد. مطالعه بر روی این زمینه ها مانند سیستم رمزنگاری منحنی های بیضوی (ECC)، گاهی اوقات چندین سال به طول می انجامد. رمزنگاری RPK تمهیداتی را برای رمزنگاری در انتقال اطلاعات در شبکه های با سرعت بالا، کارت های هوشمند و برنامه های مبتنی بر ارتباطات بی سیم اندیشیده است. این الگوریتم برای استفاده در پروسه های نرم افزاری حجیم مانند تراکنش های کارت های اعتباری نیز مناسب است.
در هسته RPK یک ابداع به نام Mixture Generator وجود دارد و در پیاده سازی آن سه شیفت رجیستر خطی وجود دارند. این ماشین وضعیت دو حالت عملیاتی دارد. یک حالت از شیفت رجیسترها برای به توان رسانی استفاده کرده و دیگری به عنوان یک تولید کننده جریان تصادفی از بیت ها برای کاربرد در فاز ترکیب رمزنگاری به کار می رود. سیستم RPK دو مرحله پرهزینه به توان رسانی کل پیغام را به طور مؤثر کاهش داده است زیرا موتور هسته آن برای قراردادن سیستم در وضعیت اولیه امن به کار رفته و سپس بین دو حالتی که در بالا توضیح داده شد برای اجرای رمزنگاری سریع سوئیچ می کند.

طول کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA است که آنها برای استفاده در چیپ ‌کارتها مناسب‌ تر است. اما ‌RSA محکی برای ارزیابی سایر الگوریتمها باقیمانده است؛ حضور و بقای نزدیک به سه ‌دهه این الگوریتم، تضمینی در برابر ضعفهای عمده به شمار می‌رود.
برگرفته از سایت:http://www.daneshju.ir/forum/f383/t91285.html