ایران اکسچنج

الگوریتم هش چیست؟ انواع Hash Function و کاربرد آن در بلاکچین

الگوریتم هش چیست؟ انواع Hash Function و کاربرد آن در بلاکچین

فائزه سوری
زمان تقریبی مطالعه: 15 دقیقه
فهرست عناوین

تابع هش رمزنگاری یا Cryptographic Hash Function الگوریتمی است که داده‌ای با طول دلخواه را به یک خروجی با طول مشخص تبدیل می‌کند. Hash برای ساخت Fingerprint داده، تشخیص تغییر، ساخت شناسه، امضای دیجیتال، Merkle Tree و در بعضی شبکه‌ها Proof of Work استفاده می‌شود.

Hashing با Encryption فرق دارد: داده Hash‌شده قرار نیست با «کلید» به متن اولیه برگردد. NIST برای یک Hash Function رمزنگاری‌شده ویژگی‌هایی مانند Preimage Resistance، Second-preimage Resistance و Collision Resistance را از مهم‌ترین خواص امنیتی می‌داند. تعریف Hash Function در NIST

در حوزه ارز دیجیتال نیز باید میان «تابع هش»، «الگوریتم استخراج» و «مکانیزم اجماع» تفاوت گذاشت. همه رمزارزها Mining ندارند و ماینرها نیز الگوریتم را «رمزگشایی» نمی‌کنند. برای درک نقش Hash در ساختار زنجیره می‌توانید مقاله بلاکچین چیست؟ را نیز مطالعه کنید.

الگوریتم هش چیست؟

Hash Function ورودی را به Message Digest یا Hash Value تبدیل می‌کند. برای مثال SHA-256 بدون توجه به اینکه ورودی چند Byte یا چند Megabyte باشد، خروجی 256 بیتی تولید می‌کند.

یک Hash رمزنگاری مناسب معمولاً باید ویژگی‌های زیر را داشته باشد:

  • Deterministic: ورودی یکسان همیشه خروجی یکسان تولید کند.
  • Preimage Resistance: با داشتن Hash، پیدا کردن ورودی‌ای که همان خروجی را تولید کند از نظر محاسباتی دشوار باشد.
  • Second-preimage Resistance: برای یک ورودی مشخص، پیدا کردن ورودی متفاوت دیگری با همان Hash دشوار باشد.
  • Collision Resistance: پیدا کردن دو ورودی متفاوت که یک Hash یکسان تولید کنند از نظر محاسباتی دشوار باشد.
  • Avalanche Effect: تغییر کوچک در ورودی باید خروجی بسیار متفاوتی ایجاد کند.

NIST نیز سه ویژگی Preimage، Second-preimage و Collision Resistance را معیارهای اصلی امنیت Hash Functionهای رمزنگاری می‌داند. راهنمای Hash Functions در NIST

الگوریتم SHA-256

تفاوت Hashing، Encryption و Digital Signature چیست؟

فناوریهدفقابل برگشت؟نمونه کاربرد
Hashingساخت Digest / Fingerprintعمداً یک‌طرفه طراحی می‌شودIntegrity، TXID، Merkle Tree
Encryptionمحرمانه‌کردن دادهبا Key مناسب قابل Decrypt استمحافظت از اطلاعات محرمانه
Digital Signatureاثبات Authorization و Integrityعملیات «Decrypt متن» نیستامضای تراکنش

Hash در بلاکچین چه کاربردی دارد؟

Hashing در Blockchain فقط برای Mining نیست. بسته به Protocol، از Hash در بخش‌های مختلف استفاده می‌شود:

  • شناسه تراکنش: Hash می‌تواند برای ساخت Transaction ID استفاده شود.
  • Merkle Tree: تراکنش‌های متعدد در یک Root خلاصه می‌شوند.
  • اتصال Blockها: Header هر Block به Hash بلاک قبلی اشاره می‌کند.
  • Integrity: تغییر داده، Digest متفاوتی ایجاد می‌کند.
  • Proof of Work: در شبکه‌های PoW، Miner ورودی‌های Block Header را بارها Hash می‌کند تا خروجی مطابق Target پیدا شود.

در Bitcoin، TXID و Merkle Tree از Double-SHA-256 استفاده می‌کنند و Header بلاک نیز برای Proof of Work Hash می‌شود. مستند رسمی Bitcoin توضیح می‌دهد که Header Hash باید برابر یا پایین‌تر از Target شبکه باشد.  مستند Block Chain در Bitcoin Developer  برای جزئیات مربوط به قدرت محاسباتی این فرایند، مقاله هش ریت چیست؟ را مطالعه کنید.

SHA-256 چیست؟

