هش تعاریف گوناگونی دارد، در مفهوم دیجیتالی آن، با تبدیل تعدادی بیت که میتوانند حرف، کلمه، جمله و یا حتی انواع فایلها باشند، به خروجی با تعداد ثابت کاراکتر تعریف میشود. هش یک تابع ریاضی است که در رمزنگاری از آن استفاده میشود. البته هدف، حل این تابع نیست، بلکه استفاده از تابع برای رمزنگاری است. استفاده از تابع هش رمزنگاری برای عدم انکار فوقالعاده کاربردی است.
سرفصلهای این مقاله
۰.۱ رمزنگاری در رمزارزها به چه معناست؟۰.۲ پروتکل های امضای دیجیتال چه پروسه ای را می گذرانند تا به هدف خود برسند؟۰.۲.۱ هشینگ۰.۲.۲ امضا۰.۲.۳ اعتبارسنجی۱ هدف هش۱.۱ فرایند هشینگ۱.۲ هش در بلاک چین۱.۳ ویژگی هایی که تابع هش رمزنگاری باید داشته باشد:۱.۳.۱ دقیق و ثابت بودن۱.۳.۲ یک طرفه بودن تابع۱.۳.۳ تغییر هش در صورت ایجاد کوچکترین تغییر در ورودی۱.۳.۴ منحصر به فرد بودن هش۱.۴ معرفی شناخته شده ترین توابع هش۱.۴.۱ MD5۱.۴.۲ SHA۱.۴.۳ RIPEMD۱.۴.۴ Whirlpool۱.۴.۵ سخن آخررمزنگاری در رمزارزها به چه معناست؟
فرض کنید قصد ارسال دارایی و یا پیغامی محرمانه را به دوستی دارید که نمیخواهید افراد دیگر که ممکن است در میانه ارسال، پیغام شما را ببینند از محتویات آن مطلع شوند و تغییری در آن ایجاد کنند.
برای این کار از امضای دیجیتال استفاده میشود. از آنجایی که رمزنگاری کردن پیغامهای طولانی زمان زیادی را میطلبد، پروتکلهای امضای دیجیتال از تابع هش استفاده میکنند.
پروتکل های امضای دیجیتال چه پروسه ای را می گذرانند تا به هدف خود برسند؟
هشینگابتدا دادهها با کمک تابع هش، هش میشوند. دادههایی با طول متفاوت در الگوریتم هش قرار گرفته و هش آن داده را تحویل میدهد.
استفاده از تابع هش کمک بسیار زیادی به تسهیل و سرعت بخشیدن به شبکه بلاک چین دارد، چرا که با استفاده از تابع هش، شبکه همیشه با دادههایی با طول یکسان کار میکند و همین موضوع سرعت عملیات را بالا برده و روند را سهلتر میکند.
امضادر قدم بعد دادههای هش شده باید امضا شوند. فرد فرستنده با استفاده از کلید خصوصی خود هش به دست آمده از تابع هش را امضا میکند، اما کلید خصوصی قرار نیست با شبکه و یا شخص گیرنده به اشتراک گذاشته شود، در نتیجه با استفاده از کلید خصوصی به کلید عمومی دست یافته و آن را به همراه هش به گیرنده ارسال میکنیم.
اعتبارسنجیهمانطور که گفته شد، فرستنده با استفاده از کلید خصوصی پیغامی که قصد ارسال آن را دارد امضا میکند.
از طرف دیگر شخص گیرنده با استفاده از کلید عمومی شخص فرستنده میتواند متوجه شود که آیا پیغامی که دریافت کرده است واقعا متعلق به شخص فرستنده هست یا خیر.
فرستنده نمیتواند کلید خصوصی خود را در اختیار شخص گیرنده و یا هر شخص دیگری قرار دهد، چراکه با استفاده از کلید خصوصی افراد میتوانند به حساب او دسترسی داشته باشند و داراییهای او را به سرقت برند.
کلید عمومی ارتباط مستقیمی با کلید خصوصی دارد. درواقع کلید عمومی با کمک کلید خصوصی ساخته میشود که به اشتراکگذاری آن در شبکه و یا افراد دیگر هیچ مشکلی را برای صاحب حساب ایجاد نمیکند و در تبادلات میتوان با خیالی آسوده برای اعتبارسنجی (آیا این پیغام از طرف شخص مورد نظر است؟) این کلید را در اختیار گیرنده قرار داد.
هدف هش
فرض کنید یک مسابقه برگزار شده و عدهای در آن مسابقه شرکت کردهاند. مجری مسابقه عددی را انتخاب میکند و شرکتکنندگان باید آن عدد را حدس بزنند. در این صورت مجری مسابقه ممکن است حتی در صورت ارائه جواب درست از سمت شرکتکنندگان ادعا کند که عدد دیگری را مد نظر داشته است.
در شبکه بلاک چین امکان چنین تقلبهایی نیست، زیرا یک نسخه از عدد انتخابی باید به تمام افراد حاضر در شبکه ارسال شود و همین موضوع اجازه تقلب به کسی را نخواهد داد.
در واقع جلوگیری از تقلب، اعتبار سنجی، و ذخیره رمزعبور از کاربرهای مهم توابع هش به شمار میروند.
فرایند هشینگ
همانطور که پیش از این نیز بیان شد، تابع هش ورودیهای مختلف را دریافت میکند و خروجیهایی متفاوت اما با طول کاراکتر ثابت را تحویل میدهد.
مهم نیست که یک حرف، جمله و یا یک فایل سنگین را به تابع هش بدهید، این تابع در نهایت به شما خروجی با تعدادی معینی از کاراکترها تحویل میدهد.
همانطور که در دو تصویر بالا میبینید، قرار دادن یک حرف و یا یک جمله برای این تابع فرقی ندارد و تعداد کاراکترهای خروجی تابع با توجه به نوع تابع هش که اینجا تابع هش پرکاربرد sha256 مورد استفاده قرار گرفته است، ثابت میماند.
خروجی تابع هش را “هش” و عملی که با کمک تابع هش انجام میشود را هشینگ میگویند.
توابع هش بسیار گوناگون هستند، اما تابع هش sha256 بیشترین کاربرد را در میان توابع هش دارد.
در هر زمینهای که هویت سنجی و ایجاد امنیت مهم باشد، استفاده از تابع هش رمزنگاری میتواند بسیار کمک بزرگی باشد و به عنوان ایجادکننده امضای دیجیتال عمل کند.
هش در بلاک چین
بلاک چین از یک سری بلاک متصل به هم تشکیل شده است که با کمک زنجیرهای به هم متصل شدهاند. طبیعتا هیچ بلاکی قبل از بلاک اول وجود ندارد، به بلاک اول بلاک چین، بلاک جنسیس گفته میشود. هش بلاک جنسیس با توجه به تراکنشهای ثبت شده در بلاک ایجاد میشود.
از بلاک بعدی، علاوه بر هش خود بلاک، هش بلاک قبلی نیز در آن بلاک قرار میگیرد. از آنجایی که بلاکها با هم در ارتباط هستند ایجاد کوچکترین تغییر در یک بلاک، هش آن بلاک و همچنین هش بلاکهای بعد از آن را تغییر میدهد.
شبکه بلاک چین از این سیستم هش برای اطمینان از اینکه تراکنشها تغییر نکردهاند استفاده میکند.
هر بلاک علاوه بر هش خود، هش بلاک قبلی را نیز دارد، در نتیجه فردی که قصد ایجاد تغییر در بلاک را دارد باید نه تنها هش همان بلاک بلکه هش تمام بلاکهای قبلی را نیز تغییر دهد که تقریبا غیرممکن است.
و بلاک چین به این صورت از تقلب در شبکه جلوگیری میکند. از طرف دیگر تمام افراد فعال در شبکه به هشهای واقعی دسترسی داشتهاند و برای تایید تراکنشهای جدید به راحتی متوجه تغییر شده و تراکنش را تایید نمیکنند.
به همین دلیل است که همه باوردارند که بلاک چین تغییرناپذیر است.
ویژگی هایی که تابع هش رمزنگاری باید داشته باشد:
دقیق و ثابت بودنتابع هش رمزنگاری به ازای وردی که دریافت میکند یک خروجی با طول ثابت تحویل میدهد، این خروجی که همان “هش” است، باید برای همیشه ثابت بماند. به عنوان مثال اگر شما حرف A را به عنوان ورودی به تابع هش دادید باید همان هشی را دریافت کنید که یک آمریکایی و یا چینی دریافت میکنند.
همچنین اگر شما ماه آینده نیز حرف A را به عنوان ورودی به تابع هش دادید باز هم باید همان هش ماه پیش را دریافت کنید.
زیرا در غیر این صورت پیگیری و رصد کردن اطلاعات غیرممکن خواهد بود.
یک طرفه بودن تابعیک تابع هش رمزنگاری زمانی استاندارد است که یک طرفه باشد یعنی با قرار دادن ورودی در تابع هش به راحتی بتوان به خروجی رسید اما رسیدن به ورودی با قرار دادن خروجی در تابع هش تقریبا غیر ممکن باشد.
از آنجایی که خروجی تابع هش همیشه ثابت است، اگر قصد حدس زدن ورودی بر اساس خروجی را بخواهیم در میان تعداد محدودی از ورودیها انجام دهیم، این کار شدنی است.
به عنوان مثال در نظر بگیرید که ۱۰ کلمه را به شما نشان میدهند، و هش یکی از ۱۰ کلمه را نیز در اختیار شما میگذارند، حال شما باید بگویید که این هش متعلق به کدام کلمه است؟
در این حالت کار شما بسیار ساده است و میتوانید با قرار دادن هر ۱۰ کلمه به صورت جداگانه در تابع هش و مقایسه خروجی تابع با هشی که به شما داده شده، بگویید که این هش متعلق به کدام کلمه بوده است.
اما این کار برای تعداد زیادی از اطلاعات بسیار دشوار و یا حتی غیرممکن خواهد بود.
استفاده از رایانههای معمولی برای انجام عملیات لازم برای پیدا کردن دیتای مورد نظر ممکن است به هزاران سال زمان نیاز داشته باشد، مگر اینکه بسیار خوششانس باشید و در چند تست اولیه به هش موردنظر برسید که احتمال آن بسیار کم است.
تغییر هش در صورت ایجاد کوچکترین تغییر در ورودیبا وارد کردن جمله my name is Jack در تابع هش sha256 به هش f794886e4987ce4cb1f4deaf4f942dccfdb766ed38217c596aeaac4cc3b2d4aa دست خواهید یافت.
با وارد کردن my name is Jack. تابع هش یک ورودی متفاوت را به شما ارائه خواهد داد که برابر است با:
۴c4f8a7772915dc152a906edc79ca11ec800421eed2e18874f594189ecd05138
همانطور که میبینید تنها با اضافه کردن یک نقطه به انتهای جمله، هش جمله یا به عبارتی خروجی تابع هش رمزنگاری به طور کامل تغییر کرد.
این ویژگی بسیار مهم است، و در مواقعی که صحت و اعتبارسنجی رمزعبور را بخواهیم انجام دهیم به کمک ما خواهد آمد.
فرض کنید که شما در یک وبسایت ثبت نام کردهاید و قصد ورود به حساب کاربری خود را دارید. در این صورت تنها با وارد کردن رمزعبور خود به صورت دقیق حق ورود به حساب کاربری خود را دارید.
شیوه کار به این صورت است که با انتخاب یک رمز عبور در زمان ثبت نام، هش رمزعبوری که انتخاب کردید در بایگانی قرار میگیرد، در هنگام ورود، پس از وارد کردن رمزعبور، هش رمزعبور وارد شده با هش ثبت شده در پایگاه داده مقایسه شده و در صورت تطبیق به شما اجازه ورود داده خواهد شد.
منحصر به فرد بودن هشهر ورودی در تابع هش رمزنگاری، یک خروجی متناظر با آن ورودی را دارد که منحصر به فرد است و فقط مختص همان داده ورودی است.
معرفی شناخته شده ترین توابع هش
MD5MD که کوتاه شده عبارت Message Digest است و هش ۱۲۸ بیتی را تولید میکند. با اینکه امروزه خیلی مورد اعتماد نیست اما هنوز هم در سیستمهای مختلف از این تابع هش استفاده میشود.
سیستم رمزعبور کاربران در وردپرس از این تابع استفاده میکند. برای ایمن بودن از دستیابی به رمزعبور از کاربران خواسته میشود که رمزهای سادهای که به راحتی حدس زده میشوند استفاده نکنید. به عبارتی از آنها خواسته میشود که به رمز ساده خود نمک اضافه کنند تا دسترسی به رمز عبور آنها سخت شود.
SHASHA کوتاه شده عبارت Secure Hash Algorithm است. SHA-0 که اولین الگوریتم این تابع است در سال ۱۹۹۳ طراحی شد. SHA-1 یک تابع هش ۱۶۰ بیتی نسخه برطرف شده ایرادات SHA-0 به حساب میآید.
SHA-2 شامل ۶ تابع SHA-224، SHA-256، SHA-384، SHA-512، SHA-512/224 و SHA-512/256است.
در بلاک چین بیت کوین از الگوریتم SHA256 استفاده میشود.
SHA-3 در سال ۲۰۱۲ طراحی و در سال ۲۰۱۵ منتشر شد.
RIPEMDالگوریتم RIPEMD مجموعهای از توابع هش است. این الگوریتم شباهت زیادی با الگوریتم MD4 دارد، اما از نظر عملکرد به الگوریتم SHA-1 شباهت دارد.
Whirlpoolالگوریتم ویرپول در سال ۲۰۰۰ طراحی شد. این تابع هش ۵۱۲ بیتی است و تا کنون ۳ نسخه WHIRLPOOL، WHIRLPOOL-T WHIRLPOO از آن منتشر شده است.
سخن آخرسعی ما بر این بود تا با زبانی ساده هش رمزنگاری را شرح دهیم. مطمئنا با مطالعه این مطلب و مطالب دیگر بسیاری از سوالات شما جواب داده خواهد شد و ابهامات درون ذهن شما از بین میروند.
تابع هش، عمل هشینگ، هش رمزنگاری و کلمات و عبارات زیادی در دنیای رمزارزها وجود دارند که بهتر است اگر قصد فعالیت در بازار رمزارزها را دارید و یا علاقهمند به این حوزه هستید با گذراندن یک دوره آموزش ارز دیجیتال به جواب تمام سوالات خود برسید.
چطور با تخفیف کارمزد در صرافی ارز دیجیتال ثبت نام کنیم؟
برای ثبت نام در صرافی کوینکس (CoinEx) با تخفیف کارمزد معاملات اینجا کلیک کنید!
برای ثبت نام در صرافی بایننس (Binance) با تخفیف کارمزد معاملات اینجا کلیک کنید!
توجه: برای انجام معامله در بایننس حتما با آی پی خارج از ایران وارد شوید