هش چیست؟ یک تابع ریاضی است که ورودی با طول دلخواه را به خروجی رمزگذاری شده با طول ثابت تبدیل می کند. بنابراین، صرف نظر از مقدار اصلی داده یا اندازه فایل درگیر، هش منحصر به فرد آن همیشه یک اندازه خواهد بود. علاوه بر این، هش ها را نمی توان برای “مهندسی معکوس” ورودی از خروجی هش شده استفاده کرد، زیرا عملکردهای هش “یک طرفه” هستند
(مانند چرخ گوشت، شما نمی توانید گوشت چرخ کرده را در استیک قرار دهید). با این حال، اگر از چنین تابعی روی همان داده استفاده کنید، هش آن یکسان خواهد بود، بنابراین اگر از قبل هش آن را میدانید، میتوانید تأیید کنید که دادهها یکسان هستند (یعنی بدون تغییر). هش کردن نیز برای مدیریت بلاک چین در ارزهای دیجیتال ضروری است.
هش کردن فرآیند تبدیل هر کلید یا رشته ای از کاراکترها به مقدار دیگری است. این معمولاً با یک مقدار یا کلید کوتاهتر و با طول ثابت نشان داده میشود که یافتن یا استفاده از رشته اصلی را آسانتر میکند.
محبوب ترین استفاده برای هش کردن، پیاده سازی جداول هش است. یک جدول هش جفت های کلید و ارزش را در لیستی ذخیره می کند که از طریق فهرست آن قابل دسترسی است. از آنجایی که جفت کلید و مقدار نامحدود هستند، تابع هش کلیدها را به اندازه جدول ترسیم می کند. سپس یک مقدار هش به شاخص یک عنصر خاص تبدیل می شود.
یک تابع هش مقادیر جدیدی را بر اساس یک الگوریتم هش ریاضی تولید می کند که به عنوان مقدار هش یا به سادگی هش شناخته می شود. برای جلوگیری از تبدیل هش به کلید اصلی، یک هش خوب همیشه از الگوریتم هش یک طرفه استفاده می کند. هش کردن به فهرستبندی و بازیابی دادهها، امضای دیجیتال، امنیت سایبری و رمزنگاری مرتبط است – اما نه محدود به آن.
یکی از مفاهیمی که بارها و بارها در هر بحثی درباره امنیت سایبری با آن مواجه خواهید شد، مفهوم هش است. این رشته های طولانی از اعداد و حروف ظاهرا تصادفی تولید و به چند روش مهم استفاده می شوند. برخی از راهحلهای قدیمی AV تقریباً منحصراً برای اهداف شناسایی به آنها متکی هستند، اما اگرچه این روشی نسبتاً محدود و به راحتی برای شناسایی بدافزارهای مدرن شکستخورده است، هشها هنوز هم ارزش زیادی برای ایجاد هویت دارند و به روشهای مختلف استفاده میشوند. در این پست، نگاهی به برخی از آنها میاندازیم، زیرا هش چیست و چگونه کار میکند:
خوراکی های کلیدی
- هش تابعی است که نیازهای رمزگذاری شده مورد نیاز برای ایمن سازی اطلاعات را برآورده می کند.
- هشها دارای طول ثابتی هستند، بنابراین حدس زدن هش تقریباً غیرممکن میشود، اگر کسی سعی در شکستن یک بلاک چین داشته باشد.
- داده های یکسان همیشه مقدار هش یکسانی را تولید می کنند.
- هش ها یکی از ستون فقرات شبکه بلاک چین هستند.
- هش بر اساس اطلاعات موجود در هدر بلوک ایجاد می شود.
هش ها چگونه کار می کنند؟
توابع هش معمولی ورودی هایی با طول های متغیر را برای برگرداندن خروجی های با طول ثابت دریافت می کنند. یک تابع هش رمزنگاری، قابلیتهای ارسال پیام توابع هش را با ویژگیهای امنیتی ترکیب میکند. توابع هش الگوریتم هایی هستند که نحوه رمزگذاری اطلاعات را تعیین می کنند.
به عنوان مثال، الگوریتم هش ایمن 256 (SHA-256) فرآیندی را برای رمزگذاری ورودی دریافت شده توسط:
- تبدیل آن به باینری
- ایجاد مقادیر هش
- مقدار اولیه ثابت
- خرد کردن داده ها به بیت
- ایجاد برنامه زمانبندی پیام
- اجرای یک حلقه فشرده سازی
- اصلاح مقادیر نهایی
با استفاده از SHA-256، کلمه “Hello” خروجی ای تولید می کند که همان تعداد کاراکتر (64) با “Hello world” و “Hello John” است. با این حال، هش برای هر سه تفاوت قابل توجهی خواهد داشت—به خاطر داشته باشید. که حروف بزرگ هش را نیز تغییر می دهند:
- سلام : 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
- سلام دنیا : 64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
- سلام جان : a8119595d77342cc73c93697a7f70920d3f4ded5d458e31907607e997ff76868
تابع مورد استفاده برای تولید هش قطعی است، به این معنی که هر بار از ورودی یکسان استفاده می شود، همان نتیجه را ایجاد می کند. SHA 256 می تواند یک خروجی هش شده در میلی ثانیه با قدرت محاسباتی بسیار کمی تولید کند، اما تعیین ورودی را نیز دشوار می کند. این امر هش را برای ایمن کردن ارز دیجیتال ایدهآل میکند، زیرا هزاران سال طول میکشد تا رمزگذاری معکوس شود تا ورودی اصلی با فناوری مدرن مشخص شود.
توابع هش معمولاً از ساختارهای داده در سیستم های محاسباتی برای کارهایی مانند بررسی یکپارچگی پیام ها و احراز هویت اطلاعات استفاده می شود. توابع هش رمزنگاری ویژگیهای امنیتی را اضافه میکنند و تشخیص محتوای یک پیام یا اطلاعات را دشوارتر میکنند.
به طور خاص، توابع هش رمزنگاری این سه ویژگی را نشان می دهند:
- آنها بدون برخورد هستند : به این معنی که هیچ دو هش ورودی متفاوت نباید به یک هش خروجی نگاشت شوند.
- آنها را می توان پنهان کرد : حدس زدن مقدار ورودی یک تابع هش از خروجی آن دشوار است.
- آنها باید معما پسند باشند : انتخاب ورودی که یک خروجی از پیش تعریف شده ارائه می دهد باید دشوار باشد. بنابراین، ورودی باید از توزیعی انتخاب شود که تا حد امکان گسترده باشد.
هشینگ برای چه مواردی استفاده می شود؟
همانطور که تا به حال حدس زده اید، هش در درجه اول برای امنیت استفاده می شود. یک مقدار هش شده کاربردهای زیادی دارد، اما در درجه اول به منظور رمزگذاری یک مقدار متن ساده است تا اطلاعات محصور شده نتوانند در معرض دید قرار گیرند. هشینگ کاربردهای زیادی در امنیت سایبری دارد. رایج ترین آنها یکپارچگی پیام، اعتبارسنجی رمز عبور، یکپارچگی فایل و اخیراً زنجیره بلوکی است . هر یک از این موارد استفاده به عملکرد اصلی هش کردن متکی است: جلوگیری از تداخل یا دستکاری اطلاعات یا فایل.
- یکپارچگی پیام
- اعتبارسنجی رمز عبور
- یکپارچگی فایل
- بلاک چین.
هش کردن و یکپارچگی پیام
یکپارچگی یک ایمیل متکی به یک تابع هش یک طرفه است که معمولاً به عنوان امضای دیجیتال نامیده می شود و توسط فرستنده اعمال می شود. امضای دیجیتال یکپارچگی پیام را از طریق یک جفت کلید عمومی/خصوصی و استفاده از یک الگوریتم هش فراهم می کند.
برای امضای دیجیتالی یک ایمیل، پیام با استفاده از یک تابع هش یک طرفه رمزگذاری می شود و سپس با کلید خصوصی فرستنده امضا می شود. پس از دریافت، پیام با استفاده از کلید عمومی فرستنده رمزگشایی می شود و همان الگوریتم هش اعمال می شود. سپس نتیجه با مقدار هش اولیه مقایسه می شود تا مطابقت آن تایید شود. یک مقدار منطبق تضمین می کند که پیام دستکاری نشده است، در حالی که عدم تطابق نشان می دهد که گیرنده دیگر نمی تواند به یکپارچگی پیام اعتماد کند.
هش و یکپارچگی فایل
هش کردن به روشی مشابه برای یکپارچگی فایل کار می کند. اغلب، فروشندگان فناوری با بارگیریهای در دسترس عموم، مواردی را ارائه میکنند که به عنوان چکجمع نامیده میشود. جمعهای چک تأیید میکنند که یک فایل یا برنامه در طول انتقال تغییر نکرده است، معمولاً دانلود از یک سرور به مشتری محلی شما.
زمانی که متخصصان در حال دانلود تصاویر یا نرم افزارهای سیستم عامل برای نصب بر روی یک یا چند سیستم هستند، معمولاً در زمینه فناوری اطلاعات از چکسام استفاده میشود. برای تأیید اینکه یک نسخه ایمن از فایل را دانلود کرده است، فرد مجموع بررسی نسخه دانلود شده را با جمع چک لیست شده در سایت فروشنده مقایسه می کند. اگر این دو مقدار مطابقت داشته باشند، فایل قابل اعتماد است. اگر مطابقت ندارند، ممکن است فایل امن نباشد و نباید استفاده شود.
همانند امضای دیجیتال، یک چکسوم خروجی برنامه یک الگوریتم هش برای یک قطعه داده، در این مورد، یک فایل یا برنامه است. چکسومها در صنعت فناوری برای تأیید فایلها رایج است، اما همچنین نحوه ردیابی اعتبار فایلها توسط فروشندگان امنیتی است.
چکجمعها یا مقادیر هش فایلهای مخرب به این صورت در پایگاههای داده امنیتی ذخیره میشوند و کتابخانهای از فایلهای بد شناخته شده ایجاد میکنند. هنگامی که یک بدافزار در پایگاه داده شهرت برچسب گذاری می شود و این اطلاعات بین فروشندگان در صنعت به اشتراک گذاشته می شود، دانلود با موفقیت یا اجرا بر روی یک سیستم محافظت شده برای فایل مخرب دشوارتر است.
هش کردن و اعتبارسنجی رمز عبور
برخلاف تصور بسیاری از مردم، وقتی رمز عبور خود را برای ورود به یک دستگاه یا حساب وارد میکنید، سیستم مستقیماً رمز عبور شما را تأیید نمیکند. در عوض، آنچه را که وارد کردهاید هش میکند و سپس آن را با مقدار هش ذخیرهشدهای که سیستم یا پایگاه داده پشتیبان دارد مقایسه میکند.
از لحاظ تاریخی و متاسفانه امروزه در برخی موارد، رمزهای عبور به صورت متن ساده ذخیره می شدند. این بدان معناست که سیستم یا سرور بکاند سایتی که وارد آن میشوید، مقدار متن ساده رمز عبور شما در یک فایل یا پایگاه داده ذخیره شده است. از آنجایی که رایانه ها به وسایل خانگی رایج تبدیل شدند و رونق اینترنت منجر به فعالیت های آنلاین بیشتر شد، محققان امنیتی به سرعت متوجه شدند که رمزهای عبور متن ساده برای حفظ حریم خصوصی و حفاظت از اطلاعات کافی نیستند.
امروزه، اکثر سیستم ها مقادیر هش شده رمز عبور شما را در پایگاه داده خود ذخیره می کنند تا زمانی که احراز هویت می کنید، سیستم راهی برای تایید هویت شما در برابر نسخه رمزگذاری شده رمز عبور شما داشته باشد.
برای امنیت بیشتر، برخی از سیستمها (مثلاً سیستمهای مبتنی بر لینوکس)، قبل از هش کردن رمز عبور، یک salt را که یک رشته 32 کاراکتری است، به انتهای آن اضافه میکنند. این مرحله از ایجاد دو هش یکسان در نتیجه داشتن رمز عبور یکسان توسط دو نفر مانند «Pa$$word123» جلوگیری میکند. با افزودن یک نمک منحصر به فرد به هر کدام، غیرممکن است که دو مقدار هش یکسان باشند. نمک زدن رمزهای عبور همچنین شکستن آنها را بسیار سخت می کند، که در صورت نقض داده ها ارزشمند است.
هش و بلاک چین
بلاک چین یک فناوری مدرن است که امکان تراکنش های کارآمد و غیرقابل تغییر را فراهم می کند. اکنون کاربردهای زیادی دارد، از جمله ارزهای دیجیتال، بازارهای NFT، پرداختهای بینالمللی و موارد دیگر . بلاک چین ها به صورت همتا به همتا عمل می کنند که در آن تراکنش ها در تمام رایانه های موجود در شبکه بلاک چین ثبت و به اشتراک گذاشته می شود. اما دقیقاً چگونه می توان معاملات را تغییرناپذیر کرد؟ البته از طریق هش رمزنگاری.
هش کردن در یک بلاک چین به همان روشی عمل می کند که برای موارد استفاده دیگر که در بالا توضیح داده شد انجام می شود: یک تابع هش به یک بلوک داده اعمال می شود تا یک مقدار هش شده را ارائه دهد. تفاوت استفاده از آن در بلاک چین این است که بلاک چین ها از nonces استفاده می کنند که اعداد تصادفی یا نیمه تصادفی هستند و هر تراکنش نیاز به هش شدن بلوک داده های اضافی دارد. Nonce عددی است که یک بار استفاده میشود و برای جلوگیری از حملات مجدد در یک بلاک چین عمل میکند.
حملات بازپخش زمانی اتفاق میافتند که یک مهاجم ارتباطی را که در سراسر شبکه رخ میدهد را رهگیری میکند و سپس آن ارتباط را از سیستم خود دوباره ارسال میکند. همانطور که ممکن است حدس بزنید، این می تواند به طور قابل توجهی بر امنیت یک بلاک چین تأثیر بگذارد، بنابراین استفاده از nonces به جلوگیری از موفقیت آنها کمک می کند.
همانطور که گفته شد، هر تراکنش منجر به یک بلوک داده جدید می شود که باید هش شود. توابع هش به طرق مختلف در سراسر حلقه پیوسته که زنجیره بلوکی است وارد بازی می شوند.
ابتدا، هر بلوک شامل مقدار هدر هش شده بلوک قبلی است. قبل از اینکه تراکنش جدید اضافه شود، هدر بلوک قبلی با استفاده از آن مقدار هش تایید می شود. مانند یکپارچگی پیام و فایل، زنجیره بلوکی از مقادیر هش برای انجام اعتبارسنجی مشابه استفاده میکند تا اطمینان حاصل شود که بلوکهای داده قبلی دستکاری نشدهاند.
پس از تأیید اعتبار، بلوک داده جدید به همراه یک nonce اضافه می شود و الگوریتم هش برای ایجاد یک مقدار هش جدید اعمال می شود. این فرآیند یک چرخه مکرر هش ایجاد می کند که برای محافظت از یکپارچگی تراکنش ها استفاده می شود.
هشینگ و ارزهای دیجیتال
ستون فقرات یک ارز دیجیتال بلاک چین است که یک دفتر کل توزیع شده در سطح جهانی است که از پیوند دادن بلوکهای جداگانه دادههای تراکنش از طریق هش کردن به یکدیگر شکل میگیرد. بلاک چین فقط شامل تراکنش های معتبر است که از تراکنش های تقلبی و هزینه مضاعف ارز جلوگیری می کند. استخراج و اعتبارسنجی ارزهای دیجیتال شامل کار با این هش است.
حل هش ارز دیجیتال با استفاده از هدر بلوک از بلوک قبلی به عنوان ورودی و ایجاد هش شروع می شود. هر هدر بلوک شامل شماره نسخه، مهر زمانی، هش استفاده شده در بلوک قبلی، هش ریشه Merkle ، nonce و هش هدف است.
هدف تولید هش است که برابر یا کمتر از هش هدف شبکه باشد. در هش دنباله ای از اعداد به نام nonce یا عددی که یک بار استفاده می شود وجود دارد. برنامه ماینینگ روی nonce تمرکز دارد که در اولین تلاش از صفر شروع می شود. اگر تلاش با شکست مواجه شد، برنامه 1 را به nonce اضافه می کند و دوباره هش را ایجاد می کند. به هر تلاش ناموفق 1 اضافه می کند تا زمانی که هش کمتر یا مساوی هش هدف ایجاد شود ، سپس به عنوان راه حل پذیرفته می شود.
حل هش مستلزم ادامه تلاش دستگاه ماینر برای تولید مقدار مناسب است که به مقدار قابل توجهی آزمون و خطا نیاز دارد. به استخراج کننده ای که هش را حل می کند، پاداش داده می شود و بلاک به بلاک چین اضافه می شود.
بسیار بعید است که یک ماینر در اولین تلاش با موفقیت به Nonce صحیح برسد، به این معنی که ماینر ممکن است به طور بالقوه تعداد زیادی از گزینه های nonce را قبل از درست کردن آن آزمایش کند. هر چه سختی بیشتر باشد – معیاری برای اینکه چقدر سخت است ایجاد یک هش که نیاز هش هدف را برآورده می کند – به احتمال زیاد تولید یک راه حل بیشتر طول می کشد.
تابع هش چیست؟
توابع هش الگوریتمهایی هستند که مجموعهای از دادهها را به یک رشته بیت با اندازه ثابت تبدیل یا «نقشهبرداری» میکنند که به نام «هش» نیز شناخته میشود.
هش چگونه محاسبه می شود؟
یک تابع هش از الگوریتم های پیچیده ای استفاده می کند که داده های با طول دلخواه را به داده هایی با طول ثابت (مثلاً 256 کاراکتر) تبدیل می کند. اگر یک بیت را در هر جایی از داده های اصلی تغییر دهید، کل مقدار هش تغییر می کند و برای تأیید صحت فایل های دیجیتال و سایر داده ها مفید است.
هش ها برای چه مواردی در بلاک چین استفاده می شوند؟
هش ها در چندین بخش از یک سیستم بلاک چین استفاده می شوند. هر هدر بلوک حاوی هش بلوک قبلی است که تضمین میکند با اضافه شدن بلوکهای جدید، هیچ چیز دستکاری نشده است. بلاک چینهای ارزهای دیجیتال از هشها برای ایمن کردن اطلاعات و غیرقابل تغییر کردن دفتر کل استفاده میکنند.
توابع هش در رمزنگاری
معروف ترین ارز دیجیتال، بیت کوین، از توابع هش در بلاک چین خود استفاده می کند. رایانههای قدرتمندی که ماینر نامیده میشوند، در جستجوی بیرحمانه با یکدیگر رقابت میکنند تا سعی کنند هش را حل کنند تا پاداش استخراج بیتکوینهای جدید و همچنین هزینههای پردازشی که کاربران برای ثبت تراکنشهای خود در بلاک چین میپردازند، به دست آورند.
حل یک هش شامل محاسبه یک اثبات کار، به نام NONCE، یا «عدد یک بار استفاده شده» است، که وقتی به بلوک اضافه میشود، باعث میشود هش بلوک با تعداد معینی از صفر شروع شود. هنگامی که یک اثبات کار معتبر کشف شد، بلوک معتبر تلقی می شود و می توان آن را به بلاک چین اضافه کرد.
از آنجایی که هش هر بلوک توسط یک الگوریتم رمزنگاری ایجاد میشود – بیتکوین از الگوریتم SHA-256 استفاده میکند – تنها راه برای یافتن اثبات کار معتبر این است که حدسها را از طریق الگوریتم اجرا کنید تا زمانی که عدد مناسبی پیدا شود که هش ایجاد کند که شروع میشود. با عدد صحیح صفر این همان کاری است که استخراج کنندگان بیت کوین انجام می دهند و اعداد را از طریق یک الگوریتم رمزنگاری اجرا می کنند تا زمانی که NONCE معتبر را حدس بزنند.
نمونه هایی از توابع رایج هش ارزهای دیجیتال چیست؟
تابع SHA-256 که بیت کوین از آن استفاده می کند مخفف «Secure Hash Algorithm» است و توسط آژانس امنیت ملی ایالات متحده (NSA) طراحی شده است و شامل SHA-1، SHA-2 (خانواده ای در یک خانواده شامل SHA-224، SHA-256، SHA-384، و SHA-512)، و SHA-3 (SHA3-224، SHA3-256، SHA3-384، و SHA3-512).
نمونه های دیگر از الگوریتم های هش رایج عبارتند از:
- الگوریتم خلاصه پیام (MD) – MD2، MD4، MD5، و MD6. MD5 برای مدتها به عنوان یک الگوریتم هشسازی در نظر گرفته میشد، اما اکنون به دلیل برخورد درهم شکسته شده است.
- Windows NTHash – همچنین به عنوان هش یونیکد یا NTLM شناخته می شود، این هش معمولا توسط سیستم های ویندوز استفاده می شود.
- خلاصه پیام ارزیابی RACE Integrity Primitives (RIPEMD)
- گرداب
- RSA
به طور کلی، محبوب ترین الگوریتم ها یا توابع هش دارای طول هش بین 160 تا 512 بیت هستند.
از کجا دیگر توابع هش را در محل کار پیدا می کنید؟
هر بخش از اطلاعات دیجیتال، مانند یک فایل در رایانه شما، یک عکس در گوشی موبایل هوشمند یا بلوک در یک بلاک چین ارز دیجیتال، دارای هش است. و هر هش برای هر قطعه داده منحصر به فرد است – هر تغییر کوچکی در اطلاعات اساسی منجر به یک هش کاملاً متفاوت خواهد شد.
به غیر از ارزهای دیجیتال و سایر فناوریهای بلاک چین، توابع هش را میتوان در سراسر رمزنگاری کلید عمومی در همه چیز از امضای نرمافزار جدید و تأیید امضای دیجیتال تا ایمن کردن اتصالات وبسایت در رایانه و مرورگرهای وب تلفن همراه خود یافت.
هش در مقابل رمزگذاری
رمزگذاری عملی است برای گرفتن داده ها و ایجاد یک پیام درهم به روشی که فقط شخصی با یک کلید مربوطه به نام رمز می تواند آن را از حالت رمزگشایی و رمزگشایی کند. رمزگذاری یک تابع دو طرفه است که برای هر کسی که رمز را در اختیار دارد قابل برگشت است. بنابراین وقتی شخصی چیزی را رمزگذاری میکند، این کار به قصد رمزگشایی آن انجام میشود.
هش کردن با استفاده از فرمولی است که داده ها را با هر اندازه ای به طول ثابت تبدیل می کند. قدرت محاسباتی مورد نیاز برای “هش کردن” چیزی کار را بسیار دشوار می کند، بنابراین در حالی که رمزگذاری یک تابع دو طرفه است، هش معمولا یک تابع یک طرفه است.
رمزگذاری برای محافظت از دادهها در حین انتقال است، هش کردن برای تأیید اینکه فایل یا قطعهای از دادهها تغییر نکرده است – معتبر بودن آن است. بنابراین ممکن است رمزگذاری را به قرار دادن یک قطعه داده در گاوصندوق تشبیه کنید که وقتی گیرنده ترکیب را بداند باز می شود. هش کردن بیشتر شبیه یک مهر و موم دستکاری امنیتی است که نشان می دهد محتوای داده ها تغییر کرده است یا خیر.