
رمزنگاری کامپیوتری چیست؟
مروزه در دنیای دیجیتال حفاظت از اطلاعات رکن اساسی و مهمی در تبادلات پیامها ومبادلات تجاری ایفا مینماید. برای تأمین نیازهای امنیتی تراکنش امن، از رمز نگاری استفاده میشود. با توجه به اهمیت این موضوع و گذار از مرحله سنتی به مرحله دیجیتال آشنایی با روشهای رمز گذاری ضروری به نظر میرسد.
در رمزنگاری هدف ساختن طرحها یا پروتکلهایی است که بتوان با کمک آنها حتی در حضور دشمن نیز کارهای خاصی را انجام داد. یک هدف اساسی در رمزنگاری این است که به افراد این امکان را بدهند که روی یک کانال ناامن با حفظ حریم خصوصی و اصالت دادههایشان به صورت کاملاً امن با هم ارتباط برقرار کنند. به عنوان مثال فرض کنید که آلیس بخواهد از طریق اینترنت پیامی را برای باب ارسال کند. در حالت ایدهآل میخواهیم که هیچ حمله کنندهای نتواند هیچ اطلاعاتی درباره پیام آلیس بهدست آورد و همچنین نتواند هیچ تغییری در پیام آلیس بدون اینکه باب متوجه شود، ایجاد کند. با وجود اینکه حفظ حریم خصوصی و اصالت دادهها یک هدف اصلی برای پروتکلهای رمزنگاری است علاوه بر این امروزه علم رمزنگاری در موضوعات بسیار زیاد دیگری مانند رأیگیری الکترونیکی، پولهای الکترونیکی و مزایدههای امن پیشرفتهای قابل توجهای کرده است و مسائل زیادی در این زمینهها نیز مطرح شده است. در ادامه توضیح میدهیم که رمزنگاری چیست و چگونه میتوانیم یک توجیه علمی برای امنیت طرحهای رمزنگاری داشته باشیم.
مدل کردن امنیت: چگونه میتوانیم تضمین کنیم که یک طرح رمزنگاری امن است؟ برای اینکه بتوان امنیت را فرمولبندی کرد ابتدا باید توانمندیهای دشمن را مشخص کرد (اینکه دشمن چه کارهایی را میتواند انجام دهد). همچنین باید شرایطی را که در آن یک حمله میتواند به طور موفقیتآمیزی انجام شود، مشخص کرد. به عنوان نمونه در مثالی که ابتدا مطرح کردیم، دشمن میتواند متنِ رمز شده آلیس را بخواند و آن را تغییر دهد. در این مثال حمله زمانی به طور موفقیتآمیزی انجام شده که حمله کننده بتواند اطلاعاتی را در مورد پیام آلیس بهدست آورد و یا بتواند تغییری در پیام ایجاد کند بدون اینکه باب متوجه شود این تغییر از سوی آلیس نبوده است و یا دشمن پیامی برای باب بفرستد که باب تصور کند این پیام از سمت آلیس است. بنابراین میتوان گفت یک طرح رمزنگاری امن است اگر بتوانیم به صورت ریاضی ثابت کنیم هیچ حملهای نمیتواند بهصورت موفقیتآمیزی انجام شود، مگر با یک احتمال بسیار ناچیز.
الگوریتم های مورد استفاده برای رمزنگاری به دو دسته متقارن و نامتقارن تقسیم می شوند در الگوریتم های متقارن هر دو طرفی که قصد رد و بدل کردن اطلاعات را دارند از یک کلید مشترک برای رمزگذاری و نیز رمزگشایی استفاده میکنند. در این حالت بازگشایی و رمزگزاری اطلاعات دو فرآیند معکوس یکدیگر میباشند.
درالگوریتم های نامتقارن که امنیت بسیار بالاتری نسبت به الگورتیم متقارن دارد، به جای یک کلید مشترک از یک جفت کلید به نامهای کلید عمومی (Public Key) و خصوصی (Private Key) استفاده میشود. کد رمزگذاری عمومی است پس هر کسی می تواند پیغام خود را رمزگذاری کند اما کد رمزگشایی خصوصی است پس تنها گیرنده می تواند آن را از حالت رمزگذاری خارج کند. امروز استفاده از این روش در اکثر شبکه های کامپیوتری رایج است. تمام کامپیوترهای عضو شبکه به کلید عمومی دسترسی دارند و تنها گیرنده پیغام به کلید خصوصی دسترسی دارد.
Public key : برای به رمز گذاری اطلاعات استفاده می شود.
Plaintext : متنی است که قرار است رمزگذاری شود.
Encryption Algorithm : الگوریتم رمزگذاری اطلاعات
Private Key : کلیدی که برای رمزگشایی استفاده می شود.
Cipher text : متن تغییر یافته پس از رمز گذاری
Decryption Algorithms : الگوریتم رمزگشایی است.
برای رمز گذاری اطلاعات می توانید با توجه به میزان اهمیت و حجم و زمان محاسبات و با استفاده از اطلاعات ارائه شده در بالا یک روش را انتخاب و استفاده کنید. بطور خلاصه میتوان گفت که الگوریتم های متقارن دارای سرعت بالاتر و الگوریتمهای نامتقارن دارای امنیت بهتری هستند. در ضمن گاهی از ترکیبی از هردو الگوریتم استفاده می کنیم که به این این روش الگوریتم های ترکیبی (Hybrid) گفته میشود.
رمزنگاری متقارن: در سادهترین حالت ممکن، آلیس و باب میتوانند، بدون اطلاع دشمن، کلید K را با هم به اشتراک بگذارنند و از این کلید برای رمز کردن و از رمز خارج کردن متن مکاتباتشان استفاده کنند. کلید به اشتراک گذاشته شده معمولاً یک دنباله تصادفی kبیتی است که با یک توزیع احتمال یکنواخت انتخاب میشود. همانطور که در شکل 1 نشان داده شده است، آلیس میتواند الگوریتمی را برای رمزکردن متن اصلی M با کمک کلید K به کار ببرد و متن رمز شده C را بهدست آورد. متن رمزشده C برای باب فرستاده میشود. باب با کمک الگوریتمی متناظر با الگوریتم آلیس و با کمک کلید K میتواند متن C را از رمز خارج کند و متن اصلیM را بهدست آورد. این طرح، طرح کلی رمزنگاری متقارن است، که در آن دو طرف مکاتبه کننده کلیدی را با هم به اشتراک میگذارند. در حالت کلی یک طرح رمزنگاری به صورت تصادفی است، بدین معنی که آلیس باید یک عدد تصادفی انتخاب کند و پیام C را از روی ورودی M، عدد تصادفی انتخاب شده و کلید K بهدست آورد. در هر مرحله که الگوریتم رمزکردن انجام میشود یک عدد تصادفی جدید مورد نیاز است. تجدید این عدد تصادفی باعث میشود که اگر الگوریتم رمزکردن دوبار روی یک پیام M با یک کلید K اجرا شود متنهای رمزشده متفاوتی داشته باشیم.
شکل1.(رمزنگاری متقارن) آلیس الگوریتم رمزکننده E را روی متن اصلی M با کمک کلید K انجام میدهد و نتیجه را بهصورت متن رمزشده C برای باب میفرستد. با استفاده از همان کلید K و الگوریتم رمزشکن D باب میتواند متن اصلی M را از روی C بهدست آورد.
رمزهای بلوکی: رمزنگاری متقارن معمولاً بر پایه رمزهای بلوکی است. یک رمز بلوکی E تابعی است که یک ورودی m با طول ثابت به همراه کلید K را میگیرد و متن رمز شده c با طول ثابت را به عنوان خروجی میدهد. برای هر کلید ثابت K، E باید جایگشتی باشد که به هر متن رمز شده دقیقاً یک متن اصلی را نسبت دهد. از جمله رمزهای بلوکی معروف میتوان DES که قدیمیتر است و AESکه جدیدتر است را نام برد. توجه داشته باشید که رمزهای بلوکی فقط یک ابزار هستند و نمیتوانند به تنهایی یک سیستم رمزنگاری امن را فراهم کنند. بخاطر اینکه رمزهای بلوکی فقط میتوانند بلوکهای با طول ثابت را رمز کنند (بهعنوان مثال در AES بلوکهای 128 بیتی). در حالی که ما باید قادر باشیم یک متن اصلی با هر طولی را رمز کنیم. بهعلاوه همانطور که در جلوتر میبینیم رمزنگاری باید بهصورت تصادفی باشد و یا به متغییری وابسته باشد که برای هر پیام جدیدی تغییر کند (بهعنوان مثال از یک شمارنده استفاده شود). مکانیزمی که با کمک آن میتوان از یک رمز بلوکی یک سیستم رمزنگاری ساخت سبک بهکارگیری رمز بلوکی[1] نامیده میشود. سبک زنجیرهای قالبهای رمز[2] (CBC) که در شکل 2 نشان داده شده است، با یک مقدار اولیه تصادفی پر استفادهترینسبک بهکارگیری رمز بلوکی است.
سیستمهای رمزنگاری با کلید عمومی:
تعریف حریم خصوصی که تا اینجا ارائه دادیم برای سیستمهای رمزنگاری متقارن بود که در آن آلیس و باب کلید مشترک K را هم برای رمزکردن و هم برای از رمز خارج کردن یک پیام با هم به اشتراک میگذارند. در سیستمهای رمزنگاری با کلید عمومی (سیستمهای نامتقارن) کلیدهای متفاوتی برای رمزکردن و از رمز خارج کردن استفاده میشود. در حالت کلی یک طرف مکاتبه یک جفت کلید دارد که شامل کلید عمومی pk و کلید خصوصی sk است. از کلید عمومی برای رمز کردن استفاده میشود و از کلید خصوصی برای از رمز خارج کردن پیامها استفاده میشود.
همانطور که در شکل3 نشان داده شده است زمانیکه آلیس بخواهد پیام M را برای باب بفرستد این پیام را با کلید عمومی باب رمز میکند و متن رمز شده C=E(pkBob, M) را برای باب میفرستد. سپس باب با کمک کلید خصوصی خودش C را از حالت رمز خارج میکند و پیام M=D(skBob, C) را بهدست میآورد. مزیت رمزنگاری با کلید عمومی در این است که دو نفر میتوانند با هم یک مکاتبه امن داشته باشند بدون اینکه قبلاً یکدیگر را ملاقات کرده باشند. ایده اولیه رمزنگاری با کلید عمومی برای اولین بار در سال 1976 توسط دفی و هلمن بیان شد.

