مصطفی سعیدفر
کارشناس شبکه و فناوری اطلاعات

معرفی کامل انواع الگوریتم های رمزنگاری (Encryption) به زبان ساده

در این مطلب با زبان ساده به بررسی انواع الگوریتم های رمزنگاری (Encryption) پرداخته و تاریخچه هر کدام را بررسی خواهیم کرد. سلام خدمت دوستان عزیز ، از طرفی با توجه به اینکه مقالات در زمینه تاریخچه و روشهای رمزنگاری در فضای مجازی بسیار پراکنده هستند و از طرف دیگه پروژه کارشناسی خودم هم در مورد مطالعه و بررسی امضای دیجیتال بوده، تصمیم گرفتم طی سلسله مقالاتی با عنوان امنیت داده ها، تاریخچه رمزنگاری، انواع روشهای رمزنگاری، روشهای امضا دیجیتال و معرفی گواهینامه های دیجیتال، اصول رمز شکنی و در آخر هم پروتکل SSL و امنیت در شبکه رو معرفی کنم، ان شا الله...

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. تاریخچه رمزنگاری
    1. ماشین رمزنگاری هیل
    2. اصول ششگانه کرکهف
    3. رمزنگاری پیشرفته
    4. دلیل رمزنگاری اطلاعات در کامپیوتر
    5. برخی اصطلاحات
    6. اصطلاحات رمز نگاري
    7. با استفاده از رمزنگاري سه سرويس امنيتي فراهم مي شود:
  2. معرفی انواع روشهای رمزنگاری
    1. سرویس رمزنگاری یا Cryptographic Service
    2. رمزنگاری سخت افزاری یا Hardware Cryptography
    3. پروتکل رمزنگاری Cryptography Protocol
    4. پروتکل تبادل کلید دیفی ، هلمن Diff i-Hellman Key Exchange Algorithm
    5. الگوریتم رمزنگاری Cryptography Algorithm
    6. انواع روشهای رمزنگاری
    7. رمزهاي جانشينی
    8. رمزهای جابجايی
    9. انواع روشهای رمزنگاری مبتنی بر کليد
    10. الگوريتمهای کليد متقارن یا Symmetric Key Algorithms
    11. الگوريتمهای کليد نامتقارن (کليد عمومی) یا Asymmetric Key Algorithms
    12. مقایسه رمزنگاری کلید متقارن و کلید نامتقارن‌
  3. معرفی انواع الگوریتم های رمزنگاری
    1. الگوریتم های رمزنگاری متقارن
    2. رمزنگاری DES
    3. 1- Electronic Code Book یا ECB
    4. 2- Cipher Block Chaining یا CBC
    5. 3- Cipher Feedback یا CFB
    6. 4- Output Feedback یا OFB
    7. استاندارد پیشرفته رمزنگاری یا ( AES ( Advance Encryption System
    8. طرز كار AES
    9. SubBytes
    10. شیفت ردیف و تركیب ستونها
    11. كلیدهای Round
    12. تكرار
  4. الگوریتمهای رمزنگاری نامتقارن
    1. روش نامتقارن Asymmetric
    2. الگوریتم‌های رمزنگاری با كلید نامتقارن
    3. رمزنگاری کليد عمومی
    4. الگوریتم‌های رمزنگاري کليد خصوصی
    5. مقایسه رمزنگاری الگوریتم‌های متقارن و الگوریتم‌های کلید عمومی‌
  5. معرفی انواع کلیدهای رمزنگاری
    1. كلیدهای رمزنگاری
    2. كلیدهای محرمانه
    3. كلیدهای عمومی و خصوصی
    4. كلیدهای اصلی و مشتق شده (Master and derived keys)
    5. كلیدهای رمز كننده‌ كلید (Key-encrypting keys)
    6. كلیدهای نشست (Session keys)
    7. رمزنگاری مبدأ به مقصد و رمزنگاری انتقال
    8. نقاط مثبت روش مبدأ به مقصد
    9. نقاط منفی روش مبدأ به مقصد
    10. نقاط مثبت روش انتقال
    11. نقاط منفی روش انتقال

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

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

رمز سزار

یکی دیگر از شیوه‌های رمزنگاری ابتدایی، پیچیدن یک نوار کاغذی بر روی استوانه‌ای با قطر مشخص و سپس نوشتن پیام روی کاغذ پیچیده شده بوده‌است. بدیهی است بدون اطلاع از مقدار قطر استوانه، خواندن پیام کار بسیار دشواری خواهد بود و تنها کسانی که نسخه‌های یکسانی از استوانه را داشته باشند می‌توانند پیام را بخوانند.

رمز استوانه ای

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

ماشین لورنتز

ماشین رمزنگاری هیل

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

ماشین هیل

اصول ششگانه کرکهف

آگوست کرکهف در سال ۱۸۸۳ دو مقاله با عنوان «رمز نگاری نظامی» منتشر کرد. در این دو مقاله شش اصل اساسی وجود داشت که اصل دوم آن به عنوان یکی از قوانین رمز نگاری هنوز هم مورد استفاده دانشمندان در رمز نگاری پیشرفته‌است:

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

رمزنگاری پیشرفته

با پدید آمدن رایانه‌ها و افزایش قدرت محاسباتی آنها، دانش رمزنگاری وارد حوزه علوم رایانه گردید و این پدیده، موجب بروز سه تغییر مهم در مسائل رمزنگاری شد:

  1. وجود قدرت محاسباتی بالا این امکان را پدید آورد که روش‌های پیچیده‌تر و مؤثرتری برای رمزنگاری به وجود آید.
  2. روش‌های رمزنگاری که تا قبل از آن اصولا برای رمز کردن پیام به کار می‌رفتند، کاربردهای جدید و متعددی پیدا کردند.
  3. تا قبل از آن، رمزنگاری عمدتاً روی اطلاعات متنی و با استفاده از حروف الفبا انجام می‌گرفت؛ اما ورود رایانه باعث شد که رمزنگاری روی انواع اطلاعات و بر مبنای بیت انجام شود.

دلیل رمزنگاری اطلاعات در کامپیوتر

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

  • اطلاعات کارت اعتباری
  • شماره های عضويت در انجمن ها
  • اطلاعات خصوصی
  • جزئيات اطلاعات شخصی
  • اطلاعات حساس در يک سازمان
  • اطلاعات مربوط به حساب های بانکی

برخی اصطلاحات

  • Encryption : در علم cryptography به پنهان سازی اطلاعات گفته می‌شود.
  • Decryption : معکوس encryption است و درcrypto به آشکار سازی اطلاعات پنهان شده گفته می‌شود.
  • Plain text : به متنی گفته می‌شود که معنای آن بدون تغییر خاصی قابل درک است.
  • Cipher : به روشی برای تبدیل plain text به متنی که معنای آن پنهان باشدcipher گفته می‌شود.
  • Cryptanalysis : به هنر شکستن متون cipher شده گفته می‌شود.
  • Intruder : در لغت به معنای مزاحم است ولی در اینجا به معنای کسی است که یک کپی ازcipher text دارد و تمایل به شکستن رمز دارد. منظور از شکستن رمز یعنیdecrypt کردن آن متن که خود دو نوع است active-intruder که می‌تواند اطلاعات را روی خط عوض کند و تغییر دهد و passive intruder که فقط می‌تواند اطلاعات روی خط را داشته باشد و قابلیت تغییر آنها را ندارد.
  • Intrusion Points : نقاطی که یک نفوذگر بتواند به اطلاعات با ارزش دست پیدا کند.
  • Internal Access Point : به سیستم‌هایی گویند که در اتاق یا در شبکه داخلی مستقرند و هیچ امنیتی(Local Security) روی آنها تنظیم نشده باشد و احتمال حمله به آنها وجود دارد.
  • External Access Point : تجهیزاتی که ما را به شبکه خارجی مانند اینترنت متصل می‌کنند یا Applicationهایی که از طریق اینترنت کار می‌کنند و احتمال حمله به آنها وجود دارد.

اصطلاحات رمز نگاري

  • متن ساده : اطلاعات اوليه كه هنوز رمز نگاري نشده اند
  • متن رمزي : اطلاعاتي كه رمز نگاري شده اند
  • الگوريتم رمز نگاري : الگوريتمي كه متن ساده را به متن رمزي تبديل مي كند
  • كليد رمز : داده اي است كه الگوريتم رمز نگاري متن ساده را به متن رمزي تبديل مي كند و برعكس
  • رمز نگاري : فرايند تبديل متن ساده به متن رمزي است
  • رمز گشايي : فرايند تبديل متن رمزي به متن ساده است

با استفاده از رمزنگاري سه سرويس امنيتي فراهم مي شود:

1- محرمانه سازي: اطلاعات به هنگام ارسال يا ذخيره شدن از ديد افراد غير مجاز پنهان خواهد شد.

2- تمامیت: تغييرات اعمال شده در اطلاعات ارسالي مشخص خواهد شد.

3- اعتبار سنجی: مي توان منبع اطلاعات را اعتبار سنجي كرد.

معرفی انواع روشهای رمزنگاری

سرویس رمزنگاری یا Cryptographic Service

به طور کلی، سرویس رمزنگاری، به قابلیت و امکانی گفته می‌شود که بر اساس فنون رمزنگاری حاصل می‌گردد. قبل از ورود رایانه‌ها به حوزه رمزنگاری، تقریباً کاربرد رمزنگاری محدود به رمز کردن پیام و پنهان کردن داده های موجود در آن می‌شده‌ است. اما در رمزنگاری پیشرفته سرویس‌های مختلفی از جمله موارد زیر ارائه گردیده‌ است:

  • محرمانگی یا امنیت محتوا ( Content Confidentiality ) : ارسال یا ذخیره اطلاعات به نحوی که تنها افراد مجاز بتوانند از محتوای آن مطلع شوند، که همان سرویس اصلی و اولیه پنهان کردن مفاد پیام است.
  • سلامت محتوا یا صحت محتوا ( Content Integrity ) : به معنای ایجاد اطمینان از صحت اطلاعات و عدم تغییر محتوای اولیه آن در حین ارسال است. تغییر محتوای اولیه اطلاعات ممکن است به صورت اتفاقی (در اثر مشکلات مسیر ارسال) و یا به صورت عمدی باشد.
  • احراز هویت یا اصالت محتوا ( Content Authentication ) : به معنای تشخیص و ایجاد اطمینان از هویت ارسال‌کننده اطلاعات و عدم امکان جعل هویت افراد می‌باشد.
  • عدم انکار یا انکارناپذیری ( Non-Repudiation ) : به این معنی است که ارسال‌کننده اطلاعات نتواند در آینده ارسال آن را انکار یا مفاد آن را تکذیب نماید.

رمزنگاری سخت افزاری یا Hardware Cryptography

الگوریتم‌های رمزنگاری رامی توان هم به صورت سخت افزاری (به منظور سرعت بالاتر) و هم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد. روشهای جانشینی و جایگشتی می‌توانند با یک مدار ساده الکترونیکی پیاده سازی شوند.p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد دارد. با سیم بندی و برنامه ریزی درونی این p-box قادر است هر گونه جایگشت بیتی راعملاً با سرعتی نزدیک به سرعت نور انجام بدهد چرا که هیچ گونه محاسبه‌ای لازم نیست وفقط تأخیر انتشار سیگنال وجود دارد.این طراحی از اصل کرکهف تبعیت می‌کند یعنی: حمله کننده از روش عمومی جایگشت بیت‌ها مطلّع است آن چه که او از آن خبر ندارد آن است که کدام بیت به کدام بیت نگاشته می‌شود کلید رمز همین است.

پروتکل رمزنگاری Cryptography Protocol

به طور کلی، یک پروتکل رمزنگاری، مجموعه‌ای از قواعد و روابط ریاضی است که چگونگی ترکیب کردن الگوریتم‌های رمزنگاری و استفاده از آن‌ها به منظور ارائه یک سرویس رمزنگاری خاص در یک کاربرد خاص را فراهم می‌سازد.وظایف یک پروتکل رمزنگاری را می توان بصورت کلی به دسته های زیر طبقه بندی کرد :

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

به عنوان مثال می‌توان به پروتکل تبادل کلید دیفی-هلمن برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره نمود.

پروتکل تبادل کلید دیفی ، هلمن Diff i-Hellman Key Exchange Algorithm

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

الگوریتم رمزنگاری Cryptography Algorithm

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

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

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

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

رمزهاي جانشينی

در رمز جانشيني هر حرف يا گروهي از حروف به جاي حرف يا گروهي از حروف ديگر قرار مي گيرد تا پنهان سازي صورت گيرد. در اين روش a به D ، b به E ، c به F ، ...... و z به C تبديل مي شود.به عنوان مثال :عبارتattack به DWWDFN تبدیل می شود. در مثال ها متن ساده با حروف كوچك و متن رمزي با حروف بزرگ مشخص مي شود.در این مثال کلید (k) برابر 3 است که میتواند متغیر باشد.هر سیستم رمزنگاری که در آن یک سمبل با سمبل دیگر جایگزین می شود اصطلاحا سیستم جانشینی تک حرفی گفته میشود که در آن کلید رمز یک رشته ی 26 حرفی است.

  • متن ساده: a b c d e f g h I j k l m n o p q r s t u v w x y z
  • متن رمزي: Q W E R T Y U I O P A S D F G H J K L Z X C V B N

مثال : طبق این الگو عبارت 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 شروع مي شود. بنابراين با استفاده از تكرار آماري در متن انگليسي به راحتي مي توان به كليد پي برد.

رمزهای جابجايی

رمزهاي جانشيني ترتيب نماد هاي متن ساده را حفظ مي كنند ولي آنها را تغيير مي دهند. رمز هاي جابه جايي ترتيب حروف را عوض مي كنند ولي آنها را تغيير نمي دهند.

رمز جانشینی

انواع روشهای رمزنگاری مبتنی بر کليد

الگوريتمهای کليد متقارن یا Symmetric Key Algorithms

رمز گذاری و رمز برداری با يک کليد انجام می گيرد. از این دسته می توان روش های زیر را نام برد:

  • (DES (Data Encryption Standard
  • 3DES

الگوريتمهای کليد نامتقارن (کليد عمومی) یا Asymmetric Key Algorithms

هر فرد يک کليد عمومی و يک کليد خصوصی دارد که بر اساس قوانين زير عمل می کند:

  • D(E(P))=P

که در این رابطه استنتاج 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

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

  • الگوریتم رمزنگاری : الگوریتم DES منتشر شده شامل چندین تكرار از یك تغییر شكل ساده با استفاده از هر دو تكنیك جابجایی و جایگزینی است. این الگوریتم تنها از یك كلید برای رمزنگاری و رمزگشایی استفاده می كند و به همین جهت به آن رمزنگاری كلید اختصاصی نیز گفته می شود. در این حالت حفظ كلید به صورت محرمانه توسط فرستنده و گیرنده پیغام بسیار اهمیت دارد زیرا الگوریتم به صورت عمومی در اختیار همگان است و در صورت لو رفتن كلید، هر كسی می تواند پیغام محرمانه را ببیند. به همین جهت در رمزنگاری DES معمولاً عمر كلید به اندازه عمر تراكنش است.
  • کلید رمزنگاری : كلید DES یك توالی هشت بایتی است كه هر بایت شامل یك كلید هفت بیتی و یك بیت توازن است. در حین رمزنگاری، الگوریتم DES متن اصلی را به بلوك های 64 بیتی می شكند. این الگوریتم در هر زمان بر روی یك بلوك كار می كند و آن را از نصف شكسته و كاراكتر به كاراكتر رمزنگاری می كند. كاراكترها 16 بار تحت نظارت كلید تغییر شكل پیدا كرده و در نهایت یك متن رمزنگاری شده 64 بیتی تولید می شود. كلید حاوی 56 بیت معنادار و هشت بیت توازن است.
الگوریتم رمزنگاری DES

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

الگوریتم رمزنگاری 3DES

به هرحال DES به حیات خود ادامه می دهد زیرا اولاً هر كسی می تواند به راحتی از آن استفاده كند و ثانیاً قابلیت حفظ محرمانگی را برای مدت كوتاهی دارد كه برای بسیاری از برنامه های كاربردی، زمان مناسبی محسوب می شود. رمزنگاری DES چهار مد مجزا را فراهم می كند كه از لحاظ پیچیدگی و موارد كاربرد متفاوت هستند. در زیر هر كدام از مدها به صورت خلاصه شرح داده شده اند:

1- Electronic Code Book یا ECB

هرگاه در رمزنگاری یک متن بزرگ، کل متن را به قطعات کوچک با طول ثابت (و متناسب با طول ورودی سیستم در رمزنگار) تقسیم کرده و هر بلوک مستقل از دیگری با کلید k رمز و جانشین متن اصلی شود، اصطلاحاً مبتنی بر "شیوه کتابچه رمز" یا ECB) Mode Electronic Code Book ) عمل کرده ایم.

روش کتابچه رمز

این شیوه دو مشکل اساسی دارد:

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

مقایسه روش زنجیره سازی

ب) فرض کنید یک بانک اطلاعاتی با الگوریتم 3DES و طبق شیوه ECB رمزنگاری و جایگزین شده باشند. حال نفوذگر توانسته در حین انتقال این پایگاه اطلاعاتی آن را قاپیده و در اختیار بگیرد. او اگر چه نمی تواند رمز این اطلاعات را بشکند ولی می تواند جای برخی فیلدها را با هم عوض کند. بدین ترتیب بدون آنکه کسی متوجه این تغییر شود توانسته در روند عملیات اختلال ایجاد کند و یک حمله غیر فعال علیه سیستم رمز به وقوع پیوسته است.

2- Cipher Block Chaining یا CBC

ساده ترین شیوه ی زنجیره سازی بلوکهای رمز آن است که نتیجه ی رمزنگاری هر بلوک کوچک در رمزنگاری بلوکهای بعدی نیز دخالت داده شود. طبق این شیوه هر گونه تغییر یا جا بجایی در یک بلوک باعث خواهد شد که متن رمزگشایی شده از محل دستکاری، به بلوکهای آشغال و بی معنی تبدیل گردد. این روش به اختصار شیوه( CBC (Cipher Block Chaining یا شیوه "زنجیره سازی بلوکهای رمز" نامیده می شود. برای رمزنگاری اولین بلوک متن یک مقدار اولیه مشهور به IV در نظر گرفته می شود که از لحاظ طول دقیقاً هم اندازه با بلوک متن است. به عبارت دیگر اولین بلوک متن با یک مقدار اولیه XOR می شود. مقدار IV اصلا اهمیتی ندارد و کاملا تصادفی انتخاب و به همراه داده ها (به صورت آشکار) ارسال می شود. چرا که شاه کلید رمز مخفی است و بدون کلید هیچ چیزی از رمز خارج نخواهد شد.

روش زنجیره سازی بلوکها

این شیوه نیز دو مشکل اساسی دارد:

تغییر در مقدار اولیه (IV) یا هر یک از بیت های متن اصلی، کل خروجی را تا انتهای متن تحت تاثیر قرار می دهد و این تاثیر حتی به اندازه یک بیت بسیار ژرف خواهد بود. در طرف مقابل تغییر در یک بیت از متن رمز شده در خلال عبور از کانال انتقال فقط رمزگشایی دو بلوک مجاور را با اختلال مواجه می کند. بدین ترتیب بلوکهای مشابه در متن اصلی هرگز به بلوکهای یکسان در خروجی تبدیل نخواهند شد.

یکی دیگر از اشکالات شیوه زنجیره سازی بلوکها آن است که رمزنگاری اطلاعات باید به صورت ترتیبی انجام گیرد و امکان موازی سازی عملیات جهت بالا رفتن سرعت، وجود ندارد. هرگز نمی توانید بلوک Pi را رمز کنید مگر آنکه تمام بلوکهای P0 و P(i-2) ، P(i-1) را قبلاً رمز کرده باشید.

3- Cipher Feedback یا CFB

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

روش فیدبک

4- Output Feedback یا OFB

مد Output Feedback بسیار شبیه به CFB است ولی مانند آن به زنجیر كردن متون رمزنگاری شده نمی پردازد و به جای آن یك سری پردازش دیگر بر روی متن اصلی انجام می دهد. از این مد برای رمزنگاری ارتباطات ماهواره ای استفاده می شود. مدهای CBC و CFB تأیید پیغام و رمزنگاری را تؤاماً انجام می دهند. تأیید پیغام جهت اطمینان از مطابقت متن ارسال شده و متن دریافت شده است. در هنگام رمزنگاری DES بلوك های متن به هم لینك می شوند، در مدهای CFB و CBC رمزنگاری هر بلوك وابسته به رمزنگاری بلوك قبل از آن است.

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

استاندارد پیشرفته رمزنگاری یا ( AES ( Advance Encryption System

مؤسسه 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 متن رمزنگاری شده به دست می آید. كلید نیز به نوبه خود شیفت پیدا می كند، گرد می شود و به خودش اضافه می شود.

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

روش نامتقارن Asymmetric

در قسمتهای قبلی تاریخچه مختصری از رمزنگاری، مفاهیم اولیه آن، كلیدهای رمزنگاری و الگوریتم‌های رمزنگاری با استفاده از كلید متقارن را توضیح دادیم. در این قسمت الگوریتم‌های رمزنگاری با استفاده از كلید نامتقارن را شرح و بسط خواهیم داد.

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

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

در قسمت قبلی در مورد الگوریتم‌های رمزنگاری متقارن 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 در نهایت سادگی به صورت زیر بیان می‌شود:

  • الف) پیامی که باید رمز شود به بلوک‌های k کاراکتری (k بایتی) تقسیم بندی می‌شود.
  • ب) هر بلوک طبق قاعده ای کاملاً دلخواه به یک عدد صحیح با نام P تبدیل می گردد.
  • ج) با جفت عدد (e,n) به ازای یکایک بلوک‌های P، اعداد جدیدی طبق رابطه زیر بدست می آید:
C=(P)^e mod n
  • د) کدهای C به جای کدهای اصلی P ارسال می‌شوند.

روش رمزگشایی داده ها نیز مثل روش رمزنگاری است، یعنی با در اختیار داشتن جفت عدد (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 پیشنهاد شده است عبارتند از:

  • الف) دو عدد اول دلخواه (ولی بزرگ) p و q را انتخاب نمایید.
  • ب) اعداد n و z را طبق دو رابطه زیر محاسبه مایید:
