سرپرست تیم ترجمه: مهندس محمد علایی
ایمیل: Translate@Tnt3.ir
تلفن همراه: 09192164907
رمزنگاری[۱] دانشی است که به بررسی و شناختِ اصول و روشهای انتقال یا ذخیرهٔ اطلاعات به صورت امن (حتی اگر مسیر انتقال اطلاعات و کانالهای ارتباطی یا محل ذخیره اطلاعات ناامن باشند) میپردازد.
رمزنگاری استفاده از تکنیکهای ریاضی، برای برقراری امنیت اطلاعات است. دراصل رمزنگاری دانش تغییر دادن متن پیام یا اطلاعات به کمک کلید رمز و با استفاده از یک الگوریتم رمز است، به صورتی که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمز شده باشد و شخصی که از یکی یا هر دوی آنها اطلاع ندارد، نتواند به اطلاعات دسترسی پیدا کند. دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تئوری اطلاعات، نظریه اعداد و آمار بنا شدهاست و امروزه به طور خاص در علم مخابرات مورد بررسی و استفاده قرار میگیرد. معادل رمزنگاری در زبان انگلیسی کلمه Cryptography است، که برگرفته از لغات یونانی kryptos به مفهوم «محرمانه» و graphien به معنای «نوشتن» است.
استاد حیدری می گوید: در رمزنگاری، وجود اطلاعات یا ارسال شدن پیام به هیچ وجه مخفی نمیباشد، بلکه ذخیره اطلاعات یا ارسال پیام مشخص است، اما تنها افراد مورد نظر میتوانند اطلاعات اصلی را بازیابی کنند. بالعکس در پنهاننگاری، اصل وجود اطلاعات یا ارسال پیام محرمانه، مخفی نگاه داشته میشود و غیر از طرف ارسالکننده و طرف دریافتکننده کسی از ارسال پیام آگاه نمیشود.
در رمزنگاری محتویات یک متن به صورت حرف به حرف و در بعضی موارد بیت به بیت تغییر داده میشود و هدف تغییر محتوای متن است نه تغییر ساختار زبانشناختی آن. در مقابل کدگذاری تبدیلی است که کلمهای را با یک کلمه یا نماد دیگر جایگزین میکند و ساختار زبانشناختی متن را تغییر میدهد.
ریشهٔ واژهٔ Cryptography برگرفته از یونانی به معنای «محرمانه نوشتن متون» است. رمزنگاری پیشینهٔ طولانی ودرخشان دارد که به هزاران سال قبل برمی گردد. متخصصین رمزنگاری بین رمز وکد تمایز قائل میشوند. رمز عبارتست از تبدیل کاراکتر به کاراکتر یا بیت به بیت بدون آن که به محتویات زبان شناختی آن پیام توجه شود. در طرف مقابل، کد تبدیلی است که کلمهای را با یک کلمه یا علامت دیگر جایگزین میکند. امروزه از کدها استفادهٔ چندانی نمیشود اگر چه استفاده از آن پیشینهٔ طولانی و پرسابقهای دارد. موفقترین کدهایی که تاکنون نوشته شده ابداع شدهاند توسط ارتش ایالات متحده و در خلال جنگ جهانی دوم در اقیانوس آرام بکار گرفته شد.
آگوست کرشهف شهرت خود را از پژوهشهای زبانشناسی و کتابهایی که در این خصوص و زبان ولاپوک نوشته بود بدست آورد. او در سال ۱۸۸۳ دو مقاله با عنوان «رمز نگاری نظامی» منتشر کرد. در این دو مقاله شش اصل اساسی وجود داشت که اصل دوم آن به عنوان یکی از قوانین رمز نگاری هنوز هم مورد استفاده دانشمندان در رمز نگاری پیشرفتهاست:
در توضیح قانون دوم کرشهف باید عنوان کرد که به چند دلیل عمده کلید رمز باید تنها اطلاعات محرمانه در یک سیستم رمزنگاری باشد: ۱- محرمانه نگه داشتن یک رشته بیت ۵۱۲ تایی (به طور معمول) بسیار ساده تر و عملی تر از محرمانه نگه داشتن یک الگوریتم یا روش پیاده سازی است. ۲- اگر کلید رمز افشا شود تنها با اتخاذ یک کلید جدید می توان مجددا به یک سیستم رمزنگاری جدید و امن دست پیدا کرد در صورتیکه اگر امنیت سیستم رمزنگاری وابسته به الگوریتم و روش پیاده سازی باشد با افشای این اطلاعات بازتولید یک سیستم رمزنگاری جدید و امن بسیار دشوار خواهد بود. ۳- وقتی که کلید رمز تنها اطلاعات محرمانه یک سیستم رمزنگاری باشد می توان از یک سیستم مشترک (با کلیدهای متفاوت) برای ارتباط با گیرنده/فرستنده های مختلف استفاده کرد در صورتی که اگر غیر از این می بود برای ارتباط با هر فرستنده/گیرنده به یک الگورتیم و روش پیاده سازی جدید نیاز می بود. ۴- وقتی که الگوریتم و روش پیاده سازی برای همگان قابل دسترسی باشد مشکلات و حفره های امنیتی الگورتیم پیش از آنکه توسط یک حمله گر مورد سوء استفاده قرار بگیرد توسط محققان امنیتی مورد بررسی قرار گرفته و رفع می شود و بنابراین سیستم های رمزنگاری ای که بر اساس الگوریتم های روشن و قابل دسترسی عمل می کنند معمولا قابل اعتمادتر هستند.[۲]
با پدید آمدن رایانهها و افزایش قدرت محاسباتی آنها، دانش رمزنگاری وارد حوزهٔ علوم رایانه گردید و این پدیده، موجب بروز سه تغییر مهم در مسائل رمزنگاری شد:
عناصر مهمی که در رمزنگاری مورد استفاده قرار میگیرند به شرح زیر میباشد:
رمزنگاری دانش گستردهای است که کاربردهای متنوعی دارد. در این حوزهٔ وسیع، تعاریف زیر از اهمیت ویژهای برخوردار هستند:
به طور کلی، سرویس رمزنگاری، به قابلیت و امکانی اطلاق میشود که بر اساس فنون رمزنگاری حاصل میگردد. قبل از ورود رایانهها به حوزهٔ رمزنگاری، تقریباً کاربرد رمزنگاری محدود به رمز کردن پیام و پنهان کردن مفاد آن میشدهاست. اما در رمزنگاری پیشرفته سرویسهای مختلفی از جمله موارد زیر ارائه گردیدهاست:
چهار مورد بالا، سرویسهای اصلی رمزنگاری تلقی میشوند و دیگر اهداف و سرویسهای رمزنگاری، با ترکیب چهار مورد بالا قابل حصول میباشند.
این سرویسها مفاهیم جامعی هستند و میتوانند برای کاربردهای مختلف پیادهسازی و استفاده شوند. به عنوان مثال سرویس اصالت محتوا هم در معاملات تجاری اهمیت دارد و هم در مسائل نظامی و سیاسی مورد استفاده قرار میگیرد. برای ارائه کردن هر یک از سرویسهای رمزنگاری، بسته به نوع کاربرد، از پروتکلهای مختلف رمزنگاری استفاده میشود.
به طور کلی، یک پروتکل رمزنگاری، مجموعهای از قواعد و روابط ریاضی است که چگونگی ترکیب کردن الگوریتمهای رمزنگاری و استفاده از آنها به منظور ارائهٔ یک سرویس رمزنگاری خاص در یک کاربرد خاص را فراهم میسازد.
معمولاً یک پروتکل رمزنگاری مشخص میکند که
به عنوان مثال میتوان به پروتکل تبادل کلید دیفی-هلمن∗ برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره نمود.
الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته میشود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکلهای رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.
در گذشته سازمانها و شرکتهایی که نیاز به رمزگذاری یا سرویسهای دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصربهفردی را طراحی مینمودند. به مرور زمان مشخص گردید که گاهی ضعفهای امنیتی بزرگی در این الگوریتمها وجود دارد که موجب سهولت شکسته شدن رمز میشود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شدهاست و در روشهای جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شدهاست و آنچه پنهان است فقط کلید رمز است.
بنا بر این تمام امنیت حاصل شده از الگوریتمها و پروتکلهای رمزنگاری استاندارد، متکی به امنیت و پنهان ماندن کلید رمز است و جزئیات کامل این الگوریتمها و پروتکلها برای عموم منتشر میگردد.
بر مبنای تعریف فوق، توابع و الگوریتمهای مورد استفاده در رمزنگاری به دستههای کلی زیر تقسیم میشوند:
الگوریتمهای رمزنگاری بسیار متعدد هستند، اما تنها تعداد اندکی از آنها به صورت استاندارد درآمدهاند.
رمزنگاری کلید متقارن∗ یا تک کلیدی، به آن دسته از الگوریتمها، پروتکلها و سیستمهای رمزنگاری گفته میشود که در آن هر دو طرف رد و بدل اطلاعات از یک کلید رمز یکسان برای عملیات رمزگذاری و رمزگشایی استفاده میکنند. در این قبیل سیستمها، یا کلیدهای رمزگذاری و رمزگشایی یکسان هستند و یا با رابطهای بسیار ساده از یکدیگر قابل استخراج میباشند و رمزگذاری و رمزگشایی اطلاعات نیز دو فرایند معکوس یکدیگر میباشند.
واضح است که در این نوع از رمزنگاری، باید یک کلید رمز مشترک بین دو طرف تعریف گردد. چون کلید رمز باید کاملاً محرمانه باقی بماند، برای ایجاد و رد و بدل کلید رمز مشترک باید از کانال امن استفاده نمود یا از روشهای رمزنگاری نامتقارن استفاده کرد. نیاز به وجود یک کلید رمز به ازای هر دو نفرِ درگیر در رمزنگاری متقارن، موجب بروز مشکلاتی در مدیریت کلیدهای رمز میگردد.
رمزنگاری کلید نامتقارن∗، در ابتدا با هدف حل مشکل انتقال کلید در روش متقارن و در قالب پروتکل تبادل کلید دیفی-هلمن پیشنهاد شد. در این نوع از رمزنگاری، به جای یک کلید مشترک، از یک زوج کلید به نامهای کلید عمومی و کلید خصوصی استفاده میشود. کلید خصوصی تنها در اختیار دارندهٔ آن قرار دارد و امنیت رمزنگاری به محرمانه بودن کلید خصوصی بستگی دارد. کلید عمومی در اختیار کلیهٔ کسانی که با دارندهٔ آن در ارتباط هستند قرار داده میشود.
به مرور زمان، به غیر از حل مشکل انتقال کلید در روش متقارن، کاربردهای متعددی برای این نوع از رمزنگاری مطرح گردیدهاست. در سیستمهای رمزنگاری نامتقارن، بسته به کاربرد و پروتکل مورد نظر، گاهی از کلید عمومی برای رمزگذاری و از کلید خصوصی برای رمزگشایی استفاده میشود و گاهی نیز، بر عکس، کلید خصوصی برای رمزگذاری و کلید عمومی برای رمزگشایی به کار میرود.
دو کلید عمومی و خصوصی با یکدیگر متفاوت هستند و با استفاده از روابط خاص ریاضی محاسبه میگردند. رابطهٔ ریاضی بین این دو کلید به گونهای است که کشف کلید خصوصی با در اختیار داشتن کلید عمومی، عملاً ناممکن است.
اصولاً رمزنگاری کلید متقارن و کلید نامتقارن دارای دو ماهیت متفاوت هستند و کاربردهای متفاوتی نیز دارند. بنا بر این مقایسهٔ این دو نوع رمزنگاری بدون توجه به کاربرد و سیستم مورد نظر کار دقیقی نخواهد بود. اما اگر معیار مقایسه، به طور خاص، حجم و زمان محاسبات مورد نیاز باشد، باید گفت که با در نظر گرفتن مقیاس امنیتی معادل، الگوریتمهای رمزنگاری متقارن خیلی سریعتر از الگوریتمهای رمزنگاری نامتقارن میباشند.
تجزیه و تحلیل رمز∗ یا شکستن رمز، به کلیهٔ اقدامات مبتنی بر اصول ریاضی و علمی اطلاق میگردد که هدف آن از بین بردن امنیت رمزنگاری و در نهایت بازکردن رمز و دستیابی به اطلاعات اصلی باشد. در تجزیه و تحلیل رمز، سعی میشود تا با بررسی جزئیات مربوط به الگوریتم رمز و یا پروتکل رمزنگاری مورد استفاده و به کار گرفتن هرگونه اطلاعات جانبی موجود، ضعفهای امنیتی احتمالی موجود در سیستم رمزنگاری یافته شود و از این طریق به نحوی کلید رمز به دست آمده و یا محتوای اطلاعات رمز شده استخراج گردد.
تجزیه و تحلیل رمز، گاهی به منظور شکستن امنیت یک سیستم رمزنگاری و به عنوان خرابکاری و یک فعالیت ضد امنیتی انجام میشود و گاهی هم به منظور ارزیابی یک پروتکل یا الگوریتم رمزنگاری و برای کشف ضعفها و آسیبپذیریهای احتمالی آن صورت میپذیرد. به همین دلیل، تجزیه و تحلیل رمز، ذاتاً یک فعالیت خصومتآمیز به حساب نمیآید؛ اما معمولاً قسمت ارزیابی و کشف آسیبپذیری را به عنوان جزئی از عملیات لازم و ضروری در هنگام طراحی الگوریتمها و پروتکلهای جدید به حساب میآورند و در نتیجه تجزیه و تحلیل رمز بیشتر فعالیتهای خرابکارانه و ضد امنیتی را به ذهن متبادر میسازد. با توجه به همین مطلب از اصطلاح حملات تحلیل رمز∗ برای اشاره به چنین فعالیتهایی استفاده میشود.
تحلیل رمز، در اصل اشاره به بررسی ریاضی الگوریتم (یا پروتکل) و کشف ضعفهای احتمالی آن دارد؛ اما در خیلی از موارد فعالیت خرابکارانه، به جای اصول و مبنای ریاضی، به بررسی یک پیادهسازی خاص آن الگوریتم (یا پروتکل) در یک کاربرد خاص میپردازد و با استفاده از امکانات مختلف سعی در شکستن رمز و یافتن کلید رمز مینماید. به این دسته از اقدامات خرابکارانه، حملات جانبی∗ گفته میشود.
در رمز نگاری جانشینی هر حرف یا گروهی از حروف بایک حرف یا گروهی دیگراز حروف جابجا میشوند تا شکل پیام بهم بریزد. یکی از قدیمیترین رمزهای شناخته شده روش رمز نگاری سزار است که ابداع آن به ژولیوس سزار نسبت داده میشود. در این روش حرف a به d تبدیل میشود bبه c، e به fوبه همین ترتیب تاz که با حروفc جایگزین میشوند.
اولین اصل آن است که تمام پیامهای رمز شده بایدشامل مقداری «افزونگی»[دادههای زائد]باشندبه عبارت دیگر لزومی ندارد که اطلاعات واقعی به همان گونه که هستند رمز و ارسال شوند. یک مثال میتواند به فهم دلیل این نیاز کمک کند. فرض کنید یک شرکت به نام TCP با۶۰۰۰۰کالااز طریق سیستم پست الکترونیکی سفارش خرید میپذیرد. برنامه نویسان شرکت TCP به خیال آن که برنامههای موثر و کار آمدی مینویسند پیامهای سفارش کالا را مشتمل بر ۱۶بایت نام مشتری و به دنبال آن سه بایت فیلد داده (شامل یک بایت برای تعدادکالا ودو بایت برای شمارهٔ کالا) در نظر میگیرد که سه بایت آخر توسط یک کلید بسیار طولانی رمزنگاری میشود واین کلید را فقط مشتری و شرکت TCP میداند.
دومین اصل اساسی در رمزنگاری آن است که باید محاسباتی صورت بگیرد تا مطمئن شویم هرپیام دریافتی تازه و جدید است یا به عبارتی اخیراً فرستاده شدهاست این بررسی برای جلوگیری از ارسال مجدد پیامهای قدیمی توسط یک اخلالگر فعّال الزامی است اگر چنین بررسیهایی انجام نشود کارمند اخراجی ما قادر است با ایجاد یک انشعاب مخفی از خط تلفن پیامهای معتبری را که قبلاً ارسال شده مکرراً ارسال نماید، حتی اگر نداند محتوای ان چیست.
یک چنین محاسبهای را میتوان با قرار دادن یک مهر زمان در پیامها پیش بینی کرد به نحوی که پیامها مثلاً برای ده ثانیه معتبر باشد گیرندهٔ پیام میتواند آن را برای حدود ده ثانیه نگه دارد تا بتواند پیامهای جدید را با آن مقایسه کرده و نسخههای تکراری را که دارای مهر زمان هستند به عنوان پیامهای قدیمی شناخته و حذف خواهند شد.
الگوریتمهای رمزنگاری رامی توان هم به صورت سختافزاری (به منظورسرعت بالاتر) وهم به صورت نرمافزاری (برای انعطافپذیری بیشتر) پیادهسازی کرد روشهای جانشینی وجایگشتی میتوانند با یک مدار سادهٔ الکترونیکی پیادهسازی شوند. p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد دارد. بود با سیم بندی و برنامهریزی درونی این p-box قادراست هر گونه جایگشت بیتی راعملاً با سرعتی نزدیک به سرعت نور انجام بدهد چرا که هیچ گونه محاسبهای لازم نیست وفقط تأخیر انتشار سیگنال وجود دارد. این طراحی از اصل کرکهف تبعیت میکند یعنی:حمله کننده از روش عمومی جایگشت بیتها مطلّع است آن چه که او از آن خبر ندارد آن است که کدام بیت به کدام بیت نگاشته میشود کلید رمز همین است.
در لیست زیر با توجه به ارتباط مستقیم علم رمزنگاری یا همان Cryptography به برخی از اصطلاحات که در بحث امنیت شبکه و کامپیوتر وجود دارند اشاره شدهاست.
در علم cryptography به پنهان سازی اطلاعات گفته میشود.
معکوس encryption است و در crypto به آشکار سازی اطلاعات پنهان شده گفته میشود.
متن اولیه که رمز نشده است را plain text گویند
به روشی برای تبدیل plain text به متنی که معنای آن پنهان باشد cipher گفته میشود.
به هنر شکستن متون cipher شده گفته میشود.
در لغت به معنای مزاحم است ولی در اینجا به معنای کسی است که یک کپی از cipher text دارد و تمایل به شکستن رمز دارد. منظور از شکستن رمز یعنی decrypt کردن آن متن که خود دو نوع است activeintruder که میتواند اطلاعات را روی خط عوض کند و تغییر دهد و passive intruder که فقط میتواند اطلاعات روی خط را داشته باشد و قابلیت تغییر آنها را ندارد.
به روش و یا قرار دادی که بین دو یا چند نفر برای تبادل اطلاعات گذاشته میشود گفته میشود.
نقاطی که یک نفوذگر بتواند به اطلاعات با ارزش دست پیدا کند.
به سیستمهایی گویند که در اتاق یا در شبکه داخلی مستقرند و هیچ امنیتی (LocalSecurity) روی آنها تنظیم نشده باشد و احتمال حمله به آنها وجود دارد.
تجهیزاتی که ما را به شبکه خارجی مانند اینترنت متصل میکنند یا Applicationهایی که از طریق اینترنت کار میکنند و احتمال حمله به آنها وجود دارد.
هر چیزی که مکانیزم امنیت سیستم شما را دور زده و باعث تخریب گردد را حمله یا Attack گویند. از انواع حمله میتوان به موارد زیر اشاره کرد:
به اطلاعاتی گفته میشود که با استفاده از آن بتوان cipher text (متنی که cipher شده) را به plain text تبدیل کرد.(یا برعکس) به عبارت ساده یک متن رمز شده توسط یک Key با الگوریتم مناسب، به متن ساده تبدیل میشود.