هشینگ به فرآیند تولید یک خروجی در اندازه ثابت از ورودی با اندازه متغیر اشاره دارد. این کار با استفاده از فرمولهای ریاضی معروف به توابع هش (که به عنوان الگوریتم های هشینگ اجرا می شوند) انجام می شود.

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

هر دو عملکرد هش مرسوم و رمزنگاری مشخص کننده هستند. قطعی بودن بدان معنی است که تا زمانی که ورودی تغییر نمی کند ، الگوریتم هشینگ همیشه همان خروجی را تولید می کند (که به عنوان هضم یا هش نیز شناخته می شود).

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

عملکرد هش چگونه است؟

توابع مختلف هش خروجی هایی در اندازه های مختلف تولید می کنند ، اما اندازه های خروجی احتمالی برای هر الگوریتم هشینگ همیشه ثابت است. به عنوان مثال ، الگوریتم SHA-256 فقط می تواند خروجی های ۲۵۶ بیتی تولید کند ، در حالی که SHA-1 همیشه یک خروجی ۱۶۰ بیتی تولید می کند.

برای مثال ، بیایید کلمات “Binance” و “Binance” را از طریق الگوریتم هش کردن SHA-256 (همان مورد استفاده در بیت کوین) اجرا کنیم.

SHA-256
ورودی خروجی (۲۵۶ بیت)
Binance f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191
binance ۵۹bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

توجه داشته باشید که یک تغییر جزئی (تغییر حروف اول) مقدار هش کاملاً متفاوت را در پی داشت. اما از آنجا که ما از SHA-256 استفاده می کنیم ، خروجی ها صرف نظر از اندازه ورودی ، همیشه اندازه ثابت ۲۵۶ بیت (یا ۶۴ کاراکتر) دارند. همچنین ، مهم نیست که چند بار این دو کلمه را از طریق الگوریتم اجرا می کنیم ، این دو خروجی ثابت خواهند بود.

برعکس ، اگر ورودی های مشابه را از طریق الگوریتم هشینگ SHA-1 اجرا کنیم ، نتایج زیر را خواهیم داشت:

SHA-1
ورودی خروجی (۱۶۰ بیت)
Binance ۷f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1
binance e58605c14a76ff98679322cca0eae7b3c4e08936

قابل ذکر است ، مخفف SHA ،مخفف الگوریتم های Secure Hash است. این به مجموعه ای از توابع هش رمزنگاری اشاره دارد که شامل الگوریتم های SHA-0 و SHA-1 به همراه گروه های SHA-2 و SHA-3 می باشد. SHA-256 بخشی از گروه SHA-2 است ، همراه با SHA-512 و انواع دیگر. در حال حاضر ، فقط گروه های SHA-2 و SHA-3 امن در نظر گرفته می شوند.

چرا آنها مهم هستند؟

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

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

هشینگ به ویژه در چارچوب فناوری blockchain مفید است. blockchain Bitcoin چندین عملیات دارد که شامل هش کردن است که بیشتر آنها در مراحل استخراج قرار دارد. در حقیقت ، تقریباً تمام پروتکل های cryptocurrency برای ایجاد پیوند و متراکم کردن گروه های معاملات به بلوک ، و همچنین برای ایجاد پیوندهای رمزنگاری بین هر بلوک ، به ایجاد فشارهای زنجیره ای متکی هستند.

توابع هش رمزنگاری

مجدداً ، یک عملکرد هش که از تکنیک های رمزنگاری استفاده می کند ، ممکن است به عنوان یک عملکرد هش رمزنگاری تعریف شود. به طور کلی ، شکستن یک عملکرد هش رمزنگاری نیاز به تعداد بیشماری از تلاش های بی رحمانه دارد. برای این که شخص بتواند یک عملکرد هش رمزنگاری را برگرداند ، باید تا زمانی که خروجی مربوطه تولید شود ، حدس بزند که ورودی توسط آزمایشی و خطا چیست. با این وجود ، امکان ورود ورودیهای مختلف نیز وجود دارد که خروجی دقیقاً یکسان است و در این صورت “برخورد” اتفاق می افتد.

از نظر فنی ، یک عملکرد هش رمزنگاری باید سه ویژگی را دنبال کند تا به صورت کاملاً ایمن در نظر گرفته شود. ما آنهایی که مقاومت در برابر برخورد ، مقاومت در پیش نمایش و مقاومت پیش نمایش دوم را دارند را توصیف می کنیم.

قبل از بحث در مورد هر خاصیت ، اجازه دهید منطق آنها را در سه جمله کوتاه خلاصه کنیم.

  • مقاومت در برابر برخورد: غیرقابل دسترسی برای یافتن هر دو ورودی مجزا که همان هش خروجی را تولید می کنند.
  • مقاومت پیش نمایش: غیرفعال کردن برای برگرداندن عملکرد هش (ورودی را از یک خروجی معین پیدا کنید).
  • مقاومت پیش نمایش دوم: غیرقابل دسترسی برای یافتن ورودی دوم که با یک ورودی مشخص برخورد می کند.

مقاومت در برابر برخورد

همانطور که گفته شد ، برخورد هنگامی اتفاق می افتد که ورودی های مختلف هش دقیقاً مشابه را ایجاد می کنند. بنابراین ، یک تابع هش تا زمانی که کسی درگیری پیدا کند ، مقاوم در برابر برخورد تلقی می شود. توجه داشته باشید که برخورد برای هر عملکرد هش همیشه وجود خواهد داشت زیرا ورودی های احتمالی بی نهایت هستند ، در حالی که خروجی های ممکن محدود هستند.