n=p×q
(z=(p-1)(q-1

  • ج) عدد d را به گونه ای انتخاب کنید که نسبت به z اول باشد یعنی هیچ عامل مشترکی که هر دو بر آن بخش پذیر باشند یافت نشود.
  • د) بر اساس d، عدد e را به گونه ای انتخاب کنید که رابطه زیر برقرار باشد:
(e×d)  mod z=1

(به عبارتی معکوس ضربی d را در پیمانه z محاسبه می کنید و آن را e می نامید.) اصل اساسی دیگری که در رمزنگاری RSA حتماً باید رعایت شود آن است که کدهای P_i که به هر بلوک نسبت می دهیم باید در شرط n>p>0 صدق کند. بنابراین اگر بلوک‌ها را بصورت رسته های k بیتی مدل می کنید باید شرط 2^k<n برقرار باشد. برای مثال فرض کنید بخواهیم رشته "CATSANDDOGS" را رمز نماییم. برای راحتی کار مجبوریم کلیدها را بسیار کوچک در نظر بگیریم ولی بخاطر داشته باشید در رمزنگاری واقعی این اعداد وحشتناک بزرگند:

  • الف) دو عدد اول p=3 و q=11 را انتخاب می کنیم.
  • ب) اعداد n=33 و z=20 بدست می آیند.
  • ج) عدد 7 را که نسبت به z اول است را به عنوان d بر می گزینیم.
  • د) باید عدد e را معادل معکوس حسابی d در پیمانه z انتخاب کنیم یا به عبارتی e را به نحوی انتخاب کنیم که در رابطه زیر صدق کند:
7e mod 20=1
  • ه) عدد 3 را که در این رابطه صدق می‌کند به عنوان کلید عمومی و عدد 7 را به عنوان کلید خصوصی انتخاب کرده‌ایم. (اعداد 23 ، 43 و هر عدد k×20+3 نیز برای e قابل قبول اند.)

برای آشنایی با مراحل رمزنگاری به جدول زیر دقت کنید. از آنجا که 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. وجود دارد، و از یك شخص به شخص بعدی داده شوند.

مكانیسم توزیع كلیدهای عمومی می‌تواند رسمی (یك مركز توزیع كلید) یا غیر رسمی باشد. یكی از نكات منفی سیستم‌های رمزنگاری با كلید عمومی توسط سناریوی زیر توضیح داده شده است. فرض كنید كاربر پیغام خود را با استفاده از كلید خصوصی رمزنگاری می‌کند. دریافت كننده پیغام می‌تواند از هویت فرستنده پیغام مطمئن باشد یعنی تأیید هویت به خوبی انجام می‌شود ولی مشكل اینست كه هر كسی كه دسترسی به كلید عمومی دارد

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


وب سایت توسینسو

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

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

كلیدهای اصلی و مشتق شده (Master 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 كه گاهی به آن رمزنگاری آنلاین هم گفته می‌شود، مانند روش قبل پیغام در زمان ارسال رمزنگاری می‌شود ولی هر بار كه به یك گره ارتباطی شبكه می‌رسد، رمزگشایی شده و دوباره رمزنگاری می‌شود. در این روش رمزنگاری از دید كاربر پنهان است و به عنوان بخشی از پروسه انتقال اعمال می‌شود. برای هر دو روش نقاط مثبت و منفی وجود دارد كه در زیر آورده شده است.

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

قابلیت انعطاف بیشتری دارد. كاربر می‌تواند تنها اطلاعات مورد نظر خویش را رمزنگاری كند و هر كاربر نیز می‌تواند كلید جداگانه‌ای داشته باشد.

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

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

ممكن است نیاز به بررسی برخی از اطلاعات مانند اطلاعات سر آیند و یا مسیریابی به صورت رمزنگاری نشده باشد.

  • هر سیستمی نیازمند اجرای نوع یكسانی از رمزنگاری است.
  • این روش تنها محتویات پیغام را امن نگاه می‌دارد ولی نمی‌تواند این واقعیت را مخفی كند كه چنین پیغامی فرستاده شده است.

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

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

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

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

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

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

مصطفی سعیدفر
مصطفی سعیدفر

کارشناس شبکه و فناوری اطلاعات

پیامبر اکرم (ص): علم را با نوشتن به زنجیر کشید... پس زکات علم اندکم را با به زنجیر کشیدن آن میپردازم...

نظرات