الگوریتم هش به زبان ساده
الگوریتم هش، یکی از روشهای ارسال فایلهای ضروری
در یک دوره آنلاین، داده ها یکی از ارزشمندترین قسمت های روزمره هستند. این امر در چندین مورد از جمله مدیریت دولتی ، تحقیقات علمی و اقتصاد دیجیتالی که در حال رشد است، به یکی از عوامل اساسی تبدیل شده است. علاوه بر این ، این یکی از عوامل وابسته برای فناوری های امیدوار کننده مانند یادگیری ماشین و داده های بزرگ است. یکی از رویکردهای مورد استفاده Hashing است، که برای ایجاد محافظت بیشتر در هر زمان پردازش داده های شخصی استفاده می شود.
هشینگ چیست؟
هشینگ یکی از الگوریتمهایی است که ورودی با مقدارهای مختلف را دریافت میکند و مقدار رشته خروجی را که مقدار ثابت دارد، محاسبه میکند. اساساً ، فرایند هشینگ شامل بلوک هایی از داده است که از یک رشته اصلی داده به یک خروجی با طول ثابت تبدیل می شود. معمولاً در فایل ارسالی خلاصه ای از اطلاعات یا داده های موجود در آن قرار دارد.
علاوه بر این، هشینگ یکی از روش های راحت و امن در هنگام شناسایی یا مقایسه پایگاه داده (دیتابیس) ها و پرونده ها است. مهمترین کاربرد فرایند هشینگ در مبانی امنیت اطلاعات، زمانی است که شخصی قصد دارد یک پیام را به صورت کاملاً اختصاصی از طریق ایجاد یک فرمول، فقط برای یک گیرنده ارسال کند.
فرایند هشینگ فرایندی است که در آن بدون در نظر گرفتن اندازه ورودی، مجموعه داده را به یک سری کاراکتر با طول ثابت تبدیل میکند. خروجی دریافت شده به عنوان مقدار هش یا کد شناخته میشود. علاوه بر این، اصطلاح "هش" برای توصیف تابع هش (Hash Function) و همچنین مقدار هش (Hash Value) استفاده میشود. به بیان دیگر خروجی هشینگ را “هش” یا “مقدار هش” میگویند و تابع ریاضی آن به “تابع هش” معروف است.
این روش بیشتر برای تأیید اصالت پیام ارسالی استفاده میشود. برای مثال: فرض کنید یک فایل حاوی اطلاعات را به شخصی ارسال کردهاید و حال میخواهید مطمئن شوید که فایل ارسالی بدون هیچ تغییری به شخص مورد نظر رسیده است یا خیر. روشهای مختلفی از جمله تماس با مخاطب، تأیید فایل و... پیش روی شماست. یکی از این روش ها نیز الگوریتم هش است.
برای درک بیشتر الگوریتم و تابع هش، لازم است کمی دقیق تر با جزئیات آشنا شویم:
تابع هش چیست؟ چگونه کار میکند؟
تابع Hash یک تابع ریاضی معمولی است که برای نگاشت دادهها با اندازه های مختلف به مقادیر با اندازه ثابت استفاده میشود. به بیان دیگر این یک تابع ریاضی است که دادهها را با اندازه و طول متغیر دریافت میکنند و به خروجی یکسان و قطعی تبدیلشان میکنند. یعنی میتوان گفت تابع هش یک رشته کد با طول متناوب را دریافت و تبدیل به یک خروجی با طول ثابت میکند.
در اینجا طول خروجی به الگوریتم هش کردن بستگی دارد، که به طور کلی حدود 160 تا 512 بیت است.
الگوریتم هش چیست و چگونه کار میکند؟
به طورکلی، تابع هش رکن اصلی الگوریتم هشینگ میباشد. اما، برای بدست آوردن مقدار هش یک طول از پیش تعریف شده، لازم است داده های ورودی را به بلوک هایی با اندازه ثابت تقسیم کنید، زیرا یک تابع هش داده ها را در یک طول ثابت می گیرد. همچنین، این بلوک ها به عنوان بلوک داده (Data Blocks) شناخته میشوند که در تصویر زیر نشان داده شده است:
اندازه این بلوک های داده بسته به الگوریتم متفاوت است، اگرچه برای برخی از الگوریتم ها به همین شکل میباشد. به عنوان مثال:پیام 1024 بیتی هنگام اجرای تابع هش به دو بلوک مختلف با طول 512 بیت تقسیم می شود. از طرف دیگر، اگر پیام دقیقاً 512 بیتی طول داشته باشد، عملکرد هش فقط برای یک بار اجرا می شود.
با این حال، هیچ ضمانتی برای مضربی بودن پیام در 512 بیت وجود ندارد. در بعضی موارد، از تکنیکی به نام padding استفاده میشود که در آن کل پیام به طور مساوی در اندازه ثابت بلوک های داده تقسیم می شود. مثال زیر نحوه پردازش بلوک های داده را نشان می دهد.
همانطور که در تصویر بالا نشان داده شده است، هر بلوک به طور جداگانه پردازش میشود و خروجی اولین بلاک داده مانند یک ورودی همراه با بلاک داده دوم ارسال میشود. بنابراین، خروجی مورد دوم همراه با بلوک داده سوم ارسال میشود و به همین ترتیب جلو میرود. و در نهایت، خروجی نهایی مقادیر ترکیبی تمام بلوک های داده است. بنابراین، حتی تغییر یک بیت از پیام نیز کل مقدار هش را تغییر می دهد.
ویژگی توابع هش رمزنگاری:
- تابع هش باید ورودی را به سرعت تبدیل به مقدار هش کند، بنابراین سرعت محاسبه دادهها بالاست.
- تابع هش رمزنگاری یکطرفه است و پس از فرآیند هش، تولید پیام در شکل اصلی آن تقریباً غیرممکن است. (در واقع نمیتوان از روی خروجی، ورودی یا پیام اولیه را تشخیص داد)
- مقادیر هش برای هر ورودی متفاوت خواهد بود یعنی هر ورودی در فرایند هشینگ یک مقدار هش مخصوص به خود دارد.
- کوچکترین تغییر در مقدار ورودی تابع هش رمزنگاری، مقدار خروجی هش را بهطور کامل تغییر خواهد داد.
کلام آخر
توابع هش در دنیای امروزی، باعث ایجاد امنیت در بستر وب و دنیای ارزهای دیجیتال شدهاند به طوریکه، آرامش خاطری که هنگام استفاده از اینترنت و دنیای ارزهای دیجیتال داریم به خاطر حضور این توابع کاربردی و حیاتی هستند که امنیت دادهها و پیامها را در این پلتفرمها حفظ میکنند.
مطلبی دیگر از این انتشارات
شورت اسکویز(short squeeze) چیست و چگونه رخ میدهد
مطلبی دیگر از این انتشارات
فومو چیست؟ چگونه ترس از دست دادن را مهار کنیم؟
مطلبی دیگر از این انتشارات
مقایسه صرافی متمرکز و صرافی غیرمتمرکز