رمزنگاری (Cryptography) چیست؟
مفهوم رمزنگاری (Cryptography) امن ، کلید عمومی و خصوصی
در رمزنگاری هدف ساختن طرحها یا پروتکلهایی است. که بتوان با کمک آنها حتی در حضور دشمن نیز کارهای خاصی را انجام داد.
یک هدف اساسی در رمزنگاری این است که:
- به افراد این امکان را بدهند که روی یک کانال ناامن با حفظ حریم خصوصی و اصالت دادههایشان به صورت کاملاً امن با هم ارتباط برقرار کنند.
رمز نگاری چیست؟ با مثال
به عنوان مثال فرض کنید که آلیس بخواهد از طریق اینترنت پیامی را برای باب ارسال کند.
- در حالت ایدهآل میخواهیم که هیچ حمله کنندهای نتواند هیچ اطلاعاتی درباره پیام آلیس بهدست آورد.
- و همچنین نتواند هیچ تغییری در پیام آلیس بدون اینکه باب متوجه شود، ایجاد کند.
با وجود اینکه حفظ حریم خصوصی و اصالت دادهها یک هدف اصلی برای پروتکلهای رمزنگاری است. علاوه بر این، امروزه علم رمزنگاری در موضوعات بسیار زیاد دیگری مانند:
رأیگیری الکترونیکی
پولهای الکترونیکی
و مزایدههای امن پیشرفتهای قابل توجهای کرده است.
و مسائل زیادی در این زمینهها نیز مطرح شده است. در ادامه توضیح میدهیم که رمزنگاری چیست و چگونه میتوانیم یک توجیه علمی برای امنیت طرحهای رمزنگاری داشته باشیم.
کلید عمومی (Public Key) چیست و چه کاربردی دارد؟
چگونه میتوانیم تضمین کنیم که یک طرح رمزنگاری امن است؟
برای اینکه بتوان امنیت را فرمولبندی کرد .
- ابتدا باید توانمندیهای دشمن را مشخص کرد (اینکه دشمن چه کارهایی را میتواند انجام دهد).
- همچنین باید شرایطی را که در آن یک حمله میتواند به طور موفقیتآمیزی انجام شود، مشخص کرد.
به عنوان نمونه در مثالی که ابتدا مطرح کردیم، دشمن میتواند متنِ رمز شده آلیس را بخواند و آن را تغییر دهد.
در این مثال حمله زمانی به طور موفقیتآمیزی انجام شده که:
- حمله کننده بتواند اطلاعاتی را در مورد پیام آلیس بهدست آورد.
- و یا بتواند تغییری در پیام ایجاد کند.
- بدون اینکه باب متوجه شود این تغییر از سوی آلیس نبوده است.
- و یا دشمن پیامی برای باب بفرستد که باب تصور کند این پیام از سمت آلیس است.
بنابراین میتوان گفت یک طرح رمزنگاری امن است. اگر بتوانیم به صورت ریاضی ثابت کنیم هیچ حملهای نمیتواند بهصورت موفقیتآمیزی انجام شود، مگر با یک احتمال بسیار ناچیز.
بیت کوین چیست؟ بررسی ساختار امنیتی و عملکرد بیت کوین
رمزنگاری متقارن
در سادهترین حالت ممکن، آلیس و باب میتوانند، بدون اطلاع دشمن، کلید 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 بیتی).
در حالی که ما باید قادر باشیم یک متن اصلی با هر طولی را رمز کنیم.
بهعلاوه همانطور که در جلوتر میبینیم رمزنگاری باید :
- بهصورت تصادفی باشد.
- و یا به متغییری وابسته باشد.
- که برای هر پیام جدیدی تغییر کند (بهعنوان مثال از یک شمارنده استفاده شود).
- مکانیزمی که با کمک آن میتوان از یک رمز بلوکی یک سیستم رمزنگاری ساخت سبک بهکارگیری رمز بلوکی نامیده میشود.
سبک زنجیرهای قالبهای رمز (CBC) که در شکل 2 نشان داده شده است، با یک مقدار اولیه تصادفی پر استفادهترین سبک بهکارگیری رمز بلوکی است.
مفهوم و کاربرد کلید خصوصی یا Private Key ارز دیجیتال چیست؟
آشنایی با حمله غیر فعال و هدف آن
در رمزنگاری در حالت کلی فرض میکنیم :
کلیدها توسط افرادی که از آنها استفاده میکنند، بهصورت امن نگهداری میشوند.
در حالت خاص اگر کلید روی کامپیوتر ذخیره شده باشد. فرض میکنیم که هیچ دشمنی نمیتواند به کلید دسترسی داشته باشد.
حمله کنندهای را در نظر بگیرید که فقط قادر است مکاتبات بین آلیس و باب را شنود کند.
فرض کنید هدف این حمله کننده این باشد که کلید K را بهدست آورد. تا با کمک آن بتواند تمام مکاتبات بین آلیس و باب را از حالت رمز خارج کند.
در واقع این هدف یک هدف بسیار جاه طلبانه است. که منجر به شکسته شدن کل سیستم رمزنگاری میشود.
در دنیای واقعی هدف حمله کننده میتواند کوچکتر باشد.
به عنوان مثال هدفش میتواند این باشد که اگر متن رمزشده C را داشت. بتواند آن را از رمز خارج کند. و به M برسد. یا حتی بتواند قسمتی از بیتهای M را بهدست آورد.
در این حالت نیز از آنجا که این بیتها ممکن است حاوی اطلاعات مهمی باشند میتواند سیستم را به یک سیستم ناامن تبدیل کند.
حمله غیر فعال و حریم خصوصی یک متن رمز شده
در شکل2 سبک (CBC) در هر مرحله یک مقدار اولیه IV تصادفی برای هر رمز جدیدی تولید میشود.
در نگاه اول ممکن است یک طرح رمزنگاری را امن بنامیم.
اگر زمانیکه دشمن متن رمزشده C راببیند.و هیچ اطلاعاتی درمورد M بهدست نیاورد.
اما در حالت کلی این درست نیست. چون دشمن همیشه درباره متن M، اطلاعاتی از قبل دارد.
به عنوان مثال M ممکن است یک سند متنی با یک قالب خاص باشد، که دشمن از آن مطلع باشد.
حریم خصوصی یک متن رمز شده واقعاً به این معنا است که:
اگر دشمن متن رمز شده C را دریافت کرد. هیچ اطلاعاتی به اطلاعاتی که قبلاً داشته است اضافه نشود.
شانون در سال 1949 تعریف زیر از امنیت را ارائه داد. یک سیستم رمزنگاری دارای امنیت کامل است اگر و تنها اگر برای هر دو متن اصلی M1 و M2، احتمال اینکه متن داده شده C متن رمز شده متناظر با M1 و یا M2 باشد با هم برابر باشد. این احتمال روی فضای تمام کلیدها و بیتهای تصادفی (اگر وجود داشته باشد) که در الگوریتم رمز کردن استفاده شدهاند، گرفته میشود.
مدارک مورد نیاز برای احراز هویت در سایت بیت گرند
فرم احراز هویت در صرافی ارز دیجیتال بیت گرند
امنیت معنایی
امنیت کامل تنها زمانی بهدست میآید که:
تعداد بیتهای متن رمز شده از تعداد بیتهای کلید کمتر باشد.
در دنیای واقعی این محدودیت، محدودیت قابل توجهی است.
چون در عمل ما میخواهیم که با کمک یک کلید کوچک متنهای بسیار زیادی را رمز کنیم.
بنابراین لازم است که تعریف دیگری برای امنیت ارائه دهیم که از تعریف امنیت کامل ضعیفتر باشد. اما چیزی که تقریباً برای هر کاربرد عملی مناسب است امنیت معنایی است. که در سال 1982 توسط گلدواسر و میکالی ارائه شد.
تعریف امنیت که توسط شانون ارائه شد بسیار انتزاعی است. و توانمندیهای دشمن را در نظر نمیگیرد.
در واقع دشمن ممکن است قادر نباشد اطلاعاتی را درباره متن اصلی از روی متن رمز شدهی آن بهدست آورد.
در مقابل امنیت کامل، امنیت معنایی سطحی از امنیت را ارائه میدهد که به قدرت محاسباتی دشمن ارتباط دارد.
مفهوم امنیت معنایی
امنیت معنایی به این ترتیب تعریف میشود :
هر چیزی که بتواند به طور موثری از روی متن رمز شده درباره متن اصلی محاسبه شود، باید به طور موثری در غیاب متن رمز شده نیز قابل محاسبه باشد.
بهطور مستقیم، این بدین معنی است:
- که دشمنی که از نظر محاسباتی دارای محدودیت است، نمیتواند از روی متن رمز شده هیچ اطلاعاتی به دست بیاورد.
- چون او بعد از دیدن متن کارهایی را میتواند انجام دهد که قبل از دیدن آن نیز میتوانست انجام دهد.
عدم تمایز
یک تعریف معادل اما سادهتر برای امنیت، تمایزناپذیری رمز است.
- دشمنی را در نظر بگیرید که ابتدا دو متن اصلی با طول یکسان در نظر میگیرد.
- و سپس رمز شده یکی از آنها را دریافت میکند.
- یک سیستم رمزنگاری، امن نامیده میشود اگر، دشمن نتواند به طور کارایی تشخیص دهد کدام یک از دو پیام رمز شده است.
- به جای یک جفت از پیامها دشمن میتواند دنبالهای از جفت پیامهای (Mi, M’i) را در نظر بگیرد. او دنبالهای از رمزهای Ci را دریافت میکند.
بیت b را به این ترتیب در نظر بگیرید :
اگر برای هر i، Ci رمز شده Miباشد.
b=0 و اگر برای هر i، Ci رمز شده M’i باشد b=1.
دشمن بعد از دریافت Ciها باید مقدار b’ را حدس بزند. او در این حالت موفق میشود اگر b=b’.
البته دشمن همیشه میتواند با احتمال 2/1 مقدار b را درست بهدست آورد.
در واقع کافی است b’ را به طور تصادفی 0 یا 1 انتخاب کند.
فرض کنید دشمن بتواند با احتمال بیشتر از 2/1، b را درست بهدست آورد.
در این حالت احتمال اینکه دشمن بتواند b را درست حدس بزند منهای 2/1 برتری دشمن در شکستن رمز نامیده میشود.
در این صورت میگوییم طرح رمزنگاری امن است:
اگر برتری یک دشمن با قدرت محاسباتی محدود در سناریوی قبلی با یک مقدار بسیار کوچک از بالا کراندار باشد.
سیستم رمزنگاری با کلید عمومی
تعریف حریم خصوصی که تا اینجا ارائه دادیم برای سیستمهای رمزنگاری متقارن بود.
که در آن آلیس و باب کلید مشترک 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 به متن اعمال شود متن را کدگذاری کرد.
معروفترین کدگذاری که برای به دست آوردن ویژگی تمایزپذیری استفاده میشود. لایه گذاری بهینه رمز نامتقارن (OAEP) است. که اولین بار در سال 1994 توسط بلر و راگوی ارائه شد.
در شکل4 (سیستم رمزنگاری RSA) امنیت سیستم بر پایه سختی بهدست آوردن p و q با داشتن n=pq است.
حملههای فعال
تا اینجا روی یک دشمن غیرفعال تمرکز کردیم، دشمنی که فقط میتواند شنود کند.
- در حالی که در عمل یک دشمن ممکن است قادر باشد پیامهایی را روی شبکه ارسال کند.
- و یا پیامهای ارسال شده روی شبکه را تغییر دهد.
- خصوصاً دشمن میتواند متنهای رمزشدهای را ارسال کند. و ممکن است اطلاعات جزئی را درباره پیامهای متناظر با آنها بهدست آورد.
برای مقابله با حملههای فعال چارلز راکوف و دنیل سیمون در سال 1991 تعریف امنیت تحت حمله متن رمز منتخب وفقی را مطرح کردند.
همانطور که قبلاً مطرح شد:
- دشمن باید بگوید که آیا یک رمز مورد نظر c رمز شده متن اصلی m1 است یا m2،
- که در این حالت دشمن این توانایی را دارد که متن اصلی هر متن رمز شدهای به جز رمز c را بهدست آورد.
رونالد کرامر و ویکتور شاپ در سال 1998 اولین سیستم رمزنگاری عملی با کلید عمومی را برای اینکه به طور اثبات پذیری بتواند این ویژگی را داشته باشد بر پایه یک فرض سخت استاندارد ارائه دادند.
طرح OAEP که قبلاً به آن اشاره شد نیز این ویژگی را دارد . اما فقط در یک مدل پیشگوی تصادفی یعنی یک مدل ایدهآل محاسباتی که در آن تابع چکیده ساز به صورت یک تابع کاملاً تصادفی در نظر گرفته میشود.
امنیت قابل اثبات
مبحث امنیت قابل اثبات ترکیبی از سه مرحله است:
- تعریف امنیت
- طرح
- اثبات امنیت.
اگرچه این رویکرد در حال حاضر بخشی از جریان اصلی در رمزنگاری پیشرفته است، اما امنیت قابل اثبات دارای محدودیتهایی نیزهست.
- در دنیای واقعی، محاسبات زمانبر است.
- مصرف برق و تراوش تشعشعات به دشمنان این امکان را میدهند تا بتوانند از این آسیبپذیری با حملههایی چون حمله زمانی، حمله تحلیل توان تفاضلی و حمله تحلیل عیب بهرهبرداری کنند.
بنابراین یک زمینه مورد توجه برای تحقیقات آینده میتواند بررسی مدلهای سیستمهای رمزنگاری باشد. که دارای امنیت قابل اثبات هستند و در برابر این حملهها نیز امن هستند.