رمزنگاری چیست؟ (در سیستم بلاک چین)
هر روزه ما درحال ارسال پیام از طرق مختلف در فضای مجازی هستیم. توسعه فناوری اطلاعات و گسترش اینترنت و شبکه های ارتباطی باعث شده است که ارسال و دریافت پیام به سادگی انجام شود. هر فردی با اتصال به اینترنت به صورت همزمان به یک ارسال کننده و دریافت کننده اطلاعات تبدیل میشود. شما به سادگی یک پیام را برای دوست خود ارسال میکنید، اما در مسیر آن پیام انبوهی از کدها، شبکهها و سوییچها قرار دارند که شما از آنها بی اطلاع هستید. این ابزارها برای امنیت محتوای اطلاعات شما ضروری است. در واقع چیزی به نام رمزنگاری اطلاعات است که باعث میشود پیام شما صحیح و سالم و بدون اینکه مورد سوء استفاده قرار گیرد به دست فرد مورد نظرتان برسد. بسیاری از افراد بدون اینکه متوجه شوند هر روز در حال استفاده از فناوری رمزنگاری اطلاعات هستند. از طرفی رمزنگاری یکی از جنبه های مهم فناوری بلاک چین است. اگر با بلاک چین آشنا نیستید مقاله بلاک چین چیست را مطالعه کنید. در این مقاله قصد داریم به زبان ساده و در عین حال به طور مفصل درباره رمزنگاری و مفاهیم مربوط به آن صحبت کنیم. البته دایره اطلاعات مربوطه بسیار گسترده است، بنابراین سعی کرده ایم مطالب را با محوریت کاربرد رمزنگاری در بلاک چین تشریح کنیم. با ما همراه باشید.
کلیپ آموزشی رمزنگاری چیست؟ این کلیپ را به دقت تماشا کنید.
رمزنگاری چیست؟
رمزنگاری روشی برای پنهان سازی (رمز گذاری) و آشکارسازی (رمزگشایی) اطلاعات است که معمولا بر پایه الگوریتمهای ریاضی استوار است. به طور کلی پروسه انتقال اطلاعات سه بخش دارد که شامل فرستنده، گیرنده و حامل پیام میشود. در رمزنگاری، اطلاعات طوری رمز گذاری (Encryption) میشوند که فقط می تواند توسط گیرنده یا گیرندگان در نظر گرفته شده، مشاهده شوند. در فضای دیجیتال، الگوریتم مربوط به رمزگذاری، متن اصلی پیام شما را به یک متن غیرقابل خواندن (که توسط حامل پیام حمل میشود) تبدیل میکند. این متن غیر قابل خواندن و کاملا بی معنی (Cipher-text)، تنها توسط گیرنده میتواند رمز گشایی (Decryption) شود. در واقع گیرنده است که کلید رمز را در اختیار دارد. اما کلید رمز چیست؟ برای درک آن، توجه شما را به اولین نمونه رمزنگاری درتاریخ معطوف میکنم، رمزنگاری سزار!
نمونه اولیه رمزنگاری
اولین نمونه رمزنگاری اطلاعات در تاریخ، به رمزنگاری سزار معروف است که شهرت جهانی دارد. رمز سزار توسط جولیوس سزار برای محافظت از اسرار نظامی در زمان روم باستان استفاده می شد. او به جای هر حرف الفبای رومی، از سه حرف بعد از آن استفاده میکرد! به عنوان مثال اگر میخواست حرف “ب” را بنویسد به جای آن از “ث” استفاده میکرد. در این روش کلمه “جنگ” به صورت “خین” نوشته میشد. این دانش در اصل کلید رمزگذاری پیام بود. ژنرال های سزار می دانستند که برای رمزگشایی حروف فقط باید سه حرف جلوتر بروند ، در حالی که اگر اطلاعات به دست دشمنان سزار میرسید، این اطلاعات امن باقی می ماند. رمزنگاری مدرن بر روی یک مفهوم مشابه کار می کند، گرچه دارای سطح پیچیدگی بسیار بیشتری است
الگوریتم های رمزنگاری، متقارن و نامتقارن
الگوریتم های رمزنگاری به دو دستهی متقارن (Symmetric) و نامتقارن (Asymmetric) تقسیم میشوند. البته انواع متفاوتی از الگوریتم های رمزنگاری وجود دارد که می توان آن ها را از طریق روشهای مختلف دسته بندی کرد. الگوریتم های متقارن و نامتقارن تنها دو دسته مهم از الگوریتم های رمزنگاری هستند. احتمالا با مفهوم تقارن در اشکال هندسی آشنا هستید. در رمزنگاری متقارن، تقارن به جای اشکال، در کلید ها می باشد. برای مثال، اگر فرستنده برای رمزگذاری پیام از کلید رمز “آسمان” استفاده میکند، کاربر دوم به عنوان گیرنده برای رمزگشایی پیام باید از همان کلید “آسمان” استفاده کند. در واقع این کلید یک رمز اشتراکی است. برای مثال فرض کنید شخص A و شخص B می خواهند با هم ارتباط بر قرار کنند، اگر هر دو از رمز اشتراکی آگاه باشند قادر هستند که پیام های رمزگذاری شده را تبدیل و با یکدیگر تبادل اطلاعات کنند. اما این روش تنها زمانی مناسب است که ارتباط تنها بین دو نفر باشد. اگر یک شخص سوم به ارتباطات اضافه شود، باید سه کلید متقارن ساخته شود تا هر سه نفر بتوانند باهم ارتباط بگیرند. با اضافه شدن نفر چهارم، ما به شش کلید احتیج داریم. به همین ترتیب برای N نفر به N(N-1)/2 کلید متقارن نیاز است. این روش در تعداد بالا دچار مشکل خواهد شد و انرژی و زمان زیادی صرف ساختن کلیدهای جدید میشود. توجه کنید که با اضافه شدن یک نفر به یک گروه 10 هزار نفری، باید 10 هزار کلید جدید ساخته شود و بین اعضا توزیع گردد! رمزنگاری نامتقارن این مشکل را با جفت کلید ها حل کرده است.
کلید عمومی و خصوصی
در روش رمزنگاری نامتقارن، به هر کاربر دو کلید تحویل داده می شود که یکی از آن ها کلید عمومی است و دیگری کلید خصوصی نام دارد. کلید عمومی به صورت آزادانه در بین افرادی که می خواهند با شخص مورد نظر ارتباط برقرار کنند توزیع می شود و کلید خصوصی به صورت محرمانه و دور از دسترس دیگران، نزد شخص باقی میماند. شخص A با استفاده از کلید عمومی شخص B، یک پیام برای او میفرستد و شخص B با کلید خصوصی خودش (که با کلید عمومی جفت است) اقدام به بازگشایی پیام میکند.
رمزنگاری در بلاک چین
تا اواسط قرن گذشته، تمامی الگوریتمهای رمزنگاری بر پایه رمزنگاری متقارن بودند که باعث به وجود آمدن مشکلات عمدهای در جابجایی اطلاعات شده بود. این مشکلات باعث کاهش امنیت شبکه برای تبادل اطلاعات شده بود، به خصوص در زمانهایی که تعداد افراد در فرآیند رمزنگاری زیاد میشدند. با ظهور روشهای رمزنگاری غیرمتقارن در پنجاه سال پیش، استفاده از آنها به سرعت گسترش یافت. در این روش با به اشتراک گذاری کلید عمومی همه میتوانستند یک پیام را به صورت رمز درآورده و آن را برای صاحب کلید که کلید خصوصی را به صورت مخفی نگه داشته بود، ارسال کنند. در این روش هیچکس به جز صاحب کلید خصوصی قادر نبود پیام را رمزگشایی و مشاهده کند. علاوه بر این موارد گفته شده، در بعضی موارد مانند بلاک چین از کلید خصوصی به عنوان پسورد و از کلید عمومی به مانند نام کاربری استفاده میشود. به عبارت دیگر در سیستم بلاک چین، دارایی های دیجیتالی یک فرد مربوط به آدرسی است که کلید عمومی آن را مشخص میکند و دسترسی به این دارایی تنها از طریق کلید خصوصی ممکن است. علاوه بر این، رمزنگاری نامتقارن کاربرد دیگری را در اختیار ما میگذارد که به امضای دیجیتال معروف است. امضای دیجیتال فرآیندی است که با استفاده از کلید های خصوصی و عمومی و توابعی ریاضی موسوم به توابع هش، پیام مورد نظر رمزنگاری میشود به صورتی که امکان هک کردن آن به صفر میرسد. اگر یک هکر سعی کند متن پیام را دستکاری کند، هش پیام تغییر میکند و هکر که کلید خصوصی را در دست ندارد نمیتواند هش جدید را به نحو درستی رمزگذاری کند. متن پیام، خود بخشی از امضای دیجیتالی است، اگر بخشی از آن را دستکاری شود، شبکه آن را به عنوان نامعتبر تشخیص می دهد. دستکاری کوچکترین وجهی از داده ها باعث تغییر شکل در کل امضا می شود و آن را نادرست و منسوخ می کند. از این طریق ، فناوری بلاک چین که از امضای دیجیتالی برای امنیت تراکنش ها استفاده میکند، قادر است تضمین کند که هرگونه داده ای که روی آن ضبط می شود درست و دقیق است. امضاهای دیجیتال همان چیزی است که داده های ثبت شده در یک زنجیره بلاک ها را تغییر ناپذیر میکند. گفتیم که برای امضای دیجیتالی به تابع هش نیاز است. اما تابع هش چیست و چه نقشی بازی میکند؟ در ادامه به این مطلب میپردازیم.
تابع هش چیست؟
به صورت ساده، تابع هش یک تابع ریاضی است که یک عبارت با طول دلخواه را به یک عبارت با طول ثابت تبدیل میکند. برای مثال فرض کنید اگر عبارت “سلام کجایی؟” را به تابع هش وارد کنید جواب آن چیزی شبیه 00kvs56 با 7 کاراکتر خواهد بود و اگر عبارت “سلام تو کجایی؟” را به آن وارد کنید، باز هم خروجی یک عبارت 7 کاراکتری است که با قبلی بسیار متفاوت است، مثل mdk5244. در واقع شما نمیتوانید با داشتن جواب هش، عبارت ورودی را پیدا کنید. تابع هش باید بسیار اتفاقی باشد، یعنی هر تغییر هر چند کوچک (تغییر یک حرف) در پیام اولیه باید منجر به چنان تغییری زیادی در هش پیام شود که هیچ رابطهای بین هش قبل و هش جدید قابل کشف نباشد. همچنین نمیتوانید دو عبارت را پیدا کنید که هش یکسان داشته باشند. استفاده از توابع هش رمزنگاری (نوعی از توابع هش) برای امنیت شبکه بلاک چین ضروری است. زمانی که شما یک عبارت دلخواه شامل حروف و عدد را به عنوان پسورد وارد میکنید، این عبارت تبدیل به هش میشود و با هش موجود در پایگاه داده (حاوی هش پسوردهای ذخیره شده) مقایسه میشود. اگر این دو هش یکسان بود به شما اجازه ورود داده میشود. نکته مهم این است که سیستم با اینکه متوجه پسورد شما نمیشود، میتواند تشخیص دهد که پسورد درست است یا خیر. اگر بر حسب اتفاق کسی به پایگاه هشهای پسوردها دست پیدا کند، تنها رشتهای هش را در دست دارد که تبدیل آنها به پسوردهای اصلی (متن اولیه) بسیار سخت است و بنابراین پسوردها به این روش قابل هک نیستند. در فناوری بلاک چین از قابلیت مشابهی استفاده میبریم که کنترل هش یک بلاک جدید توسط استخراج کنندگان (ماینرها) انجام میشود. برای اطلاعات بیشتر در این باره مقاله استخراج بیت کوین را مطالعه کنید.
اما برای مطالعه دقیقه هشینگ و نحوه عملکرد دقیق رمزنگاری در بلاکچین مقاله زیر را مطالعه کنید
جمع بندی
در این مقاله درباره رمزنگاری اطلاعات و روش استفاده از آن در سیستمهای غیر متمرکز مثل بلاک چین صحبت کردیم. دیدیم که چگونه از امضای دیجیتال برای امنیت تراکنش های مجازی استفاده میشود. به طور خلاصه وار میتوان گفت که در سیستم بلاک چین، رمزنگاری در درجه اول به منظور رسیدن به دو هدف انجام میشود:
- تضمین هویت فرستنده تراکنش (امینت کاربر)
- تضمین سوابق گذشته که قابل دستکاری نیست (امنیت شبکه)
فناوری بلاک چین با استفاده از رمزنگاری به عنوان ابزاری برای اطمینان از انجام معاملات استفاده میکند. بنابراین، هر کسی که از بلاک چین استفاده می کند می تواند اطمینان کامل داشته باشد که به محض اینکه چیزی روی آن ثبت شود، این کار به صورت صحیح و به شکلی انجام می شود که امنیت کامل تراکنش را حفظ گردد.