ماینینگ مقالات

هش یعنی چه؟

sha-256-hash
نوشته شده توسط kazem
  • آیا پسورد ورودی کامپیوتر شما در حافظه کامپیوترتان ذخیره شده است؟
  • اگر ذخیره شده، آیا امکان این که شخصی بتواند این پسورد را پیدا کرده و کامپیوتر شما را هک کند وجود ندارد؟

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

هش چیست؟

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

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

برخی اوقات برای این که یک شماره را اعلام کنیم تنها برخی از رقم‌ها را می‌گوییم و شماره را به صورت کامل بیان نمی‌کنیم. مثلاً در مسابقات تلویزیونی که به جای آن که شماره کامل برنده 09010814978 را اعلام عمومی کنند، تنها چند رقم ابتدا و انتها را به شکل 978***0901 نمایش می‌دهند.

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

دقیقاً کاری که تابع هش انجام می‌دهد و از همین‌جاست که نام تابع درهم ساز برای تابع هش در زبان فارسی انتخاب شده است.

در ادامه خواص ریاضی تابع هش را می‌شناسیم و شش خاصیت برای آن ذکر می کنیم. سه خاصیت اول برای آن است که تابع اصولاً تابع هش باشد و سه خاصیت بعدی برای این که تابع یک تابع هش خوب باشد. تابع هش خوب در رمزنگاری و بلاک چین کاربرد دارد.

خواص توابع هش

تابع هش تابعی است که:

  • هر ورودی دلخواهی را بپذیرد.
  • خروجی آن طول ثابتی داشته باشد.
  • به سادگی قابل محاسبه باشد.

این خصوصیات برای هر تابع هشی وجود دارد. برای این که تابع هش تابع امن و خوبی باشد، باید چند خصوصیت دیگر نیز داشته باشد.

  • بدون برخورد بودن (collision free)

یعنی نتوانیم دو ورودی مختلف پیدا کنیم که خروجی‌های یکسان داشته باشند. دقت کنید که چنین ورودی‌هایی وجود دارند اما ما نباید بتوانیم به سادگی آن‌ها را پیدا کنیم. احتمال پیدا کردن یک برخورد در تابع هش بیت کوین برابر ۱۲۸^۲ است. این رقم یعنی اگر هر دانه شن کره زمین خود یک کره زمین بود و دانه شنی روی یکی از این کره‌ها به عنوان هدف انتخاب می‌شد شما می‌توانستید این دانه شن را از میان این کرات به دقت پیدا کنید.

  • یک‌طرفه بودن

یعنی از روی جواب نتوان مقدار اولیه را حدس زد.

  • تغییر شدید

یعنی با تغییر کوچک در ورودی، خروجی به شدت تغییر کند مثلاً با تغییر یک نقطه در یک متن هزار صفحه‌ای خروجی کاملاً تغییر کند.

در حدود بیست تابع هش خوب وجود دارد. دو تابع هش بسیار معروف MD5 و SHA-256 هستند.

استفاده از هش در کامپیوتر

برگردیم به مطلبی که در ابتدای مقاله عنوان کردیم. آیا پسورد ورودی کامپیوترتان در جایی از کامپیوتر شما نوشته شده؟ ویندوز از کجا متوجه می‌شود که شما پسورد درست را وارد کردید؟ جواب این است که خود پسورد شما در کامپیوتر ذخیره نشده و فقط نتیجه هش آن در کامپیوتر ذخیره شده، وقتی شما پسورد را وارد می‌کنید کامپیوتر آن را هش می‌کند و با هشی که در حافظ دارد مقایسه می‌‌کند تا ببیند شما پسورد را درست زدید یا خیر. (ویندوز از الگوریتم هش MD5 استفاده می‌کند)

همچنین بخوانید: حملات ۵۱ درصد

مثلاً اگر پسورد شما ۱۲۳۴ باشد، هش آن ۸۱DC9BDB52D04DC20036DBD8313ED055 می‌شود و یک هکر با دیدن این هش می‌تواند متوجه شود که پسورد شما ۱۲۳۴ بوده و به همین دلیل است که استفاده از پسوردهای معمولی خطرناک است.

یک استفاده دیگر از هش برای اثبات اصالت فایل است. در این  قسمت بیشتر از SHA-256 استفاده می‌شود. فایلی در جایی ذخیره می‌شود و هش آن مثلاً ۴۵۲۵D3C65A9100DD7296097366161AD8D9264662D96CC21E309B45B4C2D2ACD1 می‌شود. شما فایل را دانلود می‌کنید و می خواهید مطمئن شوید که فایل صحیح را دانلود کردید، پس هش فایل اصلی و هش فایل دانلود شده را باهم مقایسه می‌کنید و در صورت یکی بودن، فایل درست را دانلود کرده‌اید.

