در این مطلب با زبان ساده به بررسی انواع الگوریتم های رمزنگاری (Encryption) پرداخته و تاریخچه هر کدام را بررسی خواهیم کرد. سلام خدمت دوستان عزیز ، از طرفی با توجه به اینکه مقالات در زمینه تاریخچه و روشهای رمزنگاری در فضای مجازی بسیار پراکنده هستند و از طرف دیگه پروژه کارشناسی خودم هم در مورد مطالعه و بررسی امضای دیجیتال بوده، تصمیم گرفتم طی سلسله مقالاتی با عنوان امنیت داده ها، تاریخچه رمزنگاری، انواع روشهای رمزنگاری، روشهای امضا دیجیتال و معرفی گواهینامه های دیجیتال، اصول رمز شکنی و در آخر هم پروتکل SSL و امنیت در شبکه رو معرفی کنم، ان شا الله...
در بررسی نخستین استفادهکنندگان از تکنیکهای رمزنگاری به سزار (امپراتور روم) و نیز الکندی که یک دانشمند مسلمان است برمیخوریم، که البته روشهای خیلی ابتدایی رمزنگاری را ابداع و استفاده کردهاند. به عنوان مثال، با جابجا کردن حروف الفبا در تمام متن به اندازه مشخص آن را رمز میکردند و تنها کسی که از تعداد جابجا شدن حروف مطلع بود میتوانست متن اصلی را استخراج کند.
یکی دیگر از شیوههای رمزنگاری ابتدایی، پیچیدن یک نوار کاغذی بر روی استوانهای با قطر مشخص و سپس نوشتن پیام روی کاغذ پیچیده شده بودهاست. بدیهی است بدون اطلاع از مقدار قطر استوانه، خواندن پیام کار بسیار دشواری خواهد بود و تنها کسانی که نسخههای یکسانی از استوانه را داشته باشند میتوانند پیام را بخوانند.
در قرن بیستم میلادی از همین روش به همراه موتورهای الکتریکی برای رمزنگاری با سرعت بالا استفاده شد که نمونههای آن در ماشین رمز لورنتز و ماشین رمز انیگما دیده می شود که در جنگ جهانی دوم توسط آلمان برای رمز کردن پیامهای نظامی مورد استفاده قرار گرفتهاست.
وجود شاخصهای آماری برای دو یا سه حرفی ها، لستر اس.هیل را به این فکر واداشت که بایستی بیش از سه حرف را در هم ادغام کرد تا بلکه استحکام بیشتریدر مقابل حملات مبتنی بر شاخص های آماری متن، بوجود بیاید. این ریاضی دان از جبر ماتریسی بهره گرفت.
آگوست کرکهف در سال ۱۸۸۳ دو مقاله با عنوان «رمز نگاری نظامی» منتشر کرد. در این دو مقاله شش اصل اساسی وجود داشت که اصل دوم آن به عنوان یکی از قوانین رمز نگاری هنوز هم مورد استفاده دانشمندان در رمز نگاری پیشرفتهاست:
با پدید آمدن رایانهها و افزایش قدرت محاسباتی آنها، دانش رمزنگاری وارد حوزه علوم رایانه گردید و این پدیده، موجب بروز سه تغییر مهم در مسائل رمزنگاری شد:
گسترش و رشد بي سابقه اينترنت باعث ايجاد تغييرات گسترده در نحوه زندگی و فعاليت شغلی افراد ، سازمانها و موسسات شده است. امنيت اطلاعات يکی از مسائل مشترک شخصيت های حقوقی و حقيقی است . اطمينان از عدم دستيابی افراد غير مجاز به اطلاعات حساس از مهمترين چالش های امنيتی در رابطه با توزيع اطلاعات در اينترنت است . اطلاعات حساس که ما تمايلی به مشاهده آنان توسط ديگران نداريم، موارد متعددی را شامل می شود. برخی از اينگونه اطلاعات بشرح زير می باشند:
1- محرمانه سازي: اطلاعات به هنگام ارسال يا ذخيره شدن از ديد افراد غير مجاز پنهان خواهد شد.
2- تمامیت: تغييرات اعمال شده در اطلاعات ارسالي مشخص خواهد شد.
3- اعتبار سنجی: مي توان منبع اطلاعات را اعتبار سنجي كرد.
به طور کلی، سرویس رمزنگاری، به قابلیت و امکانی گفته میشود که بر اساس فنون رمزنگاری حاصل میگردد. قبل از ورود رایانهها به حوزه رمزنگاری، تقریباً کاربرد رمزنگاری محدود به رمز کردن پیام و پنهان کردن داده های موجود در آن میشده است. اما در رمزنگاری پیشرفته سرویسهای مختلفی از جمله موارد زیر ارائه گردیده است:
الگوریتمهای رمزنگاری رامی توان هم به صورت سخت افزاری (به منظور سرعت بالاتر) و هم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد. روشهای جانشینی و جایگشتی میتوانند با یک مدار ساده الکترونیکی پیاده سازی شوند.p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد دارد. با سیم بندی و برنامه ریزی درونی این p-box قادر است هر گونه جایگشت بیتی راعملاً با سرعتی نزدیک به سرعت نور انجام بدهد چرا که هیچ گونه محاسبهای لازم نیست وفقط تأخیر انتشار سیگنال وجود دارد.این طراحی از اصل کرکهف تبعیت میکند یعنی: حمله کننده از روش عمومی جایگشت بیتها مطلّع است آن چه که او از آن خبر ندارد آن است که کدام بیت به کدام بیت نگاشته میشود کلید رمز همین است.
به طور کلی، یک پروتکل رمزنگاری، مجموعهای از قواعد و روابط ریاضی است که چگونگی ترکیب کردن الگوریتمهای رمزنگاری و استفاده از آنها به منظور ارائه یک سرویس رمزنگاری خاص در یک کاربرد خاص را فراهم میسازد.وظایف یک پروتکل رمزنگاری را می توان بصورت کلی به دسته های زیر طبقه بندی کرد :
به عنوان مثال میتوان به پروتکل تبادل کلید دیفی-هلمن برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره نمود.
یک پروتکل رمزنگاری است که با استفاده از آن، دو نفر یا دو سازمان، میتوانند بدون نیاز به هر گونه آشنایی قبلی، یک کلید رمز مشترک ایجاد و آن را از طریق یک مسیر ارتباطی غیر امن، بین خود تبادل نمایند. این پروتکل، اولین روش عملی مطرح شده برای تبادل کلید رمز درمسیرهای ارتباطی غیر امن است و مشکل تبادل کلید رمز در رمزنگاری کلید متقارن را آسان میسازد. این پروتکل، در سال ۱۹۷۶ توسط دو دانشمند رمزشناس به نام های ویتفیلد دیفی و مارتین هلمن طراحی شده و در قالب یک مقاله علمی منتشر گردیده است. مطرح شدن این پروتکل، گام مهمی در معرفی و توسعه رمزنگاری کلید نامتقارن به حساب میآید.
الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته میشود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکلهای رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.
در گذشته سازمانها و شرکتهایی که نیاز به رمزگذاری یا سرویسهای دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصر به فردی را طراحی مینمودند. به مرور زمان مشخص گردید که گاهی ضعفهای امنیتی بزرگی در این الگوریتمها وجود دارد که موجب سهولت شکسته شدن رمز میشود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شدهاست و در روشهای جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شدهاست و آنچه پنهان است فقط کلید رمز است.
روش های رمزنگاری را در ساده ترین حالت ممکن به دو نوع رمزهای جانشینی و جایگشتی تقسیم بندی میکنیم ، در ادامه توضیحاتی را در خصوص هر یک از این روش های رمزنگاری ارائه خواهیم داد .
در رمز جانشيني هر حرف يا گروهي از حروف به جاي حرف يا گروهي از حروف ديگر قرار مي گيرد تا پنهان سازي صورت گيرد. در اين روش a به D ، b به E ، c به F ، ...... و z به C تبديل مي شود.به عنوان مثال :عبارتattack به DWWDFN تبدیل می شود. در مثال ها متن ساده با حروف كوچك و متن رمزي با حروف بزرگ مشخص مي شود.در این مثال کلید (k) برابر 3 است که میتواند متغیر باشد.هر سیستم رمزنگاری که در آن یک سمبل با سمبل دیگر جایگزین می شود اصطلاحا سیستم جانشینی تک حرفی گفته میشود که در آن کلید رمز یک رشته ی 26 حرفی است.
مثال : طبق این الگو عبارت attack به متن QZZQEA تبديل مي شود. روش ديگر حدس زدن كلمه يا عبارت است به عنوان مثال متن رمزي زير را از يك موسسه مالي درنظر بگيريد(به صورت گروههاي پنج كاراكتري دسته بندي شده اند):
CTBMN BYCTC BTJDS QXBNS GSTJC BTSWX CTQTZ CQVUJ QJSGS TJQZZ MNQJS VLNSX VSZJU JDSTS JQUUS JUBXJ DSKSU JSNTK BGAQJ ZBGYQ TLCTZ BNYBN QJSW
يكي از كلماتي كه ممكن است در موسسه مالي باشد financial است.با توجه به اينكه كلمه financial داراي حرف تكراري (i) است به طوري كه چهار حرف ديگر بين دو وقوع i وجود دارد. حروف تكراري در متن رمزي را در اين فاصله پيدا مي كنيم. 12 مورد وجود دارد كه در موقعيت هاي 6 و 15 و 27 و 31 و 42 و 48 و 56 و 66 و 70 و 71 و 76 و 82 است.(از چپ به راست). فقط در دو تا از اينها يعني 31 و 42 كاراكتر بعدي (متناظر با n در متن ساده) در موقعيت مناسبي تكرار شده است. از اين دو تا فقط در موقعيت 31 حرف a در موقعيت درستي قرار دارد لذا در مي يابيم كه financial از موقعيت 30 شروع مي شود. بنابراين با استفاده از تكرار آماري در متن انگليسي به راحتي مي توان به كليد پي برد.
رمزهاي جانشيني ترتيب نماد هاي متن ساده را حفظ مي كنند ولي آنها را تغيير مي دهند. رمز هاي جابه جايي ترتيب حروف را عوض مي كنند ولي آنها را تغيير نمي دهند.
رمز گذاری و رمز برداری با يک کليد انجام می گيرد. از این دسته می توان روش های زیر را نام برد:
هر فرد يک کليد عمومی و يک کليد خصوصی دارد که بر اساس قوانين زير عمل می کند:
که در این رابطه استنتاج D از E بسيار بسيار دشوار است. بنابراین E را نمی توان به ساده گی کشف کرد.دیفی-هلمن و RSA نمونه ای از اين الگوريتمها ست.
اصولاً رمزنگاری کلید متقارن و کلید نامتقارن دارای دو ماهیت متفاوت هستند و کاربردهای متفاوتی نیز دارند. بنابراین مقایسه این دو نوع رمزنگاری بدون توجه به کاربرد و سیستم مورد نظر کار دقیقی نخواهد بود. اما اگر معیار مقایسه، به طور خاص، حجم و زمان محاسبات مورد نیاز باشد، باید گفت که با در نظر گرفتن مقیاس امنیتی معادل، الگوریتمهای رمزنگاری متقارن خیلی سریعتر از الگوریتمهای رمزنگاری نامتقارن میباشند.
لازم به ذكر است كه رمزنگاری یك مبحث بسیار پیچیده است و در اینجا ما قصد توضیح پایه های ریاضی الگوریتمهای رمزنگاری یا باز كردن تمام جزئیات را نداریم و تنها به معرفی كلیات این مقوله خواهیم پرداخت. در قسمتهای قبلی تاریخچه مختصری از رمزنگاری ، مفاهیم اولیه آن و كلیدهای رمزنگاری را توضیح دادیم. در این قسمت الگوریتم های رمزنگاری با استفاده از كلید متقارن و در قسمت بعدی الگوریتم های رمزنگاری با استفاده از كلید نامتقارن را شرح و بسط خواهیم داد.
یك الگوریتم متقارن از یك كلید برای رمزنگاری و ازهمان کلید برای رمزگشایی استفاده میكند. بیشترین شكل استفاده از این نوع رمزنگاری كه در كارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد 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) یك الگوریتمی ریاضی است كه برای رمزنگاری و رمزگشایی اطلاعات كدشده باینری به كار می رود. رمزنگاری داده ها را تبدیل به داده های نامفهومی به نام cipher می كند. رمزگشایی از cipher آن را به داده های اصلی بازمی گرداند. الگوریتم مذكور هر دو عملیات رمزنگاری و رمزگشایی را بر اساس یك عدد باینری به نام كلید مشخص می سازد. داده ها تنها در صورتی قابل بازیابی از cipher هستند كه دقیقاً از كلیدی كه برای رمزنگاری استفاده شده برای رمزگشایی نیز استفاده شود.الگوریتم DES دارای دو جزء است:
در سال 1997 در یك تلاش همگانی و با استفاده از 14هزار رایانه یك پیغام رمزنگاری شده توسط DES شكسته شد كه البته چندان باعث نگرانی نیست. زیرا در بیشتر انتقال پیغام ها، به خصوص در نقل و انتقالات مالی، یك بازه زمانی وجود دارد كه در آن اطلاعات باید كاملاً محرمانه نگه داشته شود و بعد از آن فاش شدن آنها چندان اهمیت نخواهد داشت.بعد از سقوط DES بسیاری از مؤسسات از DES سه گانه استفاده كردند كه به عنوان 3DES شناخته می شود و در آن DES سه بار تكرار می شود (دو مرتبه با استفاده از یك كلید به سمت جلو (رمزنگاری) و یك مرتبه به سمت عقب (رمزگشایی) با یك كلید دیگر). به این صورت طول كلید به طرز مؤثری افزایش پیدا می كند و منجر به ارتقای امنیت می شود، هر چند كه هیچ كس مطمئن نیست این روش تا كی جواب می دهد.
به هرحال DES به حیات خود ادامه می دهد زیرا اولاً هر كسی می تواند به راحتی از آن استفاده كند و ثانیاً قابلیت حفظ محرمانگی را برای مدت كوتاهی دارد كه برای بسیاری از برنامه های كاربردی، زمان مناسبی محسوب می شود. رمزنگاری DES چهار مد مجزا را فراهم می كند كه از لحاظ پیچیدگی و موارد كاربرد متفاوت هستند. در زیر هر كدام از مدها به صورت خلاصه شرح داده شده اند:
هرگاه در رمزنگاری یک متن بزرگ، کل متن را به قطعات کوچک با طول ثابت (و متناسب با طول ورودی سیستم در رمزنگار) تقسیم کرده و هر بلوک مستقل از دیگری با کلید k رمز و جانشین متن اصلی شود، اصطلاحاً مبتنی بر "شیوه کتابچه رمز" یا ECB) Mode Electronic Code Book ) عمل کرده ایم.
این شیوه دو مشکل اساسی دارد:
الف) فرض کنید خواسته باشیم یک فایل تصویر صد کیلو بایتی را رمز کنیم. برای این کار بایستی آن را به بلوک های هم اندازه تبدیل کرده و پس از رمزنگاری هر بلوک، آنها را به جای بلوک اصلی جایگزین نماییم. از آنجا که هر گاه بلوکهای اصلی دقیقاً مثل هم باشند نتیجه رمز یکسان خواهد بود لذا در تصویری که بسیاری از بلوکهای آن مثل هم هستند، آنچه که به جای یکی از بلوکها جایگزین می شود در مناطق دیگر تصویر نیز تکرار خواهد شد.
ب) فرض کنید یک بانک اطلاعاتی با الگوریتم 3DES و طبق شیوه ECB رمزنگاری و جایگزین شده باشند. حال نفوذگر توانسته در حین انتقال این پایگاه اطلاعاتی آن را قاپیده و در اختیار بگیرد. او اگر چه نمی تواند رمز این اطلاعات را بشکند ولی می تواند جای برخی فیلدها را با هم عوض کند. بدین ترتیب بدون آنکه کسی متوجه این تغییر شود توانسته در روند عملیات اختلال ایجاد کند و یک حمله غیر فعال علیه سیستم رمز به وقوع پیوسته است.
ساده ترین شیوه ی زنجیره سازی بلوکهای رمز آن است که نتیجه ی رمزنگاری هر بلوک کوچک در رمزنگاری بلوکهای بعدی نیز دخالت داده شود. طبق این شیوه هر گونه تغییر یا جا بجایی در یک بلوک باعث خواهد شد که متن رمزگشایی شده از محل دستکاری، به بلوکهای آشغال و بی معنی تبدیل گردد. این روش به اختصار شیوه( CBC (Cipher Block Chaining یا شیوه "زنجیره سازی بلوکهای رمز" نامیده می شود. برای رمزنگاری اولین بلوک متن یک مقدار اولیه مشهور به IV در نظر گرفته می شود که از لحاظ طول دقیقاً هم اندازه با بلوک متن است. به عبارت دیگر اولین بلوک متن با یک مقدار اولیه XOR می شود. مقدار IV اصلا اهمیتی ندارد و کاملا تصادفی انتخاب و به همراه داده ها (به صورت آشکار) ارسال می شود. چرا که شاه کلید رمز مخفی است و بدون کلید هیچ چیزی از رمز خارج نخواهد شد.
این شیوه نیز دو مشکل اساسی دارد:
تغییر در مقدار اولیه (IV) یا هر یک از بیت های متن اصلی، کل خروجی را تا انتهای متن تحت تاثیر قرار می دهد و این تاثیر حتی به اندازه یک بیت بسیار ژرف خواهد بود. در طرف مقابل تغییر در یک بیت از متن رمز شده در خلال عبور از کانال انتقال فقط رمزگشایی دو بلوک مجاور را با اختلال مواجه می کند. بدین ترتیب بلوکهای مشابه در متن اصلی هرگز به بلوکهای یکسان در خروجی تبدیل نخواهند شد.
یکی دیگر از اشکالات شیوه زنجیره سازی بلوکها آن است که رمزنگاری اطلاعات باید به صورت ترتیبی انجام گیرد و امکان موازی سازی عملیات جهت بالا رفتن سرعت، وجود ندارد. هرگز نمی توانید بلوک Pi را رمز کنید مگر آنکه تمام بلوکهای P0 و P(i-2) ، P(i-1) را قبلاً رمز کرده باشید.
مد Cipher Feedback از متونی كه قبلاً رمزنگاری شده اند به عنوان ورودی DES برای تولید شبه تصادفی خروجی استفاده می كند. این خروجی با متن اصلی تركیب شده تا متن رمزنگاری شده را تولید كند. از این مد برای رمزنگاری كاراكترهای تنها استفاده می شود.
مد Output Feedback بسیار شبیه به CFB است ولی مانند آن به زنجیر كردن متون رمزنگاری شده نمی پردازد و به جای آن یك سری پردازش دیگر بر روی متن اصلی انجام می دهد. از این مد برای رمزنگاری ارتباطات ماهواره ای استفاده می شود. مدهای CBC و CFB تأیید پیغام و رمزنگاری را تؤاماً انجام می دهند. تأیید پیغام جهت اطمینان از مطابقت متن ارسال شده و متن دریافت شده است. در هنگام رمزنگاری DES بلوك های متن به هم لینك می شوند، در مدهای CFB و CBC رمزنگاری هر بلوك وابسته به رمزنگاری بلوك قبل از آن است.
به علت وجود همین اتصال، در صورت ایجاد تغییر حتی در یك كاراكتر، بلوك نهایی رمزنگاری شده نیز تغییر خواهد كرد. لذا بلوك آخر به عنوان یك كد تأیید هویت كار می كند و از یك cryptographic checksum برای آزمایش دقت انتقال و تشخیص دستكاری پیغام استفاده می شود.كلیدهای DES ۴۰ بیتی امروزه در عرض چندین ساعت توسط كامپیوترهای معمولی شكسته میشوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت اعتبار طولانی استفاده شود. كلید ۵۶ بیتی عموماً توسط سختافزار یا شبكههای بخصوصی شكسته میشوند.
مؤسسه NIST سالها با گروههای رمزنگاری همكاری كرد تا استاندارد رمزنگاری پیشرفته ای را تدوین نماید. هدف كلی توسعه استانداردی بود كه توانایی محافظت از اطلاعات حساس را برای حداقل یك دهه دارا باشد. مسابقات بسیاری انجام شد تا الگوریتمی كه باید پایه استاندارد رمزنگاری پیشرفته (AES) باشد، معین گردد. بالاخره در سال 1999، بین پنج الگوریتمی كه به فاینال رسیدند، الگوریتم Rijndael انتخاب شد كه توسط Joan Daemon و Vincent Rijmen نوشته شده بود.
الگوریتم هایی كه به فاینال راه پیدا كرده بودند عبارتند از: MARS ، RC6 ، Rijndael،Serpent وTwofish. استاندارد FIPS-197 در همین رابطه تهیه شده است و الگوریتم مذكور را به عنوان یك رمزنگاری متقارن تعریف می كند كه سازمان های دولتی آمریكا باید با استفاده از آن، اطلاعات حساس را رمزنگاری كنند. از آنجایی كه اثبات قابل اعتماد بودن الگوریتم مذكور كار بسیار دشواری بود، بسیاری از كشورها و ملیت های دیگر نیز به پروژه AES پیوستند و به آزمایش این الگوریتم پرداختند و از آنجایی كه مشكلی در این مورد پیدا نشد، الگوریتم مذكور روز به روز قابلیت اعتماد بیشتری را كسب كرد.
الگوریتم Rijndael بایت به بایت كار می كند و ورودی اصلی را با كلید رمزنگاری در یك ماتریس 4×4 جفت می كند. كلید، به طریقی تقسیم یا برنامه ریزی شده است كه بتواند در مراحل مختلف تكرار به تدریج تزریق شود. اولین قسمت كلید قبل از شروع پروسه 10 مرحله ای تزریق می شود. در هر كدام از این مراحل، بایتها جابجا می شوند، ردیف ها شیفت پیدا می كنند و ستونها تركیب می شوند.
در پروسه جابجایی، بایت های متن ورودی در یك جعبه جابجایی به نام S-box قرار می گیرند كه یك ماتریس 16×16 است. هر بایت در یك تقاطع سطر و ستون این ماتریس جا می گیرد. برای پیدا كردن جای هر بایت اولین عدد صحیح مبنای 16 (nibble) در یك بایت متن اصلی گرفته شده و از آن برای مشخص كردن سطر S-box استفاده می شود و سپس از دومین nibble برای مشخص كردن ستون استفاده می شود. كاراكتری كه در تقاطع سطر و ستون انتخاب شده ذخیره می گردد به عنوان SubByte برای متن اصلی شناخته می شود. این پروسه برای هر 16 بایت در ماتریس تكرار می شود.
بایت هایی كه باید رمزنگاری شوند، توسط جایگذاری تعویض می شوند وسپس ردیف ها شیفت پیدا می كنند. برای مثال اولین ردیف دست نخورده باقی می ماند، ردیف دوم یك محل به راست جابجا می شود، سومین ردیف دو محل جابجا می شود و آخرین ردیف نیز سه محل جابجا می شود. این پروسه توسط یك فاز تركیب ستونها دنبال می شود كه در آن هر ستون از ماتریس در یك ماتریس دیگر ضرب می شود تا موقعیت ستون تغییر پیدا كند.
در مرحله بعدی یك كلید round به هر ستون اضافه می شود. این كلید در واقع یك تكه كوچك از یك كلید محرمانه است كه برای مراحل بعدی رمزنگاری تزریق می شود.
این تبدیل ها 9 بار دیگر تكرار می شوند. در تكرار آخر تركیب ستون ها وجود ندارد و با اضافه كردن كلید round متن رمزنگاری شده به دست می آید. كلید نیز به نوبه خود شیفت پیدا می كند، گرد می شود و به خودش اضافه می شود.
در قسمتهای قبلی تاریخچه مختصری از رمزنگاری، مفاهیم اولیه آن، كلیدهای رمزنگاری و الگوریتمهای رمزنگاری با استفاده از كلید متقارن را توضیح دادیم. در این قسمت الگوریتمهای رمزنگاری با استفاده از كلید نامتقارن را شرح و بسط خواهیم داد.
در قسمت قبلی در مورد الگوریتمهای رمزنگاری متقارن DES ، 3DES و AES توضیح دادیم كه از یك كلید برای رمزنگاری و رمزگشایی استفاده می كنند. در الگوریتمهای مذكور در صورتی كه كلید رمزنگاری به سرقت رود محرمانگی اطلاعات نیز از بین خواهد رفت.الگوریتمهای رمزنگاری با كلید نامتقارن از كلیدهای مختلفی برای رمزنگاری و رمزگشایی استفاده میكنند. بسیاری از سیستمها اجازه میدهند كه یكی از كلیدها كلید عمومی یا (public key) منتشر شود در حالی كه دیگری كلید خصوصی یا (private key) توسط صاحبش حفظ میشود.
فرستنده پیام، متن را با كلید عمومی گیرنده، كد میكند و گیرنده آن را با كلید اختصاصی خود رمزگشایی میکند. بعبارتی تنها با كلید خصوصی گیرنده میتوان متن كد شده را به متن اولیه صحیح تبدیل كرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی تواند از متن كدشده به متن اصلی دست یابد، بنابراین پیام كدشده برای هر گیرندهای، به جز گیرنده مورد نظر فرستنده، بی معنی خواهد بود.
معمول ترین سیستم نامتقارن به عنوان RSA شناخته میشود. (این حروف اول نام پدید آورندگان آن یعنی Rivest ،Shamir و Adlemen است) این الگوریتم در سال 1978 در دانشگاه MIT ایجاد شده است و تأیید هویت (روشی برای مطمئن شدن از هویت ارسال كننده پیغام) را به خوبی رمزنگاری انجام میدهد. الگوریتم RSA از دو كلید برای رمزنگاری استفاده میکند: كلید خصوصی و كلید عمومی. در الگوریتم مذكور تفاوتی بین توانایی عملیاتی كلید عمومی و خصوصی وجود ندارد و یك كلید میتواند هم به عنوان كلید خصوصی به كار رود و هم به عنوان كلید عمومی.
كلیدهای RSA با استفاده از روش های ریاضی و با تركیب اعداد اول تولید میشوند. بزرگترین عددها با ضرب اعداد كوچك به دست می آیند و این اعداد كوچك از لحاظ ریاضی به هم وابسته هستند و دانستن یكی از آنها منجر به شناسایی دیگر اعداد اول به كار رفته در كلید میشود. این وضعیتی است كه در استفاده از كلید های عمومی و خصوصی مورد نظر است. البته در صورتی كه عدد خیلی بزرگ باشد، این كار به راحتی قابل انجام نیست و وضعیت های گمراه كننده بسیاری وجود دارند.
تنها تركیب درست از اعداد اول موجود در كلید رمزنگاری، قادر به رمزگشایی پیغام است. امنیت الگوریتم RSA و الگوریتمهای مشابه آن وابسته به استفاده از اعداد خیلی بزرگ است و بیشتر نسخه های RSA از اعداد 154 رقمی یا 512 بیتی به عنوان كلید استفاده می كنند. دسترسی به فاكتورهای اعداد اول اعداد خیلی بزرگ كه بیش از 100 رقم دارند كار بسیار مشكلی است. البته برخی از محققان توانسته اند با تلاش بسیار اعداد بزرگ را بشكنند ولی این كار برای هكرها جهت ورود به یك سیستم یا سر در آوردن از یك پیغام مقرون به صرفه نمی باشد.
برای پرهیز از پیچیدگی بحث فرض کنید فرستنده پیام جفت عدد صحیح و بزرگ (e,n) را به عنوان کلید عمومی برای رمزنگاری اطلاعات خود در اختیار دارد. در طرف مقابل، گیرنده نیز جفت عدد (d,n) را برای رمزگشایی پیام به کار می برد. بدیهی است که دو جفت عدد (e,n) و (d,n) با یکدیگر ارتباط زیرکانه ای دارند ولی این ارتباط یه گونه ای نیست که بتوان با در اختیار داشتن e و n براحتی d را استنتاج کرد. با فرض وجود چنین کلیدهایی، الگوریتم RSA در نهایت سادگی به صورت زیر بیان میشود:
C=(P)^e mod n
روش رمزگشایی داده ها نیز مثل روش رمزنگاری است، یعنی با در اختیار داشتن جفت عدد (d,n) بلوکهای رمز شده بصورت زیر از رمز خارج خواهند شد:
P=(C)^d mod n
حال برای درک بهتر به طرح یک مثال ساده و کوچک می پردازیم :
فرض کنید بخواهیم رشته ی M="catsanddogs" را رمز کنیم. برای سادگی این رشته ی کاراکتری را به بلوکهای دوتایی تقسیم کرده و سپس هر بلوک را به یک عدد صحیح تبدیل میکنیم. قاعده تبدیل در این مثال عبارت است از: برای کاراکتر a عدد 00، برای b عدد 01 ، و به همین ترتیب تا z که عدد 25 در نظر گرفته و جایگذاری میشود
سپس در هر بلوک دوتایی عدد متناظر با هر کاراکتر پشت سر هم قرار میگیرد تا کد بلوک را بسازد: (این الگو کاملا دلخواه و قراردادی است). فرض کنید فرستنده جفت عدد صحیح (3763 و 27) معادل (e,n) را برای رمزنگاری بلوکها اختیار کرده باشد. برای رمزنگاری هر بلوک عدد معادل آن به توان e و سپس باقیمانده تقسیم آن بر n محاسبه میشود تا بلوک رمز شده بدست آید. این اعداد به عنوان کدهای رمز بجای کدهای متن اصلی ارسال میشوند:
در RSA به جفت عدد (e,n) که متن به کمک آن رمز میشود اصطلاحاً کلید عمومی (public Key) و به جفت عدد (d,n) که با آن متن از رمز خارج میشود کلید خصوصی (private Key) گفته میشود. نکته اساسی در RSA آن است که جهت تضمین وارون پذیری روش رمز، اعداد e و d بایستی در رابطه زیر صدق کنند لذا باید در انتخاب اعداد دقت کرد:
x)^(e.d) mod n=x)
روش انتخاب d و e که توسط ابداع کنندگان RSA پیشنهاد شده است عبارتند از:
n=p×q (z=(p-1)(q-1
(e×d) mod z=1
(به عبارتی معکوس ضربی d را در پیمانه z محاسبه می کنید و آن را e می نامید.) اصل اساسی دیگری که در رمزنگاری RSA حتماً باید رعایت شود آن است که کدهای P_i که به هر بلوک نسبت می دهیم باید در شرط n>p>0 صدق کند. بنابراین اگر بلوکها را بصورت رسته های k بیتی مدل می کنید باید شرط 2^k<n برقرار باشد. برای مثال فرض کنید بخواهیم رشته "CATSANDDOGS" را رمز نماییم. برای راحتی کار مجبوریم کلیدها را بسیار کوچک در نظر بگیریم ولی بخاطر داشته باشید در رمزنگاری واقعی این اعداد وحشتناک بزرگند:
7e mod 20=1
برای آشنایی با مراحل رمزنگاری به جدول زیر دقت کنید. از آنجا که n معادل 33 و عدد کوچکی است و کدهای P باید در شرط P<33 صدق کنند لذا بلوکهای متن را به اجبار تک کاراکتری فرض کرده و به A عدد 0 ، به B عدد 1 و به همین ترتیب به z عدد 25 را نسبت داده ایم تا این رشته کاراکتری ضمن برآورده کردن این شرایط به اعدادی صحیح تبدیل شوند.
آنچه که مشخص است در کاربردهای عملی اعداد p و q حداقل صد رقمی (صد رقم در مبنای 10) انتخاب میشوند یعنی این دو عدد حداقل از مرتبه 100^10 هستند. در این حالت عدد صحیح متناظر با بلوکهای P باید از n کوچکتر باشند و نبایستی از 83 کاراکتر بیشتر باشند. پس هر بلوک متن بایستی حداکثر 664 بیت یا 83 کاراکتر هشت بیتی باشد. در زیر یک پیمانه واقعی (یعنی عدد n ) به طول حدوداً 2000 بیت را مشاهده می کنید!
13506641086599522734960321677980596993892147560563668295518479215569200575924144654654564832321641316464132165484 631641316498798432165498794165791149877696486248924795612418951566321589411479632105460214582156326063695146554146931504
میتوان از یك سیستم نامتقارن برای نشان دادن اینكه فرستنده پیام همان شخصی است كه ادعا میكند استفاده كرد كه این عمل در اصطلاح امضاء نام دارد.
به بیان ساده تر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط كلید خصوصی همان شخص است. حال اگر متن رمزشده توسط كلید عمومی آن شخص كه شما از آن مطلعید رمز گشایی شود، مطابقت متن حاصل و متن اصلی نشان دهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق میشود. سایر افراد كه از كلید خصوصی این فرد اطلاع ندارند قادر به ایجاد متن رمزشده ای نیستند كه با رمزگشایی توسط كلید عمومی این فرد به متن اولیه تبدیل شود.
سایر سیستمهای كلید نامتقارن شامل سیستمهای لگاریتم گسسته میشوند مانند Diffie-Hellman،ElGamal و سایر طرحهای چندجمله ای و منحنی های بیضوی. بسیاری از این طرحها عملكردهای یك طرفهای دارند كه اجازه تایید هویت را میدهند اما رمزنگاری ندارند.یك رقیب جدیدتر الگوریتم RPK است. الگوریتم رمزنگاری RPK یك سیستم رمزنگاری نسبتاً جدید بر پایه كلید عمومی است كه مبتنی بر ریاضیاتی است كه امروزه به صورت گسترده در رمزنگاری استفاده میشود.
این الگوریتم برای كاربردهای تجاری طراحی شده است و نیاز به مطالعات و تحقیقات گسترده در زمینه های جدید ریاضی ندارد. مطالعه بر روی این زمینه ها مانند سیستم رمزنگاری منحنی های بیضوی (ECC)، گاهی اوقات چندین سال به طول می انجامد. رمزنگاری RPK تمهیداتی را برای رمزنگاری در انتقال اطلاعات در شبكه های با سرعت بالا، كارت های هوشمند و برنامههای مبتنی بر ارتباطات بی سیم اندیشیده است. این الگوریتم برای استفاده در پروسه های نرم افزاری حجیم مانند تراكنش های كارت های اعتباری نیز مناسب است.
در هسته RPK یك ابداع به نام Mixture Generator وجود دارد و در پیاده سازی آن سه شیفت رجیستر خطی وجود دارند. این ماشین وضعیت دو حالت عملیاتی دارد. یك حالت از شیفت رجیسترها برای به توان رسانی استفاده كرده و دیگری به عنوان یك تولید كننده جریان تصادفی از بیت ها برای كاربرد در فاز تركیب رمزنگاری به كار می رود. سیستم RPK دو مرحله پرهزینه به توان رسانی كل پیغام را به طور مؤثر كاهش داده است زیرا موتور هسته آن برای قراردادن سیستم در وضعیت اولیه امن به كار رفته و سپس بین دو حالتی كه در بالا توضیح داده شد برای اجرای رمزنگاری سریع سوئیچ میکند.طول كلیدها برای این طرحهای جایگزین بسیار كوتاهتر از كلیدهای مورد استفاده در RSA است كه آنها برای استفاده در چیپ كارتها مناسب تر است. اما RSA محكی برای ارزیابی سایر الگوریتمها باقیمانده است؛ حضور و بقای نزدیك به سه دهه این الگوریتم، تضمینی در برابر ضعفهای عمده به شمار میرود.
در روش فوق از ترکيب يک کليد خصوصی و يک کليد عمومی استفاده میشود. کليد خصوصی صرفاً متعلق به کامپيوتر فرستنده بوده و کليد عمومی توسط کامپيوتر فرستنده در اختيار هر يک از کامپيوترهائی که قصد برقراری ارتباط با يکديگر را دارند، گذاشته میشود. برای رمزگشائی يک پيام رمز شده ، کامپيوتر می بايست از کليد عمومی که توسط فرستنده ارائه شده، بهمراه کليد خصوص ی خود استفاده نمايد. يکی از متداولترين برنامههای رمزنگاری در اين رابطه PGP)Pretty Good Privacy) است. با استفاده از PGP می توان هر چيز دلخواه را رمز نمود.
بمنظور پياده سازی رمزنگاری کليد عمومی در مقياس بالا نظير يک سرويس دهنده وب، لازم است از رويکردهای ديگری در اين خصوص استفاده گردد. "امضای ديجيتال" يکی از رويکردهای موجود در اين زمينه است. يک امضای ديجيتالی صرفاً شامل اطلاعات محدودی بوده که اعلام می نمايد، سرويس دهنده وب با استفاده و بکارگيری يک سرويس مستقل با نام "امضای مجاز"، امين اطلاعات است. امضای مجاز به عنوان يک ميانجی بين دو کامپيوتر ايفای وظيفه می نمايد. هويت و مجاز بودن هر يک از کامپيوترها برای برقراری ارتباط توسط سرويس دهنده انجام و برای هر يک کليد عمومی مربوطه را فراهم خواهد کرد.
رمزهای كلید خصوصی بر مبنای نوع عملكرد، چگونگی طراحی و پیاده سازی و كاربردهایشان به دو گونه رمزهای قطعه ای و رمزهای دنباله ای تقسیم میشوند. كه در هر یك از آ نها عملكرد رمز نگاری به صورت یك عملكرد دوجانبه بین دو طرف فرستنده و گیرنده میباشد كه با ایجاد یك ارتباط اولیه با یكدیگر روی كلید خصوصی توافق می كنند به گونه ای كه دشمن آن كلید را نداند.
فرستندهS میخواهد پیامm1,….mi را به گونه ای به طرف گیرنده R بفرستد كه او بتواند به محتوای پیام دست یابد و در عین حال حریف مخالف A نتواند محتوای پیام را درك كند حتی اگر A تمامی آنچه بین R و S انتقال می یابد را دریافت نماید.به همین منظور فرستنده S هر متن روشنmi را به وسیله الگوریتم رمزگذاری E وكلید خصوصی به متن رمز شده تبدیل میکند ودریافت كننده نیز كه متن رمز شده را دریافت كرده میتواند با الگوریتم رمز گشائیD و كلید خصوصی متن اصلی را بدست آورد.
بحثهای زیادی شده که کدام یک از این الگوریتمها بهترند اما جواب مشخصی ندارد. البته بررسی هایی روی این سوال شده به طور مثال Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی که با الگوریتمهای متقارن میتواند رمزنگاری شود از الگوریتمهای کلید عمومی کمتر است و با تحقیق به این نتیجه رسیدند که الگوریتمهای متقارن الگوریتمهای بهینه تری هستند. اما وقتی که بحث امنیت پیش می آید الگوریتمهای کلید عمومی کارایی بیشتری دارند. به طور خلاصه میتوان گفت که الگوریتمهای متقارن دارای سرعت بالاتر و الگوریتمهای کلید عمومی دارای امنیت بهتری هستند.
در ضمن گاهی از سیستم ترکیبی از هر دو الگوریتم استفاده میکنند که به این الگوریتمها الگوریتم های ترکیبی (hybrid) گفته میشود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتمهای کلید عمومی و الگوریتمهای کلید متقارن دارای دو ماهیت کاملاً متفاوت هستند و کاربردهای متفاوتی دارند به طور مثال در رمزنگاریهای ساده که حجم دادهها بسیار زیاد است از الگوریتم متقارن استفاده میشود زیرا دادهها با سرعت بالاتری رمزنگاری و رمزگشایی میشوند. اما در پروتکل هایی که در اینترنت استفاده میشود، برای رمز نگری کلید هایی که نیاز به مدیریت دارند از الگوریتمهای کلید عمومی استفاده میشود.
تکنیکهای رمزنگاری پیچیده به راحتی از روشهای جابهجایی یا جایگزینی استفاده نمیکنند. در عوض از یك كلید محرمانه برای كنترل یك توالی طولانی از جابهجایی و جایگزینیهای پیچیده استفاده میکنند. كلیدهای رمزنگاری و الگوریتمهای رمزنگاری با یكدیگر همكاری میکنند تا یك متن اولیه را به یك متن رمزی تبدیل كنند. در اغلب موارد الگوریتم رمزنگاری ثابت و شناخته شده است و این كلید رمزنگاری است كه یك نسخه یكتا از اطلاعات رمزنگاری شده تولید میکند. در زیر انواع كلیدهای رمزنگاری توضیح داده شدهاند.
سیستمهای كلید محرمانه تنها از یك كلید برای رمزنگاری و رمزگشایی اطلاعات استفاده میکنند. در این شیوه رمزنگاری، لازم است كه هر جفت فرستنده و گیرنده اطلاعات كلید جداگانهای را برای رمزنگاری دارا باشند و حفظ كلید به صورت محرمانه بسیار اهمیت دارد. امنیت این روش در گرو حفظ امنیت كلید است. الگوریتم Data Encryption Standard) DES) یك نمونه از الگوریتمهای كلید محرمانه است. چون فرض بر این است كه الگوریتم شناخته شده و معلوم است، امن بودن انتقال و ذخیره كلید بسیار مهم است.
کارتهای هوشمند معمولاً برای ذخیره كلیدهای محرمانه استفاده میشوند. در این حالت تضمین اینكه قلمرو كلید محدود است، مهم است: باید همیشه فرض كنیم كه یك كارت ممكن است توسط افراد غیرمجاز با موفقیت تحلیل گردد و به این ترتیب كل سیستم در مخاطره قرار گیرد. در شكل زیر یك عملیات انتقال اطلاعات با استفاده از كلید محرمانه نشان داده شده است كه در آن یك كاربر بانك، اطلاعات را با استفاده از كلید محرمانه رمزنگاری میکند و برای كارمند بانك ارسال میکند. وی نیز اطلاعات را با كلید مشابهی رمزگشایی میکند.
سیستمهایی كه از این نوع كلیدها استفاده میکنند، نامتقارن خوانده شده و در واقع دارای یك زوج كلید هستند: یك كلید عمومی و یك كلید خصوصی. در این سیستم هر كاربر دارای دو كلید عمومی و خصوصی است كه لازم است كلید خصوصی محرمانه نگهداری شود ولی كلید عمومی در اختیار همگان است. در اینجا كلید عمومی و خصوصی به یكدیگر از لحاظ ریاضی وابسته هستند. كاربر میتواند با استفاده از كلید خصوصی كه در اختیار دارد پیغام خود را رمزنگاری كرده و گیرنده آن را با استفاده از كلید عمومی رمزگشایی كند یا بالعكس.
امتیاز اصلی و مهم سیستمهای كلید نامتقارن این است كه آنها اجازه میدهند كه یك كلید (كلید خصوصی) با امنیت بسیار بالا توسط صاحب آن نگهداری شود در حالیكه كلید دیگر (كلید عمومی) میتواند منتشر شود. كلیدهای عمومی میتوانند همراه پیامها فرستاده شوند یا در فهرستها لیست شوند. شروط و قوانینی برای كلیدهای عمومی در طرح فهرست پیامرسانی الكترونیكی ITU X500. وجود دارد، و از یك شخص به شخص بعدی داده شوند.
مكانیسم توزیع كلیدهای عمومی میتواند رسمی (یك مركز توزیع كلید) یا غیر رسمی باشد. یكی از نكات منفی سیستمهای رمزنگاری با كلید عمومی توسط سناریوی زیر توضیح داده شده است. فرض كنید كاربر پیغام خود را با استفاده از كلید خصوصی رمزنگاری میکند. دریافت كننده پیغام میتواند از هویت فرستنده پیغام مطمئن باشد یعنی تأیید هویت به خوبی انجام میشود ولی مشكل اینست كه هر كسی كه دسترسی به كلید عمومی دارد
میتواند اطلاعات مذكور را رمزگشایی كند. لذا این روش محرمانگی اطلاعات را حفظ نمیکند. از طرف دیگر در صورتی كه اطلاعات توسط كلید عمومی رمزنگاری شوند، از آنجایی كه تنها دارنده كلید خصوصی قادر به رمزگشایی آن است لذا محرمانگی آن حفظ میشود ولی مشكل در اینست كه چون هر كسی میتواند به كلید عمومی دسترسی داشته باشد تأیید هویت با مشكل روبرو میشود.
راه حل مشكل مذكور، استفاده تركیبی از دو روش است به طوری كه هم امكان تأیید هویت وجود داشته باشد و هم محرمانگی اطلاعات حفظ شود. فرستنده پیغام خود را با استفاده از كلید خصوصی كه در اختیار دارد رمزنگاری میکند و سپس با استفاده از كلید عمومی كه مربوط به گیرنده است آن را مجدداً رمزنگاری میکند. در این حالت لازم است گیرنده پیغام ابتدا با استفاده از كلید خصوصی خود پیغام را رمزگشایی كند و سپس نتیجه را با استفاده از كلید عمومی فرستنده مجدداً رمزگشایی كند تا به اصل پیغام دسترسی پیدا كند.
در این صورت پیغام رمزنگاری شده تنها با كلید خصوصی دریافت كننده قابل رمزگشایی است و در نتیجه هم مشكل تأیید هویت و هم حفظ محرمانگی اطلاعات برطرف شده است. در همه حالات فرض میشود كه دارندگان كلید خصوصی مراقبتهای لازم را برای حفظ امنیت كلید مزبور به انجام میرسانند. البته دو بار رمزنگاری و رمزگشایی همه پیغام لزوماً مورد نیاز نیست. از آنجایی كه در صورت استفاده فرستنده از كلید عمومی گیرنده، محرمانگی اطلاعات حفظ میشود، در نتیجه رمزنگاری تنها بخش كوچكی از پیغام، برای تأیید هویت فرستنده كافی است. این قضیه ایده اصلی امضای دیجیتالی را تشكیل میدهد.
یكی از ایراداتی كه به روشهای پیشین وارد است، تعداد زیاد كلیدها است كه طبیعتاً منجر به سختتر شدن مدیریت كلید میشود. یك روش برای كاستن از تعداد كلیدهایی كه باید منتقل و ذخیره شوند، مشتق گرفتن از آنها در زمان مورد نیاز است. در یك برنامه اشتقاق كلید، یك كلید اصلی همراه با چند پارامتر مجزا برای محاسبه كلید مشتق شده استفاده میشود كه بعداً برای رمزنگاری استفاده میگردد. برای مثال، اگر یك صادر كننده با تعداد زیادی كارت سروكار دارد.
میتواند برای هر كارت، با استفاده از كلید اصلی، شماره كارت را رمز كند و به این ترتیب كلید مشتق شده حاصل میشود و به آن كارت اختصاص داده میشود. شكل دیگری از كلیدهای مشتق شده با استفاده از tokenها به دست میآیند كه tokenها محاسبهگرهای الكترونیكی با عملكردهای مخصوص هستند. ورودی آنها ممكن است، یك مقدار گرفته شده از سیستم مركزی، یك PIN وارد شده توسط كاربر و یا تاریخ و زمان باشد. خود token شامل الگوریتم و یك كلید اصلی است. چنین tokenهایی اغلب برای دسترسی به سیستمهای كامپیوتری امن استفاده میشوند.
از آنجا كه ارسال كلید یك نقطه ضعف از نظر امنیتی در سیستمها بشمار میرود، رمز کردن كلیدها هنگام ارسال و ذخیره آنها به شکل رمز شده منطقی به نظر میرسد. كلیدهای رمز کننده كلید هرگز به خارج از یك سیستم كامپیوتری (یا كارت هوشمند) ارسال نمیشوند و بنابراین میتوانند آسانتر محافظت شوند. اغلب برای تبادل كلیدها الگوریتم متفاوتی از آنچه كه برای رمز کردن پیامها استفاده میشود، مورد استفاده قرار میگیرد. از مفهوم دامنه كلید (key domain) برای محدود كردن میدان كلیدها و محافظت كردن از كلیدها در دامنهشان استفاده میكنیم.
معمولاً یك دامنه، یك سیستم كامپیوتری خواهد بود كه میتواند به صورت فیزیكی و منطقی محافظت گردد. كلیدهای استفاده شده در یك دامنه توسط یك كلید رمز کننده كلید محلی ذخیره میشوند. هنگامی كه كلیدها میخواهند به یك سیستم كامپیوتری دیگر فرستاده شوند، رمزگشایی و تحت یك كلید جدید رمز میشوند كه اغلب به عنوان كلید كنترل ناحیه (zone control key) شناخته میشوند. با دریافت این كلیدها در طرف دیگر، تحت كلید محلی سیستم جدید رمز میشوند. بنابراین كلیدهایی كه در دامنههای یك ناحیه قرار دارند از دامنهای به دامنه دیگر به صورتی كه بیان گردید منتقل میشوند.
برای محدود كردن مدت زمانی كه كلیدها معتبر هستند، اغلب یك كلید جدید برای هر نشست یا هر تراكنش تولید میشود. این كلید ممكن است یك عدد تصادفی تولید شده توسط ترمینالی باشد كه در مرحله تصدیق كارت قرار دارد. اگر كارت قادر به رمزگشایی روش كلید عمومی باشد، یعنی كلید نشست میتواند با استفاده از كلید عمومی كارت رمز شود. بخشی از تراكنش كه در آن كلید منتقل میشود اغلب در مقایسه با بقیه تراكنش کوتاهتر است؛ بنابراین بار اضافی این بخش نسبت به كل تراكنش قابل صرف نظر است.
چنانچه بقیه تراكنش به سبب استفاده از كلید متقارن (محرمانه) با بالاسری كمتری رمز شود، زمان پردازش برای فاز تایید هویت و انتقال كلید قابل پذیرش است (توضیح اینكه روشهای رمز متقارن از نامتقارن به مراتب سریعتر هستند بنابراین میتوان ابتدا یك كلید متقارن را با استفاده از روش نامتقارن انتقال داد و سپس از آن كلید متقارن برای انجام بقیه تراكنش استفاده كرد). شكل خاصی از كلید نشست، سیستم انتقال كلید است كه در برخی سیستمهای پرداخت الكترونیك و مبادله دیتای الكترونیك استفاده میشود. بدین صورت كه در پایان هر تراكنش، یك كلید جدید منتقل میشود و این كلید برای تراكنش بعدی مورد استفاده قرار میگیرد.
دو سطح ارتباطی پایه وجود دارد كه رمزنگاری میتواند در آن اجرا شود. رمزنگاری بر اساس این سطوح به دو دسته رمزنگاری مبدأ به مقصد و رمزنگاری انتقال تقسیم میشود. در رمزنگاری مبدأ به مقصد یا end-to-end كه گاهی اوقات به آن رمزنگاری آفلاین هم گفته میشود، پیغامها در مبدأ و در زمان ارسال رمزنگاری شده و سپس در مقصد رمزگشایی میشوند. در این سطح رمزنگاری نیازی نیست كه شبكه از رمزی بودن پیغام آگاهی داشته باشد.
گاهی اوقات این نوع رمزنگاری میتواند توسط كاربر مورد انتخاب قرار بگیرد. پیغام در تمام طول انتقال رمز شده باقی میماند، از ابتدا تا انتها. فایده این روش در این است كه احتیاجی نیست در تمام گامهای مسیر، تمام نقاط امن باشند. این اصلی است كه امروزه در سیستمهای شناخته شده رمزنگاری پیغام به شیوه تونل مانند SSL و TLS مورد استفاده قرار میگیرد. در رمزنگاری انتقال یا link encryption كه گاهی به آن رمزنگاری آنلاین هم گفته میشود، مانند روش قبل پیغام در زمان ارسال رمزنگاری میشود ولی هر بار كه به یك گره ارتباطی شبكه میرسد، رمزگشایی شده و دوباره رمزنگاری میشود. در این روش رمزنگاری از دید كاربر پنهان است و به عنوان بخشی از پروسه انتقال اعمال میشود. برای هر دو روش نقاط مثبت و منفی وجود دارد كه در زیر آورده شده است.
قابلیت انعطاف بیشتری دارد. كاربر میتواند تنها اطلاعات مورد نظر خویش را رمزنگاری كند و هر كاربر نیز میتواند كلید جداگانهای داشته باشد.
ممكن است نیاز به بررسی برخی از اطلاعات مانند اطلاعات سر آیند و یا مسیریابی به صورت رمزنگاری نشده باشد.
کارشناس شبکه و فناوری اطلاعات
پیامبر اکرم (ص): علم را با نوشتن به زنجیر کشید... پس زکات علم اندکم را با به زنجیر کشیدن آن میپردازم...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود