رمزنگاری و استفاده آن در بلاک چین ( قسمت دوم )

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

0 184

رمزنگاری و استفاده آن در بلاک چین

رمزنگاری و استفاده آن در بلاک چین
رمزنگاری و استفاده آن در بلاک چین

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

رمزنگاری و استفاده آن در بلاک چین
رمزنگاری و استفاده آن در بلاک چین

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

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

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

فرض کنید می‌خواهید یک پیام محرمانه را با اعضای خانواده خود به اشتراک بگذارید. شما باز هم از عملیات رمز سزار استفاده می‌کند (به عبارت دیگر شیفت حروف به سمت جلو)، اما به جای استفاده از یک رقم مانند ۳، از کلمه‌ای مثل FAMILY استفاده خواهید کرد. هر یک از حروف الفبا یک جایگاه دارد و عددی به آن جایگاه نسبت داده شده است. A به عنوان اولین حرف الفبا با ۱، B با ۲، C با ۳ و … نمایش داده می‌شود. می‌توانیم از این دنباله برای تبدیل کلمه FAMILY به دنباله‌ای از ارقام مطابق با نگاره ۶ استفاده کنیم.

رمزنگاری و استفاده آن در بلاک چین
رمزنگاری و استفاده آن در بلاک چین

می‌توانید ببینید که این کار چقدر سودمند است. یادآوری FAMILY بسیار آسان‌تر از به یاد آوردن ۶-۱-۱۳-۹-۱۲-۲۵ است. و شما می‌توانید به راحتی با استفاده از یک کلمه طولانی‌تر دنباله‌ای طولانی‌تر یا حتی یک جمله داشته باشید.» شما اکنون به نحوی تصادفی بودن را شبیه‌سازی کرده‌اید. بنابراین، چگونه می‌توانید از این کلید شبه تصادفی استفاده کنید؟ برای رمزنگاری یک پیام، می‌توانید هر حرف پیامتان را به وسیله اعداد موجود در کلیدتان (همان اعدادی ۶، ۱ و… که در حروف کلمه FAMILY بود) به چند حرف جلوتر شیفت دهید و هنگامی که به انتهای ارقام رسیدید، دنباله اعداد را تکرار کنید.

 

رمزنگاری و استفاده آن در بلاک چین
رمزنگاری و استفاده آن در بلاک چین

ببینید که چطور دو L در نگاره ۷ به حروف متفاوتی در متن رمز ترجمه شده‌اند. اگر هنوز هم از رمز سزار استفاده می‌کردیم، آن‌ها به یک حرف ترجمه می‌شدند و الگوی این پیام کوتاه را لو می‌دادند. هرچه پیام رمزی طولانی‌تر باشد، شبیه سازی تصادفی‌سازی دشوارتر می‌شود. HELLO تنها ۴ حرف طول دارد، پس نمی‌گذارد دنباله کلید ما به درستی تکرار شود.

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

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

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

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

امروزه از روش‌های مبتنی بر عددهای بزرگ (نه در تشابه با روش سزار، چون واضح است که انتخاب کلید بزرگ‌تر از تعداد حروف الفبای زبان کمکی به رمزنگاری نمی‌کند و به طور مثال انتخاب ۲۷ با ۱ در رمز سزار تفاوتی ایجاد نخواهد کرد) برای رمزنگاری استفاده می‌شود که در مقاله جداگانه‌ای به آن اشاره خواهیم کرد.

 

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.