Contents
هش رمزنگاری ارز دیجیتال یا کریپتو کرنسی شده چه می باشد؟
هش رمزنگاری تعاریف گوناگونی دارد، در مفهوم دیجیتالی آن، با تبدیل تعدادی بیت که میتوانند حرف، کلمه، جمله و یا حتی انواع فایلها باشند، به خروجی با تعداد ثابت کاراکتر تعریف میشود.
هش یک تابع ریاضی است که در رمزنگاری از آن استفاده میشود. البته هدف، حل این تابع نیست بلکه استفاده از تابع برای رمزنگاری است. استفاده از تابع هش برای عدم انکار فوقالعاده کاربردی است.
رمزنگاری در رمزارزها به چه معناست؟
فرض کنید قصد ارسال دارایی و یا پیغامی محرمانه را به دوستی دارید که نمیخواهید افراد دیگر که ممکن است در میانه ارسال، پیغام شما را ببینند از محتویات آن مطلع شوند و تغییری در آن ایجاد کنند.
برای این کار از امضای دیجیتال استفاده میشود. از آنجایی که رمزنگاری کردن پیغامهای طولانی زمان زیادی را میطلبد، پروتکلهای امضای دیجیتال از تابع هش استفاده میکنند.
اما پروتکلهای امضای دیجیتال چه پروسهای را میگذرانند تا به هدف خود برسند؟
هشینگ
ابتدا دادهها با کمک تابع هش، هش میشوند. دادههایی با طول متفاوت در الگوریتم هش قرار گرفته و هش آن داده را تحویل میدهد.
استفاده از تابع هش کمک بسیار زیادی به تسهیل و سرعت بخشیدن به شبکه بلاک چین دارد، چرا که با استفاده از تابع هش، شبکه همیشه با دادههایی با طول یکسان کار میکند و همین موضوع سرعت عملیات را بالا برده و روند را سهلتر میکند.
امضا
در قدم بعد دادههای هش شده باید امضا شوند. فرد فرستنده با استفاده از کلید خصوصی خود هش به دست آمده از تابع هش را امضا میکند، اما کلید خصوصی قرار نیست با شبکه و یا شخص گیرنده به اشتراک گذاشته شود، در نتیجه با استفاده از کلید خصوصی به کلید عمومی دست یافته و آن را به همراه هش به گیرنده ارسال میکنیم.
اعتبارسنجی
همانطور که گفته شد، فرستنده با استفاده از کلید خصوصی پیغامی که قصد ارسال آن را دارد امضا میکند.
از طرف دیگر شخص گیرنده با استفاده از کلید عمومی شخص فرستنده میتواند متوجه شود که آیا پیغامی که دریافت کرده است واقعا متعلق به شخص فرستنده هست یا خیر.
فرستنده نمیتواند کلید خصوصی خود را در اختیار شخص گیرنده و یا هر شخص دیگری قرار دهد، چراکه با استفاده از کلید خصوصی افراد میتوانند به حساب او دسترسی داشته باشند و داراییهای او را به سرقت برند.
کلید عمومی ارتباط مستقیمی با کلید خصوصی دارد. درواقع کلید عمومی با کمک کلید خصوصی ساخته میشود که به اشتراکگذاری آن در شبکه و یا افراد دیگر هیچ مشکلی را برای صاحب حساب ایجاد نمیکند و در تبادلات میتوان با خیالی آسوده برای اعتبارسنجی (آیا این پیغام از طرف شخص مورد نظر است؟) این کلید را در اختیار گیرنده قرار داد.
هدف هش
فرض کنید یک مسابقه برگزار شده و عدهای در آن مسابقه شرکت کردهاند. مجری مسابقه عددی را انتخاب میکند و شرکتکنندگان باید آن عدد را حدس بزنند. در این صورت مجری مسابقه ممکن است حتی در صورت ارائه جواب درست از سمت شرکتکنندگان ادعا کند که عدد دیگری را مد نظر داشته است.
در شبکه بلاک چین امکان چنین تقلبهایی نیست، زیرا یک نسخه از عدد انتخابی باید به تمام افراد حاضر در شبکه ارسال شود و همین موضوع اجازه تقلب به کسی را نخواهد داد.
در واقع جلوگیری از تقلب، اعتبار سنجی، و ذخیره رمزعبور از کاربرهای مهم توابع هش به شمار میروند.
فرایند هشینگ
همانطور که پیش از این نیز بیان شد، تابع هش ورودیهای مختلف را دریافت میکند و خروجیهایی متفاوت اما با طول کاراکتر ثابت را تحویل میدهد.
مهم نیست که یک حرف، جمله و یا یک فایل سنگین را به تابع هش بدهید، این تابع در نهایت به شما خروجی با تعدادی معینی از کاراکترها تحویل میدهد.
همانطور که در دو تصویر بالا میبینید، قرار دادن یک حرف و یا یک جمله برای این تابع فرقی ندارد و تعداد کاراکترهای خروجی تابع با توجه به نوع تابع هش که اینجا تابع هش پرکاربرد sha256 مورد استفاده قرار گرفته است، ثابت میماند.
خروجی تابع هش را “هش” و عملی که با کمک تابع هش انجام میشود را هشینگ میگویند.
توابع هش بسیار گوناگون هستند، اما تابع هش sha256 بیشترین کاربرد را در میان توابع هش دارد.
در هر زمینهای که هویت سنجی و ایجاد امنیت مهم باشد، استفاده از تابع هش رمزنگاری میتواند بسیار کمک بزرگی باشد و به عنوان ایجادکننده امضای دیجیتال عمل کند.
هش در بلاک چین
بلاک چین از یک سری بلاک متصل به هم تشکیل شده است که با کمک زنجیرهای به هم متصل شدهاند. طبیعتا هیچ بلاکی قبل از بلاک اول وجود ندارد، به بلاک اول بلاک چین، بلاک جنسیس گفته میشود. هش بلاک جنسیس با توجه به تراکنشهای ثبت شده در بلاک ایجاد میشود.
از بلاک بعدی، علاوه بر هش خود بلاک، هش بلاک قبلی نیز در آن بلاک قرار میگیرد. از آنجایی که بلاکها با هم در ارتباط هستند ایجاد کوچکترین تغییر در یک بلاک، هش آن بلاک و همچنین هش بلاکهای بعد از آن را تغییر میدهد.
شبکه بلاک چین از این سیستم هش برای اطمینان از اینکه تراکنشها تغییر نکردهاند استفاده میکند.
هر بلاک علاوه بر هش خود، هش بلاک قبلی را نیز دارد، در نتیجه فردی که قصد ایجاد تغییر در بلاک را دارد باید نه تنها هش همان بلاک بلکه هش تمام بلاکهای قبلی را نیز تغییر دهد که تقریبا غیرممکن است.
و بلاک چین به این صورت از تقلب در شبکه جلوگیری میکند. از طرف دیگر تمام افراد فعال در شبکه به هشهای واقعی دسترسی داشتهاند و برای تایید تراکنشهای جدید به راحتی متوجه تغییر شده و تراکنش را تایید نمیکنند.
به همین دلیل است که همه باوردارند که بلاک چین تغییرناپذیر است.
ویژگی هایی که تابع هش رمزنگاری باید داشته باشد
دقیق و ثابت بودن
تابع هش رمزنگاری به ازای وردی که دریافت میکند یک خروجی با طول ثابت تحویل میدهد، این خروجی که همان “هش” است، باید برای همیشه ثابت بماند. به عنوان مثال اگر شما حرف A را به عنوان ورودی به تابع هش دادید باید همان هشی را دریافت کنید که یک آمریکایی و یا چینی دریافت میکنند.
همچنین اگر شما ماه آینده نیز حرف A را به عنوان ورودی به تابع هش دادید باز هم باید همان هش ماه پیش را دریافت کنید.
زیرا در غیر این صورت پیگیری و رصد کردن اطلاعات غیرممکن خواهد بود.
یک طرفه بودن تابع
یک تابع هش رمزنگاری زمانی استاندارد است که یک طرفه باشد یعنی با قرار دادن ورودی در تابع هش به راحتی بتوان به خروجی رسید اما رسیدن به ورودی با قرار دادن خروجی در تابع هش تقریبا غیر ممکن باشد.
از آنجایی که خروجی تابع هش همیشه ثابت است، اگر قصد حدس زدن ورودی بر اساس خروجی را بخواهیم در میان تعداد محدودی از ورودیها انجام دهیم، این کار شدنی است.
به عنوان مثال در نظر بگیرید که 10 کلمه را به شما نشان میدهند، و هش یکی از 10 کلمه را نیز در اختیار شما میگذارند، حال شما باید بگویید که این هش متعلق به کدام کلمه است؟
در این حالت کار شما بسیار ساده است و میتوانید با قرار دادن هر 10 کلمه به صورت جداگانه در تابع هش و مقایسه خروجی تابع با هشی که به شما داده شده، بگویید که این هش متعلق به کدام کلمه بوده است.
اما این کار برای تعداد زیادی از اطلاعات بسیار دشوار و یا حتی غیرممکن خواهد بود.
استفاده از رایانههای معمولی برای انجام عملیات لازم برای پیدا کردن دیتای مورد نظر ممکن است به هزاران سال زمان نیاز داشته باشد، مگر اینکه بسیار خوششانس باشید و در چند تست اولیه به هش موردنظر برسید که احتمال آن بسیار کم است.
تغییر هش در صورت ایجاد کوچکترین تغییر در ورودی
با وارد کردن جمله my name is Jack در تابع هش sha256 به هش f794886e4987ce4cb1f4deaf4f942dccfdb766ed38217c596aeaac4cc3b2d4aa دست خواهید یافت.
با وارد کردن my name is Jack. تابع هش یک ورودی متفاوت را به شما ارائه خواهد داد که برابر است با:
4c4f8a7772915dc152a906edc79ca11ec800421eed2e18874f594189ecd05138
همانطور که میبینید تنها با اضافه کردن یک نقطه به انتهای جمله، هش جمله یا به عبارتی خروجی تابع هش رمزنگاری به طور کامل تغییر کرد.
این ویژگی بسیار مهم است، و در مواقعی که صحت و اعتبارسنجی رمزعبور را بخواهیم انجام دهیم به کمک ما خواهد آمد.
فرض کنید که شما در یک وبسایت ثبت نام کردهاید و قصد ورود به حساب کاربری خود را دارید. در این صورت تنها با وارد کردن رمزعبور خود به صورت دقیق حق ورود به حساب کاربری خود را دارید.
شیوه کار به این صورت است که با انتخاب یک رمز عبور در زمان ثبت نام، هش رمزعبوری که انتخاب کردید در بایگانی قرار میگیرد، در هنگام ورود، پس از وارد کردن رمزعبور، هش رمزعبور وارد شده با هش ثبت شده در پایگاه داده مقایسه شده و در صورت تطبیق به شما اجازه ورود داده خواهد شد.
منحصر به فرد بودن هش
هر ورودی در تابع هش رمزنگاری، یک خروجی متناظر با آن ورودی را دارد که منحصر به فرد است و فقط مختص همان داده ورودی است.
معرفی شناخته شدهترین توابع هش
MD5
MD که کوتاه شده عبارت Message Digest است و هش 128 بیتی را تولید میکند. با اینکه امروزه خیلی مورد اعتماد نیست اما هنوز هم در سیستمهای مختلف از این تابع هش استفاده میشود.
سیستم رمزعبور کاربران در وردپرس از این تابع استفاده میکند. برای ایمن بودن از دستیابی به رمزعبور از کاربران خواسته میشود که رمزهای سادهای که به راحتی حدس زده میشوند استفاده نکنید. به عبارتی از آنها خواسته میشود که به رمز ساده خود نمک اضافه کنند تا دسترسی به رمز عبور آنها سخت شود.
SHA
SHA کوتاه شده عبارت Secure Hash Algorithm است. SHA-0 که اولین الگوریتم این تابع است در سال 1993 طراحی شد. SHA-1 یک تابع هش 160 بیتی نسخه برطرف شده ایرادات SHA-0 به حساب میآید.
SHA-2 شامل 6 تابع SHA-224، SHA-256، SHA-384، SHA-512، SHA-512/224 و SHA-512/256است.
در بلاک چین بیت کوین از الگوریتم SHA256 استفاده میشود.
SHA-3 در سال 2012 طراحی و در سال 2015 منتشر شد.
RIPEMD
الگوریتم RIPEMD مجموعهای از توابع هش است. این الگوریتم شباهت زیادی با الگوریتم MD4 دارد، اما از نظر عملکرد به الگوریتم SHA-1 شباهت دارد.
Whirlpool
الگوریتم ویرپول در سال 2000 طراحی شد. این تابع هش 512 بیتی است و تا کنون 3 نسخه WHIRLPOOL، WHIRLPOOL-T WHIRLPOO از آن منتشر شده است.
کلام آخر
سعی ما بر این بود تا با زبانی ساده هش رمزنگاری را شرح دهیم. مطمئنا با مطالعه این مطلب و مطالب دیگر بسیاری از سوالات شما جواب داده خواهد شد و ابهامات درون ذهن شما از بین میروند.
تابع هش، عمل هشینگ، هش رمزنگاری و کلمات و عبارات زیادی در دنیای رمزارزها وجود دارند که بهتر است اگر قصد فعالیت در بازار رمزارزها را دارید و یا علاقهمند به این حوزه هستید با گذراندن یک دوره آموزش ارز دیجیتال به جواب تمام سوالات خود برسید.