تابع هش در بلاکچین

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

مقدمه

تاریخچه

تعریف هش

هش در بلاک چین

توابع هش در فرآیند استخراج

ویژگی های تابع هش

انواع توابع هش

نتیجه گیری

مقدمه ای بر تابع هش

بلاکچین دفترکل توزیع شده ای است که دائماً در حال رشد است . تمام تراکنش های انجام شده به صورت ایمن و تغییرناپذیر با ترتیب زمانی ، در دفترکل به صورت دائمی ثبت می شود. برای ایمن سازی داده ها ، بلاکچین از تابع هش استفاده می کند. هش تابعی است که نیازهای رمزگذاری شده مورد نیاز برای حل محاسبه بلاک چین را برآورده می کند.

هش: ورودی دلخواه، خروجی ثابت
هش: ورودی دلخواه، خروجی ثابت


تاریخچه Hash

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

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

تعریف هش

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

تابع هش برای امنیت بیشتر
تابع هش برای امنیت بیشتر


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

تابع هش در بلاکچین

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

هش در بلاکچین کاربردهای زیادی دارد.از جمله :

  • آدرسهای موجود در بلاکچین از هش کردن به دست می آیند. آدرسهای بیت کوین از SHA2-256 و RIPEMD 160 استفاده می کنند.
  • هش به تعریف امضاهای رمزنگاری کمک می کند تا به تایید تراکنش ها معتبر کمک کنند.
  • هش یک تراکنش ، پیگیری تراکنش ها در بلاکچین را آسان می کند. به جای جستجوی تراکنش ها ، فقط مقدار هش را در یک مرورگر بلاکچین کپی کنید.
  • توابع هش کردن در استخراج بسیار مهم است .

توابع هش در فرآیند استخراج

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

هش با داده های موجود در هدر بلاک آغاز می شود و اساساً حل یک مسئله پیچیده ریاضی است. هر هدر بلوک شامل یک شماره نسخه ، یک برچسب زمان ، هش استفاده شده در بلوک قبلی ، هش ریشه Merkle ، nonce و هش هدف است.

بیشتر بخوانید : تئوری CAP و بلاکچین
کاربرد هش در فرایند استخراج
کاربرد هش در فرایند استخراج


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

ویژگی های تابع هش

قطعی بودن (Deterministic)

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

محاسبات سریع (Quick Computation):

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

یک طرفه باشد

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

مقاوم در برابر برخورد یا تصادم(Collision resistant)

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

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

انواع مختلفی از الگوریتم هش مانند Message Digest (MD ، MD2 ، MD4 ، MD5 و MD6) ، RIPEMD (RIPEND ، RIPEMD-128 و RIPEMD-160) ، Whirlpool (Whirlpool-0 ، Whirlpool-T و Whirlpool) وجود دارد یا تابع هش امن (SHA-0 ، SHA-1 ، SHA-2 و SHA-3).

در سال 1990 ، رونالد ریوست ، استاد رمزنگاری و استاد MIT ، عملکرد هش MD4 و بعدا توابع MD5 و MD6 را اختراع کرد. در سال 1995 ، NSA (آژانس امنیت ملی) SHA-1 (Secure Hash Algorithm 1) را بر اساس Rivest و سپس SHA-2 را در سال 2001 طراحی کرد. SHA-2 استانداردی است که از SHA-256 الهام گرفته است ( به عنوان مبنای الگوریتم اجماع بیت کوین)

SHA-256: مخفف عبارت Secure Hashing Algorithm است. SHA-256 مشهورترین توابع هش رمزنگاری است .زیرا به طور گسترده ای در فناوری بلاکچین استفاده می شود. الگوریتم SHA-256 Hashing توسط آژانس امنیت ملی (NSA) در سال 2001 ساخته شد. (SHA 256 بخشی از خانواده توابع هش است که SHA-2 نامیده می شود)

Secure Hashing Algorithm
Secure Hashing Algorithm


SHA 256: هش 256 بیتی تولید می کند.در حال حاضر بیت کوین از هش دوتایی SHA-256 استفاده می کند.

MD 5: مخفف عبارت Message Digest و به معنای خلاصه پیام است. که یک هش 128 بیتی تولید می کند.این تابع به صورت گسترده به عنوان تابع رمزنگاری مورد استفاده قرار می گیرد.یکی از مشکلات آن مساله تصادم است.بعد از 2 به توان 21 هش ، تصادم رخ می دهد.

Keccak-256: هش 256 بیتی تولید می کند.در حال حاضر توسط Ethereum استفاده می شود. Keccak یک خانواده از توابع هش است که در نهایت به SHA-3 استاندارد می شود. اتریوم به جای SHA-3 آن را Keccak نامید زیرا پارامترهای Hk کمی متفاوت از SHA-3 فعلی است.

در دنیای ارزهای رمزنگاری شده ، الگوریتم های هش SHA-256 و X11 بیشترین استفاده را دارند.

نتیجه گیری تابع Hash

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

منبع: factcoins.com