به عبارت دیگر ، هنگامی که امکان یافتن تصادف آنقدر کم باشد که به محاسبات میلیون ها سال نیاز داشته باشد ، یک عملکرد هش مقاوم در برابر برخورد است. بنابراین علی رغم این که هیچ عملکرد هشی بدون برخورد وجود ندارد ، برخی از آنها به اندازه کافی قوی هستند که قابل مقاومت باشند (به عنوان مثال ، SHA-256).

در بین الگوریتم های مختلف SHA ، گروه های SHA-0 و SHA-1 دیگر امن نیستند زیرا تصادفات پیدا شده است. در حال حاضر ، گروه های SHA-2 و SHA-3 در برابر برخورد مقاوم در نظر گرفته می شوند.

مقاومت پیش نمایش

خاصیت مقاومت پیش نمایش به مفهوم توابع یک طرفه مربوط می شود. وقتی احتمال بسیار کمی وجود دارد که کسی ورودی را پیدا کند که خروجی خاصی ایجاد کند ، یک عملکرد هش مقاوم در برابر پیش بینی محسوب می شود.

توجه داشته باشید که این ویژگی با مورد قبلی متفاوت است زیرا یک مهاجم با نگاه کردن به یک خروجی معین سعی در حدس زدن ورودی میکند . از طرف دیگر ، برخورد وقتی رخ می دهد که شخصی دو ورودی متفاوت را پیدا کند که همان بازده را تولید می کنند ، اما فرقی نمی کند از کدام ورودی استفاده شده باشد.

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

مقاومت مقدماتی دوم

برای ساده تر شدن ، شاید بگوییم مقاومت پیش نمایش دوم در جایی بین دو خاصیت دیگر قرار دارد. حمله مقدماتی دوم وقتی رخ می دهد که شخصی قادر به یافتن یک ورودی خاص باشد که همان خروجی ورودی دیگری را که قبلاً می داند تولید می کند.

به عبارت دیگر ، یک حمله پیش نمایش دوم شامل پیدا کردن یک برخورد است ، اما به جای جستجوی دو ورودی تصادفی که باعث ایجاد یک هش یکسان می شوند ، آنها ورودی را جستجو می کنند که همان هشی را تولید می کند که توسط یک ورودی خاص دیگر ایجاد شده است.

بنابراین ، هر عملکرد هشی که در برابر برخورد مقاوم باشد ، در مقابل حملات مقدماتی دوم نیز مقاوم است ، زیرا دومی همیشه حاکی از برخورد است. با این حال ، هنوز هم می توانید یک حمله پیش نمایش را بر روی یک تابع مقاوم در برابر برخورد انجام دهید زیرا این امر به معنای پیدا کردن یک ورودی واحد از یک خروجی است.

استخراج

مراحل استخراج بیت کوین مراحل زیادی وجود دارد که شامل توابع هش مانند چک کردن مانده ها ، پیوند دادن ورودی ها و خروجی های معاملات و ایجاد معاملات در یک بلوک برای تشکیل یک درخت مرکل است . اما یکی از اصلی ترین دلایل ایمن بودن بیت کوین این واقعیت است که کارگران استخراج کار باید تعداد بیشماری از عملیات هش کردن را انجام دهند تا در نهایت راه حل معتبری برای بلوک بعدی پیدا شود.

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

در این حالت ، نرخ هش بیانگر میزان رایانه کامپیوتر در معدن بیت کوین است. اگر میزان هش شبکه افزایش یابد ، پروتکل بیت کوین به طور خودکار مشکل استخراج را تنظیم می کند به طوری که میانگین زمان لازم برای معدن یک بلوک نزدیک به ۱۰ دقیقه باقی بماند. در مقابل ، اگر چند استخراجگر تصمیم بگیرند که استخراج را متوقف کنند ، باعث می شود میزان هش به میزان قابل توجهی کاهش پیدا کند ، مشکل استخراج معادن تنظیم می شود و کار را برای استخراج راحت تر می کند (تا زمان بازگشت زمان متوسط ​​بلوک به ۱۰ دقیقه).

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

از آنجا که استخراج بیت کوین یک کار پرهزینه است ، استخراج گران هیچ دلیلی برای تقلب در سیستم ندارند زیرا این امر منجر به خسارات مالی قابل توجهی خواهد شد. هرچه کارگران استخراج بیشتری به یک باند زنجیره ای بپیوندند ، بزرگتر و قوی تر می شوند.

بستن افکار

شکی نیست که توابع هش ابزاری اساسی در علم رایانه است ، به خصوص هنگام برخورد با داده های عظیم. الگوریتم های هشینگ هنگامی که با رمزنگاری ترکیب شوند ، می توانند کاملاً متنوع باشند و امنیت و احراز هویت را به روشهای مختلفی ارائه می دهند. به همین ترتیب ، عملکردهای هش رمزنگاری تقریباً برای همه شبکه های رمزنگاری بسیار مهم است ، بنابراین درک ویژگی های آنها و مکانیسم های کار مطمئناً برای هر کسی که علاقه مند به فناوری blockchain باشد ، مفید است.

نظر خود را بیان کنید