به گزارش سایت خبری پرسون، در واقع هش یک تابع ریاضی است که در رمزنگاری از آن استفاده میشود. به این توجه کنید که هدف، حل این تابع نیست، بلکه استفاده از تابع برای رمزنگاری است. استفاده از تابع هش رمزنگاری برای عدم انکار فوقالعاده کاربردی است.
مفهوم رمزنگاری در رمزارزها
فرض کنید قصد ارسال دارایی و یا پیغامی محرمانه را به دوستی دارید که نمیخواهید افراد دیگر که ممکن است در میانه ارسال، پیغام شما را ببینند از محتویات آن مطلع شوند و تغییری در آن ایجاد کنند.
برای این کار از امضای دیجیتال استفاده میشود. از آنجایی که رمزنگاری کردن پیغامهای طولانی زمان زیادی را میطلبد، پروتکلهای امضای دیجیتال از تابع هش استفاده میکنند.
دادهها با کمک تابع هش، هش میشوند. دادههایی با طول متفاوت در الگوریتم هش قرار گرفته و هش آن داده را تحویل میدهد.
استفاده از تابع هش کمک بسیار زیادی به تسهیل و سرعت بخشیدن به شبکه بلاک چین دارد، چرا که با استفاده از تابع هش، شبکه همیشه با دادههایی با طول یکسان کار میکند و همین موضوع سرعت عملیات را بالا برده و روند را سهلتر میکند.
درمرحله بعد دادههای هش شده باید امضا شوند. فرد فرستنده با استفاده از کلید خصوصی خود هش به دست آمده از تابع هش را امضا میکند، اما کلید خصوصی قرار نیست با شبکه و یا شخص گیرنده به اشتراک گذاشته شود، در نتیجه با استفاده از کلید خصوصی به کلید عمومی دست یافته و آن را به همراه هش به گیرنده ارسال میکنیم.
همانطور که قبلا گفته شد، فرستنده با استفاده از کلید خصوصی پیغامی که قصد ارسال آن را دارد امضا میکند.از طرف دیگر شخص گیرنده با استفاده از کلید عمومی شخص فرستنده میتواند متوجه شود که آیا پیغامی که دریافت کرده است واقعا متعلق به شخص فرستنده هست یا خیر.
درواقع فرستنده نمیتواند کلید خصوصی خود را در اختیار شخص گیرنده و یا هر شخص دیگری قرار دهد، چراکه با استفاده از کلید خصوصی افراد میتوانند به حساب او دسترسی داشته باشند و داراییهای او را به سرقت برند.
لازم است بدانید که کلید عمومی ارتباط مستقیمی با کلید خصوصی دارد. درواقع کلید عمومی با کمک کلید خصوصی ساخته میشود که به اشتراکگذاری آن در شبکه و یا افراد دیگر هیچ مشکلی را برای صاحب حساب ایجاد نمیکند و در تبادلات میتوان با خیالی آسوده برای اعتبارسنجی این کلید را در اختیار گیرنده قرار داد.
هدف هش
فرض کنید یک مسابقه برگزار شده و عدهای در آن مسابقه شرکت کردهاند. مجری مسابقه عددی را انتخاب میکند و شرکتکنندگان باید آن عدد را حدس بزنند. در این صورت مجری مسابقه ممکن است حتی در صورت ارائه جواب درست از سمت شرکتکنندگان ادعا کند که عدد دیگری را مد نظر داشته است.
خبر خوب اینکه در شبکه بلاک چین امکان چنین تقلبهایی نیست، زیرا یک نسخه از عدد انتخابی باید به تمام افراد حاضر در شبکه ارسال شود و همین موضوع اجازه تقلب به کسی را نخواهد داد.
در واقع جلوگیری از تقلب، اعتبار سنجی، و ذخیره رمزعبور از کاربرهای مهم توابع هش به شمار میروند.
فرایند هشینگ
تابع هش ورودیهای مختلف را دریافت میکند و خروجیهایی متفاوت اما با طول کاراکتر ثابت را تحویل میدهد.
مهم نیست که یک حرف، جمله و یا یک فایل سنگین را به تابع هش بدهید، این تابع در نهایت به شما خروجی با تعدادی معینی از کاراکترها تحویل میدهد.
خروجی تابع هش را “هش” و عملی که با کمک تابع هش انجام میشود را هشینگ میگویند.
توابع هش بسیار گوناگون هستند، اما تابع هش sha256 بیشترین کاربرد را در میان توابع هش دارد.
در هر زمینهای که هویت سنجی و ایجاد امنیت مهم باشد، استفاده از تابع هش رمزنگاری میتواند بسیار کمک بزرگی باشد و به عنوان ایجادکننده امضای دیجیتال عمل کند.
مفهوم هش در بلاک چین
بلاک چین از یک سری بلاک متصل به هم تشکیل شده است که با کمک زنجیرهای به هم متصل شدهاند. طبیعتا هیچ بلاکی قبل از بلاک اول وجود ندارد، به بلاک اول بلاک چین، بلاک جنسیس گفته میشود. هش بلاک جنسیس با توجه به تراکنشهای ثبت شده در بلاک ایجاد میشود.
از بلاک بعدی، علاوه بر هش خود بلاک، هش بلاک قبلی نیز در آن بلاک قرار میگیرد. از آنجایی که بلاکها با هم در ارتباط هستند ایجاد کوچکترین تغییر در یک بلاک، هش آن بلاک و همچنین هش بلاکهای بعد از آن را تغییر میدهد.شبکه بلاک چین از این سیستم هش برای اطمینان از اینکه تراکنشها تغییر نکردهاند استفاده میکند.
هر بلاک علاوه بر هش خود، هش بلاک قبلی را نیز دارد، در نتیجه فردی که قصد ایجاد تغییر در بلاک را دارد باید نه تنها هش همان بلاک بلکه هش تمام بلاکهای قبلی را نیز تغییر دهد که تقریبا غیرممکن است.
و بلاک چین به این صورت از تقلب در شبکه جلوگیری میکند. از طرف دیگر تمام افراد فعال در شبکه به هشهای واقعی دسترسی داشتهاند و برای تایید تراکنشهای جدید به راحتی متوجه تغییر شده و تراکنش را تایید نمیکنند.به همین دلیل است که همه باوردارند که بلاک چین تغییرناپذیر است.
مجموعه ویژگی هایی که تابع هش رمزنگاری باید داشته باشد:
دقیق و ثابت بودن
تابع هش رمزنگاری به ازای وردی که دریافت میکند یک خروجی با طول ثابت تحویل میدهد، این خروجی که همان “هش” است، باید برای همیشه ثابت بماند. به عنوان مثال اگر شما حرف A را به عنوان ورودی به تابع هش دادید باید همان هشی را دریافت کنید که یک آمریکایی و یا چینی دریافت میکنند.
همچنین اگر شما ماه آینده نیز حرف A را به عنوان ورودی به تابع هش دادید باز هم باید همان هش ماه پیش را دریافت کنید.زیرا در غیر این صورت پیگیری و رصد کردن اطلاعات غیرممکن خواهد بود.
یک طرفه بودن تابع
یک تابع هش رمزنگاری زمانی استاندارد است که یک طرفه باشد یعنی با قرار دادن ورودی در تابع هش به راحتی بتوان به خروجی رسید اما رسیدن به ورودی با قرار دادن خروجی در تابع هش تقریبا غیر ممکن باشد.
از آنجایی که خروجی تابع هش همیشه ثابت است، اگر قصد حدس زدن ورودی بر اساس خروجی را بخواهیم در میان تعداد محدودی از ورودیها انجام دهیم، این کار شدنی است.
استفاده از رایانههای معمولی برای انجام عملیات لازم برای پیدا کردن دیتای مورد نظر ممکن است به هزاران سال زمان نیاز داشته باشد، مگر اینکه بسیار خوششانس باشید و در چند تست اولیه به هش موردنظر برسید که احتمال آن بسیار کم است.
منحصر به فرد بودن
هر ورودی در تابع هش رمزنگاری، یک خروجی متناظر با آن ورودی را دارد که منحصر به فرد است و فقط مختص همان داده ورودی است.