هش چیست؟
هش چیست؟
توابع هش رمزنگاری یک رشته کاراکتر با طول ثابت از رکوردهای داده با هر طولی تولید می کنند یا به زبان ساده تر هر ورودی با هر مقداری و تعداد کاراکتری که داشته باشه رو به یک خروجی با تعداد کاراکتر ثابت تبدیل میکنه یعنی فرق نداره یه جمله بهش بدی یا یه کلمه، هش این مقادیر برابره با ۳۲ کاراکتر. یک رکورد داده می تواند یک کلمه، یک جمله، یک متن طولانی تر یا یک فایل کامل باشد.
یک تابع هش رمزنگاری برای اهداف امنیتی استفاده می شود و ستون فقرات امنیت کریپتو را تشکیل می دهد.
یک تابع هش یک ورودی تصادفی از داده ها (کلیدها) را به رشته ای از بایت ها با طول و ساختار ثابت (مقدار هش) تبدیل می کند.
هش تراکنش شناسایی تراکنش های روی بلاکچین را آسان می کند.
تابع هش یا همان hash function چیست؟
شبکه بیت کوین به مجموعه ای از قوانین به نام الگوریتم اجماع اثبات کار بستگی دارد. این الگوریتم اجماع مجموعه ای از قوانین است که بر یک شبکه بلاکچین حاکم است. خارج از ارزهای دیجیتال، رایج ترین استفاده از توابع هش در ذخیره سازی رمزهای عبور است.
بیایید به اصول اولیه بازگردیم. یک تابع ریاضی برای نشان دادن یک عبارت یا یک رابطه شامل یک یا چند متغیر یا مجموعه استفاده می شود. در نتیجه، یک تابع یک ورودی را به یک خروجی مرتبط می کند.
نمونه ای از این می تواند اندازه و قیمت همبرگر در یک رستوران باشد.
هزینه برگر با توجه به اندازه آن تعیین می شود.
بنابراین، در این مورد، هزینه تابعی از اندازه است.
فرض کنید می توانید همبرگرهای کوچک، متوسط و بزرگ بخرید و هزینه های مربوط به آنها ۱٫۵۰ دلار، ۲٫۵۰ دلار و ۳٫۵۰ دلار است.
ورودی اندازه همبرگر است.
خروجی هزینه برگر است.
یک تابع هش یک ورودی (به عنوان مثال متن) را به رشته ای از بایت ها با طول و ساختار ثابت تبدیل می کند. خروجی یا مقدار ایجاد شده «مقدار هش» یا «جمع کنترلی» نامیده میشود. هر مقدار هش ایجاد شده از دادهها با استفاده از یک الگوریتم هشسازی خاص، همیشه به همان طول و یک طرفه است، نمیتوان آن را معکوس کرد.
اصطلاح “عملکرد هش” از کلمه فرانسوی “hacher” مشتق شده است که به معنای “خرد کردن به قطعات کوچک” است که نشان می دهد چگونه یک تابع هش برای “خرد کردن” داده ها طراحی شده است. نوع دیگری از ساختار داده، جدول هش، اغلب برای تشخیص سریع هر دو هش یکسان (مقادیر هش) استفاده می شود.
پس از اینکه دیفی و هلمن (Diffie وHellman) برای اولین بار نیاز به یک تابع هش یک طرفه را در مقاله اصلی خود در سال ۱۹۷۶ در مورد رمزنگاری کلید عمومی شناسایی کردند، طی دو دهه بعد، پیشرفت در رمزنگاری به سرعت پیشرفت کرد. در سال ۱۹۹۰، رونالد ریوست (Ronald Rivest)، رمزنگار و استاد MIT، تابع هش MD4 و بعدها توابع MD5 و MD6 را اختراع کرد. در سال ۱۹۹۵، NSA (آژانس امنیت ملی) SHA-1 (الگوریتم هش ایمن ۱) را بر اساس طراحی ریوست طراحی کرد و به دنبال آن بروز رسانی SHA-2 در سال ۲۰۰۱ انجام شد. SHA-2 استانداردی است که الهام گرفته از SHA-256 است که در خدمت بود.
پیشنهاد مقاله کاربر سالیدیتی
هدف توابع هش
توابع هش از یک سو از نیاز به یکنواخت کردن طول محتوا و از سوی دیگر برای استفاده به عنوان شناسه های منحصر به فرد سرچشمه می گیرند. کاربردهای معمولی برای توابع هش خارج از حوزه ارزهای دیجیتال عبارتند از:
-محاسبه جمع کنترل (کوتاه) برای یک شی، مانند جمع چک برای یک ISBN (شماره کتاب استاندارد بین المللی)
-شناسایی هر محتوایی تقریباً بدون ابهام، اما به طور خلاصه، بدون افشای چیزی در مورد محتوا در برنامههای رمزنگاری.
ویژگی های توابع هش
یک تابع هش رمزنگاری باید از نظر محاسباتی کارآمد باشد، به این معنی که برای ایجاد مقدار هش باید عملکرد سریعی داشته باشد. باید قطعی باشد – هر بار که ورودی خاصی را وارد می کنید، باید همان خروجی را تولید کند و در برابر تصویر مقاوم باشد، به این معنی که نمی تواند هیچ اطلاعاتی را در مورد ورودی در خروجی نشان دهد.
در نهایت، یک تابع هش باید در برابر برخورد مقاوم باشد که تضمین می کند که تولید خروجی یکسان برای دو ورودی متفاوت غیرممکن است. این ویژگی قطعی، مقاومت پیش از تصویر و مقاومت در برابر برخورد است که سه ویژگی مهم توابع هش در فرآیند استخراج بیت کوین را تشکیل می دهد.
یک تابع هش باید در برابر برخورد مقاوم باشد که تضمین می کند که تولید خروجی یکسان برای دو ورودی متفاوت غیرممکن است.
توابع هش در فرآیند استخراج
با اجرای سریع فرآیند اعتبار سنجی در شبکه بیت کوین، یک بلوک پک می شود و حاوی چندین تراکنش و همچنین اطلاعات مربوط به بلوک قبلی است. این بدان معناست که اگر شخصی بخواهد دفتر کل را تغییر دهد یا یک تراکنش را دوبار خرج کند، باید هش را در تمام بلوکهای قبلی تغییر دهد.
برای اینکه بلاک همراه به بلاکچین اضافه شود، ماینرها باید هشی را پیدا کنند که مشکل هدف را برآورده کند. هر بلوک حاوی یک سربرگ با شماره بلوک، هش بلوک قبلی و یک «nonce» است که شامل یک مهر زمانی یا همان تایم استمپ است. هدف از یک nonce تغییر ورودی به یک تابع هش رمزنگاری است که افزایش تصادفی بودن در محاسبات در طول فرآیند استخراج است.
حل هش
سپس نود یا گره شروع به “هش کردن” داده ها با تبدیل آن به مقدار هش می کند، که همیشه باید تعداد معینی از صفر را در خود داشته باشد. گره بررسی می کند که آیا یک هش با معیارهای دشواری مطابقت دارد یا خیر. هش باید با مقدار صحیح صفر شروع شود. اگر هش معیارهای سختی را داشته باشد، برای ماینرهای دیگر شبکه پخش می شود. اولین ماینری که یک هش معتبر پیدا می کند، بلاک را به یک بلوک جدید اعتبار می دهد و پاداش بلاک و کارمزد بیت کوین را دریافت می کند.
اگر هش معیارهای سختی شبکه را نداشته باشد، nonce دیگری انتخاب و هش می شود. ماینرها احتمالاً باید هش های زیادی را با نانس های زیاد تولید کنند تا زمانی که نانسی را پیدا کنند که با مشکل مواجه شود. این یک فرآیند تکراری و پر انرژی است که به عنوان استخراج بیت کوین شناخته می شود که به قدرت محاسباتی گسترده ای نیاز دارد.
توابع هش ستون فقرات فرآیند اثبات کار را تشکیل می دهند. بدون تایید و تولید تراکنشهای هش، بلاکچین ضد دستکاری و غیرقابل تغییر نخواهد بود و نمیتوان ثابت کرد چه کسی در چه زمانی مالک چه مقدار بیتکوین است.
منابع:
https://www.bitpanda.com/academy/en/lessons/what-is-a-hash-function-in-a-blockchain-transaction/
https://www.tutorialspoint.com/cryptography/cryptography_hash_functions.htm
دیدگاهتان را بنویسید