هش – Hash در بلاک چین و ارزهای دیجیتال چیست؟
به فرایندی که در آن اطلاعات در اندازههای مختلف را بتوان به رشتهای با اندازه ثابت تبدیل کرد هشینگ یا «هش» (Hash) میگویند. هش در بلاک چین توسط الگوریتم خاصی انجام میشود. بهعنوان مثال الگوریتم هش بیت کوین «SHA-256» نام دارد.
این الگوریتم وظیفه هش در بلاک چین را در شبکه بیت کوین به عهده دارد. هش در بلاک چین در واقع نوعی رمزنگاری را بر روی اطلاعات ورودی انجام میدهد. بنابراین هش در بلاک چین باعث حفظ امنیت اطلاعات در شبکه میشود.
با توجه به اینکه خروجی هش شده بدون در نظر گرفتن اندازه اطلاعات ورودی همواره مقداری با اندازه ثابت است، بنابراین جستجو و فراخوانی اطلاعات بسیار آسانتر انجام میشود. البته افزایش امنیت و سهولت در ارسال و دریافت تراکنشها از دیگر مواردی است که هش در بلاک چین انجام آنها را مقدور میکند.
تابع هش در بلاک چین چیست ؟
تابع هش در بلاک چین در واقع کار رمزنگاری را انجام میدهد. فرایند هشینگ در بلاک چین توسط الگوریتمهای هش یا همان توابع هش انجام میگیرد. تابع هش تابعی یکطرفه است. بنابراین هنگامی که فرایند هشینگ انجام شد از خروجی نمیتوان به ورودی رسید. هر تغییر جزئی در اطلاعات ورودی به تابع هش، خروجی کاملا متفاوتی را به شما میدهد. تابع هش علاوه بر کاربرد در بلاک چین، در ذخیرهسازی رمزهای عبور بهصورت ایمن و رمزنگاری شده نیز کاربرد دارد.
هشینگ (Hashing) به فرآیند تولید خروجیها با اندازه ثابت، از ورودیها با اندازههای متغیر گفته میشود. این کار با استفاده از فرمولهای ریاضی معروف به توابع و الگوریتمهای Hash صورت میپذیرد.
اگرچه همه کاربردهای Hash شامل استفاده در رمزنگاری نیستند، اما اصطلاحاً توابع هش رمزنگاری در هسته ارزهای رمز پایه قرار دارند. به لطف آنها، بلاک چینها و سایر سیستمهای توزیع شده میتوانند به سطح قابل قبولی از یکپارچگی و امنیت دادهها دست یابند.
خروجیهای الگوریتمهای هش مرسوم و الگوریتمهای مورد استفاده در رمزنگاری، قطعی هستند. قطعی بودن به این معنی است که تا زمانی ورودی تغییر نکند، این الگوریتمها همیشه همان خروجی را تولید میکنند.
به طور معمول، الگوریتمهای Hash رمز ارزها به عنوان توابع یک طرفه طراحی میشوند، بدین معنی که بدون صرف مقدار زیادی زمان و محاسبات پیچیده، نمیتوان آنها را به راحتی برگرداند. به عبارت دیگر، ایجاد خروجی از ورودی کاملاً آسان بوده، اما حرکت در جهت مخالف (تولید ورودی از خروجی) بسیار دشوار است. به طور کلی، یافتن ورودی هرچه دشوارتر باشد، الگوریتم هش امنتر محسوب میشود.
آیا هش در بلاک چین نوعی رمزنگاری است ؟
هشینگ نوعی رمزنگاری است بهطوریکه با مهندسی معکوس نمیتوان از خروجی تابع هش به مقدار و اطلاعات ورودی رسید. بنابراین هش در بلاک چین تابعی یکطرفه است که برای حفظ و امنیت اطلاعات رد و بدل شده بین افراد ایجاد شده است. در این حالت رمزهای عبوری که توسط افراد استفاده میشود نیز به هش تبدیل میشوند. هشینگ اطلاعات از سرقت اطلاعات جلوگیری میکند و لایه امنیتی بیشتری را در اختیار شبکه قرار میدهد.
فرق رمزنگاری و هش چیست ؟
ممکن است افرادی در برخی از گروهها، برای اینکه اطلاعات گروه به طرف مقابل نشر پیدا نکند، از رمزنگاری استفاده کنند. رمزنگاری برای این منظور، بهگونهای صورت میگیرد که افراد همگروه بتوانند اطلاعات رمزنگاری شده افراد خودی را رمزگشایی و از اطلاعات آن استفاده کنند، درصورتیکه اطلاعات هش شده را نمیتوان به تابع هش داد و ورودی هش نشده را دریافت کرد.
بنابراین میتوان گفت رمزنگاری معمولی تابعی دوطرفه است و افراد دیگر در صورت نیاز میتوانند با رمزگشایی به اطلاعات اولیه دسترسی یابند. درحالیکه الگوریتم هش در بلاک چین تابعی یکطرفه است.
چرا هش ها مهم هستند؟
توابع هش دارای کاربردها و موارد استفاده گستردهای هستند؛ از جمله جستجوی پایگاه داده، تجزیه و تحلیل پروندههای بزرگ و مدیریت دادهها. از طرف دیگر، توابع Hash رمزنگاری به طور گسترده در برنامههای امنیتی اطلاعات، مانند تأیید اعتبار پیام و اثر انگشت دیجیتال استفاده میشود. وقتی صحبت از بیت کوین میشود، تابع هش رمزنگاری یک بخش اساسی از فرآیند استخراج است و همچنین در تولید آدرسها و کلیدهای جدید نقش مهمی دارد.
قدرت واقعی Hash در هنگام مواجهه با حجم عظیمی از اطلاعات مشخص میشود. به عنوان مثال، میتوان یک فایل یا مجموعه داده بزرگ را از طریق یک تابع هش اجرا و سپس از خروجی آن استفاده کرد تا سریعا صحت دادهها بررسی شود. این امر به دلیل ماهیت قطعی توابع هش امکانپذیر است، به این معنی که ورودی همیشه منجر به یک خروجی ساده و متراکم (هش) میشود. چنین تکنیکی، نیاز به ذخیرهسازی و به خاطر سپردن مقادیر زیاد داده را از بین میبرد.
هش به ویژه در زمینه فناوری بلاک چین بسیار کارایی دارد. بلاک چین بیت کوین چندین عملیات که هش کردن یکی از آنهاست را شامل میشود. کاربرد عمده هش در فرآیند استخراج است. در واقع، تقریبا تمام پروتکلهای رمز ارزها برای ایجاد ارتباط و متراکم کردن گروه تراکنشها، به بلاکها و همچنین تولید پیوندهای رمزنگاری بین هر بلاک، به هش نیاز دارند. به گونهای که Hash به طور موثر، ایجاد بلاک چین را ممکن میسازند.
کاربرد درخت مرکل در هش بلاک
تراکنشهای رمزارزی بعد از هش شدن در فرایندی بهصورت دو به دو جفت و هش میشوند. این هش در فرایندی مشابه، دوباره با هش حاصل از جفتی دیگر، هش جدیدی را تشکیل میدهد. این فرایند به همین شکل ادامه پیدا میکند و در نهایت هش ریشه مرکل حاصل میشود. این هش خلاصه شده، در پایان در بلاک هدر قرار میگیرد. استفاده از درخت مرکل باعث آسانتر شدن دسترسی به اطلاعات تراکنشهای داخل هر بلاک میشود. بنابراین با کمک درخت مرکل بهراحتی میتوان تغییرات یا دستکاری در اطلاعات بلاک را متوجه شد. با توجه به این که ریشه مرکل که در بلاک هدر قرار دارد خلاصهای از تمامی تراکنشهای داخل بلاک را در خود دارد بنابراین، کوچکترین تغییر در تراکنشهای داخل بلاک باعث تغییر ریشه مرکل میشود.
درخت مرکل تمامی تراکنشهای داخل بلاک را بهصورت خلاصه شده در ریشه مرکل قرار میدهد. بنابراین اطلاعات هشینگ تراکنشها را میتوان از طریق ریشه مرکل اعتبارسنجی کرد. به عبارتی دیگر کاربر بدون اینکه مجبور شود اطلاعات زیادی را از بلاک چین دانلود کند با کمک Merkle tree میتواند از وجود تراکنشی خاص داخل بلاک آگاه شود.
هش در بلاک هدر
«بلاک هدر» (Block Header) قسمتی از بلاک است که خلاصهای از اطلاعات بلاک را در خود جای داده است. برخی از اطلاعاتی که در بلاک هدر وجود دارد در فهرست زیر آورده شده است.
زمان تولید بلاک سختی شبکه در زمان تولید بلاک تاریخچه تراکنشهای داخل بلاک هش بلاک قبلی مهمترین نکته در بلاک هدر این است که هش بلاک قبلی در بلاک هدر وجود دارد. بنابراین اگر فردی بخواهد حرکت مجرمانهای انجام دهد و اطلاعات بلاک را تغییر دهد، تمامی هشها در بلاک چین تغییر میکنند و در عمل نمیتواند این کار را انجام دهد.
خروجی تابع هش در بلاک چین
اندازه خروجی هر تابع هش در بلاک چین با خروجی تابع هش دیگر متفاوت است. اما اندازه خروجی یک تابع هش در بلاک چین همواره مقداری ثابت است. به عنوان مثال الگوریتم SHA-256 همواره خروجی 256 بیتی به ما میدهد. این تابع هش در بلاک چین بیت کوین استفاده میشود.
کاربردهای هش در کریپتوگرافی
یک تابع Hash که تکنیکهای رمزنگاری را به کار میبرد، به عنوان یک “تابع هش رمزنگاری” تعریف میشود. به طور کلی، شکستن عملکرد Hash رمزنگاری نیاز به تلاش مداوم بسیار زیادی دارد. برای اینکه شخص یک عملکرد هش رمزنگاری را برگرداند، باید با استفاده از سعی و خطا، حالات مختلف ورودی را امتحان کند تا به خروجی مدنظر برسد.
با این وجود، امکان تولید یک خروجی مشابه از ورودیهای مختلف نیز وجود دارد که به آن مشکل خروجی یکسان یا تصادم (Collision) میگویند.
از نظر فنی، یک تابع Hash رمزنگاری باید سه ویژگی داشته باشد تا ایمن محسوب شود. این ویژگیها را میتوانیم تحت عناوین: عدم تصادم، یک طرفه بودن و عدم پیش بینی خروجی یکسان توصیف کنیم.
قبل از بحث در مورد هر ویژگی، بیایید منطق آنها را در سه جمله کوتاه خلاصه کنیم.
عدم تصادم: هر ورودی خاص، خروجی مختص به خود را دارد. یک طرفه بودن: برگرداندن تابع Hash (یافتن ورودی از یک خروجی معین) غیرممکن است. عدم پیش بینی خروجی یکسان: با داشتن یک ورودی و خروجی مشخص، امکان یافتن ورودی متفاوت دوم که همان خروجی قبلی را تولید کند، وجود ندارد.
عدم تصادم در Hash
همانطور که گفته شد، خروجی یکسان زمانی اتفاق میافتد که ورودیهای مختلف، هش دقیقا یکسانی را تولید کنند. بنابراین، تابع هش تا لحظهای که چنین دادههایی را تولید نکند، در برابر خروجی یکسان مقاوم محسوب میشود. توجه داشته باشید که خروجی یکسان برای هر تابع هش همیشه وجود خواهد داشت، زیرا ورودیهای احتمالی بینهایت بوده، در حالی که خروجیهای ممکن محدود هستند.
به عبارت دیگر، عملکرد هش هنگامی که احتمال یافتن خروجی یکسان بسیار کم است، بهطوری که به میلیونها سال محاسبات نیاز باشد، در برابر تصادم، مقاوم در نظر گرفته میشود. بنابراین علیرغم این واقعیت که هیچ عملکرد هش بدون تصادمی وجود ندارد، برخی از آنها به اندازه کافی قوی هستند که بتوان آن را مقاوم دانست (به عنوان مثال SHA-256).
در میان الگوریتمهای مختلف SHA، گروههای SHA-0 و SHA-1 دیگر ایمن نیستند زیرا خروجی یکسان در دادههای آنها مشاهده شده است. در حال حاضر، گروههای SHA-2 و SHA-3 در برابر تصادم مقاوم در نظر گرفته میشوند.
یک طرفه بودن هش
توابع هش، یک طرفه هستند. یک تابع هش هنگامی دارای این ویژگی است که احتمال بسیار کمی برای پیدا کردن ورودی یک خروجی خاص وجود داشته باشد. این ویژگی برای عملکرد یک تابع Hash و امنیت آن بسیار مهم است.
توجه داشته باشید که ویژگی یک طرفه بودن با عدم تصادم متفاوت است، زیرا در این حالت یک مهاجم سعی میکند با دیدن یک خروجی داده شده، ورودی را حدس بزند، اما تصادم هنگامی رخ میدهد که کسی دو ورودی متفاوت پیدا کند که یک خروجی را تولید میکنند، ولی مهم نیست که از کدام ورودیها استفاده شده است.
ویژگی یک طرفه بودن برای محافظت از دادهها بسیار ارزشمند است، زیرا هش ساده یک پیام، میتواند صحت آن را اثبات کند، بدون اینکه نیازی به افشای اطلاعات باشد. در عمل، بسیاری از ارائهدهندگان خدمات و برنامههای وب، هشهای تولید شده از رمزهای عبور را به جای رمزهای عبور ذخیره و استفاده میکنند.
عدم پیش بینی خروجی یکسان
برای ساده کردن موضوع میتوانیم بگوییم که عدم پیش بینی خروجی یکسان در واقع بین دو ویژگی قبلی قرار میگیرد. حمله پیش بینی خروجی یکسان زمانی اتفاق میافتد که فردی با داشتن یک ورودی و خروجی مشخص، بتواند ورودی جدیدی را پیدا کند که خروجی آن، با خروجی قبلی یکسان باشد. به عبارت دیگر، یک حمله پیش بینی خروجی یکسان شامل یافتن خروجی یکسان دو ورودی است، اما آنها به جای جستجوی دو ورودی تصادفی که هش یکسان تولید میکنند، ورودی را جستجو میکنند که همان Hash تولید شده توسط ورودی خاص دیگری را ایجاد میکند.
بنابراین، هر تابع Hash که در برابر عدم خروجی یکسان مقاوم باشد، در برابر حملات پیش بینی خروجی یکسان نیز مقاوم است، زیرا ویژگی سوم همیشه به معنی خروجی یکسان است. با این حال، هنوز هم میتوان یک حمله پیش بینی خروجی را به عملکرد مقاوم در برابر خروجی یکسان انجام داد، زیرا این امر به معنای یافتن یک ورودی واحد از یک خروجی است.
کاربرد Hash در استخراج
مراحل زیادی در استخراج بیت کوین وجود دارد که در آنها از توابع هش استفاده میشود؛ مانند بررسی مانده، پیوند دادن ورودی و خروجی تراکنشها و هش تراکنشهای درون یک بلاک برای تشکیل یک درخت مرکل. اما یکی از دلایل اصلی امنیت بلاک چین بیت کوین این مسئله است که ماینرها برای یافتن یک Hash معتبر برای بلاک بعدی، نیاز به اجرای بیشمار تابع هش دارند.
به طور خاص، یک ماینر هنگام ایجاد مقدار هش برای بلاک مورد نظر خود، مجبور است چندین ورودی مختلف را امتحان کند. در واقع، آنها فقط در صورتی قادر به اعتبارسنجی بلاک خود هستند که بتوانند یک هش با تعداد صفرهای اولیه مشخص پیدا کنند. تعداد صفرها چیزی است که سختی استخراج را تعیین میکند و بسته به میزان Hash اختصاص داده شده متفاوت بوده و توسط شبکه تعیین میشود.
در این حالت، نرخ هش یا هش ریت (Hash rate) نشاندهنده میزان قدرت پردازش شبکه در استخراج بیت کوین است. اگر میزان Hash شبکه افزایش یابد، پروتکل بیت کوین به طور خودکار سختی استخراج را تنظیم میکند تا میانگین زمان لازم برای استخراج یک بلاک نزدیک به 10 دقیقه باقی بماند. در مقابل، اگر چندین استخراج کننده تصمیم بگیرند که از شبکه خارج شوند و باعث کاهش قابل توجه میزان Hash شوند، سختی استخراج تنظیم شده و ماینینگ آسانتر میشود (تا میانگین زمان بلاک به 10 دقیقه برسد).
توجه داشته باشید که ماینرها مشکلی با خروجی یکسان Hash ندارند، زیرا چندین هش وجود دارد که میتوانند به عنوان یک خروجی معتبر تولید کنند (شروع هش با تعداد مشخصی صفر). بنابراین چندین راه حل ممکن برای یک بلاک خاص وجود دارد و استخراج کنندگان فقط باید یکی از آنها را پیدا کنند. این مسئله با توجه به آستانه تعیین شده توسط سختی استخراج مشخص میگردد.
از آنجایی که استخراج بیت کوین یک کار هزینهبر است، استخراجکنندگان دلیلی برای تقلب در سیستم ندارند، زیرا این امر منجر به ضررهای مالی قابل توجهی میشود. هر چه ماینرهای بیشتری به بلاک چین بپیوندند، شبکه بزرگتر و قویتر خواهد شد.
اهمیت هش در بلاک چین
بلاک چین نوعی دفتر کل توزیع شده است. بنابراین اطلاعات بلاک چین بین تمامی نودهای شبکه پخش میشود. با توجه به اینکه نهاد متمرکزی برای نظارت بر روی صحت انجام تراکنشها در بلاک چین وجود ندارد، بنابراین نیاز برای وجود مکانیزمی برای اجماع بین نودهای شبکه احساس میشود. این سازوکار، مکانیزم اجماع در بلاک چین نام دارد. با توجه به اینکه بستر بلاک چین محلی برای رد و بدل اطلاعات مختلف بین نودهای شبکه است بنابراین تمامی اطلاعات باید توسط لایههایی امنیتی محافظت شوند. هش در بلاک چین این امکان را به نودهای شبکه میدهد تا بتوانند اطلاعات را در محیطی رمزنگاری شده با هم تبادل کنند.
target hash بیت کوین چیست ؟
«هش هدف» (Target Hash) مقداری عددی است که توسط شبکه تعیین میشود. برای اضافه شدن بلاک جدید به بلاک چین، هش بلاک باید کمتر یا برابر هش هدف باشد. در هر 2016 بلاک، هش هدف از طرف شبکه تنظیم و مشخص میشود. بهطور میانگین هر ده دقیقه، یک بلاک به شبکه بیت کوین اضافه میشود. تنظیم هش هدف که بهطور دورهای صورت میگیرد برای اطمینان از این موضوع انجام میشود.
هش بلاک در ماینینگ بیت کوین
برای اینکه ماینر شبکه پاداش بگیرد باید هش بلاک آن کوچکتر یا برابر با Target Hash باشد. ماینرها با توجه به اطلاعاتی که از آخرین وضعیت بلاک چین در اختیار دارند سعی میکنند تا با اعمال ورودیهای گوناگون مقدار هشهای مختلفی را تولید کنند. هش هدف توسط شبکه مشخص میشود و مقداری عددی است. ماینری که بتواند سریعتر به مقدار موردقبول برای هش برسد پاداش دریافت میکند.
هش ریت چیست ؟
به سرعتی که یک کامپیوتر میتواند فرایند هشینگ را انجام دهد هش ریت میگویند. در ارتباط با بیت کوین و رمزارزهای دیگر هش ریت میزان بهرهوری و عملکرد یا میزان سرعت ماینر را نشان میدهد. در شبکه بیت کوین ماینرها بهطور مداوم اطلاعات را به تابع هش میدهند و خروجی را با target hash مقایسه میکنند. هر چه هش ریت ماینر بیشتر باشد، عملیات ماینینگ سریعتر انجام میشود. بنابراین احتمال بیشتری برای گرفتن پاداش بیت کوین وجود دارد.
ثبت دیدگاه
0دیدگاه
دیدگاهی ثبت نشده است.
اولین نفری باشید که دیدگاهتان ثبت میشود.