می‌توانید با ابزار‌های زیادی توابع هش را محاسبه کنید.

 https://md5calc.com/hash/sha256  سایت خوبی برای این کار است. پیشنهاد می‌کنیم هش چند عبارت را امتحان کنید. می‌توانید هش نام خود یا هر عبارتی که دوست دارید را پیدا کنید.  در جدول زیر برای نمونه هش چند عبارت را قرار داده‌ایم.

عبارت ورودی جواب تابع هش SHA-256
arzcell

e06dc89d8d2ace7d563297e449edced6d2bc73384b1f96b446a78e69e0e29b6b

IRAN a8c32a4da87dbdae4088bda7befe49f43013ed4b215d81ed0e59088239cb4665
ارزسل

95a9eabab8ef6516dfef306e948cc6cbfd578a3e646add1521806e5775e0146f

در گشت و گذار دنیای رمزآلود رمزارزها همراهمان باشید ۰۵۹۲۷۹۹۱cfd527b5835ae583f2f837838548bdcda75085ca792a1addd2399a9e
سایت تخصصی ارز دیجیتال

4f2f1de8c355b364a99df35da2d4bea31ed82749e608a817a87675402696580b

your password is secured. ۰۴۸ec540e5c2bd819f5a45e8291677a3c2b61911a3ccb0da8200852188150404
password ۵e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
۱۲۳۴ ۰۳ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4
Satoshi Nakamoto ۵d45192286a77a5de1790436b1ae80e5760c3ee139ff3d51453fc18e58f38611
bitcoin

6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b

دقت کنید که گذاشتن یک نقطه چه تفاوتی در هش ایجاد کرده است و یا بزرگ و کوچک نوشتن یک عبارت چقدر در هش آن تأثیرگذار است.

هش در بیت کوین

در بیت کوین از تابع هش برای چند منظور استفاده شده است. یکی از مهمترین استفاده‌های تابع هش SHA-256 در بیت کوین فرآیند ماینینگ است.

مسابقه‌ای به نام ماینینگ برگزار می‌شود. هر ده دقیقه این مسابقه تکرار می‌شود. باید هشی را پیدا کنیم که ۲۴ رقم اول آن صفر باشد. این عمل مانند آن است که ۲۴ تاس ۱۶ وجهی را بیاندازیم و همه آن‌ها همزمان شش بیایند. پس از یافتن این ترکیب ۱۲.۵ بیت کوین پاداش به شخص یابنده تعلق می گیرد.

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

ورودی‌های ثابت برای هر ده دقیقه تغییر می‌کنند و تا بلوک بعد ثابت‌اند و عبارتند از هش بلوک قبلی به اضافه اطلاعات تراکنش‌ها به اضافه تاریخ.

عدد دلخواه به نام نانس (Nonce) شناخته می‌شود و باید این عدد را آنقدر تغییر دهیم تا خروجی هش تعداد صفرهای دلخواه را در ابتدای خود داشته باشد. اکنون این تعداد برابر ۱۷ رقم اول است که در اصطلاح به آن سختی شبکه می‌گویند. ماینرها با تغییر عدد نانس سعی می‌کنند عددی را بیابند که هش آن تعداد صفر دلخواه را داشته باشد. ممکن است این کار نیاز به هزاران میلیارد بار امتحان کردن اعداد مختلف باشد.

در مثال زیر ما با تغییر عدد نانس چند نمونه از تلاش‌ها را نشان دادیم. عبارت تست ماینینگ دراین نمونه عبارت ثابت بوده و عدد روبروی آن نانس می‌باشد.

عبارت ورودی جواب تابع هش SHA-256
تست ماینینگ ۱ ea8bbdc5fa9868e56961178e3210d3b23ddc2933a0022859d245be901f39af45
تست ماینینگ ۲ b597409ca494a772b217d10a2a187d8f73eab4528a92c8bd47cd1a021c85892c
تست ماینینگ ۳ a3f1521d943f48e6b93c7dd8489a5dbfddef03e812b51627e30658728d60070e
تست ماینینگ ۴ ۱۱b667cf5e7ae55afe19bda237feb04bc1a937c9e876dad012e0ce501db0d11a
تست ماینینگ ۵ ۶e7ce3220b44e29dc388f4e6ffe8ca0c58b786724666327c41db0d8d2d4e3faa

درباره نویسنده

kazem

xan
Student of pure mathematics
Interested in the technology of the day and cyberspace

نظر بدهید