SHA-256 یکی از اعضای خانواده SHA-2 و استاندارد Secure Hash Standard است. خروجی آن 256 بیت است. NIST در FIPS 180-4 خانواده SHA-2 را برای تولید Message Digest استاندارد کرده است. FIPS 180-4 در NIST

  • «زمان ساخت Block در SHA-256 شش تا ده دقیقه است» نادرست است؛ Block Interval ویژگی Protocol و Difficulty Adjustment شبکه است، نه خود Hash Function.
  • GH/s واحد سرعت Hashing یک Device/Network است؛ ویژگی ذاتی SHA-256 نیست.
  • SHA-256 «تنها الگوریتم امن خانواده SHA» نیست؛ SHA-384، SHA-512 و خانواده SHA-3 نیز استانداردهای امن مورد استفاده‌اند.

SHA-3 و Keccak-256 چه تفاوتی دارند؟

SHA-3 خانواده دیگری از Hash Functionهاست که NIST در FIPS 202 استاندارد کرده است. این خانواده بر طراحی Keccak بنا شده و شامل SHA3-224، SHA3-256، SHA3-384 و SHA3-512 است. استاندارد FIPS 202 / SHA-3

در Ethereum اصطلاح Keccak-256 بسیار مهم است. Keccak-256 مورد استفاده Ethereum با SHA3-256 استاندارد NIST دقیقاً یک خروجی یکسان تولید نمی‌کند؛ تفاوت Padding نهایی باعث شده این دو تابع با وجود خویشاوندی، قابل جایگزینی مستقیم نباشند.

مستند رسمی Ethereum نیز توضیح می‌دهد Hashهایی که در ابتدا «sha3» نامیده می‌شدند در واقع Variant پیش از استاندارد نهایی و معمولاً با نام Keccak-256 شناخته می‌شوند. توضیح Keccak و SHA-3 در مستند Ethereum

آیا MD5 و SHA-1 هنوز برای کاربردهای امنیتی مناسب‌اند؟

برای طراحی جدیدی که Collision Resistance اهمیت دارد، نباید MD5 یا SHA-1 را به‌عنوان گزینه امن عمومی توصیه کرد. حملات Collision عملی روی این خانواده‌های قدیمی، استفاده امنیتی آن‌ها را محدود کرده است.

NIST توصیه کرده استفاده امنیتی از SHA-1 به SHA-2 یا SHA-3 مهاجرت کند و برنامه Transition کامل SHA-1 را تا پایان ۲۰۳۰ اعلام کرده است. برنامه NIST برای کنارگذاری SHA-1

الگوریتم Scrypt 

چرا SHA-256، Scrypt، Ethash و RandomX را نباید یک نوع الگوریتم بدانیم؟

نامدسته اصلیکاربرد نمونه
SHA-256Cryptographic hash functionIntegrity، IDs، Bitcoin PoW
SHA-3 / KeccakCryptographic hash familyHashing عمومی / Ethereum Keccak
ScryptMemory-hard password KDF؛ در برخی PoWها نیز استفاده شدهPassword derivation / Scrypt-based mining
EquihashProof-of-Work schemeMemory-oriented PoW
EthashHistorical Ethereum PoW algorithmEthereum پیش از Merge
RandomXProof-of-Work algorithmMonero PoW
X11Chained hash-based PoW constructionبرخی شبکه‌های PoW

Scrypt چیست؟

Scrypt در اصل یک Password-Based Key Derivation Function حافظه‌محور است، نه صرفاً یک Hash Function هم‌رده SHA-256. RFC 7914 آن را KDFی مبتنی بر Memory-hard Function تعریف می‌کند که برای افزایش هزینه حمله با سخت‌افزار سفارشی طراحی شده است. RFC 7914 - scrypt

برخی شبکه‌های Proof-of-Work از Scrypt در فرایند Mining استفاده کرده‌اند، اما Block Time، Hashrate Unit و Profitability ویژگی ثابت خود Scrypt نیستند. این موارد به Protocol، Difficulty، Hardware و شرایط همان شبکه وابسته‌اند.

الگوریتم Equihash - معرفی الگوریتم های هشینگ در رمز نگاری

Ethash چیست و آیا Ethereum هنوز از آن استفاده می‌کند؟

Ethash الگوریتم Proof of Work تاریخی Ethereum بود و از طراحی Dagger-Hashimoto توسعه یافت. هدف آن Memory-hard بودن بود تا مزیت Hardware تخصصی را کاهش دهد؛ با این حال در عمل ASICهای Ethash نیز ساخته شدند.

مهم‌ترین اصلاح ۲۰۲۶ این است که Ethereum دیگر Ethash یا Mining ندارد. Ethereum در ۱۵ سپتامبر ۲۰۲۲ با The Merge از Proof of Work به Proof of Stake منتقل شد. The Merge در Ethereum.org

الگوریتم Ethash

RandomX چیست؟

RandomX یک الگوریتم Proof of Work است که برای CPUهای عمومی طراحی شده و اجرای Programهای شبه‌تصادفی و Memory-intensive را به کار می‌گیرد. Monero در مشخصات فنی فعلی خود RandomX را مکانیزم Proof of Work شبکه معرفی می‌کند. مشخصات فنی Monero

Equihash، X11 و Lyra2z چه جایگاهی دارند؟

این نام‌ها را بهتر است در بخش «Mining / Proof-of-Work Algorithms» نگه داریم، نه در فهرست Hash Functionهای استاندارد رمزنگاری.

  • «Equihash در برابر ASIC مقاوم است» نباید به‌صورت تضمینی نوشته شود؛ ASIC-resistance یک هدف طراحی است، نه حالت دائمی.

ماینرها در Proof of Work واقعاً چه کاری انجام می‌دهند؟

Miner داده رمزگذاری‌شده را Decrypt نمی‌کند. در یک شبکه PoW، Miner Block Candidate می‌سازد و مقادیر قابل تغییر مانند Nonce یا ExtraNonce را بارها تغییر می‌دهد تا Hash Header شرایط Target را برآورده کند.

پیدا کردن جواب معمولاً نیازمند تعداد بسیار زیادی Hash Attempt است، اما Verify کردن نتیجه برای Nodeهای دیگر بسیار ارزان‌تر است. این عدم تقارن میان هزینه تولید Proof و هزینه Verification یکی از ویژگی‌های اصلی Proof of Work است. برای درک ارتباط Hash، Block و ساخت زنجیره، مقاله شبکه بیت‌کوین چگونه کار می‌کند؟ نیز مفید است.

Collision و Birthday Bound در Hash Function چیست؟

برای یک Hash با خروجی n بیت، امنیت نظری در برابر Collision معمولاً حدود 2^(n/2) Operation است، نه 2^n. این نتیجه با Birthday Bound مرتبط است.

برای SHA-256، NIST قدرت Collision Resistance را حدود 128 بیت و Preimage Resistance را 256 بیت گزارش می‌کند. همین تفاوت نشان می‌دهد «طول خروجی 256 بیت» به معنی «256 بیت امنیت Collision» نیست.

جمع‌بندی؛ Hash Function را با الگوریتم استخراج یکی ندانید

SHA-256، SHA-3 و Keccak نمونه Hash Functionهای رمزنگاری‌اند؛ Scrypt در اصل یک Memory-hard KDF است و RandomX، Equihash، X11 و Ethash در Context ارز دیجیتال بیشتر به‌عنوان Algorithm/Schemeهای Proof of Work مطرح می‌شوند.

Hashing در Blockchain کاربردهای مختلفی از TXID و Merkle Tree تا اتصال Blockها و Proof of Work دارد. برای نوشتن دقیق درباره این موضوع باید میان Hashing، Encryption، Digital Signature، Consensus و Mining مرز مشخصی وجود داشته باشد.

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

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

قیمت ارز دیجیتال یک متغیر بازار است و مستقیماً از نوع Hash Function یا Mining Algorithm نتیجه نمی‌شود.

در Bitcoin، SHA-256 و Proof of Work نقش فنی دارند؛ برای Intent معاملاتی، خرید بیت کوین و قیمت بیت کوین موضوعاتی جدا از معماری Hashing هستند.

Ethereum امروز از Proof of Stake استفاده می‌کند و Ethash دیگر الگوریتم Mining شبکه اصلی آن نیست؛ برای بررسی خود دارایی، خرید اتریوم و قیمت اتریوم مسیرهای معاملاتی جداگانه‌اند.

مقالات مرتبط

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

Hash چیست؟

خروجی ثابت‌طولی است که از یک Hash Function روی داده تولید می‌شود و می‌تواند به‌عنوان Fingerprint داده استفاده شود.

آیا Hash را می‌توان Decrypt کرد؟

Hashing Encryption نیست و کلیدی برای Decrypt کردن خروجی ندارد. هدف Hash Function امن این است که بازیابی Preimage از Digest از نظر محاسباتی دشوار باشد.

SHA-256 امن است؟

SHA-256 همچنان جزو Hash Functionهای استاندارد و مورد قبول NIST است و برای کاربردهای جدید عمومی استفاده می‌شود؛ امنیت نهایی به نحوه استفاده در Protocol نیز وابسته است.

SHA-3 بهتر از SHA-256 است؟

هر دو خانواده برای کاربردهای امن قابل استفاده‌اند. NIST برنامه‌ای برای مهاجرت عمومی اجباری از SHA-2 به SHA-3 اعلام نکرده و انتخاب به Protocol و نیازهای طراحی بستگی دارد.

آیا Ethereum از SHA-3 استفاده می‌کند؟

Ethereum به‌طور گسترده از Keccak-256 استفاده می‌کند که با SHA3-256 استاندارد NIST به دلیل تفاوت Padding دقیقاً یک تابع یکسان نیست.

آیا Ethereum هنوز با Ethash استخراج می‌شود؟

خیر. Ethereum از سپتامبر ۲۰۲۲ Proof of Stake است و Mining روی Mainnet آن متوقف شده است.

تفاوت Hash Function و Mining Algorithm چیست؟

Hash Function یک Primitive رمزنگاری است؛ Mining Algorithm یک Scheme بزرگ‌تر برای Proof of Work است که می‌تواند از یک یا چند Hash Function، Memory و سایر عملیات استفاده کند.