بررسی تأثیر مکانیزمهای اجماع بر امنیت بلاکچین
مکانیزمهای اجماع بلاکچین، امنیت و پایداری شبکه را با جلوگیری از حملات و تمرکززدایی تضمین میکنند. در این مقاله، تأثیر مکانیزمهای مختلف مانند PoW، PoS و PoH بر امنیت بلاکچین بررسی میشود.
در روزهایی که تنور ترید ارز دیجیتال در جوامع بشری و انواع آن از جمله سوئینگ تریدینگ (Swing Trading) و روش های دیگر داغ است، توجه بسیاری از افراد به سمت این دنیای نوظهور جلب شده و به دنبال روشی برای افزایش سطح درآمد خود از طریق ورود به دنیای کریپتوکارنسی هستند؛ اما مسلما عامل کلیدی که میتواند چنین افرادی را به اهداف رویایی خود نزدیک سازد، آشنایی با مبانی، نحوه کار و اطلاعات کاربردی در ارتباط با فناوری نوین بلاک چین است. بدون داشتن اطلاعات مقدماتی، بسیاری از این افراد مبتدی به دلیل عدم آشنایی با محیطی که در حال فعالیت در آن هستند به سمت ورود ضرر حرکت کرده و نتایج بغرنجی را برای سرمایه خویش رقم خواهند زد.
یکی از مباحث بنیادین حوزه کریپتوکارنسی به نحوه فعالیت بلاک چینها و همچنین شیوه تامین امنیت آنها ارتباط دارد، مسئلهای که در طول چندین سال گذشته یکی از مشکلات این فناوری نوظهور به شمار میرفته است. تا حال به این موضوع فکر کردهاید که وظیفه حفظ و تامین امنیت شبکههای بلاک چینی که به صورت کاملا غیرمتمرکز به فعالیت خود ادامه میدهند برعهده چه بخش یا الگوریتیمی است؟!
به هنگامی که یک سرور مرکزی و متمرکز وجود نداشته باشد و کلیه دادهها میان تمامی کامپیوترها توزیع گردند، حالت عدم تمرکز رخ داده و به کلیه این کامپیوترها باهم، دفتر کل توزیع شده گفته میشود که وظیفه تامین امنیت آن بر عهده فرآیندی به نام هش (Hash) است. با توجه به اهمیت این فرآیند و ایجاد سوالات متعدد در ارتباط با آن، ما این مقاله از بلاگ کریپتوباز را به بررسی کامل این مفهوم اختصاص دادهایم؛ اگر شما هم در این زمینه کنجکاو هستید، تا انتهای این مطلب با ما همراه باشید.
الگوریتم هش، صرفا به دنیای ارز دیجیتال اختصاص نداشته و به طور کلی تابعی است که ورودی (هر نوع فایل، حرف و عدد) را گرفته و به یک خروجی رمزنگاری شده با طول ثابت، تبدیل مینماید. به بیان سادهتر، کاربرد اصلی فرآیند هشینگ در تامین امنیت به هنگام انتقال پیامی است که صرفا قصد داریم این پیام منحصرا برای یک گیرنده مشخص، قابل شناسایی باشد. به عنوان مثال اگر پیام شما به طرف مقابل عبارت باشد از این که «کلاغها طول عمر بسیار زیادی دارند» و بخواهید این پیام را به وسیله الگوریتم هش رمزنگاری نمایید، این الگوریتم پیام شما را دریافت کرده و به خروجی «6e04f289» تبدیل مینماید. حفظ امنیت فناوری بلاک چین به دلیل آن که ماهیت و کاربرد مالی دارد، یک امر کاملا ضروری بوده و در واقع به جرئت میتوان چنین ادعا کرد که هش، پایه و اساسی بوده که موجب تداوم حیات شبکههای بلاک چینی در دنیای حملات سایبری شده است.
در بلاک چینها برای نوشتن تراکنشها، زمانگذاری بر روی آنها و در نهایت افزودن آنها به عنوان بلاک جدید به بلاکهای قبلی موجود در شبکه به فرآیند هش نیاز داریم و بدون وجود آن عملا امکان مدیریت شبکه بلاک چینی وجود نخواهد داشت. جالب است بدانید که فرآیند هش کاملا یک طرفه بوده و شما با در دست داشتن خروجی قادر نخواهید بود به دادههای ورودی دسترسی داشته باشید و پس از آن که نودها در ارتباط با اضافه شدن بلاک جدید اجماع حاصل نمایند و بلاک به زنجیره اضافه شود، عملا دیگر امکان معکوس کردن فرآیند معامله وجود نخواهد داشت و همین عامل است که سبب شده تا در طول این مدتی که فناوری بلاک چین در میان جوامع بشری سر برآورده است، بتواند یکپارچگی خویش را حفظ نماید.
بنابراین، به طور خلاصه هش در بلاک چین وظیفه رمزنگاری بر روی دادههای ورودی را برعهده داشته و از این طریق موجب حفظ امنیت چنین دادههایی در شبکه بلاک چینی میگردد. ناگفته نماند که فرآیند هش در هر بلاک چین به وسیله الگوریتم خاصی انجام میگیرید، به عنوان مثال در شبکه بلاکچین بیت کوین، این الگوریتم هش، SHA-256 نام دارد.
شاید با مطالعه مطالب فوق چنین نتیجه بگیرید که فرآیند هش نوعی فرآیند رمزنگاری است؛ اما آیا واقعا چنین است؟! به طور کلی گفته شد هشینگ به فرآیندی اطلاق میشود که با کمک آن عملا امکان انجام مهندسی معکوس برای رسیدن به اطلاعات و دادههای ورودی از طریق برگرداندن دادههای خروجی وجود نخواهد داشت و از این طریق از سرقت دادهها جلوگیری کرده و لایههای امنیتی بیشتری را در اختیار شبکههای بلاک چینی قرار میدهد. با چنین توضیحی به راحتی میتوان متوجه تفاوت موجود میان فرآیند هش با فرآیند رمزنگاری شد.
در واقع رمزنگاری معمولی تابعی دو طرفه است که فرد دریافت کننده پیام میتواند آن را رمزگشایی کرده و محتویات پیام محرمانه را دریافت نموده و به اطلاعات اولیه دسترسی داشته باشد؛ در حالی که گفته شد، الگوریتم و فرآیند هش در واقع نوعی تابع یک طرفه است و هیچ موقع در آن نمیتوان از خروجی به ورودی رسید. هرچند که میان فرآیند هش و رمزنگاری عادی تفاوتهایی وجود دارد؛ اما نباید از این واقعیت نیز غافل شد که هر دوی روشهای گفته شده نقش کلیدی را در کنترل دادهها ایفا کرده و محتویات اطلاعات را به فرم و شکل دیگری تغییر میدهند.
در فرآیند حفظ امنیت شبکههای بلاک چینی ما با سه مفهوم «تابع هش»، «هش» و «هشینگ» مواجه هستیم که با وجود درهمتنیدگی بیش از حدی که در کابرد دارند؛ اما به لحاظ مفهومی با یکدیگر متفاوت هستند و نباید آنها را به جای یکدیگر استفاده نمود. برای پاسخ به این سوال که نحوه کار هش در شبکههای بلاک چینی چگونه است؟ در قدم اول باید یک تعریف اجمالی از هرکدام از این مفاهیم یاد شده داشته باشیم:
• تابع هش (Hash Function): نوعی تابع ریاضی است که خروجی آن به هش منتهی میشود.
• هش (Hash): رشتهای مرکب از کاراکترها است که دارای طول ثابتی بوده و در واقع جواب تابع هش به شمار میرود.
• هشینگ (Hashing): به فرآیند تولید هش در تابع هش اطلاق میشود.
به خاطر داشته باشید که توابع هش مختلفی وجود دارد که خروجیهایی با اندازههای متفاوتی را تولید مینمایند؛ اما لازم به ذکر است که اندازه خروجیهای هر الگوریتم همواره ثابت خواهد بود. برای درک بهتر این جمله مثالی را مورد بررسی قرار میدهیم: در الگوریتم SHA-256 صرفا قادر خواهید بود خروجی با اندازه 256 بیت را تولید نمایید و این درحالی است که با الگوریتم SHA-1 خروجی شما یک رشته کاراکتر به اندازه 160 بیت خواهد بود.
بیشتربخوانید: بلاک چین لایه 2 چیست؟
جالب است بدانید که هش خروجی با کوچکترین تغییری در داده ورودی کاملا تغییر پیدا میکند، یعنی هش دریافتی شما از «سلام» با هش دریافتی شما از «سلام!» کاملا متفاوت خواهد بود و دقیقا همین ویژگی است که موجب محبوبیت استفاده از هش و توابع هش در فناوری بلاک چین شده؛ چراکه هر بلاک دارای هش مشخصی است که این هش برای آن بلاک به منزله یک اثر انگشت بوده و کوچکترین تغییر در اطلاعات ورودی موجب تغییر در هش بلاک شده و در نهایت امکان رصد سریع این تغییرات را فراهم میآورد.
ناگفته نماند که در هر بلاک هش، بلاک قبلی نیز وجود دارد که این مسئله به یکپارچگی زنجیره بلاک چین منتهی میشود. در واقع در هر بلاک هدر نیز هشی در نظر گرفته شده است که علاوه بر اطلاعاتی نظیر زمان تولید بلاک، میزان هش ریت شبکه به هنگام تولید بلاک و تاریخچه تراکنشهای قبلی، هش بلاک قبلی نیز در آن جای گرفته است و اگر مهاجمی قصد خرابکاری در شبکه را داشته باشد و بخواهد اطلاعات بلاکی را تغییر دهد، در این صورت کلیه اطلاعات شبکه تغییر یافته و عملا امکان چنین کاری از وی سلب میگردد.
با توجه به گسترش استفاده از فناوری بلاک چین، در حال حاضر تعداد بسیار زیادی الگوریتم هش طراحی شده است؛ اما برخی از آنها کاربرد بیشتری در دنیای کریپتوکارنسی دارند که در ادامه به بررسی تفصیلی آنها میپردازیم:
نام این الگوریم در واقع نماد اختصاری عبارت «Secure Hash Algorithm» بوده که به معنای الگوریتم هش ایمن است و آن در واقع به مجموعهای از الگوریتمهایی اطلاق میشود که به وسیله موسسه ملی استاندارد و فناوری ایالات متحده آمریکا ایجاد شده و در سال 1993 توسعه یافته است. این الگوریتم پس از اصلاح به SHA-1 تبدیل شد که در واقع یک تابع هش 160 بیتی بوده و با هدف امضای دیجیتالی کردن الگوریتم به وسیله آژانس امنیت ملی ایالات متحده آمریکا طراحی گردید. سیر روند توسعه این الگوریتم مجددا از سال 2005 به دلیل تشخیص برخی از رخنههای امنیتی از سر گرفته شد و همین مسئله سبب شد تا مسیری برای طراحی الگوریتمهای هش دیگر در سالهای بعدی ایجاد گردد.
یکی از الگوریتمهای هشینگ محبوب دیگر، Whilpool نام دارد که برای نخستین بار در سال 2000 منتشر گردید و قادر است هر نوع دادهای را با طول کمتر از 2256 بایت دریافت کرده و به هش رمزنگاری شدهای با اندازه 512 بیت تبدیل نماید که در این هش 512 بیتی، اعداد موجود به صورت اعداد 128 رقمی به نمایش گذاشته میشوند. لازم به ذکر است که این الگوریتم هش دو بار تاکنون مورد بازبینی قرار گرفته است که در بار اول، S-box آن تغییر یافته که در نهایت این تغییر منجر به پیادهسازی راحتتر این الگوریتم بر روی سختافزارها گردید و بار دوم که در سال 2003 رخ داد، نواقص امنیتی موجود در آن به طور کامل برطرف گردید.
خود الگوریتم بلیک به دو نوع مختلف تقسیم شده است که در نوع اول آن دادههای 32 بیتی دریافت شده و هشی به طول 256 بیت تولید میشود و در نوع دوم آن که دادههای 64 بیتی دریافت میشود، طول هش به 512 بیت میرسد. معروفترین عضو خانواده الگوریتم بلیکها، Blake2 نام دارد که در سال 2012 معرفی گردید. خود این الگوریتم Blake2 به دو زیرمجموعه Blake2b و Blake2s تقسیم شده که به لحاظ امنیتی در مقایسه با سایر الگوریتمهای هش موجود در این خانواده عملکرد بسیار بهتری را از خود به نمایش گذاشتهاند.
برای آن که یک تابع و به طور کلی هش بتواند اهداف مورد انتظار شبکه بلاک چینی را برآورده سازد، به 3 ویژگی عدم قابلیت پیشبینی خروجی یکسان، عدم تصادم و یک طرفه بودن نیاز دارد که در ادامه به بررسی این ویژگیهای هش در دنیای کریپتوکارنسی میپردازیم:
• عدم امکان پیشبینی خروجی یکسان و عدم تصادم: این ویژگی به این شرح است که عملا امکان این که با داشتن یک ورودی و خروجی مشخص بتوان یک ورودی دیگر را امتحان کرد که همان خروجی قبلی را داشته باشد، وجود ندارد. در واقع شخص حمله کننده قصد دارد با ارائه ورودی جدید به همان خروجی قبل دست پیدا کند؛ در این حالت ورودی تغییر یافته ولی خروجی هش همان هش قبلی تولید شده است! در الگوریتم هش بلاک چین عملا یافتن خروجی یکسان از دو ورودی متعدد میتواند امنیت شبکه را زیر سوال ببرد؛ در نتیجه هر تابع هش بایستی در برابر عدم خروجی یکسان مقاوم بوده و حملات پیشبینی خروجی یکسان را خنثی نماید.
• یک طرفه بودن Hash: تابع هش مورد استفاده از در شبکه بلاک چین دارای ویژگی یک طرفه بودن، بوده و احتمال این که بتوان از طریق هش خروجی به دادههای ورودی دست پیدا کردی، امری بسیار دشوار و غیرعملی است.
مسلما هر چه کاربران مبتدی دنیای نوظهور دنیای کریپتوکارنسی، اطلاعات بیشتری در ارتباط با سطح امنیت شبکههای بلاک چینی داشته باشند، به همان میزان با خیال راحتتر میتوانند به این صنعت مالی جدید اعتماد کرده و سرمایه خویش را در اختیار آن قرار دهند. بخش قابل توجهی از تامین امنیت شبکه بلاک چینی بر عهده توابع و الگوریتمهای هش بوده که دادههای ورودی را رمزنگاری کرده عملا امکان هرگونه دخل و تصرف در آنها را از مهاجمان سلب مینمایند. با توجه به چنین نقش کلیدی، ما این مقاله از کریپتوباز را به بررسی دقیق مفهوم هش در دنیای ارزهای دیجتال اختصاص دادیم و همان طور که در مطالب فوق مشاهده کردید، هش در واقع رشتهای از کاراکترهای با طول ثابت است که از طریق تغییراتی که به وسیله تابع هش بر روی دادههای ورودی ایجاد کرده، به وجود میآید و عملا امکان انجام مهندسی معکوس برای تشخیص دادههای ورودی در آن وجود ندارد. ناگفته نماند که اگر در ارتباط با مفهوم هش در کریپتوکارنسی سوالی دارید که در این مقاله به آن اشاره نشده است، میتوانید سوال خود را در بخش نظرات مطرح کنید تا کارشناسان ما در اسرع وقت به سوال شما پاسخ دهند.
عدم تصادم، عدم قابلیت پیشبینی خروجی یکسان و یک طرفه بودن از ویژگیهای توابع هش موجود در شبکههای بلاک چینی است.
پاسخ به این سوال منفی است و سالها قبل از ظهور شبکههای بلاک چینی نیز از این توابع استفاده میشد.
ورودی با هر نوع داده و اندازهای وارد تابع هش شده و با توجه به الگوریتم آن تغییر پیدا کرده و به یک رشته کاراکتر با طول ثابت تبدیل میشود.