هش چیست؟ کارکرد تابع hash

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

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

نکات کلیدی

  • هش یک تابع است که نیازهای رمزگذاری مورد نیاز برای حل محاسبات بلاک چین را برآورده می‌کند.
  • هش‌ها دارای طول ثابت هستند زیرا حدس زدن طول هش در صورتی که فردی در تلاش برای شکستن بلاک چین بود تقریباً غیرممکن می‌شود.
  • داده‌های یکسان همیشه مقدار یکسان را تولید می‌کنند.
  • هش، مانند یک یا راه حل، ستون فقرات شبکه بلاک چین است.
  • یک هش بر اساس اطلاعات موجود در هدرِ بلاک(block header)، ایجاد می‌شود.

هش چگونه کار می‌کند‌؟

هش چگونه کار می‌کند‌؟

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

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

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

به طور خاص، توابع هش رمزنگاری شده این سه ویژگی را دارند:

  • آن‌ها “بدون برخورد” هستند. این بدان معناست که هیچ هش ورودی نباید منجر به یک هش خروجی یکسان شود.
  • می‌توان آن‌ها را پنهان کرد. حدس زدن مقدار ورودی یک تابع هش از خروجی آن دشوار است.
  • باید پازل پسند باشند. انتخاب ورودی که خروجی از پیش تعیین شده‌ای را ارائه می‌دهد، باید مشکل باشد.

به دلیل ویژگی‌های یک هش، از آن‌ها در امنیت آنلاین بسیار استفاده می‌شود؛ از محافظت از گذرواژه‌ها و تشخیص نقض داده‌ها تا بررسی یکپارچگی فایل دانلود شده.

هشینگ (hashing) و ارزهای دیجیتال

هشینگ (hashing) و ارزهای دیجیتال

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

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

حل هش با داده‌های موجود در هدر بلاک شروع شده و اساساً یک مسئله ریاضی پیچیده را حل می‌کند. هدر بلاک شامل یک شماره نسخه(version number)، یک زمان سنج(timestamp)، هش استفاده شده در بلوک قبلی، هش Merkle root ، nonce  و هش هدف است.

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

نکته: فرایند اعتبار سنجی برای تراکنش‌های بلاک چین متکی بر رمزگذاری داده‌ها با استفاده از هش الگوریتمی است.

برای مطالعه بیشتر ‌می‌توانید، مقاله بلاک چین چیست؟ را بخوانید.

نکات خاص

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

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

نمونه‌ای از یک هش

با استفاده از کلمه “hello”، خروجی به طول هش برای ” I am going to store” تولید می‌شود. تابع مورد استفاده برای تولید هش(deterministic) است، بدین معنا که هر بار که از ورودی یکسان استفاده می‌شود، خروجی یکسانی ایجاد می‌کند.  ایجاد کوچک‌ترین تغییری در ورودی، باعث به وجود آمدن هشی کاملاً متفاوت با قبلی می‌شود.

پردازش توابع هش مورد نیاز برای رمزنگاری بلوک‌های جدید به پردازش کامپیوتر‌های قدرتمند نیاز دارد که می‌تواند هزینه بر باشد. برای ترغیب افراد و شرکت‌هایی که به آن‌ها ماینر گفته می‌شود، شبکه‌های ارزهای دیجیتال، با توکن های جدید ارز دیجیتال و کارمزد تراکنش به آن‌ها پاداش می دهند. ماینرها تنها در صورتی می‌توانند، پاداش دریافت کنند که اولین هشی ر ایجاد کنند که الزامات ذکر شده در هش هدف را برآورده می‌کند.

سوالات متداول

تابع هش چیست؟

توابع هش، توابع ریاضی هستند که مجموعه داده‌های را به یک رشته بیتی با اندازه ثابت تبدیل می‌کنند، که این رشته به عنوان “مقدار هش” شناخته می‌شود.

مقدار هش چگونه محاسبه می‌شود؟

یک تابع هش از الگوریتم‌های ریاضی پیچیده‌ای استفاده می‌کند که داده‌های طول دلخواه را به داده‌های طول ثابت (به عنوان مثال، ۲۵۶ کارکتر) تبدیل می‌کند. اگر یک بیت را در هر جایی از داده‌های اصلی تغییر دهید، کل مقدار هش تغییر کرده که این امر برای تأیید وفاداری فایل های دیجیتالی و سایر داده‌ها مفید است.

هش در بلاک چین‌ها برای چه مواردی استفاده می‌شود؟

هش‌ها در چندین قسمت از سیستم بلاک چین استفاده می‌شوند. ابتدا، هر بلوک دارای هش هدر بلاک قبلی بوده و اطمینان حاصل می‌کند که با اضافه شدن بلوک‌های جدید هیچ چیزی دستکاری نشده است. علاوه بر این، برای استخراج ارز‌های دیجیتال از اثبات کار (PoW) و هش کردن اعداد تصادفی برای دستیابی به یک مقدار هش خاص استفاده می‌شود.

منبع: investopedia

0 0 رای ها
رأی دهی به مقاله
اشتراک در
اطلاع از
guest
1 نظرات
بیشترین واکنش نشان داده شده(آرا)
تازه‌ترین قدیمی ترین
بازخورد (Feedback) های اینلاین
View all comments
trackback
1 ماه قبل

[…] مطالب neveshte اکتبر 19, 2021 iv اکتبر 19, 2021 هش چیست؟ کارکرد تابع hash اکتبر 18, 2021 استخراج بیت کوین […]