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

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

0 16

رمز سزار

مقدمه

تا این قسمت از بررسی مفاهیم بلاک چین حتما به کلماتی مانند رمزنگاری، هش، امضای دیجیتال و رمزنگاری غیر متقارن برخورد کرده‌اید. علاوه بر این مفاهیم کلید خصوصی و عمومی نیز مطالبی هستند که در بستر رمزنگاری معنا پیدا می‌کنند. اگر کمی دقیق شویم متوجه  می‌شویم که اصولا وجود بلاک چین بدون وجود رمزنگاری غیرممکن است و البته بسیاری از فعالان قدیمی و جدید بلاک چین کسانی هستند که به نوعی پیش از این رشته به رمزنگاری و یا علوم مرتبط با آن مشغول بوده‌اند که معروف‌ترین آن‌ها (بدون اینکه ساتوشی ناکاموتو که اطلاعاتی از هویت واقعی او در دست نیست را در نظر بگیریم) احتمالا هال فینی[1] است که از اولین توسعه دهندگان کد بیت کوین در کنار ساتوشی ناکاموتو می‌باشد و اولین تراکنش این بلاک چین نیز به نام وی ثبت شده است.

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

هدف اولیه رمزنگاری این است که بتوان یک پیام را بین دو طرف رد و بدل کرد بدون اینکه طرف ثالثی بتواند با دیدن متن به متن اصلی دست پیدا کند. به عبارتی ما متن اولیه را رمزگذاری کرده (یا انکریپت[2] می‌کنیم) و برای دریافت پیام آن را رمزگشایی (دیکریپت[3] ) می‌نماییم. رمزنگاری را می‌توان به یک صندوق تشبیه کرد که پیام در آن قرار می‌گیرد و سپس در این صندوق قفل می‌شود. هر کسی که صندوق را در اختیار داشته باشد و علاوه بر آن کلید را با او به اشتراک گذاشته باشیم (یا به هر نحو دیگر کلید را به دست آورده باشد) می‌تواند از پیام اصلی باخبر شود. مراحل رمزگذاری و رمزنگاری توسط یک کلید انجام می‌گیرند که نقش اساسی در تمامی الگوریتم‌ها دارد. اصولا رمزنگاری همانطور که در ادامه خواهیم دید یک جنگ دائمی بین رمزنگاران و رمزشکنان است که گروه اول تلاش می‌کنند یک روش رمزنگاری بهینه بسازند و رمزشکنان تلاش می‌کنند با ابزارهای مختلف این رمز را شکست دهند. با هر بار شکست یک الگوریتم رمزنگاری، رمزنگاران الگوریتم جدیدی تولید می‌کنند و این روند ادامه پیدا خواهد کرد.

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

 

رمز سزار

با وجود همه پیچیدگی‌ها اما رمزنگاری بسیار قدیمی‌تر از اختراع کامپیوتر یا هر ماشین محاسب دیگر است. اولین پنهان‌نگاری[4] به سال 400 پیش از میلاد مسیح بر‌می‌گردد و اولین روش موفق رمزنگاری کاربردی را به قیصر روم، ژولیوس سزار نسبت می‌دهند.

رمز سزار روشی است که در آن هر حرف الفبا در پیام با حرف دیگری با یک فاصله مشخص الفبایی جابجا می‌شود. برای این کار ابتدا به هر حرف الفبا یک عدد نسبت می‌دهیم و سپس پیام را با مشخص کردن یک عدد و انتقال هر حرف به چند حرف جلوتر (یا عقب‌تر[5]) با حرف دیگری جابجا می‌کنیم. رمز سزار اولین نمونه از دسته رمزنگاری‌هایی است که به رمزهای جانشینی معروفند. به عنوان مثال کلمه SALAM را در نظر بگیرید. رشته عددی این کلمه برابر با (13، ۱، ۱۲، ۱، ۱۹)  است. اگر کلید را برابر با چهار انتخاب کنیم رشته عددی ما تبدیل به (۱۷، ۵، ۱۶، ۵، ۲۳)  خواهد شد که معادل با WEPEQ است. سپس شما می‌توانید با اطلاع دادن این عدد (۴) به هر کس دیگری، قابلیت رمزگشایی را برای وی مهیا کنید. این مساله را می‌توانید با مثال دیگری در نگاره 1 مشاهده‌کنید. فرض کنید پادشاهی قصد دارد دستور یک حمله را بدون ترس از افشای آن به لشکری که دور از وی قرار دارند بدهد. او پیش از این با فرمانده لشکر درباره عدد سه به عنوان کلید توافق کرده است.

 

رمز سزار
رمز سزار

این پادشاه با ارسال پیام DWWDFN به فرمانده توسط یک قاصد فرمانده را از تصمیم جدیدی آگاه می‌کند. فرمانده سپس به ترتیب نگاره 2 پیام را رمزگشایی کرده و دستور حمله را به سربازان خود می‌دهد.

 

رمز سزار
رمز سزار

این رمز بسیار ساده بیش از ۸۰۰ سال در برابر شکسته شدن مقاومت کرد که در نوع خود بسیار عجیب است زیرا شکستن این رمز بسیار ساده‌تر از آن است که تصور می‌کنید.

یکی از ویژگی‌های زبانی تفاوت فراوانی کاربرد حروف در متون است. به طور مثال در الفبای انگلیسی الگوی استفاده حروف مطابق نگاره 3  است. همان‌طور که می‌بینید E پرکاربردترین حرف در الفبای انگلیسی است. علاوه بر این نکات دیگری نیز قابل ملاحظه هستند از جمله اینکه R و H‌ تناوب تقریبا مشابهی دارند یا R سه برابر G و P  و دو برابر L تکرار می‌شود. با استفاده از این تناسبات و همچنین درصد کاربردها می‌توان با تحلیل حروف به کار رفته در متن رمز شده به کلید دست یافت. به طور مثال به نگاره 4 نگاه کنید. در این نگاره می‌توان مشاهده کرد که بیش‌ترین تناوب حروف در متن رمز شده متعلق به I‌ است. پس در حدس اول می‌توان کلید را برابر ۴ حدس زد و با آزمون نتیجه را تست کرد.

 

رمز سزار
رمز سزار

 

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

 

 

[1] Hal Finney

[2] Encrypt

[3] Decrypt

[4] Steganography

[5] اساسا اینکه حروف را با حرفی عقب‌تر یا جلوتر جانشین کنیم مشابه است و تنها طول کلید است که تغییر می‌کند. برای درک این مساله می‌توانید یک رمز جانشینی با کلید برابر با ۳ را در نظر بگیرید. اگر بخواهیم حرف Z را جانشین کنیم، با توجه به اینکه Z، آخرین حرف الفبا است، مجبوریم آن را با برگشت به اولین حرف رشته الفبا با C جانشین کنیم. این کار معادل کلید برابر با طول ۲۳ و رو به عقب است. این مبحث از مفاهیم پایه‌ای در باقیمانده در نظریه اعداد است که در مدول عدد N مطرح می‌شود.

 

 

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

ارسال پاسخ

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