تابع هش و هشینگ چیست

تابع هش و هشینگ چیست؟

 در حال حاضر استفاده از فضای مجازی و اینترنت بسیار فراگیر شده است. موضوع امنیت و نگهداری از اطلاعات ورودی و خروجی از این فضا بسیار حائز اهمیت است. اگر امنیت اینترنتی وجود نداشت، این طور می‌توان گفت که نحوه استفاده از اینترنت به شکلی که امروز وجود دارد، امکان‌پذیر نبود. اما چه چیزی باعث امنیت اینترنت می‌شود؟ حالا که مبحث ارزهای دیجیتال و سرمایه افراد به میان آمده است، چطور باید امنیت را برقرار کرد؟ در ادامه بررسی می‌کنیم که تابع هش و هشینگ چیست؟ از چه الگوریتم‌هایی در آن استفاده می‌شود؟ در این مطلب از وب‌سایت OMPfinex به‌طور جامع به موضوع هش و هشینگ خواهیم پرداخت.

تابع هش و هشینگ چیست؟

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

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

چگونگی انجام فرآیند هشینگ

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

تابع هش و هشینگ چیست

تابع هش sha-256

برای تابع هش هیچ استانداردی وجود ندارد. درواقع کم یا زیاد بودن ورودی تاثیری بر تابع هش ندارد؛ زیرا طول تابع هش همیشه ثابت است. اهمیت این موضوع زمانی مشخص می‌شود که با مقدار زیادی اطلاعات و ورودی مواجه هستید و به‌دلیل کمبود فضا و یا دلایل دیگر قصد ذخیره‌سازی و رهگیری ندارید. هم‌چنین وجود یک خروجی با طول ثابت، افزایش امنیت را به‌ همراه دارد؛ زیرا اگر فردی قصد داشته باشد هش را رمزگشایی کند نمی‌تواند براساس خروجی تشخیص دهد ورودی به چه شکل بوده است.

تابع هش رمزنگاری و ویژگی‌های آن

این تابع نوع خاصی از توابع هش بوده که از  ویژگی‌های خاصی برخوردار است. ویژگی‌های بسیار منحصربه فرد تابع هش رمزنگاری، این امکان را ایجاد کرده که از آن در صحت‌سنجی دیجیتالی و ساخت امضا دیجیتالی استفاده شود.

به‌طور کلی تابع هش رمزنگاری به‌منظور استفاده از اثر انگشت دیجیتالی، بسیار کاربردی است. ویژگی‌های منحصربه فرد این تابع شامل معین و مشخص بودن، محاسبه سریع، یک طرفه بودن تابع، هر تغییری در ورودی هش را تغییر می‌دهد و دلیل عدم یکسان بودن خروجی‌ها است.

تابع هش و هشینگ چیست؟

معین و مشخص بودن

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

تسریع در محاسبه

کارآمدی آن براساس سرعت محاسبه است. اگر تابع هش در محاسبه ورودی­‌ها سریع عمل نکند سبب ناکارآمدی سیستم می‌شود.

یک طرفه بودن تابع

یکی از مهم­‌ترین ویژگی­‌های تابع هش، یک طرفه بودن آن است. توابع هش رمزنگاری باید به‌­صورت یک طرفه عمل کنند؛ یعنی محاسبه ورودی و تبدیل آن تابع به­ سرعت و به راحتی مشخص شود اما به‌­دست آوردن ورودی براساس خروجی امکان‌پذیر نباشد.

در توابع هش استاندارد تولید خروجی از ورودی آسان بوده و پیدا کردن ورودی از خروجی باید ناممکن باشد. البته در برخی از موارد ترفندهایی برای پیدا کردن ورودی براساس خروجی وجود دارد. به‌­عنوان مثال شما عددی تصادفی از بین 5 تا 10 را وارد تابع هش می­‌کنید. برای پیدا کردن ورودی براساس خروجی می­‌توانید از ویژگی یکسان بودن تابع هش برای ورودی معین استفاده کنید. برای رسیدن به ورودی باید تک تک اعداد را داخل تابع هش قرار دارد و اگر هر کدام از خروجی­‌ها با خروجی اولیه یکسان بود، آن عدد ورودی اولیه بوده است.

هشینگ در ارزهای دیجیتال چیست

تغییر ورودی هش را تغییر می­‌دهد

تابع هش به تغییرات بسیار کوچک نیز حساس است و با ایجاد هر تغییر در ورودی، هش آن نیز تغییر می‌­کند. به­‌عنوان مثال تابع هش کلمه “سلام” و کلمه “سلام؟” با یکدیگر متفاوت است. این مزیت بسیار حائز اهمیت و کاربردی است. استفاده در صحت کلمه ورودی یک نمونه از کاربردهای آن است. برای مثال هنگامی که می‌­خواهید وارد سایتی شوید و کلمه عبور را وارد می‌کنید، سیستم هش کلمه ورودی را با هش پایگاه داده مطابقت می­‌کند و در صورت صحیح بودن اجازه ورود می­‌دهد. اگر دقت کرده باشید برخی از سایت­ها نسبت ­به حروف بزرگ و کوچک کلمه ورودی حساس هستند، این به­‌معنی حساسیت در تابع هش است.

عدم یکسان بودن خروجی‌­ها

دو ورودی A و B تابع هش­ با یکدیگر تفاوت دارند و احتمال این که دو ورودی توابع یکسانی داشته باشند غیرممکن است. این مطلب به ­این معنی است که هر ورودی، هش منحصربه فرد خود را دارد. در بحث ارزهای دیجیتال، تابع هش سبب برقراری مهم‌­ترین اصل بلاک‌چین یعنی تغییرناپذری می­‌شود.

توابع هش

پس از بررسی کامل اینکه تابع هش و هشینگ چیست؟ خوب است با الگوریتم‌های آن نیز آشنا شویم. الگوریتم­‌های مختلفی برای رمزنگاری توابع هش وجود دارد. در ادامه برخی از این الگوریتم‌ها و کارکرد آن‌ها را بررسی می‌کنیم.

الگوریتم RIPEMD

این کلمه مخفف RACE Integrity Primitives Evaluation Message Digest است. این الگوریتم مجموعه‌­ای از توابع هش بوده که توسط گروه بلژیکی COSIC در سال 1996 توسعه یافت. طول هش توابع این الگوریتم 128، 160، 256 و 320 بیتی است. تاکنون در خصوص حمله نسخه 160 آن گزارشی اعلام نشده است؛ اما دو مورد 256 و 320 دارای سطح امنیتی کمتری بوده و تنها از یکسان بودن خروجی­‌ها جلوگیری می­‌کنند.

الگوریتم MD5

این الگوریتم که مخفف کلمه Message Digest به معنی خلاصه پیام بوده و توسط رونالد ریوست در سال 1991 به­‌منظور جایگزینی برای تابع قبلی MD4 طراحی شده است. این الگوریتم به شکل گسترده استفاده شده و هش 128 بیتی ایجاد می‌­کند.

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

الگوریتم md5

الگوریتم BLAKE

این الگوریتم در رقابتی که از طرف موسسه ملی استاندارد و فناوری آمریکا با هدف انتخاب بهترین تابع برای توسعه SHA-3 برگزار شد، در میان 5 الگوریتم برتر حضور داشت.

الگوریتم بلیک دارای 2 نسخه متفاوت است. شناخته­‌شده‌­ترین عضو در خانواده بلیک، نسخه blake-2 است. این الگوریتم در سال 2012 انتشار یافت. هدف از ایجاد آن، جایگزینی مناسب برای الگوریتم­‌های MD5 و SHA-1 بود. الگوریتم‌­های نام برده شده کاربردهای بسیاری داشتند و از طرفی آسیب‌پذیر نیز بودند.

الگوریتم blake-2 به دو گروه blake-2s  و blake-2b تقسیم می‌­شود. گزارشات نشان می­‌دهند که نسخه blake-2 از از الگوریتم‌های MD5، SHA-3، SHA-2 و SHA-1 بسیار سریع­تر بوده و از نظر امنیت با آخرین نسخه تابع هش SHA برابری می‌کند.

کاربرد هش در بلاک‌چین چیست؟

تا این‌جا بررسی کردیم که تابع هش و هشینگ چیست؟ اما این موضوع چطور به بلاکچین مربوط می‌شود؟ هش به ­منظور نشان دادن وضعیت فعلی شبکه در بلاکچین مورد استفاده قرار می‌گیرد. نحوه عملکرد هش در بلاک‌چین به این صورت است که تمامی اطلاعات ورودی در بلاک‌چین و تراکنش­‌ها را با هم ترکیب کرده و هش خروجی براساس تمامی تراکنش‌ها و اتفاقات پیشینی است که در بلاکچین اتفاق افتاده است.

با ایجاد اولین بلاک، اولین هش با توجه به تراکنش­‌های داخل آن محاسبه می‌شود. پس از این هر بلاک جدیدی که ایجاد می‌شود علاوه‌­بر تراکنش آن، هش بلاک پیشین نیز به  اطلاعات ورودی تابع هش تحویل داده می­‌شود. این عمل سبب ایجاد زنجیره‌­ای از بلاک­‌ها می­‌شود. دقت داشته باشید که هش بلاک جدید با توجه به هش بلاک قبل از آن ایجاد می­‌شود. این سیستم هش کردن بلاک‌­ها با یکدیگر نشان‌دهنده آن است که دستکاری تراکنش‌­ها ممکن نیست.

