الگوریتم هش چیست؟
الگوریتم هش چیست؟ الگوریتم هش در بازار ارز دیجیتال معمولاً به عنوان روشی برای امضای دیجیتال و تأیید صحت دادهها استفاده میشود. الگوریتمهای هش معمولاً بر اساس توابع رمزنگاری از جمله SHA-256 یا MD5 عمل میکنند. این الگوریتمها اطلاعات ورودی را به یک مقدار هش کوتاهتر تبدیل میکنند که به صورت منحصر به فرد مشخص می شود. در بازار ارز دیجیتال، الگوریتمهای هش برای تأیید تراکنش ها و اطلاعات بلاک های بلاک چین مورد استفاده قرار میگیرند تا امنیت و صحت دادهها تضمین شود. در ادامه به بررسی الگوریتم هش چیست؟ می پردازیم با ایرانکس همراه باشید.
الگوریتم هش چیست؟
الگوریتم هش یک تابع رمزنگاری است که یک ورودی را به یک خروجی ثابت مشخص تبدیل میکند. این تبدیلات به طور عمومی به عنوان مقدار هش شناخته میشوند. یک ویژگی مهم این الگوریتمها این است که حتی اگر ورودی تغییری پیدا کند، مقدار هش تولید شده کاملاً متفاوت خواهد بود. این الگوریتمها در امنیت اطلاعات، تأیید تراکنشها و امضای دیجیتال استفاده میشوند.
مقدمهای بر فرآیند هشینگ ؛ هش یعنی چه؟
هشینگ فرآیند ایجاد یک خروجی با اندازه ثابت از یک ورودی با اندازه متغیر است. به عبارتی داده وارد شده میتواند هر اندازهای داشته باشد، اما بدون توجه به آن، داده به دست آمده همیشه اندازه ثابتی دارد. پس تابع هش چیست؟ کاری که در مرحله قبل گفتیم به وسیله استفاده از یک سری فرمولهای ریاضی به نام توابع هش انجام میشود. این تابعها در قالب الگوریتمهای Hashing پیاده میشوند.
برای درک این دو مفهوم باید بدانید یک الگوریتم، مجموعهای از دستورالعملها است. در علوم کامپیوتر، یک تابع پیادهسازی یک الگوریتم به شمار میرود. یک Algorithm یک فرآیند بوده و تعدادی مرحله را برای انجام یک محاسبه شامل میشود، اما یک Function (تابع) رابطه ریاضی بین پارامترها و نتایج است. به عبارت دیگر، الگوریتم روشی تئوری درباره چگونگی حل مسئله و تابع، پیادهسازی آن در عمل است.
اگرچه در همه توابع هش، از رمزنگاری استفاده نمیشود، اما اصطلاحا توابع هش رمزنگاری، در مرکز رمز ارزها قرار داشته و جزوی جدانشدنی از آنها به شمار میروند. به لطف این الگوریتمها، سیستمهای قدرت گرفته از فناوری بلاک چین و دیگر سیستمهای توزیع شده به سطوح بالایی از یکپارچگی و امنیت داده دست پیدا میکنند.
توابع هشینگ معمولی و رمزنگاری، قطعی هستند. قطعی بودن به این معنی است که تا زمان عدم تغییر ورودی، الگوریتم همیشه خروحی یکسانی تولید خواهد کرد. خروجی به دست آمده از تابع Hashing، یک هش (Hash) نام دارد.
به طور معمول الگوریتمهای هشینگ رمز ارزها به صورت توابع یک طرفه طراحی میشوند، به این معنی که امکان برگرداندن (رسیدن از خروجی به ورودی) بسیار دشوار بوده و در اغلب مواقع به سالها پردازش نیاز دارد! این موضوع سبب میشود مشخص کردن ورودی بر اساس هش در دسترس، تقریبا غیر ممکن باشد. به راحتی میتوان قطعهای دیتا را وارد تابع و یک خروجی تولید کرد، اما بالعکس آن بسیار دشوار و در بیشتر مواقع کاملا غیر ممکن است. هر چه رسیدن به داده اولیه بر اساس هش دشوارتر باشد، الگوریتم هشینگ مورد استفاده ایمنتر محسوب میشود.
مزایا و معایب الگوریتم هش چیست؟
مزایا:
1. امنیت: الگوریتم های هش به دلیل خصوصیتهای خود، امنیت بالایی را برای اطلاعات فراهم میکنند. هرگونه تغییر کوچک در ورودی موجب تولید مقدار هش متفاوت و غیر قابل پیشبینی میشود.
2. اهمیت حفظ حریم خصوصی: الگوریتم های هش اطلاعات را به صورت غیر قابل بازگشتی تبدیل میکنند، بنابراین امکان بازگشت به اطلاعات اصلی از مقدار هش تولید شده وجود ندارد. این ویژگی میتواند در حفظ حریم خصوصی و امنیت دادهها موثر باشد.
3. سرعت: الگوریتم های هش عملیات سریعی هستند و میتوانند به سرعت مقدار هش را برای دادههای ورودی محاسبه کنند.
معایب:
1. تصادفی بودن: الگوریتم های هش به طور تصادفی مقادیر هش تولید میکنند، بنابراین امکان وقوع تصادفی تلاش های تداخلی (collision) وجود دارد که ممکن است امنیت سیستم را تهدید کند.
2. آسیبپذیری نسبت به تغییرات: الگوریتمهای هش آسیب پذیری هایی نظیر تداخل و برخی حملات دیگر را نیز دارند که ممکن است امنیت دادهها را به خطر بیندازند.
3. نیاز به قدرت محاسباتی: برای محاسبه مقادیر هش برای دادههای بزرگ، نیاز به قدرت محاسباتی قابل توجهی وجود دارد که ممکن است موجب افزایش هزینهها و زمان مورد نیاز برای انجام فرآیندها شود.
اهمیت هشینگ و هش در ارز دیجیتال چیست؟
توابع هش معمولی موارد استفاده زیاد و گوناگونی دارند. به عنوان مثال باید به جستجو در پایگاههای داده، تجزیه و تحلیل فایلهای بزرگ و مدیریت داده اشاره کرد. در طرفی دیگر با تابعهای هش رمزنگاری رو به رو هستیم که به طور گسترده در اپلیکیشنهای امنیت اطلاعات نظیر احراز هویت پیام و انگشت نگاری دیجیتال مورد استفاده قرار میگیرند.
در بیت کوین به عنوان نماینده صنعت کریپتوکارنسی، کاربرد توابع هش رمزنگاری بیشتر مربوط به فرآیند ماینینگ یا همان استخراج است. این تابعها همچنین نقشی بسیار مهم در ایجاد آدرسها و کلیدهای جدید دارند. بد نیست بدانید در رمز ارزها، به جای نام کاربری و رمز عبور، با کلید عمومی و کلید خصوصی سر و کار داریم.
قدرت واقعی هشینگ در هنگام برخورد با حجم عظیمی از اطلاعات نمایان میشود. به عنوان نمونه، کاربر میتواند یک تابع هش را روی یک فایل بزرگ یا مجموعه داده اجرا کرده و سپس از خروجی برای تایید سریع صحت و تمامیت (درستی) آن بهره ببرد. این کار به لطف طبیعت و ماهیت قطعی توابع هش امکانپذیر میشود؛ یک ورودی مشخص، همیشه به صورت ساده به یک خروجی مشخص منجر میشود. اگر در یک مرتبه اجرای الگوریتم هشینگ روی فایل یا مجموعه دیتا، یک هش متفاوت ایجاد شد، متوجه بهم ریختن یکپارچگی آن خواهید شد. یک تکنیک این چنینی نیاز به ذخیرهسازی و به یادسپاری دیتای با حجم بالا را از بین میبرد.
هشینگ به خصوص در تکنولوژی بلاک چین بسیار کاربردی است. بیت کوین را در نظر بگیرید. برخی عملیاتهای بلاک چین این رمز ارز درگیر Hashing هستند. بیشتر این عملیاتها به فرآیند ماینینگ مربوط میشوند. در حقیقت، تقریبا پروتکل تمامی رمز ارزها برای لینک کردن و متراکم کردن گروههای تراکنشها داخل بلاکها و همچنین ایجاد پلهای ارتباطی رمزنگاری شده بین این بلاکها، متکی به هشینگ هستند. اتصال زنجیروار بلاکها به یکدیگر، بلاک چین (Block + Chain) را به وجود میآورد که نوع خاصی از پایگاه داده با ساختاری خاص است.
آشنایی با توابع هش پرکاربرد
با توجه به شناختی که از اهمیت هشینگ در بلاکچین به دست آوردیم، اکنون آشنایی با الگوریتمهای هشینگ از اهمیت ویژهای برخوردار است. الگوریتم هشینگ ایمن یا SHA رایجترین تابع هش است که توسط موسسه ملی استانداردها و فناوری (NIST) پیشنهاد شده است. نسخههای بعدی SHA نظیر SHA-1 و SHA-2 و SHA-3 به دلیل قابلیتهای خود بسیار شناخته شدهاند. در ادامه به طور دقیقتر این الگوریتمها را بررسی میکنیم.
الگوریتم SHA-1
الگوریتم SHA-1 میتواند از ورودی با طولهای مختلف استفاده کند و سپس یک پیام ۱۶۰ بیتی تولید کرده و پیامها را در بلاکهایی به اندازه ۵۱۲ بیت پردازش کند. اگر طول پیام ضریبی از ۵۱۲ بیت نباشد، الگوریتم SHA میتواند طول پیام را تغییر دهد تا به نزدیکترین ضریب ۵۱۲ بیت برسد. الگوریتم SHA-۱ پرکاربردترین تابع هش SHA است. از این الگوریتم در برنامهها و پروتکل های بسیار زیادی نظیر SSL مورد استفاده قرار گرفت. در سال ۲۰۰۵، روشی برای نشان دادن نواقص SHA-۱ در دورههای زمان یافت شد و باعث شد استفاده بلندمدت از SHA-۱ با شک و ابهام روبهرو شود.
الگوریتم SHA-2
الگوریتم SHA-2 در حال حاضر یکی از الگوریتمهای محبوب در جامعه رمزنگاری است، هرچند همانند الگوریتم SHA-1 دارای نقاط ضعف خاصی است. الگوریتم SHA-2 پس از معرفی در سال ۲۰۰۱ دستخوش تغییراتی چشمگیر شده و ۴ نسخه مختلف از آن عرضه شده است. این ۴ نسخه عبارتند از SHA-256 و SHA-224 و SHA-512 و SHA-384. گفتنی است الگوریتم SHA-256 یکی از پذیرفتهشدهترین الگوریتمهای رمزنگاری است.
الگوریتم SHA-256
الگوریتم SHA-256 میتواند از طریق اندازه بلاک ۵۱۲ بیت، دایجست پیام ۲۵۶ بیت ایجاد کند، در حالی که الگوریتم SHA-224 از نسخه کوتاهتر SHA-256 بهره میبرد و با استفاده از اندازه بلاک ۵۱۲ بیت میتواند دایجست پیام ۲۲۴ بیت تولید کند. الگوریتم SHA-512 میتواند با استفاده از اندازه بلاک ۱۰۲۴ بیت، دایجست پیام ۵۱۲ بیت تولید کند و الگوریتم SHA-384 از نسخه کوتاهتر SHA-512 بهره میبرد و میتواند با استفاده از اندازه بلاک ۱۰۲۴ بیت، دایجست پیام ۳۸۴ بیت ایجاد کند.
الگوریتم SHA-3
الگوریتمهای SHA-3 جدیدترین نسخه الگوریتمهای هشینگ ایمن به شمار میآیند که اهمیت هشینگ در بلاکچین را نشان میدهند. SHA-3 درسال ۲۰۱۵ عرضه شده و همانند استاندارد الگوریتم MD5 است. SHA-3 قابلیت این را دارد تا به عنوان جایگزینی برای SHA-2 عمل کند، در حالی که نسخهها و طول هش آن مشابه با SHA-2 است. تنها تفاوت این دو الگوریتم این است که SHA-3 امنیت بهتری ارائه میدهد.
الگوریتم خلاصه پیام (Message Digest)
خانواده MD یا Message Digest شامل توابع هش MD2، MD4 ، MD5 و MD6 است که به تصویب استاندارد اینترنت RFC ۱۳۲۱ رسیدند. این توابع هش از سری توابع با طول ۱۲۸ بیت هستند. تابع MD5 به طور گسترده در نرم افزارها استفاده میشد تا یکپارچگی فایل منتقل شده را تضمین کند. برای مثال، سرورها معمولا یک عدد با نام checksum قبل از ارسال فایل محاسبه میکنند. کاربر فایل را از سرور دریافت کرده و checksumها را مقایسه میکند؛ اگر مطابقت داشتند، صحت فایل تضمین شده است. در سال ۲۰۰۴، در MD5 نواقصی پیدا شد. این گزارش در مورد آنالیز یک حمله بود که توانست در مدت زمان یک ساعت از این نواقص استفاده کند. همین امر باعث شد که استفاده از این تابع هش توصیه نشود.
- الگوریتم دایجست پیام MD2 در سال ۱۹۸۹ به عنوان جایگزینی برای توابع هش ایمن مختص پردازندههای ۸ بیتی عرضه شد. MD2 میتواند طول پیام را تغییر دهد تا ضریبی از ۱۶ بیت شود و چکسام ۱۶ بیتی ایجاد کند.
- الگوریتم MD4 نسخه بهبودیافته MD2 است و میتواند طول پیام را تا حدی تغییر دهد که ۶۴ بیت کمتر از ضرایب ۵۱۲ بیت شود. در نتیجه، MD4 میتواند بلاکهای ۵۱۲ بیتی را پردازش کرده و دایجست پیام ۱۲۸ بیت تولید کند.
- الگوریتم MD5 آخرین نسخه الگوریتم دایجست پیام است و همانند MD4 میتواند طول پیام را تغییر دهد. به علاوه، MD5 ویژگیهای امنیتی بیشتری ارائه میدهد که به کاهش سرعت تولید دایجست پیام منجر میشود.
ریپمد (RIPEMD)
ریپمد مخفف RACE Integrity Primitives Evaluation Message Digest است. این مجموعه توابع هش توسط جامعه تحقیقاتی آزاد طراحی شده است و عموما به اسم خانواده توابع هش اروپایی شناخته میشود. این مجموعه شامل RIPEMD، RIPMED-128 و RIPMED-160 است. همچنین نسخههای ۲۵۶ و ۳۲۰ بیت این الگوریتم نیز موجود است.
ریپمد اصلی که ۱۲۸ بیت است، بر اساس اصول MD4 عمل میکند و برای ارائه امنیت موارد مشکوک ایجاد شده است. ریپمد ۱۲۸ بیت به عنوان یک جایگزین برای از بین بردن آسیبپذیریهای ریپمد اصلی منتشر شده است. ریپمد-۱۶۰ نسخه بهبود یافته و پر استفاده این خانواده است. در نسخههای ۲۵۶ و ۳۲۰ بیتی، احتمال وجود اختلال کاهش یافته، اما در مقایسه با ریپمد- ۱۶۰ و ۱۲۸ بیت از سطح امنیت بالاتری برخوردار نیست.
ویرلپول (Whirlpool)
ویرلپول یه تابع هش ۵۱۲ بیتی است. این تابع از تغییر در نسخه استاندارد رمزنگاری پیشرفته (AES) ایجاد شده است. یکی از طراحان این تابع وینسنت ریمن است که از موسسان AES است. سه نسخه از ویرلپول منتشر شده است که عبارتند از: WHIRLPOOL-۰ و WHIRLPOOL-T، WHIRLPOOL.