cryptography - روش رمزنگاری Hash چیست؟

درهم ساز یا چکیده ساز به صورت کلی یک عملیات یک سویه ریاضی است که بر روی متن ساده صورت میگیرد و متن hash شده را تولید میکند که به آن digest می گویند.

امروزه در اسناد دیجیتال ما از امضا دیجیتال و اثر انگشت دیجیتال استفاده میکنیم و برای احراز هویت معیار ما digest تولید شده توسط الگوریتم های  hashing است.

Digest وابسته به پیام است و با توجه به پیام توسط توابع hashing ساخته می شود. یعنی اگر متن پیام یک کلمه عوض بشود، digest  تغییر میکند.

 

ویژگیهای HASH

  • اگر شما ۱۰ بار هم (یا بیشتر) عملیات Hash را بر روی یک متن ساده انجام دهید هر بار خروجی یکسان است. این ویژگی بسیار مهم است چون اگر خروجی های متفاوت تولید کنی، رهگیری ورودی­‌ها غیرممکن می‌شود.
  • تابع یکطرفه است.یعنی از متن Hash شده نمی توان به متن اصلی رسید اما میتوان آن را کرک کرد. یعنی هش “سلام ” همیشه ثابت است.و اگر من یک هش داشته باشم و آن را با هش سلام مقایسه کنم می توانم بفهمم متن قبل از عملیات هشینگ، سلام بوده است
  • مقاوم در مقابل تصادم قوی و ضعیف.یعنی پیدا کردن ۲ پیام که دارای hash یکسان باشند بسیار بسیار سخت است.

 

مقایسه سند و اثر انگشت و پیام و digest

سند و اثر انگشت همیشه با هم هستند و اثر انگشت ربطی به سند ندارد و امکان جعل جداگانه آن وجود دارد . سند و اثر انگشت اصطلاحا one-to-many  هستند . یعنی یک اثر انگشت برای تمامی اسناد .

پیام و digest میتوانند با هم و یا جدا از هم ارسال شوند . این دو وابسته به هم هستند و هر گونه تغییری روی یکی از آنها روی دیگری نیز اثر میگذارد . این دو به اصطلاح one-to-one  هستند یعنی بر اساس هر پیامی یک digest  جداگانه تولید میشود .

در عملیات بانکی پیام به شخص داده میشود ولی digest به مقصد فرستاده میشود . سپس اگر digest تولید شده بر اساس پیام با digest  موجود برابر بود صحت پیام تایید میشود .

 

 

حال به روش های احراز هویت می پردازیم.ما ۲ نوع روش احراز هویت داریم

  • MDC
  • MAC

MDC :

مخفف Modification Detection Cod (کد شناسایی تغییر) است. این روش برای بانک ها و سازمان ها مناسب است.در این روش ۲ کانال بین فرستنده وگیرنده ایجاد میشود.پیغام از یک کانال ارسال می شود و بعد پیام از طریق توابع hashing ، hash شده و بعد یک MDC که کد شناسایی تغییر است تولید میشود.سپس MDC از طریق کانال دیگر ارسال می شود.سپس گیرنده پس از دریافت پیغام و MDC ، خود از طریق پیام یک MDC تولید میکند.اگرMDC تولید شده توسط خودش و آنکه فرستنده ارسال کرده بود برابر بود پس درست است و احراز هویت صورت میگیرد.

 

 

MAC : 

مخفف Message Authentication Code (کد تایید پیام) است.در این روش ۱ کانال ایجاد می شود و یک کلید هم رد و بدل می شود.

MAC تولید شده از پیام رمز شده همراه با پیام ارسال می شود.سپس سمت گیرنده این ۲ از هم جدا شده و پیام رمز شده، رمز گشایی شده،عملیات hashing  بر روی آن صورت میگیرد و دوباره MAC تولید میشود.

سپس MAC تولید شده توسط گیرنده با MAC ارسالی توسط فرستنده مقایسه می شود.اگر برابر بود پس عملیات صحیح است و احراز هویت صورت میگیرد.این روش مدیریت راحت تری دارد و مقیاس پذیر است.

معروف ترین استانداردهای HASH

MD5 یک digest 128 بیتی تولید میکنید

 SHA-1یک digest 160 بیتی تولید میکنید

 SHA-256 یک digest 256 بیتی تولید میکنید

KECCAK-256 یک digest 256 بیتی تولید میکنید.

هرچه که digest تولید شده بزرگتر باشد امکان تصادم کمتر می شود و امنیت بالاتر میرود. امروزه در ارزهای دیجیتال و فناوری بلاک چین از hash ها استفاده می شود.

چک کردن هش در سیستم‌عامل ویندوز

در سیستم‌عامل ویندوز بدون نیاز به هیچ‌گونه ابزار خارجی، می‌توان صرفاً با استفاده از Windows PowerShell به چک کردن هَش پرداخت:

Get-FileHash C:\path\to\file.iso

در کامند فوق، می‌بایست مسیر C:\path\to\file.iso را با مسیری که فایل دانلودی در آنجا قرار دارد جایگزین گردد.

توجه داشته باشید که به صورت پیش‌فرض این دستور از الگوریتم SHA-256 استفاده می‌کند اما این در حالی است که کاربر می‌تواند الگوریتم مد نظر خود را به عنوان پارامتر ورودی در نظر گیرد. به عنوان نمونه داریم:

Get-FileHash C:\path\to\file.iso -Algorithm MD5

همان‌طور که مشاهده می‌شود، با وارد کردن کامند Algorithm MD5- این دستور را به پاورشل می‌دهیم که از الگوریتم MD5 برای ساخت هَش استفاده کند.

چک کردن هش در سیستم‌عامل مکینتاش

macOS شامل کامندهایی برای نمایش انواع مختلف هَش است:

md5 /path/to/file

همان‌طور که در کامند فوق ملاحظه می‌شود، از دستور md5 به همراه مسیر فایل دانلودی استفاده کرده‌ایم.

چک کردن هش در سیستم‌عامل لینوکس

در سیستم‌عامل گنو/لینوکس هم به سادگی با استفاده از ابزارهای مختلفی همچون md5sum ،sha1sum و sha256sum می‌توان به هَش مورد نیاز دست یافت:

md5sum /path/to/file

دستور فوق به سادگی هش MD5 فایل مد نظر را در اختیارمان قرار خواهد داد.