اگر کوچک­‌ترین تغییر در اطلاعات تراکنش ایجاد شود، هش آن بلاک ثبت شده و تغییر می­‌کند. به همین شکل هش تمامی بلاک­‌های پس آن تغییر خواهد کرد؛ بنابراین اگر قصد تغییر تراکنشی در بلاک شبکه بلاک‌چین را داشته باشیم، باید تمامی هش همه‌ی بلاک­‌های قبل آن را تغییر دهیم؛ زیرا هر بلاک علاوه­‌بر هش خود، هش بلاک‌­های پیشین را نیز دارد. انجام این عمل ناممکن بوده و براساس آن می‌­توان از هرگونه تقلب و دست­کاری جلوگیری کرد. این مورد یکی از ویژگی‌­های هیجان­‌انگیز و جالب بلاک‌چین است.

کاربرد هش در بلاک‌چین

هش در ماینینگ

فرآیند ماینیگ یا استخراج، ایجاد بلاک جدید و اضافه کردن آن به بلاک‌چین است. عرضه بسیاری از ارزهای دیجیتال به­‌صورت محدود بوده و مقدار مشخصی برای آن در نظر گرفته شده است. به‌­عنوان مثال این مقدار برای بیت کوین 21 میلیون واحد است. اگر ماینرها با سرعت زیادی بتوانند بلاک­‌های جدید ایجاد کنند، در کمترین زمان ممکن تمامی بیت کوین‌­ها استخراج می­‌شوند.

در بلاک چین برای ایجاد هر بلاک زمان مشخصی در نظر گرفته شده است. اگر ماینرها بلاک­‌ها را در زمانی کمتر از زمان اعلام شده استخراج کنند، مشکلات متعددی ایجاد می‌­شود. در ادامه این مشکلات را بررسی می‌کنیم.

حتما بخوانید: فرایند ماینینگ بیت کوین چگونه است؟

یکسان بودن توابع هش

با توجه به استخراج بلاک­‌های جدید، توابع هش بیشتری نیز ایجاد خواهد شد. این افزایش بلاک و تولید هش‌­های بسیار پی‌درپی، احتمال یکسان بودن برخی از توابع هش را تا حد بسیاری افزایش می­‌دهد. این عمل خلاف اصول هش و بلاک‌چین است و سبب بروز مشکلات زیادی خواهد شد.

افزایش بلاک‌­های یتیم

افزایش تعداد بلاک‌­های جدید توسط ماینرها سبب خواهد شد تا در برخی موارد چند ماینر همزمان به جواب دست پیدا کنند؛ اما یکی از این بلاک‌­ها وارد زنجیره خواهد شد و مابقی بلاک­های جدید رها می­‌شوند. به این بلاک­ها، بلاک یتیم نیز می‌­گویند.

هشینگ در ارزهای دیجیتال

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

هشینگ در ارزهای دیجیتال

هشینگ داده‌ها

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

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

اعتبارسنجی و امضای دیجیتال

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

مکانیزم امضای دیجیتال اولین‌بار در سال ۱۹۷۰ ارائه شد و نقش قابل‌توجهی در توسعه علم رمزنگاری ایجاد کرد. توجه داشته باشید که برای امضا کردن سندهای طولانی نباید از الگوریتم‌های رمزنگاری کلید عمومی استفاده کرد. معمولاً بیشتر پروتکل‌های ارزهای دیجیتال برای صرفه‌جویی در زمان، به‌جای رمزنگاری کل پیام از توابع هش استفاده می‌کنند.

امضای دیجیتال

امضا کردن

پس از آن که فرآیند هشینگ اطلاعات انجام گرفت، فرستنده نیز باید آن­ها را امضا نماید. در این نقطه رمزنگاری کلید عمومی وارد عمل می‌­شود. برای الگوریتم‌­های امضای دیجیتال انواع مختلفی وجود دارد. هر کدام از این موارد دارای مکانیزم خاصی هستند.

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

جمع‌بندی

در این مطلب سعی شد تا حد امکان در خصوص اینکه تابع هش و هشینگ چیست به­ طور کامل توضیح داده شود. این اطلاعات به‌­منظور افزایش سطح دانش عمومی نسبت­به چگونگی برقراری امنیت موجود در فضای مجازی و ارزهای دیجیتال است. به‌­منظور دست­یابی به سایر مطالب مفید می­توانید از قسمت جستجو وب‌سایت ompfinex استفاده نمایید.

اشتراک‌گذاری

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *