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

با فعال‌کردن سنجش، به بهبود سایت کمک می‌کنید. این انتخاب اختیاری است و هر زمان می‌توانید آن را در تنظیمات حریم خصوصی تغییر دهید.

حامد ثقفیHamed Saghafi

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

فهرست مطالب۱۳ بخش
  1. هش چیست؟ به زبانِ ساده
  2. تابع هش چیست و چطور کار می‌کند؟
  3. ویژگی‌های تابع هش چیست؟
  4. یک‌طرفه یعنی «غیرممکن» یا یعنی «خیلی سخت»؟
  5. هش در بلاک‌چین چه کاربردی دارد؟
  6. ۱. زنجیر کردنِ بلوک‌ها
  7. ۲. درخت مرکل: خلاصه‌ای از هزاران تراکنش
  8. ۳. اثبات کار و نانس: معمای ماینرها
  9. ۴. آدرسِ کیف‌پول و امضای دیجیتال
  10. ۵. هشِ تراکنش (TxID): رسیدِ شما در بلاک‌چین
  11. الگوریتم SHA-256 چگونه کار می‌کند؟
  12. الگوریتم‌های هش مهم در ارزهای دیجیتال
  13. الگوریتم Scrypt
  14. الگوریتم X11
  15. الگوریتم Ethash و Keccak-256 در اتریوم
  16. تفاوت هش و رمزنگاری چیست؟
  17. برخورد هش چیست و آیا باید نگرانش بود؟
  18. آیا رایانهٔ کوانتومی هش را می‌شکند؟
  19. هش در زندگیِ روزمرهٔ ما
  20. اشتباه‌های رایج دربارهٔ هش
  21. سوالات متداول
  22. جمع‌بندی

هش چیست؟ هش یعنی یک «اثرِ انگشتِ دیجیتال» برای هر داده. یک متن، یک عکس یا یک تراکنش را به دستگاهی به نام تابع هش می‌دهیم و یک رشتهٔ کوتاه و همیشه هم‌اندازه از عدد و حرف تحویل می‌گیریم. اگر حتی یک نقطه از داده عوض شود، این اثرِ انگشت کاملاً عوض می‌شود. بلاک‌چین و ارزهای دیجیتال روی همین ویژگی ساخته شده‌اند.

خیلی‌ها این کلمه را اولین بار وقتی می‌شنوند که می‌خواهند تتر یا بیت‌کوین جابه‌جا کنند و صرافی از آن‌ها «هشِ تراکنش» را می‌خواهد. بیایید با هم، قدم‌به‌قدم و بی فرمولِ سخت، ببینیم هش چیست، چطور کار می‌کند و چرا بدونِ آن هیچ ارزِ دیجیتالی وجود نداشت.

هش چیست؟ به زبانِ ساده

یک چرخ‌گوشت را در نظر بگیرید. گوشت را از بالا می‌ریزید و از پایین گوشتِ چرخ‌کرده بیرون می‌آید. ولی هیچ‌کس نمی‌تواند گوشتِ چرخ‌کرده را دوباره به همان تکهٔ اول برگرداند. تابع هش هم همین کار را با داده می‌کند.

کلمهٔ Hash در انگلیسی هم یعنی «ریز کردن و قاطی کردن». به خروجیِ این کار هم «هش» می‌گویند و گاهی «چکیدهٔ پیام». پس وقتی کسی می‌پرسد «hash چیست»، جوابِ کوتاه این است: خلاصه‌ای یک‌طرفه و ثابت‌اندازه از یک داده که مثلِ اثرِ انگشت، فقط مالِ همان داده است.

بیایید یک نمونهٔ واقعی ببینیم. کلمهٔ «سلام» را به معروف‌ترین تابع هش، یعنی SHA-256، داده‌ام. خروجی این است:

bda1fa48345336618741fd2c4bc02809eb099c49a9b02fb5056401ab6d4dc3e6

حالا فقط یک علامتِ تعجب اضافه می‌کنم و «سلام!» را می‌دهم. خروجی این می‌شود:

903c0515c0763a585585cdbe653ad9217a1b330dd35239e4c5a589190eb24969

دقت کنید: یک نشانهٔ کوچک اضافه شد، ولی هیچ شباهتی بینِ دو خروجی نمانده. شما هم می‌توانید این را در هر ابزارِ آنلاینِ SHA-256 امتحان کنید و دقیقاً همین دو جواب را بگیرید.

اثر بهمنی در تابع هش SHA-256 با مثال سلام و سلام!
هشِ واقعیِ «سلام» و «سلام!» با SHA-256: یک علامت، خروجیِ کاملاً متفاوت.

پس هش مثلِ مهرِ موم روی یک نامه است. اگر کسی نامه را باز کند و دست ببرد، مهر خراب می‌شود و همه می‌فهمند.

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

تابع هش یک دستورِ ریاضیِ ثابت است. همیشه سه بخش دارد: ورودی، خودِ تابع و خروجی.

  1. ورودی: هر چیزی می‌تواند باشد؛ یک کلمه، یک کتابِ هزار صفحه‌ای، یک فیلم یا اطلاعاتِ یک تراکنش.
  2. تابع: داده را به تکه‌های هم‌اندازه می‌بُرد و بارها و بارها با عملیاتِ ریاضی قاطی می‌کند.
  3. خروجی: یک رشتهٔ ثابت‌اندازه. در SHA-256 این رشته ۲۵۶ بیت است که به‌صورتِ ۶۴ نویسه نوشته می‌شود.

آن ۶۴ نویسه فقط از رقم‌های ۰ تا ۹ و حرف‌های a تا f ساخته شده. به این شکلِ نوشتن «مبنای ۱۶» یا هگزادسیمال می‌گویند. نترسید؛ لازم نیست حسابش را بلد باشید. فقط بدانید هر جا رشتهٔ ۶۴ نویسه‌ای با این حروف دیدید، به احتمالِ زیاد یک هشِ SHA-256 است.

نکتهٔ جالب این است: هشِ کلمهٔ «سلام» ۶۴ نویسه است و هشِ یک کتابِ هزار صفحه‌ای هم ۶۴ نویسه. اندازهٔ ورودی روی اندازهٔ خروجی هیچ اثری ندارد.

طول هش در توابع

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

ویژگی‌های تابع هش چیست؟

هر تابعی را نمی‌شود برای امنیت به کار برد. تابع هشِ رمزنگاری باید شش ویژگی داشته باشد. در این جدول هر ویژگی را به زبانِ ساده و با کاربردش در بلاک‌چین آورده‌ام.

شش ویژگیِ یک تابع هشِ امن
ویژگیبه زبانِ سادهچرا در بلاک‌چین مهم است
قطعی بودنورودیِ یکسان، همیشه همان خروجی را می‌دهدهمهٔ کامپیوترهای شبکه به یک جواب می‌رسند
طولِ ثابتخروجی همیشه هم‌اندازه استذخیره و مقایسه ساده و سریع می‌شود
محاسبهٔ سریعساختنِ هش کسری از ثانیه طول می‌کشدهزاران تراکنش در لحظه بررسی می‌شود
یک‌طرفه بودناز خروجی نمی‌شود به ورودی رسیدکسی از روی هش، اطلاعاتِ اصلی را نمی‌فهمد
اثرِ بهمنیکوچک‌ترین تغییر، کلِ خروجی را عوض می‌کندهر دست‌کاری فوراً دیده می‌شود
مقاومت در برابرِ برخوردپیدا کردنِ دو ورودی با هشِ یکسان عملاً ناممکن استکسی نمی‌تواند تراکنشِ جعلی با همان هش بسازد

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

یک‌طرفه یعنی «غیرممکن» یا یعنی «خیلی سخت»؟

یک‌طرفه بودن به این معنا نیست که ریاضی اجازهٔ برگشت را نمی‌دهد. یعنی تنها راهِ برگشت، حدس زدن است. باید میلیاردها میلیارد ورودی را امتحان کنید تا شاید یکی همان هش را بدهد.

برای هشی که ورودی‌اش یک کلمهٔ ساده است، حدس زدن ممکن است. برای همین رمزِ عبورِ «۱۲۳۴۵۶» امن نیست، حتی اگر هش شده باشد. ولی وقتی ورودی بلند و تصادفی است، تعدادِ حالت‌ها عددی ۷۸ رقمی می‌شود؛ تقریباً هم‌اندازهٔ تعدادِ اتم‌های کلِ جهان. پس یک‌طرفه یعنی آن‌قدر سخت که در عمل ناممکن است.

