تاثیر رمزنگاری در بلاکچین – انواع الگوریتم های رمزنگاری کدامند؟
بلاکچین از فناوریهای نوظهوری به حساب میآید که که به عقیده خیلی از افراد در آینده کاربرد خیلی گستردهتری خواهد داشت و در حال حاضر این فناوری در حال گسترش در سطح جامعه و ورود به حوزههای مختلف است. بلاکچین خود با بهرهگیری از فناوریهای مختلف از جمله دفتر توزیع شده، مکانیزم اجماع و رمزنگاری ایجاد شده است. موردی که در این مقاله به آن خواهیم پرداخت، رمزنگاری در بلاکچین و انواع آن میباشد.
رمزنگاری یا کریپتوگرافی بر این اصل ایجاد شده است که فرستنده بتواند یک پیامی را ارسال کند که فقط توسط گیرنده قابل فهم باشد و در بین مسیر هیچ کس دیگری نتواند اطلاعاتی از آن داده به دست آورد. برای درک بهتر این مطلب بهتر است مروری به گذشته داشته باشیم؛ ریشه های رمزنگاری را می توان در مصر باستان یافت که در آن آثار رمزنگاری حتی در مقبرههایی که حدود ۱۹۰۰ سال قبل از میلاد ساخته شده است نیز دیده می شود. البته باستان شناسان اعتقاد دارند که این کار در جهت مخفی کردن اطلاعات نبوده و صرفا به منظور ایجاد سرگرمی صورت گرفته است اما پس از آن آثاری از رمزنگاری در روم باستان نیز دیده شده است، رومیان باستان با جا به جا کردن حروف کلمات، دادهها و پیامها را رمزنگاری میکردند و تنها کسی قادر به درک آن پیام بود که کلید مخصوص رمز گشایی را داشت. این موضوع نشان دهنده آن است که علاقه و حس نیاز در جامعه انسانی نسبت به رمزنگاری بحث جدید نبوده و ریشه دیرینه دارد؛ رفته رفته با اهمیت بخشیدن به حفظ امنیت داده توسط جامعه، در دنیای امروزه اهمیت رمزنگاری به صورت آشکار دیده میشود.
رمزنگاری چیست؟
امروزه دادههای مهم صرفا توسط دولتها جا به جا نمیشوند و موضوع حفاظت از امنیت اطلاعات و حریم خصوص شکل خیلی کلیتری را در سطح جامعه به خود گرفته است و اهمیت این موضوع را بیش از پیش شاهد هستیم. رمزنگاری یا همان کریپتوگرافی یک راه حل برای حفظ امنیت اطلاعات است به صورتی که فرستنده داده را با استفاده از یک یا چند الگوریتم ریاضی کدگذاری میکند (به اصطلاح به این کار Encrypt کردن گفته میشود) تا برای عموم قابل فهم نباشد و صرفاً گیرندهای مورد نظر با استفاده از کلید مخصوصی که در اختیار دارد توانایی رمزگشایی این داده را داشته باشد و با استفاده از این کلید، داده رمزنگاری شده را به حالت اولیه تبدیل کند (به این کار Decrypt کردن گفته میشود). در طول تاریخ، الگوریتمهای ریاضی و روشهای رمزنگاری همواره پیشرفت کرده است تا به حالت پیشرفته امروزی در آمده است.
دنیای رمزنگاری را میتوان به یک میدان جنگ تشبیه کرد که در آن دو گروه در حال جنگ با یک دیگر میباشند؛ گروهی که در حال ایجاد روشهای نوین و پیشرفته برای رمزنگاری و حفظ امنیت داده میباشند و گروهی که به دنبال هک کردن و ایجاد اختلال در فرایند رمزنگاری دارند تا به دادهها دسترسی داشته باشند. از این رو گروهی که به فکر حفاظت از امنیت دادههای خود میباشد، باید همواره در حال رشد و پیشرفت باشد و با بهرهگیری از روشهای نوین از ایجاد شدن اختلال توسط گروه مخالف به دور باشند.
مهم ترین اصول رمزنگاری
رمزنگاری در حالت کلی متشکل از ۴ اصل مهم است.
- محرمانگی: دادهای که رمزنگاری میشود به صورت محرمانه است و نباید برای عموم (افرادی که به کلید دسترسی ندارند) قابل درک باشد.
- یکپارچگی: دادهها باید به صورت یکپارچه انتقال یابند و نباید در هنگام ذخیره سازی و یا در حین انتقال بین فرستنده و گیرنده، داده دچار تغییرات شود.
- عدم انکار: در رمزنگاری باید فضایی ایجاد شود که فرستنده توان انکار پیام ارسال شده را نداشته باشد.
- احراز هویت: فرستنده باید احراز هویت شود (هویت فرستنده برای گیرنده تایید شود) تا گیرنده بتواند آن پیام را قبول کرده و به آن عمل کند.
کاربرد رمزنگاری در بلاکچین
اکنون که با مفهوم رمزنگاری آشنا شدیم در ادامه میخواهیم کاربرد آن در دنیای رمزارزها را نیز بررسی کنیم. در دنیای بلاکچین و رمزارزها برای انجام رمزنگاری به دو کلید نیاز است، کلید خصوصی که به آن Private key گفته میشود و کلید عمومی که به آن Public key گفته میشود. کلید عمومی همان آدرس کیف پولی است که با استفاده از آن ارزها به کیف پول انتقال پیدا میکنند و حفاظت از امنیت آن اهمیتی ندارد و همانطور که از اسمش پیداست قابل استفاده برای عموم میباشد؛ این کلید را میتوانید بدون نگرانی به هر کسی داد و طرف مقابل با دسترسی به کلید عمومی تنها توانایی ارسال دارایی به کیف پول شما را خواهد داشت. ولی در مقابل کلید خصوصی اهمیت بالایی دارد و در واقع این کلید در جهت مدیریت دارایی های یک کیف پول و انتقال دارایی از آن استفاده میشود؛ همانطور که از اسمش پیداست یک کلید شخصی و خصوصی میباشد و رمزنگاری و حفاظت از آن اهمیت بسزایی دارد. دقت داشته باشید این ساختار در بین این جفت کلید به صورت یکطرفه است، یعنی شما با استفاده از کلید خصوصی (Private key) میتوانید به کلید عمومی (Public key) دسترسی داشته باشید در حالی که خلاف این امر یعنی دسترسی به کلید خصوصی (Private key) توسط کلید عمومی (Public key) امکان پذیر نیست.
انواع رمزنگاری در بلاکچین
برای درک بهتر نحوه رمزنگاری و کریپتو گرافی در دنیای بلاکچین بهتر است ابتدا با انواع رمزنگاری ها آشنا شویم، در ادامه این مطلب به بررسی سه مدل رمزنگاری خواهیم پرداخت:
رمزنگاری به شیوه کلید متقارن
در این روش که به آن رمزنگاری به شیوه کلید سری نیز گفته میشود همان کلیدی که برای کد گذاری و Encrypt کردن استفاده میشود در جهت رمزگشایی و Decrypt کردن نیز استفاده میشود، مشکلی که در این نوع رمزنگاری وجود دارد این است که این نوع رمزنگاری دو طرفه است و احتمال ایجاد اختلال بیشتر است و امنیت را کاهش میدهد.
رمزنگاری به شیوه کلید نامتقارن
در این روش که به آن رمزنگاری توسط کلید عمومی گفته می شود بر خلاف روش قبلی از یک جفت کلید برای رمزنگاری استفاده میشود، یک کلید عمومی برای کد گذاری و Encrypt کردن و یک کلید خصوصی برای رمزگشایی یا Decrypt کردن. هر جفت کلید که از یک کلید خصوصی و یک کلید عمومی تشکیل شده است کاملا به صورت منحصر به فرد ایجاد میشود.
رمزنگاری به شیوه تابع هش
این نوع رمزنگاری بر خلاف دو نوع قبلی از کلیدها استفاده نمیکند و به جای آن از تابعی استفاده میکند که هر ورودی که به آن وارد می شود را به یک عبارت با تعدادی حروف ثابت تبدیل میکند. این تابع یکطرفه است یعنی خروجی که از تعداد مشخصی حروف تشکیل شده است توان رمزگشایی شدن و برگشت به حالت اولیه را ندارد، برگشت به منظور تبدیل مجدد خروجی (داده یا همان پیام رمزنگاری شده) به ورودی (داده یا همان پیام قبل از رمزنگاری شدن) است که در این نوع رمزنگاری این عمل تقریبا غیرممکن است.
توابع هش و هشینگ در رمزنگاری
از انواع مدلهای رمزنگاری که بالاتر اعلام شد مدل رمزنگاری به شیوه تابع هش کاربرد بیشتری در حوزه رمزنگاری و امنیت اطلاعات دارد. در این نوع رمزنگاری ورودی میتواند به هر میزانی کاراکتر داشته باشد ولی باید خروجی به میزان مشخصی کاراکتر داشته باشد، یعنی فارغ از این که ورودی از چند کاراکتر تشکیل شده است تابع تمام خروجی های خود را با طول ثابت ایجاد میکند (برای مثال تمام خروجی ها در یک نوع تابع هش خاص باید ۱۶ کاراکتر داشته باشد). از دیگر موارد قابل ذکر در رابطه با توابع هش این است که یک خروجی نمیتواند متعلق به دو ورودی باشد، یعنی اگر عبارت A بعد از رمزنگاری شدن مقدار هش ۱۰۰ را نمایش دهد نباید عبارتی به اسم B وجود داشته باشد که بعد از رمزنگاری شدن همین مقدار هش یعنی ۱۰۰ را در خروجی به نمایش بگذارد. یک عملیات هشینگ میتواند از چندین تابع هش پیوسته تشکیل شده و استفاده کند. یکی از پرکاربردترین توابع هش مخصوصا در دنیای بلاکچین توابع خانواده SHA هستند که در ادامه به انواع آن خواهیم پرداخت.
تابع هش SHA چیست؟
عبارت SHA مخفف secure hashing algorithm به معنای الگوریتم هش کردن یا هشینگ به صورت امن است. خانواده توابع هشینگ SHA از ۴ نسل SHA-0 , SHA-1 , SHA-2 , SHA-3 تشکیل شده است. اولین نسل این توابع SHA-0 بود که در سال ۱۹۹۳ به وجود آمد و اندکی پس از انتشار به دلیل نقص فنی با مدل آپدیت شده SHA-1 جایگزین شد. تابع هش SHA-1 هر داده ورودی را به یک هش ۱۶۰ بیتی (۲۰ بایتی) تبدیل میکند که به این خروجی “خلاصه پیام” نیز گفته می شود. البته در حالی که این مدل همچنان کاربرد دارد اما میتوان گفت این مدل هم شکست خورده است. در ادامه این مدل نیز توسط سازمان های NSA و NIST به نسل بعدی یعنی SHA-2 ارتقا پیدا کرد که این مدل در دنیای بلاکچین نیز کاربرد بالایی دارد.
تابع هش SHA-2 چیست؟
تابع SHA-2 از نظر تعداد بیت در مقدار هش (خروجی) تفاوتهایی با نسل قبلی خود داشت که خود این تابع بر اساس مقدار هش به ۴ دسته تقسیم میشوند که عبارتند از:
SHA-224 , SHA-256 , SHA-384 , SHA-512 . هر مدل بر اساس بیت مقدار هش نام گذاری شده اند که از این مدل ها مدل SHA-256 کاربرد زیادی در دنیای بلاکچین دارد. در حالی که تا به حال هیچ مشکلی برای این تابع به وجود نیامده است اما SHA-2 هم بر پایه همان نسل قبلی خود یعنی SHA-1 درست شده است به همین دلیل سازمان NIST تابع SHA-3 را به منظور تابعی بهینهتر طراحی کرد، سازمان NIST این تابع را با استفاده از استانداردهای Keccak-256 طراحی کرده است که از نظر امنیتی امتیازات خیلی بیشتری نسبت به نسل قبلی خود یعنی SHA-2 دارد.
تابع SHA-256 و کاربردش در بلاکچین
این تابع هش مقدار هشی به اندازه ۲۵۶ بیت ایجاد می کند. بلاکچین بیت کوین از این تابع در الگوریتم اثبات کار خود در جهت افزایش میزان امنیت و حفاظت از حریم خصوصی استفاده کرده است. بیت کوین و انشعابهای آن از جمله بیتکوین کش (Bitcoin cash) و بیتکوین اس وی (Bitcoin SV) نیز از این الگوریتم استفاده میکنند. تابع هش SHA-256 تا به حال عملکردی عالی داشته و هیچ نقطه ضعفی از این تابع شاهد نبودیم ولی آیا به نظر شما این روند ادامهدار خواهد بود؟
تابع SHA-256 چه ریسکهایی دارد؟
در ابتدا مقاله در رابطه با گذشته رمزنگاری و پیشرفت آن در طول تاریخ صحبت کردیم. در کنار پیشرفت رمزنگاری همواره تکنولوژی هم پیشرفت کرده است. با پیشرفت تکنولوژی و ایجاد کامپیوترهای قویتر الگوریتمهایی که یک زمان بی نقص بودند نیز تحت حمله قرار گرفته و یا کارایی خود را از دست دادهاند. این مورد در رابطه با الگوریتم SHA-256 که تا به حال بی نقص بوده نیز می تواند صدق کند و در سال ها و یا دهههای آینده با ایجاد کامپیوترهای قدرتمندتر و با توان محاسباتی بالاتر این تابع نیز کاربرد خود را از دست بدهد و تکنولوژیها و توابع جدیدتری جایگزین این تابع شوند. بنابراین دقت داشته باشید که نمیتوان هیچ تابعی را برای همیشه کاملا امن دانست. البته الگوریتمهای رمزنگاری نیز قابلیت آپدیت شدن دارند و بیت کوین هم با استفاده از تکنیکها و تکنولوژیهای جدیدتر (مانند Segwit) خودش را تقویت کرده و در آینده هم این کار را انجام خواهد داد.
دیگر توابع رمزنگاری استفاده شده در دنیای رمزارزها
به جز تابع SHA-256 الگوریتمها و توابع مختلفی در دنیای رمزارزها استفاده شدهاند، از جمله الگوریتمهایی مانند Scrypt که در بلاکچین Litecoin استفاده شده است، تابع رمزنگاری Keccak-256 که در بلاکچین اتریوم استفاده میشود و یا الگوریتم X11 که در بلاکچین Dash مورد استفاده قرار گرفته است و چندین و چند الگوریتم مختلف که در بلاکچین مختلف استفاده میشوند.
جمعبندی
در طول تاریخ ،جوامع بشری همیشه به دنبال انتقال اطلاعات و پیام به صورت کاملا امن بودهاند و به همین دلیل رمزنگاری شکل گرفته است اما با توجه به مورد حمله قرار گرفتن هر کدام از روش ها، همواره روشها و الگوریتمهای رمزنگاری جدیدتری به وجود آمده اند تا به تدریج حالت رمزنگاری امروزی شکل گرفته است، در آینده نیز مطمئنا روش های جدید تر و پیشرفته تری برای رمزنگاری به وجود خواهند آمد و روش ها و توابع امروزی کاربرد خود را از دست خواهند داد.
من واقعا خیلی تا خیلی از این صداقت شما عر۸ جا خوردم که چرا بعضی ها این زحمت همای فوقالعاده را میکشید قدر نشناس هستند من بااین مطلب که بینایم را از دست دادم ولی این کودکان خورد سال یتیم پاره پوره این مطالب را برایم میخونند این قدر قصه میخورم که هزار حیف که بینایم را از دست دادم. کسی نیست که کمک کند از این شرایط دربیام واین آموزش ها به این زیبای را بخونم وبسیار تا بسیار به اطلاعاتم اضافه شود امیدوارم که عزیزان همیش موفق باشید که هستید چون وقتی صداقت داشته باشید خداوند متعال خودش چنان بالا بالا میبرد شما را که حتی توی خواب شب هم فکرش را نکنید
سلام ممنون از محبت شما. انشاالله سلامتیتان را دوباره بدست آورید.