شکل3. (رمزنگاری با کلید عمومی) آلیس پیامی را برای باب میفرستد که آن را با کلید عمومی باب رمز کرده است.
شکل4 الگوریتم سیستم رمزنگاری RSA که معروفترین سیستم رمزنگاری با کلید عمومی است را نشان میدهد. این سیستم رمزنگاری در سال 1977 توسط رایوست و شمیر و آدلمن ارائه شد.
مفهوم حریم خصوصی در سیستمهای رمزنگاری با کلید عمومی با انجام یک سری تغییرات جزئی همانند سیستمهای رمزنگاری با کلید خصوصی است. در این سیستمها دشمن ابتدا یک کلید عمومی pk را دریافت میکند و باید بین رمز دو پیام m1 و m2 تحت pkتمایز قایل شود. همانطور که بیان شد یک سیستم رمزنگاری امن است اگر برتری یک دشمن با قدرت محاسباتی محدود از بالا کراندار باشد.
الگوریتم RSA نشان داده شده در شکل 4، ویژگی تمایزپذیری را ندارد. چون دشمن همیشه میتواند پیامهای m1 و m2 را رمز کند و بررسی کند که آیا c=E(pk,m1) یا c=E(pk,m2). در حقیقت در این حالت ویژگی تمایزپذیری میتواند در رمزهای تصادفی حاصل شود، به این معنی که در هر بار اجرای الگوریتم رمزنگاری باید از یک عدد تصادفی استفاده شود. برای اینکه ویژگی تمایزپذیری حاصل شود، زمانی که از سیستم رمزنگاری RSA استفاده میشود، باید قبل از اینکه تابع RSA به متن اعمال شود متن را کدگذاری کرد. معروفترین کدگذاری که برای به دست آوردن ویژگی تمایزپذیری استفاده میشود لایهگذاری بهینه رمز نامتقارن[5] (OAEP) است که اولین بار در سال 1994 توسط بلر و راگوی ارائه شد.

شکل4. (سیستم رمزنگاری RSA) امنیت سیستم بر پایه سختی بهدست آوردن p و q با داشتن n=pq است.
منابع:



