در چند دهه ابتدایی پیدایش، از شبکه های کامپیوتری بیشتر توسط پژوهشگران دانشگاه وبرای ارسال نامه های الکترونیکی و یا توسط کارمندان شرکتها برای به اشتراک گذاری چاپگر، استفاده می شد.
در چنین شرایطی، امنیت شبکه از اهمیت چندانی برخوردار نبود.
اما اکنون که میلیونها تن از شهروندان عادی از شبکه ها برای انجام عملیات بانکی، معاملات یا پرکردن اظهارنامه های مالیاتی خود استفاده می کنند، امنیت شبکه به عنوان یک مسئله بالقوه و عمده پدیدار شده است.
در این فصل از چندین زاویه به مطالعه امنیت شبکه خواهیم پرداخت، اشکالات و موانع امنیت را متذکر شده وچندین الگوریتم و پروتکل را که شبکه ها را امن تر و قابل اطمینان می کنند، تشریح خواهیم نمود.
« امنیت شبکه» دربرگیرنده عناوین و موارد بسیار گسترده است وبا مشکلات ومعضلات متعددی سروکاردارد.
دریک عبارت ساده می توان امنیت را « اطمینان از عدم دسترسی افراد فضول وجلوگیری از دستکاری در پیامهای محرمانه دیگران» تعبیرکرد.
همچنین می توان امنیت را در ارتباط با افرادی تعبیر کرد که تلاش می کنند به سرویسهای راه دور در شبکه دسترسی پیدا کنند در حالی که مجوز استفاده از آنها را ندارند؛ یا به روشهایی اطلاق می شود که بتوان صحت پیامهایی که مثلاً از اداره اخذ مالیات (IRS) می رسد و اعلام می کند: « حداکثر تا جمعه مبلغ اعلام شده را واریز کنید» را تأیید کرد وتشخیص داد که این پیام واقعاً از اداره مالیات آمده نه از مافیا !
همچنین می توان امنیت را درخصوص پیشگیری از دخل وتصرف ویا پاسخ جعلی به پیامهای قانونی دیگران ومقابله با افرادی که پس از ارسال پیام سعی در انکار آنها می کنند، تعبیر کرد.
منشأ اغلب مشکلاتی که به صورت عمدی برای امنیت شبکه ها به وجود می آید افرادی هستند که سعی در کسب درآمد نا مشروع، جلب توجه یا آزاررسانی به دیگران دارند.
درشکل 1 فهرستی از افراد که بطور عام مرتکب جرمهای امنیتی می شوند وانگیزه های آنان درج شده است.
با بررسی این جدول روشن خواهد شد که تضمین امنیت شبکه، مقوله ای فراتر از رفع اشکالات برنامه نویسی است.
دراین خصوص باید تمهیداتی برای پیشگیری از حمله دشمنانی اندیشیده شود که غالباً افرادی با هوش وکوشا هستند وگاهی اوقات سازمان یافته وبا برنامه ریزی قبلی اقدام به حمله می کنند.
البته همیشه عملیات مخرب برعلیه شبکه توسط یک گروه خاص وخطرناک انجام نمی شود؛ بررسی پرونده های اداره پلیس نشان می دهد که بسیاری از حملات بر علیه شبکه توسط عوامل خارجی وبه واسطه نفوذ از طریق خط تلفن نبوده است بلکه توسط عوامل مغرض داخلی انجام گرفته است.
بنابراین طراحی سیستمهای امنیتی باید با درنظر داشتن این حقیقت انجام شود.
مشکلات امنیت شبکه بطور کلی به چهار رده نزدیک ومرتبط به هم تقسیم بندی می شوند: (1) سری ماندن اطلاعات١ ، (2) احراز هویت کاربران٢ ، (3) غیرقابل انکاربودن پیامها٣، (4) نظارت برصحت اطلاعات.٤
سری ماندن اطلاعات که گاه «محرمانه نگاهداری اطلاعات»(Confidentiality) نیز نامیده می شود، متضمن انجام عملیاتی است که اطلاعات را از دسترس کاربران غیرمجاز وبیگانه دور نگاه می دارد.
این همان مفهومی است که در ذهن مردم عادی در خصوص امنیت شبکه تداعی می شود.
«احراز هویت» عبارتست از تأیید هویت طرف مقابل ارتباط قبل از آنکه اطلاعات حساس دراختیاراو قرار بگیرد یا در معاملات تجاری شرکت داده شود.
مقوله «غیرقابل انکاربودن پیامها» (Nonrepudiation) با امضاهای دیجیتالی سروکار دارد وبه اطلاعات و مستندات، هویت حقوقی اعطاء می کند: وقتی مشتری شما که قبلاً به صورت الکترونیک یک میلیون عدد از یک کالای کوچک به قیمت 89 سنت سفارش داده وبعداً ادعا می کند قیمت کالا 69 سنت بوده، چگونه می توان خلاف ادعای او را ثابت کرد؟
شاید حتی او ادعا کند هرگز چنین سفارش خریدی نداده است.
نهایتاً چگونه می توان مطمئن شد که پیامی که شما دریافت کرده اید، دقیقاً همان پیامی است که در اصل فرستاده شده ویک دشمن بدخواه در حین انتقال پیام آن را دستکاری وتحریف نکرده است.
تمام موارد فوق الذکر (سری ماندن اطلاعات، احراز هویت، غیرقابل انکاربودن پیامها و نظارت برصحت اطلاعات) در سیستمهای سنتی ومعمولی پیرامونمان نیز وجود دارد.، البته با تفاوتهای قابل توجه ؛ عملیات محرمانه نگاهداشتن ونظارت برصحت اطلاعات با اتکاء به پست سفارشی ولاک ومهر کردن مستندات انجام می شود.
همچنین عموم افراد اغلب قادرند تفاوت بین اصل یک سند وتصویر آن سند را تشخیص بدهند.
به عنوان یک آزمایش تصویر (کپی شده ) یک چک معتبر بانکی را تهیه کرده وسعی در نقدکردن اصل چک در روز دوشنبه بنمائید.
حال تلاش کنید تصویر کپی شده چک را در روز سه شنبه نقد کنید تا تفاوت بین رفتاری که با شما می شود را عیناً مشاهده نمائید !!!
در بانکداری الکترونیک، اصل و کپی چکهای الکترونیکی تفاوتی با هم نداشته وغیرقابل تشخیص است.
لذا چگونگی برخورد بانک با اینگونه چکها جای تأمل دارد.
در دنیای پیرامون ما، افراد از طریق تشخیص چهره یک فرد، صدا یا دست خط، او را احراز هویت می کنند.
درعملیات اداری، تأیید هویت اشخاص از طریق امضای آنها در برگه های حقوقی یا مهرهای برجسته ونظائر آن انجام می شود.
هرگونه تلاش برای جعل یا دستکاری در اسناد، با مقایسه دستخط یا امضاء، قابل کشف است.
این گزینه ها در دنیای الکترونیک قابل اعمال نیستند وبدیهی است که به راهکارهای دیگری نیاز است.
قبل از آن که به ماهیت تک تک راه حلهای تضمین امنیت اطلاعات بپردازیم، بررسی تمهیدات وراهکارهای امنیتی که درهریک از لایه های پشته پروتکلی شبکه (protocol stack) ممکن وقابل اعمال است، خالی از لطف نخواهد بود.
رعایت نکات وتمهیدات امنیتی فقط دریک نقطه خاص متمرکز نیست.
درهرلایه از معماری شبکه، باید نکات وموارد امنیتی مد نظر قرارگرفته وبه دقت رعایت شود: درلایه فیزیکی (physical Layer) برای جلوگیری از ایجاد انشعاب درسیم وپیشگیری از استراق سمع سیگنال (Wire tapping) ، می توان سیمها را در درون یک لوله محافظ جاسازی ولوله را با یک گاز تحت فشار پرکرد.
در این حالت هرگونه تلاش در نقب زدن به این لوله وسوراخ کردن آن منجر به تخلیه گاز، کاهش فشارلوله وبه صدا درآمدن زنگهای هشدار خواهد شد.
در برخی از سیستمهای نظامی از این روش استفاده شده است.
در لایه پیوند داده ها (Data Link) ، بسته های ارسالی برروی خطوط نقطه به نقطه (point to point) قبل از خروج از ماشین مبداء ، رمزنگاری شده وبه محض ورود به ماشین مقصد رمزگشایی می شود.
تمام جزئیات کار در سطح لایه پیوند داده ها پیاده سازی وانجام می شود ولایه های فوقانی به آنچه که دراین لایه انفاق می افتد بی توجه هستند وبه هیچ وجه درگیر جزئیات آن نخواهند شد.
این راه حل در مواقعی که بسته های حامل داده مجبور به گذر از چند مسیریاب باشند کارآیی خود را از دست خواهد داد زیرا اطلاعات در بدو ورود به هرمسیریاب رمزگشایی شده وبه محض خروج از آن مجدداً رمزنگاری می شوند فلذا این خطر وجود دارد که دریکی از مسیریابهای بین راه به اطلاعات حمله شود.
از طرف دیگر با این روش نمی توان از نشستها (Sessions) حفاظت و مراقبت کرد(به عنوان مثال مراقبت ازیک نشست Online برای خرید از طریق کارت اعتباری ممکن نیست) و درهریک ازمسیریابهای واقع برروی مسیر احتمال دستکاری یا استراق سمع اطلاعات وجود خواهد داشت.
علیرغم این کمبودها، روش «رمزنگاری لینک» ، (Link Encryption) را می توان به سادگی به هرشبکه افزود وبیشتر مواقع نیز سودمند است.
در لایه شبکه (Network Layer) می توان برای نظارت مؤثر بر ورود وخروج بسته های مجاز وتشخیص بسته های غیرمجاز(حامل داده های مخرب) ، «دیوار آتش» (Fire wall) نصب کرد.
در ضمن دراین لایه می توان از پروتکل IPsec (IP Security)استفاده کرد.
در لایه انتقال (Transport Layer) کل اتصال (Connection) بین مبداء ومقصد، می تواند رمزنگاری شود.
به عبارت بهتر تمام داده های در حال تبادل، درپروسه مبداء رمز شده ودر پروسه مقصد از رمز خارج خواهد شد ؛ ( به این روش امنیت انتها به انتها یا End-to-End گفته می شود.) برای تضمین حداکثر امنیت، اعمال « امنیت انتها به انتها» الزامی است.
در آخر، مواردی نظیر احراز هویت کاربران وغیرقابل انکاربودن محتوای پیامها (Nonrepudiation) فقط در لایه کاربرد قابل اعمال وپیاده سازی است.
از آنجایی که تضمین امنیت اطلاعات دقیقاً در یک لایه خاص قرارنمی گیرد لذا نمی شد مفاد آن را در ادامه هیچ یک از فصول این کتاب گنجاند؛ به همین دلیل یک فصل اختصاصی ومجزا به آن اختصاص داده ایم.
از آنجایی که تضمین امنیت اطلاعات دقیقاً در یک لایه خاص قرارنمی گیرد لذا نمی شد مفاد آن را در ادامه هیچ یک از فصول این کتاب گنجاند؛ به همین دلیل یک فصل اختصاصی ومجزا به آن اختصاص داده ایم.
این فصل طولانی، فنی وبنیادی است وهمچنین ممکن است در نگاه اول اندکی گسیخته ونامربوط به نظر برسد.
بررسی مستندات به خوبی نشان می دهد که بسیاری از شکستها در حریم امنیتی شبکه هایی مثل بانکها، بیشتر ناشی از عواملی نظیر بی لیاقتی وسهل انگاری کارمندان، تمهیدات وروالهای امنیتی ناکافی، تقلب وکلاهبرداریهای داخلی بوده است تا آنکه از یک نقشه جنایتکارانه دقیق، ایجاد انشعاب در خطوط تلفن، سرقت ورمزگشایی اطلاعات منشأ گرفته باشد.
اگر شخصی که یک کارت عابربانک (ماشین خودپرداز ATM ) را درخیابان پیدا می کند براحتی بتواند به یکی از شعب مربوطه مراجعه نماید وبا اعلام آنکه شماره PIN (شماره رمز شخصی)را فراموش کرده در همان شعبه شماره جدیدی دریافت کند( تحت عنوان ارتباط خوب ودوستانه با مشتریان !) آنگاه استفاده از الگوهای رمزنگاری ومکانیزمهای امنیتی، دیگر هیچ خاصیت وکاربردی درحفظ امنیت اطلاعات نخواهند داشت.
کتاب Ross Anderson در این خصوص حقیقتاً هوشیار کننده وهشداردهنده است؛ مستندات کتاب مذکور نشان می دهد که در صدها نمونه از شکستهای امنیتی ونقض حریم شبکه ها در صنایع وسازمانهای متعدد، تقریباً تمام آنها (دریک عبارت مؤدبانه) ناشی از سهل انگاری درعملکرد وبی دقتی در رعایت نکات امنیتی بوده است.
(,2001) علیرغم این مسئله، خوشبین هستیم که با گسترش روزافزون تجارت الکترونیکی، مؤسسات وشرکتها در روالهای عملیاتی خود تجدید نظرکرده، شکافهای امنیتی سیستمهای خود را برطرف نموده وجنبه های فنی «امنیت» را سرلوحه کارخود قراربدهند.
به غیر از امنیت در سطح لایه فیزیکی (که به صورت مکانیکی واز طریق لوله های محتوی گاز تحت فشار انجام می شود) دربقیه لایه ها تقریباً تمام مکانیزمهای امنیتی مبتنی براصول رمزنگاری است.
به همین دلیل مطالعات خود درخصوص امنیت را با تشریح مبسوط مبانی رمزنگاری آغاز خواهیم کرد.
دربخش 1 نگاهی براصول اولیه آن خواهیم داشت.
در بخش2 تا بخش5 به برخی از الگوریتمهای اساسی وساختمان داده های مورد استفاده در رمزنگاری خواهیم پرداخت.
سپس به صورت مبسوط تشریح خواهیم کرد که چگونه این مفاهیم برای تأمین امنیت درشبکه های کامپیوتری بکارگرفته می شوند.
نهایتاً فصل را با خلاصه ای از نظریات درخصوص «تکنولوژی وجامعه» (Tecknology&Society)جمع بندی خواهیم کرد.
قبل ازشروع، به مواردی که دراین فصل بدانها نخواهیم پرداخت اشاره می کنیم.
سعی کرده ایم دراین فصل به مواردی درخصوص امنیت بپردازیم که مستقیماً درارتباط با معماری شبکه است فلذا مواردی را که به سیستم عامل وبرنامه های کاربردی مربوط می شود، بررسی نکرده ایم.
به عنوان مثال دراین فصل مطلبی در خصوص احراز هویت کاربران به روش بیومتریک، استراتژیهای امنیت کلمه عبور، «حمله از نوع سرریز کردن بافر» و «اسبهای تروا» (Trojan Horses) ، «نقلب در ورود به سیستم» (Login Spoofing) ، بمبهای منطقی، ویروسها، کرمها ونظایر آن وجود ندارد.
رمزنگاری کلمه Cryptography (رمزنگاری) برگرفته از لغات یونانی به معنای «محرمانه نوشتن متون» است.
رمزنگاری پیشینه ای طولانی ودرخشان دارد که به هزاران سال قبل برمی گردد.
دراین بخش برخی نکات برجسته از تاریخ رمزنگاری را به عنوان اطلاعات عمومی، بررسی خواهیم کرد.
برای آشنایی با پیشینه دقیق وکامل رمزنگاری، کتاب kgan (1995) جهت مطالعه توصیه می شود؛ برای تحلیل جامع مفاهیم مدرن وپیشرفته در امنیت وآشنایی با الگوریتمهای رمزنگاری، پروتکلها وبرنامه های کاربردی به کتاب Kaufman (2002)مراجعه کنید.
برای آشنایی با جزئیات ریاضی این روشها کتاب Stinson (2002) را ببینید.
برای بررسی این روشها ، بدون جزئیات ریاضی، به کتاب Burnett&Paine (2001) مراجعه کنید.
متخصصین رمزنگاری بین «رمز» (Cipher) و «کد»(Code) تمایز قائل می شوند.
«رمز» عبارتست از تبدیل کاراکتر به کاراکتر یا بیت به بیت بدون آن که به محتویات زبان شناختی (ادبیات) آن پیام توجه شود.
در طرف مقابل،« کد» تبدیلی است که کلمه ای را با یک کلمه یا علامت (سمبول) دیگر جایگزین می کند.
امروزه از کدها استفاده چندانی نمی شود اگر چه استفاده از آن پیشینه طولانی وپرسابقه ای —.
موفقترین «کد» هایی که تاکنون ابداع شده اند توسط ارتش ایالات متحده ودرخلال جنگ جهانی دوم در اقیانوس آرام بکار گرفته شد.
آنها ازلهجه محلی Navajo درمیان سرخپوستان الهام گرفته وبرای عبارات وکلمات نظامی به سادگی از لغات خاص این زبان محلی استفاده کردند؛ به عنوان مثال عبارت chay-dagahi-nail-tsaidi (در زبان محلی سرخپوستان به معنای کشنده لاک پشت!) رمزی برای سلاح ضدتانک بود.
زبان Navajo لهجه ای بسیار آهنگین وبشدت پیچیده است وهیچ ادبیات نوشتاری والفبای خطی ندارد ویک فرد ژاپنی (آن هم درجنگ جهانی دوم)هیچ چیزی در مورد آن نمی دانست.
درسپتامبر 1945 در مجمع متفقین در سن دیه گو این «کد» با بیان گزارش ذیل توصیف شد:«برای سه سال متوالی، هرگاه ناوگان دریایی در خشکی پهلو می گرفت، آنچه که جاسوسان ژاپنی(ازبی سیم) استراق سمع می کردند یک صدای نامفهوم وشلوغ بود که با دیگر اصوات درهم آمیخته ودرنتیجه صدایی شبیه به لحن راهبان تبت یا صدای یک بطری آبجوش که آب آن درحال خالی شدن باشد، می شنیدند!!» ژاپنی ها هرگز نتوانستند این کد را بشکنند؛ پس از جنگ بسیاری از افرادی که مبادله پیامهای سری جنگ را به زبان رمزی Navajoبرعهده داشتند به خاطر خدمات شایان وشجاعتشان در طول جنگ، مفتخر به دریافت نشانهای عالی نظامی شدند.
ارتش ایالات متحده توانست کدهای رمز ژاپنی ها را بشکند در حالی که ژاپنی ها نتوانستند کد Navajoرا بشکنند و این حقیقت، نقش بسیار مهمی درپیروزیهای آمریکاییان درجنگ اقیانوس آرام (با نیروی دریایی ژاپن) ایفاء کرد.
مقدمه ای بر رمزنگاری ازدیدگاه تاریخ، چهارگروه از مردم درشکل گیری هنررمزنگاری دخیل بوده اند:« نظامیان»،«هیئت های سیاسی»،«خاطره نویسان/واقعه نگاران»و«عشاق!».
از بین اینها نظامیان نقش بسیار مهمتری دارند ودر طول قرنها به تکوین این شاخه از علم پرداخته اند.
سابقاً در مؤسسات نظامی، پیامهایی که باید رمزنگاری می شدند به یک کارمند(منشی) دون پایه و حقوق بگیر تحویل می شد تاآنها را رمزوارسال کند.
حجم عظیم پیامهایی که در طی یک روز باید رمزوارسال می شد مانع از آن بود که بتوان این کارخطیر را برعهده معدود متخصصین خبره حاضر دریک مؤسسه گذاشت.
تازمان ابداع کامپیوترها، درعرصه یک جنگ واقعی وبا تجهیزات اندک، بزرگترین نقطه ضعف استراتژی رمزنگاری آن بود که همه چیز به توانائی وسرعت عمل کارمند رمزنگارپیام، وابسته ومنوط می شد.
محدودیت دیگر آن بود که نمی شد براحتی وسریع یک روش رمزنگاری را به روشی دیگر تغییرداد زیرا این کار مستلزم بازآموزی جمع کثیری ازمنشیان وکارمندان رمزنگار بود.
از طرفی این خطر نیز وجود داشت که یکی از منشیان رمزنگار، دستگیر شده وروش رمزنگاری فاش گردد لذا باید این امکان مهیا می شد که به محض احساس لزوم، روش رمزنگاری تغییرکند.
این مشکلات متناقض، منجر به پیدایش مدل شکل 2 شد.
پیامی که باید رمزنگاری شود،«متن آشکار» (plaintext) نامیده می شود وتوسط یک تابع خاص با پارامتری بنام «کلید»(key) به متن رمز، تبدیل می گردد.
نتیجه فرآیندرمزنگاری که «متن رمز»(Ciphertext) نامیده می شود برروی کانال منتقل خواهد شد.
فرض کنیم که دشمن یا اخلالگر (Intruder) متن رمزشده را به صورت کامل می شنود و آن را دراختیار می گیرد.
به هرحال او برخلاف گیرنده اصلی، براحتی قادر به رمزگشایی پیام وبهره برداری از آن نخواهد بود زیرا کلید رمز را نمی داند.
مدل رمز نگاری (با کلید متقارن) برخی اوقات یک اخلالگر غیرفعال (Passive Intruder) نه تنها قادراست به جریان اطلاعات برروی کانال مخابراتی گوش بدهد بلکه می تواند آنهارا درجایی ثبت کرده وبعداً آن را بارها به جریان بیندازد؛ درمقابل یک اخلالگر فعال(Active Intruder) می تواند پیام موردنظر خود را درداخل یک پیام مجاز ومعتبر جاسازی کند یادرآن دستکاری نماید.
هنرشکستن رمز بدون دراختیار داشتن کلید آن،«علم تحلیل رمز» (Cryptoanalysis) نام دارد؛ به هنر ابداع روشهای رمزنگاری جدید «علم رمزنگاری» (Cryptology) اطلاق می شود.
دراختیار داشتن یک نماد وفرمول ریاضی که ارتباط بین متن آشکار، متن رمز شده وکلید رمز را مشخص کند بسیار مفید خواهد بود.
ما ازنماد C=Ek(p) استفاده خواهیم کرد،بدین معنا که عملیات رمزنگاری برروی متن آشکارp توسط کلید رمزk انجام شده ومتن رمزشدهC بدست آمده ا ست.
به روش مشابه، فرمول P=Dk(C) عمل رمزگشایی متن رمزشده توسط کلید K را (به منظوراستخراج اصل پیام) توصیف می کند.
بنابراین داریم: Dk (Ek(p))=P این نمادبیانگر آن است که D,E توابع ریاضی ومعکوس یکدیگر هستند.
تنها نکته قابل اشاره آنست که این توابع دارای دو پارامترهستند، اگر چه کلید رمزk را که درحقیقت یکی از پارامترهای این توابع است به صورت پانویس برای EیاD نشان داده ایم تا تمایز آن ازپیام مشخص باشد.
یکی ازقواعد اساسی درعلم رمزنگاری آن است که شخص باید فرض رابرآن بگذارد که دیگران ] ازجمله تحلیلگران رمز و رمزشکنها[ الگوریتم بکاررفته درعملیات رمزنگاری را می دانند.
به عبارت دیگرشخص رمزشکن، روش رمزنگاری یعنی تابعE و روش رمزگشایی یعنی تابعD درشکل2 را می داند وآنچه از او پنهان نگاه داشته می شود فقط کلید رمز(K) است.
میزان نیرو وتلاشی که باید برای ابداع، آزمایش ونصب یک الگوریتم رمزنگاری جدید (درصورت فاش شدن روش قبلی) انجام بگیرد بقدری زیاد است که محرمانه نگهداشتن روش رمزنگاری عملاً ممکن نیست .
تصور آنکه الگوریتم رمزنگاری می تواند سری ومخفی بماند (درحالی که ممکن نیست) خطرات وزیانهایی بیشتر از منافع آن دارد.
اینجاست که «کلید رمز» وارد قضیه می شود.
«کلید رمز» یک رشته کاراکتری نسبتاً کوتاه است که پیام براساس آن رمز می شود.
برخلاف آن که روش رمزنگاری ممکن است هرچند سال یکبار تغییرکند، کلید رمزمی تواند برطبق نیاز وبه دفعات عوض می شود.
بنابراین مدل پایه سیستمهای رمزنگاری، مدلی است پایدار (ثابت) که همه از عملکرد والگوریتم آن مطلعند وفقط با یک کلید محرمانه وقابل تغییرکارمی کند.
این نظریه که «تحلیل گررمز» (رمزشکن/Cryptanalist ) از الگوریتم رمزنگاری آگاه است وسری ماندن یک پیام صرفاً به مخفی ماندن کلید رمز وابسته است «اصل کرکهف» نامیده می شود که توسط یکی از رمزنگاران ارتش فلاندرز به نام Auguste Kerckhoff در سال 1883 بیان شده است.
بنابراین داریم: اصل کرکهف: تمام الگوریتمهای رمزنگاری باید آشکار وعمومی باشند وتنها کلیدهای رمز، مخفی ومحرمانه هستند.
شاید نتوان حق این مطلب را که «تکیه برمخفی ماندن الگوریتم رمزنگاری اشتباه است»، بدرستی ادا کرد.
تلاش برای سری نگهداشتن الگوریتم رمزنگاری که درعرف عامه به اصطلاح «امنیت درسایه گمنامی وابهام» (Security by Obscurity) مشهوراست، هرگز محقق نخواهد شد.
با عمومی سازی یک الگوریتم، طراح یک الگوریتم رمزنگاری می تواند از نیروی عظیم متخصصین رمزنگاری که مشتاق به شکستن یک سیستم هستند، مشورت بگیرد وآنها را به مبارزه بطلبد؛ آنها نیز می توانند درخصوص تلاشهایی که برای درهم شکستن یک سیستم رمزنگاری مصروف کرده اند مقاله بنویسند وخبرگی وهوش خود را به رخ بکشند!
هرگاه متخصصین کثیری سعی درشکستن یک الگوریتم کردند وبا گذشت پنج سال پس از انتشار عمومی آن هیچ گزارشی مبنی بر موفقیت آنان مشاهده نشد، آن الگوریتم احتمالاً بقدر کافی سخت ومحکم بوده است!
از آنجایی که سری ماندن پیامها وابسته به کلید است لذا طول کلید یکی از نکات بسیار مهم در طراحی الگوریتمهای رمزنگاری است.
به عنوان مثالی ساده، یک قفل رمزدار ترکیبی ] مثل قفل بعضی ازکیفهای شخصی[ را درنظر بگیرید.
قاعده کلی برای بازشدن این قفل آن است که چندرقم را به ترتیب وارد کنید.
همه این موضوع ]الگوریتم[ را می دانند ولیکن کلید رمز محرمانه است.
کلید رمزدو رقمی تنها صد حالت مختلف دارد.
کلید سه رقمی معادل با هزاروکلید شش رقمی معادل یک میلیون حالت مختلف است.
هرچه طول یک کلید بزرگتر باشد،حجم عملیات سعی وخطایی که رمزشکن برای دسترسی به کلید رمز باید انجام بدهد زیادتر خواهدبود.١ حجم عملیات (Work Factor) برای شکستن یک سیستم رمز از طریق آزمون تمام فضای حالات کلید، برحسب طول کلید به صورت نمائی رشد خواهد کرد.
سری ماندن وامنیت پیامها با داشتن یک الگوریتم بسیار قدرتمند (ولی آشکاروهمگانی) به همراه یک کلید طولانی تضمین می شود.
برای آنکه نگذارید برادر کوچک شما نامه های الکترونیکی شمارا بخواند یک کلید 64بیتی (هشت کاراکتری) کفایت می کند.
برای انجام عملیات معمول اقتصادی باید از کلیدی با حداقل 128 بیت استفاده شود.
برای حراست از پیامهای سری دولتی به کلیدهایی با طول حداقل 256 بیت یا حتی بیشتر نیاز است.
از دیدگاه یک تحلیل گر رمز (رمزشکن)، مسئله کشف رمز سه شِق اساسی را دربرمی گیرد(1) هرگاه او فقط توده ای از متن رمز شده (بدون هیچ متن آشکار وبدون کلید) دراختیار داشته باشد بامسئله ای به نام «صرفاً متن رمز شده»٢ مواجه است.
(2) وقتی رمزشکن بخشی ازمتن آشکار را به همراه معادل رمز شده آن، دراختیار دارد.
اصطلاحاً با مسئله «متن آشکار وشناخته شده»٣ مواجه است .
(3) نهایتاً هرگاه رمزشکن قادرباشد هرقسمت دلخواه از یک متن آشکار را رمز کند اصطلاحاً با مسئله«متن آشکار وانتخابی»٤ مواجه است.
هرگاه به یک رمزشکن اجازه داده شود تا بپرسد مثلاً حاصل رمزنگاری رشته ABCDEFGHIJKL چیست به سادگی قادرخواهد بود تارمزهای معمولی را بشکند وکلید رمز را بدست بیاورد.
نوآموزان حرفه رمزنگاری به اشتباه می اندیشند که هرگاه یک متن رمز شده بتواند درمقابل حمله نوع«صرفاً متن رمزشده» استقامت کند وفاش نشود، آن سیستم رمز مطمئن است.١ این فرض کاملاً خام وناشیانه است زیرا دربسیاری ازحالات، رمزشکن قادر است حدسهای درست وموثقی را درمورد برخی از قسمتهای یک متن رمز شده آزمایش کند.٢ به عنوان مثال اولین جمله ای که درحین برقراری ارتباط شخص از راه دور[مثلاً با یک سرویس دهنده [ TelNet ] ، ارسال می شود معمولاً کلمه: login (به صورت رمزشده) است.
حال رمزشکن پاره ای متن رمزشده به همراه معادل رمزنشده آن را در اختیاردارد ؛ کار اونسبتاً ساده وسرراست است.
برای رسیدن به امنیت کامل، طراح الگوریتم رمزنگاری باید محافظه کاربوده ومطمئن شود که سیستم رمز او بگونه ای است که حتی درصورتی که حریف رمزشکن، معادل رمزشده یک متن آشکار را دراختیار داشته باشد بازهم قادر به شکستن رمز وبدست آوردن کلید رمز نیست.
٣ روشهای رمزنگاری بطور کلی به دو رده تقسیم می شوند: (1) رمزهای جانشینی (Substitution) (2) رمزهای جایگشتی (Transposition) .
دراینجا به عنوان مقدمه ای برروشهای مدرن رمزنگاری، مختصراً به این دو روش خواهیم پرداخت.
رمزهای جانشینی (Substitution) دررمزنگاری جانشینی هرحرف یا گروهی از حروف با یک حرف یا گروهی دیگر از حروف جابجا می شوند تا شکل پیام بهم بریزد.
یکی از قدیمی ترین رمزهای شناخته شده روش رمزنگاری سزار است که ابداع آن به ژولیوس سزار نسبت داده می شود.
دراین رو.ش حرف a به D تبدیل می شود، bبه E ، c به F وبه همین ترتیب تا z که با C جایگزین می گردد.
به عنوان مثال دراین روش، کلمه attack به DWWDFN تبدیل می شود.
درمثالها متن پیام متشکل از حروف کوچک فرض شده ومتن رمزشده صرفاً شامل حروف بزرگ انگلیسی است.
یک حالت عمومی وساده از رمزنگاری سزار آن است هرحرف الفبا از متن اصلی با حرفی که درجدول الفبا k حرف بعدتر قرارگرفته جابجا شود.( روش shift by k ) دراین روش کلید رمز عدد k خواهد بود وبراساس آن حروف یک متن به صورت چرخشی (Circular) با حرف k ام بعد ازخودش جایگزین می شود.
روش رمزنگاری سزار شاید در آن زمانها کسی را فریفته باشد ولی امروزه نمی تواند هیچکس را گول بزند.
بهبود بعدی این روش آن است که هرحرف درمتن اصلی با یک حرف جانشین شود، یعنی 26 حرف جدول الفبا به حروف دیگری درهمان جدول نگاشته شود.
به عنوان مثال از نگاشت زیرمی توان برای رمزنگاری جانشینی استفاده کرد: متن آشکار abcdefghijklmnopqrstuvwxyz متن رمزشده QWERTYUIOPASDFGHJKLZXCVBNM هرسیستم رمزنگاری که درآن یک سمبول با سمبول دیگر جایگزین می شود اصطلاحاً «سیستم جانشینی تک حرفی» (Monoalphabetic Substitotion) گفته می شود که درآن کلید رمز یک رشته 26 کاراکتری است ونگاشت جدول الفبا را مشخص می نماید.
براساس کلید رمز مثال بالا، کلمه attack به QZZQEA تبدیل خواهد شد.
درنگاه اول این سیستم رمزنگار مطمئن به نظر می رسد زیرا اگر چه رمزشکن روش عمومی جانشینی حروف را می داند ولی نمی داند از بین !26 حالت مختلف (معادل با 1026*4 حالت) کدامیک کلید رمز است.
برخلاف رمز سزار، آزمایش تمام حالات مختلف کلید غیرممکن است زیرا اگر هریک از حالات کلمه رمز دریک نانوثانیه آزمایش شود، بررسی تمام حالات کلید توسط چنین کامپیوتری 1010 سال طول خواهد کشید.
در روش فوق علیرغم آنکه آزمایش تمام حالات یک کلید ممکن نیست ولی حتی برای یک قطعه متن رمز شده کوچک، رمزمتن به سادگی شکسته خواهد شد.
در حمله اصولی به این سیستم رمز از ویژگیهای آماری زبانهای طبیعی بهره گرفته شده است.
به عنوان مثال در زبان انگلیسی حرف e بیشترین تکرار را درمتون معمولی دارد ؛ به دنبال آن حرف t ، سپس I,n,a,o در رتبه های بعدی قرار می گیرند.
ترکیبات دو حرفی که اصطلاحاً digram نامیده می شوند به ترتیب بیشترین تکرار عبارتند از : (1) th (2)in (3) er (4)re (5)an و به همین ترتیب.
ترکیبات سه حرفی حروف انگلیسی (Trigram) به ترتیب بیشترین تکرار عبارتند از: (1) the (2)ing (3)and (4)jon تحلیل گر رمز(رمزشکن) برای شکستن سیستم رمزنگاری «جانشینی تک حرفی» (Monoalphabetic) با شمارش حروف متن رمزشده ومحاسبه تکرار نسبی هرحرف شروع می کند؛ سپس حرفی را که دارای بیشترین تکرار است با e وحرف پرتکرار بعدی را با t جایگزین می کند.
حال او می تواند با درنظر داشتن سه حرفیthe به دنبال سه حرفی های tXe درمتن رمز شده بگردد؛ به احتمال قوی X معادل باh است.
سپس به روش مشابه به سراغ چهارحرفی های thYt می گردد.
به احتمال زیاد Y معادل با a است.
با اطلاعاتی که بدست آمده است او به دنبال سه حرفی های مکرر با الگوی Azw می گردد که احتمالاً معادل باand خواهد بود.
با حدس زدن بقیه یک حرفیها،دو حرفیها وسه حرفیهای تکراری وبا شناخت از حروف صدادار وبی صدا وچگونگی ترکیب آنها در کلمه، رمزشکن می تواند متن اصلی را به روش سعی وخطا (حرف به حرف) بدست آورد.
یک روش دیگر برای شکستن رمز متون آن است که یک کلمه یا یک عبارت کامل حدس زده شود.
به عنوان مثال به متن رمز شده زیر که متعلق به یک شرکت حسابرسی است (وبه صورت دسته های پنج کاراکتری نشان داده شده است) دقت کنید: CTBMN BYCTC BTJDS QXBNS GSTJC BTSWX CTQTZ CQVUJ QJSGS TJQZZ MNQJS NLNSX VSZJU JDSTS JQUUS JUBXJ DSKSU JSNTK BGAQJ ZBGYQ TLCTZ BNYBN QJSW احتمال وجود کلمه”financial” درپیامهای یک شرکت حسابرسی زیاد است.
با استفاده از این ویژگی که کلمهfinancial دارای دو حرف “i” با فاصله چهارحرف از یکدیگر است، درمتن رمزشده به جستجوی حروف مشابه با فاصله چهار حرف از یکدیگر می پردازیم.
با جستجو درمتن فوق به 12 مورد تطابق در موقعیتهای : 76,71,70,66,56,48,42,31,27,15,6 و82 برمی خوریم .
ولیکن از بین این دوازده مورد فقط موارد31 و 42 هستند که درآنها حرف بعدی(متناظر باn از کلمه financial ) با فاصله یک حرف تکرار شده ومطابقت دارد.
از بین این دو مورد نیز فقط مورد 31 است که با تکرار حرفa با فاصله سه حرف مطابقت دارد ؛ لذا می توان متوجه شد که دراین متن کلمه financial در موقعیت 30 ازمتن رمز شده قرارگرفته است.
پیدا شدن این کلمه، نقطه شروع خوبی برای پیدا کردن کلید رمز با کمک ویژگیهای آماری حروف درزبان انگلیسی خواهد بود.
رمزنگاری جایگشتی (Transposition) رمزنگاری جانشینی ترتیب سمبولهای یک متن را حفظ می کند ولی (صرفاً)شکل سمبولها را تغییر می دهد.
برعکس، «رمزنگاری جایگشتی» ترتیب حروف متن را بهم می ریزد ولیکن شکل آنها را تغییر نخواهد داد.
درشکل3 یک روش عمومی از رمزنگاری جایگشتی که درآن ترتیب سمبولها بصورت ستونی بهم ریخته می شود نشان داده شده است.
کلید رمز یک کلمه یا عبارت [انگلیسی] است که هیچ حرف تکراری ندارد.
دراین مثال کلید رمز کلمه MEGABUCK انتخاب شده است.
کاربرد کلید رمز آنست که ستونها شماره گذاری شود.
شماره هرستون براساس ترتیب الفبایی هرحرف کلید نسبت به جدول الفبای انگلیسی تعیین می شود.
به عنوان مثال ستون چهارم شماره 1 است( حرف A )، ستون پنجم شماره2(حرفB)، ستون هفتم(حرفC) وستون دوم شماره 4(حرفE) وبه همین ترتیب، متن اصلی به صورت افقی (سطری) در ذیل کلید رمز نوشته می شود.
سپس درصورت لزوم تعدادی حرف به آخرین سطر اضافه می شودتا ماتریس مربوطه پر می شود.
متن رمز شده براساس شماره ستونها به صورت عمودی خوانده شده وبه هم متصل می شود.
ترتیب خواندن ستونها، از ستون با کمترین شماره به بزرگترین شماره است.
M E G A B U C K 7 4 5 1 2 8 3 6 p l e a s e t r a n s f e r o n e m i l l I o n d o l l a r s t o m y s w I s s b a n k a c c o u n t s I x t w o t w o a b c d رمز نگاری جایگشتی برای شکستن رمز فوق، تحلیل گر رمز ابتدا باید مطمئن شود که آیا واقعاً با یک متن رمز شده به روش جایگشت روبرو است یا خیر؟
با بررسی تکرار حروف N,I,O,A,T,E ونظائر آن بسادگی می توان مطمئن شد که متن الگویی شبیه به یک متن معمولی رمز نشده دارد.
دراین صورت روشن است که متن رمز شده از نوع جایگشتی است زیرا دراین روش شکل هرحرف تغییر نمی کند بلکه فقط جای آن درمتن عوض می شود واین کار درآمار حروف ومیزان تکرار آنها تأثیری ندارد.
گام بعدی آن است که تعداد ستونها حدس زده شود.
دربیشتر مواقع می توان برخی از کلمات یا عبارات یک متن را حدس زد.
به عنوان مثال فرض کنید رمزشکن مابه وجود عبارت milliondollars درجایی از متن اصلی مشکوک است.
دقت کنید که دو حرفی های OS,IR,LA,LL,IL,MO درمتن رمز، دیده می شود که ناشی از شکسته وچیده شدن عبارت فوق به صورت ستونی است.
حرف O درمتن رمزشده پشت M ظاهر شده است.(یعنی دراثر چیده شدن عبارت فوق درسطرها، این دو حرف درستون چهارم کنار هم قرارگرفته اند.) «حروفی که درمتن رمز شده کنار هم قرارمی گیرند در متن اصلی به اندازه «طول کلید» از هم فاصله دارند»، اگر طول کلید به جای 8، هفت درنظر گرفته می شد، پس از رمز شدن عبارت milliondollars ، دوحرفی های OR,IA,LL,LL,IO,MD وns بوجود می آمدند.
در حقیقت بسته به طول کلید مجموعه متفاوتی از دوحرفی ها درمتن رمز شده ظاهر می شود.
تحلیل گر رمز می تواند با آزمایش طولهای مختلف کلید، به سادگی طول کلید را بدست بیاورد.
گام آخر، بدست آوردن ترتیب ستونها است.
وقتی تعداد ستونها (k )کم باشد به سادگی می توان تمام kx(k-1) حالت مختلف زوج ستونها را آزمود تا ببینیم آیا میزان تکرار دو حرفیها وسه حرفیهای این دوستون با شرایط آماری یک متن معمولی مطابقت دارد یا خیر؟
حالتی ازترکیب ستونها که براساس آن ترکیب، نتیجه رمزگشایی بیشترین تطبیق را بامتون معمولی داشته باشد به عنوان زوج ستون متوالی درنظرگرفته می شود.
حال یکایک ستونها به عنوان ستونهای بعدی این زوج رمزگشایی شده، آزمایش وتحلیلهای آماری برروی آنها انجام می شودو بهترین ستون به عنوان ستون بعدی آن درنظرگرفته می شود واین کار ادامه می یابد.
ستون قبلی یک ستون نیز به همین روش (تحلیل دو حرفی وسه حرفیها) امکان پذیر است.
این فرآیند آنقدر تکرار می شود تا ترکیب درست ومورد تأیید به دست بیاید.
عمل رمزشکنی در نقطه ای با اقبال وموفقیت روبرو خواهد شد که یک کلمه یا یک عبارت ظاهر گردد.(به عنوان مثال هرگاه درآزمون یک ترکیب خاص از ستونها ، کلمه million ظاهرشود می توان ترتیب واقعی ستونها واشتباهاتی که قبلاً درحدسها وجود داشته را روشن کرد.)