هش در بلاک‌چین چه کاربردی دارد؟

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

۱. زنجیر کردنِ بلوک‌ها

هر بلوک یک بستهٔ تراکنش است. در هر بلوک، هشِ بلوکِ قبلی هم نوشته می‌شود. مثلِ دفترچهٔ قسطی که بالای هر صفحه، شمارهٔ رسیدِ صفحهٔ قبل را نوشته باشند.

اگر کسی بخواهد یک تراکنشِ قدیمی را عوض کند، هشِ آن بلوک عوض می‌شود. در نتیجه پیوندش با بلوکِ بعدی می‌شکند، و بعدی با بعدی. او باید همهٔ بلوک‌های بعد از آن را از نو بسازد، آن هم جلوتر از کلِ شبکه. این کار در شبکه‌ای به بزرگیِ بیت‌کوین عملاً ممکن نیست.

زنجیره شدن بلوک‌ها با هش بلوک قبلی در بلاک‌چین
هر بلوک هشِ بلوکِ قبلی را در خود دارد؛ دست‌کاری در یک بلوک، زنجیره را می‌شکند.

۲. درخت مرکل: خلاصه‌ای از هزاران تراکنش

در هر بلوک ممکن است هزاران تراکنش باشد. بلاک‌چین آن‌ها را دوتا‌دوتا هش می‌کند، بعد هشِ آن‌ها را دوباره دوتا‌دوتا هش می‌کند تا در آخر فقط یک هش بماند. به این ساختار درخت مرکل (Merkle Tree) می‌گویند و به آن هشِ آخر، «ریشهٔ مرکل».

فایده‌اش این است که برای اثباتِ وجودِ یک تراکنش لازم نیست همهٔ بلوک را بگردیم. چند هشِ کوچک کافی است. کیف‌پول‌های سبکِ موبایلی از همین راه کار می‌کنند.

۳. اثبات کار و نانس: معمای ماینرها

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

چون هش را نمی‌شود پیش‌بینی کرد، تنها راه امتحان کردن است. ماینر یک عدد به نام نانس (Nonce) را در بلوک مدام عوض می‌کند و هر بار هش می‌گیرد. مثلِ کسی که دسته‌کلیدی با میلیاردها کلید دارد و یکی‌یکی امتحان می‌کند. به این روش اثبات کار می‌گویند.

به تعدادِ حدس‌هایی که کلِ شبکه یا یک دستگاه در هر ثانیه می‌زند، هش ریت می‌گویند. هرچه هش ریتِ شبکه بالاتر باشد، حمله به آن گران‌تر است. اگر می‌خواهید بدانید این مسابقه از نظرِ هزینهٔ برق و دستگاه چه حسابی دارد، مقالهٔ ماینینگ و سودآوری آن را بخوانید.

۴. آدرسِ کیف‌پول و امضای دیجیتال

هر کیف پول ارز دیجیتال دو کلید دارد. کلیدِ خصوصی مثلِ رمزِ کارتِ بانکی است و فقط باید پیشِ خودتان بماند. کلیدِ عمومی از روی کلیدِ خصوصی ساخته می‌شود و بعد چند بار هش می‌شود تا آدرسِ کیف‌پول به دست بیاید. در بیت‌کوین، کلیدِ عمومی اول با SHA-256 و بعد با تابعی به نام RIPEMD-160 هش می‌شود.

این ترتیب یک‌طرفه است: از کلیدِ خصوصی به آدرس می‌رسیم، ولی از آدرس هرگز به کلیدِ خصوصی نمی‌رسیم. برای همین می‌توانید آدرس را با خیالِ راحت به هر کسی بدهید، مثلِ شمارهٔ کارت.

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

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

۵. هشِ تراکنش (TxID): رسیدِ شما در بلاک‌چین

این همان هشی است که بیشتر از همه به کارِ ما می‌آید. هر تراکنش پس از ثبت یک هشِ یکتا دارد که به آن TxID یا «هشِ تراکنش» می‌گویند. مثلِ کدِ رهگیریِ پست یا شمارهٔ پیگیریِ کارت‌به‌کارت است.

  1. وقتی ارزی از کیف‌پول یا صرافی برداشت می‌کنید، بعد از چند دقیقه هشِ تراکنش در سابقهٔ برداشت نمایش داده می‌شود.
  2. آن را کپی کنید و نگه دارید؛ مثلِ فاکتورِ خرید.
  3. اگر واریز دیر رسید، این هش را در «مرورگرِ بلاک‌چینِ» همان شبکه جست‌وجو کنید. وضعیت، مبلغ، زمان و تعدادِ تأییدها را می‌بینید.
  4. اگر پشتیبانیِ صرافی پرسید «هش تراکنش را بفرستید»، همین رشته را بدهید.

حواستان باشد هر شبکه مرورگرِ خودش را دارد. مثلاً تترِ شبکهٔ ترون را باید در مرورگرِ ترون جست‌وجو کنید، نه اتریوم. دربارهٔ شبکه‌های مختلفِ تتر در مقالهٔ تتر و شبکه‌های آن توضیح داده‌ام. پس هشِ تراکنش را دورِ نیندازید؛ مدرکِ شما در بلاک‌چین است.

الگوریتم SHA-256 چگونه کار می‌کند؟

SHA-256 معروف‌ترین تابع هش در دنیای ارزِ دیجیتال است. آن را آژانسِ امنیتِ ملیِ آمریکا طراحی کرد و مؤسسهٔ استاندارد آمریکا (NIST) در سال ۲۰۰۱ منتشرش کرد. بیت‌کوین از همان روزِ اول با آن کار کرده است. نامش یعنی «الگوریتمِ هشِ امن با خروجیِ ۲۵۶ بیتی».

کارِ داخلی‌اش را بی فرمول و در چهار قدم می‌شود گفت:

  1. آماده‌سازی: پیام به زبانِ صفر و یک درمی‌آید. چند بیت به آخرش اضافه می‌شود تا طولش مضربی از ۵۱۲ بیت شود. طولِ پیامِ اصلی هم در انتها نوشته می‌شود.
  2. تکه‌تکه کردن: پیام به تکه‌های ۵۱۲ بیتی بریده می‌شود.
  3. ۶۴ دورِ قاطی کردن: هر تکه در ۶۴ دور با هشت عددِ کاری ترکیب می‌شود: جابه‌جا کردنِ بیت‌ها، جمع کردن و مقایسه. نتیجهٔ هر تکه، نقطهٔ شروعِ تکهٔ بعدی است.
  4. خروجی: بعد از آخرین تکه، آن هشت عدد کنارِ هم گذاشته می‌شوند و همان هشِ ۲۵۶ بیتی ساخته می‌شود.

چون نتیجهٔ هر تکه وارد تکهٔ بعد می‌شود، تغییرِ یک حرف در اولِ پیام تا آخر می‌دود و همه‌چیز را عوض می‌کند. اثرِ بهمنی از همین‌جا می‌آید.

الگوریتم SHA-256

بیت‌کوین برای هشِ بلوک‌ها، SHA-256 را دو بار پشتِ سرِ هم اجرا می‌کند؛ یعنی از هشِ هش، هش می‌گیرد. هر بلوک هم به‌طورِ میانگین حدودِ ۱۰ دقیقه یک بار ساخته می‌شود. پس SHA-256 هم موتورِ ماینینگ است و هم چسبِ زنجیرهٔ بلوک‌ها.

الگوریتم‌های هش مهم در ارزهای دیجیتال

همهٔ ارزها از SHA-256 استفاده نمی‌کنند. هر پروژه بسته به هدفش، تابعِ دیگری انتخاب کرده است. این جدول مهم‌ترین‌ها را کنارِ هم گذاشته است.

مقایسهٔ الگوریتم‌های هش در ارزهای دیجیتال معروف
الگوریتمارزهای معروفویژگیِ اصلی
SHA-256بیت‌کوین، بیت‌کوین کشقدیمی‌ترین و آزموده‌ترین؛ ماینینگ فقط با دستگاه‌های ASIC
Scryptلایت‌کوین، دوج‌کوینبه حافظهٔ زیاد نیاز دارد تا ماینینگ کمتر انحصاری شود
X11دشزنجیره‌ای از ۱۱ تابع هشِ پشتِ سرِ هم
Ethash و Etchashاتریوم کلاسیک (و اتریوم تا سال ۲۰۲۲)حافظه‌محور، مناسبِ کارت گرافیک
Keccak-256اتریومبرای آدرس‌ها، قراردادهای هوشمند و هشِ تراکنش‌ها
RandomXمونروبرای پردازندهٔ معمولیِ کامپیوتر طراحی شده
Equihashزی‌کشحافظه‌محور، بر پایهٔ یک مسئلهٔ ریاضیِ دشوار

چیزی که از این جدول باید ماند این است: الگوریتم تعیین می‌کند ماینینگِ یک ارز با چه دستگاهی ممکن است و چقدر بینِ ماینرها پخش است. حالا سراغِ چند تای آن‌ها با کمی جزئیات برویم.

الگوریتم Scrypt

Scrypt اولین بار در لایت کوین به کار رفت. هدفش این بود که ماینینگ فقط دستِ چند کارخانهٔ بزرگ نیفتد. این تابع علاوه بر محاسبه، به حافظهٔ زیاد هم نیاز دارد و ساختنِ دستگاهِ مخصوصش گران‌تر بود. البته بعدها دستگاه‌های ASIC مخصوصِ Scrypt هم ساخته شد.

الگوریتم Scrypt

الگوریتم X11

X11 مثلِ یک قفلِ یازده‌لایه است: داده از ۱۱ تابع هشِ مختلف، یکی پس از دیگری، رد می‌شود. ارزِ دش با آن کار می‌کند. فکرِ پشتِ آن این بود که اگر روزی یکی از آن ۱۱ تابع ضعیف شد، بقیه هنوز سرِ پا باشند.

Dash-x11

الگوریتم Ethash و Keccak-256 در اتریوم

اتریوم تا شهریورِ ۱۴۰۱ (سپتامبرِ ۲۰۲۲) با الگوریتمِ Ethash ماین می‌شد. بعد از رویدادی به نام «ادغام» (The Merge)، اتریوم ماینینگ را کنار گذاشت و به اثبات سهام رفت. امروز Ethash و نسخهٔ تغییریافته‌اش، Etchash، بیشتر در اتریوم کلاسیک کار می‌کنند.

ethash

ولی هش از اتریوم بیرون نرفت. اتریوم برای ساختنِ آدرس‌ها، شناسهٔ تراکنش‌ها و کارهای درونِ قراردادهای هوشمند از Keccak-256 استفاده می‌کند. این تابع، نسخهٔ اولیهٔ استانداردِ SHA-3 است. پس حتی بی ماینینگ، اتریوم هر ثانیه به هش تکیه دارد.

تفاوت هش و رمزنگاری چیست؟

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

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

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

پس اگر هدف این است که کسی محتوا را نخواند، رمزنگاری لازم است. اگر هدف این است که مطمئن شویم کسی به آن دست نزده، هش. بلاک‌چین بیشتر از نوعِ دوم است: تراکنش‌های بیت‌کوین برای همه قابلِ دیدن‌اند، ولی کسی نمی‌تواند عوضشان کند.

برخورد هش چیست و آیا باید نگرانش بود؟

گفتیم ورودی‌ها بی‌نهایت‌اند ولی خروجی‌ها اندازهٔ ثابت دارند. پس از نظرِ ریاضی، حتماً دو ورودیِ متفاوت پیدا می‌شوند که هشِ یکسان بدهند. به این اتفاق برخورد هش (Collision) می‌گویند.

مهم این است که پیدا کردنش چقدر سخت است. تعدادِ هش‌های ممکن در SHA-256 عددی ۷۸ رقمی است. حتی اگر همهٔ دستگاه‌های ماینینگِ بیت‌کوین فقط دنبالِ یک برخورد بگردند، حساب‌های تقریبی از میلیاردها سال حرف می‌زنند.

البته همهٔ توابع این‌قدر محکم نماندند. برای تابعِ قدیمیِ MD5 در سال ۲۰۰۴ برخورد پیدا شد. برای SHA-1 هم در سال ۲۰۱۷ پژوهشگران دو فایلِ متفاوت با هشِ یکسان ساختند. برای همین امروز هیچ سیستمِ امنی از این دو برای امنیت استفاده نمی‌کند. ولی برای SHA-256 و Keccak-256 تا امروز هیچ برخوردی پیدا نشده است.

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

آیا رایانهٔ کوانتومی هش را می‌شکند؟

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

ولی خبرِ خوب این است که هش جزوِ آن مسئله‌ها نیست. بهترین روشِ شناخته‌شدهٔ کوانتومی برای هش، کار را فقط تا حدی ساده می‌کند. یعنی امنیتِ ۲۵۶ بیتیِ SHA-256 در بدترین حالت به حدودِ ۱۲۸ بیت می‌رسد. این هنوز آن‌قدر زیاد است که در عمل شکستنی نیست.

نقطهٔ حساس جای دیگری است: امضای دیجیتال. روش‌های امضای امروزِ بیت‌کوین و اتریوم بر پایهٔ ریاضیِ دیگری‌اند که رایانهٔ کوانتومیِ به‌اندازهٔ کافی بزرگ می‌تواند از روی کلیدِ عمومی، کلیدِ خصوصی را پیدا کند. هنوز چنین رایانه‌ای ساخته نشده، ولی پژوهشگرانِ بلاک‌چین از حالا روی امضاهای «مقاوم در برابرِ کوانتوم» کار می‌کنند.

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

هش در زندگیِ روزمرهٔ ما

شاید باورتان نشود، ولی هر روز بی‌آنکه بدانید با هش سروکار دارید.

  • رمزِ عبور: سایت‌های درست‌وحسابی رمزِ شما را ذخیره نمی‌کنند؛ هشِ آن را نگه می‌دارند. موقعِ ورود، هشِ چیزی را که تایپ کرده‌اید با هشِ ذخیره‌شده مقایسه می‌کنند.
  • دانلودِ نرم‌افزار: سازنده‌ها کنارِ فایل، هشِ آن را هم می‌گذارند. اگر هشِ فایلی که دانلود کرده‌اید با آن یکی باشد، مطمئن می‌شوید فایل دست‌کاری نشده.
  • اسنادِ دیجیتال: امضای الکترونیکی، مثلِ امضای تراکنش‌های ارزِ دیجیتال، روی هشِ سند انجام می‌شود.
  • کیف‌پول‌های ارزِ دیجیتال: همان آدرس و هشِ تراکنش که بالاتر گفتیم.

پس هش فقط مالِ ارزِ دیجیتال نیست. ستونِ نامرئیِ امنیتِ اینترنت است.

اشتباه‌های رایج دربارهٔ هش

در این سال‌ها چند برداشتِ غلط را زیاد شنیده‌ام. این‌ها را با هم مرور کنیم تا گولِ حرف‌های نادرست را نخوریم.

  • «هش یعنی رمزنگاری و با کلید باز می‌شود.» نه. هش کلید ندارد و قرار نیست باز شود.
  • «با هشِ تراکنش می‌شود پول را برگرداند.» نه. هشِ تراکنش فقط کدِ رهگیری است. تراکنشِ ثبت‌شده در بلاک‌چین برگشت ندارد. اگر کسی گفت با هشِ تراکنش پولِ دزدیده‌شده را برمی‌گرداند، احتمالاً خودش کلاه‌بردار است.
  • «آدرسِ کیف‌پول را نباید به کسی داد.» آدرس مثلِ شمارهٔ کارت است و دادنش خطری ندارد. چیزی که هرگز نباید به کسی بدهید، کلیدِ خصوصی و عبارتِ بازیابی است.
  • «بلاک‌چین چون هش دارد، هک نمی‌شود.» خودِ زنجیره بسیار امن است، ولی کیف‌پول، گوشی، صرافی یا قراردادِ هوشمندِ پرایراد ممکن است هک شود. دربارهٔ این خطرها در مقالهٔ آیا امکان هک شدن ارزهای دیجیتال وجود دارد مفصل نوشته‌ام.
  • «رمزِ ساده اگر هش شود امن است.» نه. رمزِ کوتاه و معروف را می‌شود با حدس زدن پیدا کرد. هش جای رمزِ قوی را نمی‌گیرد.

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

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

هش اثرِ انگشتِ دیجیتالِ یک داده است؛ رشته‌ای ثابت‌اندازه که با کوچک‌ترین تغییرِ داده کاملاً عوض می‌شود. در بلاک‌چین، هش بلوک‌ها را به هم زنجیر می‌کند، معمای ماینینگ را می‌سازد، آدرسِ کیف‌پول را تولید می‌کند و به هر تراکنش یک کدِ رهگیریِ یکتا می‌دهد.

تابع هش چه ویژگی‌هایی دارد؟

یک تابع هشِ امن شش ویژگی دارد: برای ورودیِ یکسان همیشه همان خروجی را می‌دهد، خروجی‌اش طولِ ثابت دارد، سریع محاسبه می‌شود، یک‌طرفه است، با کوچک‌ترین تغییر کلِ خروجی عوض می‌شود و پیدا کردنِ دو ورودی با هشِ یکسان عملاً ناممکن است.

الگوریتم SHA-256 چگونه کار می‌کند؟

SHA-256 پیام را به صفر و یک تبدیل می‌کند، آن را به تکه‌های ۵۱۲ بیتی می‌بُرد و هر تکه را در ۶۴ دور با هشت عددِ کاری قاطی می‌کند. نتیجهٔ هر تکه وارد تکهٔ بعد می‌شود و در پایان یک هشِ ۲۵۶ بیتی، یعنی ۶۴ نویسه، به دست می‌آید.

تفاوت هش و رمزنگاری چیست؟

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

هش تراکنش چیست و از کجا پیدا کنم؟

هشِ تراکنش یا TxID کدِ رهگیریِ یکتای هر تراکنش در بلاک‌چین است. بعد از برداشت، در سابقهٔ برداشتِ کیف‌پول یا صرافی نمایش داده می‌شود. با جست‌وجوی آن در مرورگرِ بلاک‌چینِ همان شبکه، وضعیت، مبلغ و تعدادِ تأییدهای تراکنش را می‌بینید.

آیا می‌شود از روی هش به اطلاعات اصلی رسید؟

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

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

بیت‌کوین برای ماینینگ و هشِ بلوک‌ها از SHA-256 استفاده می‌کند و آن را دو بار پشتِ سرِ هم اجرا می‌کند. برای ساختنِ آدرسِ کیف‌پول هم کلیدِ عمومی را اول با SHA-256 و بعد با RIPEMD-160 هش می‌کند.

هش ریت با هش چه فرقی دارد؟

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

جمع‌بندی

هش یک اثرِ انگشتِ دیجیتال است: هر داده‌ای را به رشته‌ای کوتاه و ثابت تبدیل می‌کند که برگشت ندارد و با کوچک‌ترین تغییر عوض می‌شود. همین ویژگیِ ساده، بلوک‌های بلاک‌چین را به هم می‌دوزد، ماینینگ را ممکن می‌کند، آدرسِ کیف‌پول می‌سازد و به هر تراکنش رسیدِ یکتا می‌دهد.

لازم نیست ریاضیِ SHA-256 را بلد باشید تا از هش استفاده کنید. همین که بدانید هشِ تراکنش مدرکِ شماست، آدرس را می‌شود داد ولی کلیدِ خصوصی را هرگز، و هیچ‌کس با هشِ تراکنش پولِ رفته را برنمی‌گرداند، از خیلی‌ها جلوترید. پس دفعهٔ بعد که ارزی جابه‌جا کردید، هشِ تراکنش را کپی کنید و مثلِ فاکتورِ خرید نگه دارید.

نویسنده

پویا بهایی‌پور

۹۸ نوشته دربارهٔ ارز دیجیتال و تحلیل بازار بین‌الملل

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

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

ادامهٔ خواندن

بعدش چه بخوانم؟

دیدگاه‌ها

    ۷ دیدگاهِ پیشین

    1. شاهین ·

      عالی بود

    2. ابوالحسن سهرابی ·

      مقاله جالبی بود، به معلوماتم اضافه شد، سپاسگزارم

      1. پویا بهایی‌پور ·

        خوشحالم که برایتان مفید بوده

    3. Farogh ·

      بسیار عالی بود

      1. پویا بهایی‌پور ·

        ممنونم

    4. علیرضا موحدی راد ·

      سلام
      بسیار جالب بود
      ممون

    5. ناشناس ·

      مطالب بسیار عالی

    اپلیکیشن حامد ثقفی · رایگان

    قیمت رمزارزها، کنار طلا و دلار

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

    اپ رایگان را نصب کنید:

    اپ فقط قیمت نشان می‌دهد؛ خرید و فروش در آن انجام نمی‌شود.