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

در کنار رمزگذاری، هش کردن شاید مهمترین بلوک ساختاری سیستم های رمزنگاری مدرن باشد. اما هش چیست؟ چرا مهم است؟ چگونه برخی از روش های محاسبه هش می تواند بهتر از روش های دیگر باشد، و چه چیزی یک روش خاص را برای رمزنگاری مناسب می کند؟

برای خرید سرور مجازی مخصوص ترید کلیک کنید.

sha-256

هش چیست؟

هش” یا “Hash” خروجی یک تابع یک طرفه است که ورودی دلخواه را می گیرد و خروجی با طول قابل پیش بینی را محاسبه می کند که ورودی را “توصیف” می کند. ورودی یکسان را از طریق عملکرد هزار بار اجرا کنید و همیشه نتیجه یکسانی خواهید گرفت. اگر حتی یک بیت از ورودی را تغییر دهید، خروجی شما به شدت متفاوت خواهد بود.

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

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

از هش برای چه استفاده می کنیم؟

هش ها برای چه استفاده می شوند؟ هش در چند شرایط مفید است، چه رمزنگاری و چه شرایط دیگر. آیا تاکنون دیده اید که یک هش در کنار بارگیری موجود در یک وب سایت ارائه شود؟ یک تصور غلط رایج است که این کار برای اهداف امنیتی انجام می شود، اما در واقع، این هش ها ارائه می شوند تا کاربر بتواند بررسی کند بیت های بارگذاری شده در سرور همان بیت های بارگیری شده توسط کاربر است.

تصور کنید بر روی یک قطعه از تجهیزات شبکه که در انتها چند بیت از آن از دست رفته است (مکانیسم های دیگری مانند CRC نیز به همین دلیل وجود دارد). علاوه بر این، از هاش به شدت در کنار رمزنگاری نامتقارن برای ایجاد امضای دیجیتال استفاده می شود. از تکنیکی که بسیار محبوب است به عنوان “HMAC” (کد تأیید پیام مبتنی بر هش) یاد می شود. این روش کاملاً ساده است:

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

گیرنده، که قبلاً اعتماد به کلید عمومی شما را انتخاب کرده است، به سادگی هش پیام خود را محاسبه می کند، با استفاده از کلید عمومی خود، هشی را که در انتهای پیام ارائه کرده اید رمزگشایی می کند و آن را با هشی که از پیام محاسبه کرده مقایسه می کند. از آنجا که فقط دارنده کلید خصوصی مربوطه می توانست این شاهکار را انجام دهد، پیام احراز هویت می شود!

چه چیزی هش را برای اهداف رمزنگاری مناسب می کند؟

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

هنگامی که مشتری برای بررسی یکپارچگی پیام می رود، فکر می کند محموله مخرب پیام اصلی است! به طور معمول، این نوع حملات شامل تغییر پیام اصلی و بازی با پدینگ است.

بگذارید برای مثال بگوییم ما از یک جاسوس بین المللی به جاسوسی دیگر پیام ارسال شده داریم:

“Meet me at the London Eye at 4 PM”

 

هش SHA-256 این عبارت برابر است با:

c36672122a8e8a8a36880e59ba8e6ca994f2771247ce88731d2486d7775c1233

 

با این حال، نگاهی به هش رشته “دایجست” SHA-256 بیندازید:

“Meet me at the London Eye at 4 PM “

 

هش SHA-256 این عبارت برابر است با:

90100f64c2a8918ac581ce7f559289483bc543f37c78d77756ae7e85fd30dcf9

 

سردرگم شدید؟ این نسخه دوم از همان پیام تنها حاوی یک فاصله اضافه در انتها آن است! حتی اگر از نظر معنایی تفاوتی نداشته باشد، ترکیبی متفاوت از شخصیت ها است، بنابراین منجر به هش متفاوت می شود. تصور کنید اگر یک مهاجم پیام را به حالت زیر تغییر دهد:

Meet me at the London Eye at 6 PM

 

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

تصور کنید اگر یک مهاجم می تواند برای صدور گواهینامه های SSL / TLS که هر مرورگری در جهان به آنها اعتماد دارد، این کار را انجام دهد!

sha-256

SHA-256 چیست؟

الگوریتم SHA-256 یکی از شاخه های SHA-2 (الگوریتم هش امن 2) است که توسط آژانس امنیت ملی در سال 2001 به عنوان جانشین SHA-1 ایجاد شد. SHA-256 یک تابع هش رمزنگاری شده ثبت شده است که مقداری را به طول 256 بیت تولید می کند.

در رمزگذاری، داده ها به یک قالب امن تبدیل می شوند که قابل خواندن نیستند مگر اینکه گیرنده کلید داشته باشد. در شکل رمزگذاری شده، داده ها ممکن است از اندازه نامحدود باشند، غالباً به همان اندازه که رمزگذاری نشده اند. در مقابل، در هش کردن، داده های دلخواه به داده های اندازه ثابت ترسیم می شوند. به عنوان مثال، یک رشته داده 512 بیتی از طریق هش SHA-256 به یک رشته 256 بیتی تبدیل می شود.

در هش رمزنگاری، داده های هش شده به گونه ای اصلاح می شوند که کاملاً غیرقابل خواندن شوند. تقریباً غیرممکن است که هش 256 بیتی ذکر شده در بالا را به شکل اصلی 512 بیتی تبدیل کنیم. پس چرا می خواهید یک پیام مخلوط ایجاد کنید که قابل بازیابی نباشد؟ رایج ترین دلیل تأیید محتوای داده هایی است که باید مخفی نگه داشته شوند.

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

تأیید رمز عبور یک برنامه ویژه مهم برای هش رمزگذاری است. ذخیره رمزهای عبور کاربران در یک سند متن ساده یک دستورالعمل برای فاجعه است. هر هکری که موفق به دسترسی به سند شود، گنجینه ای از رمزهای عبور محافظت نشده را کشف می کند.

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

هش کردن SHA-256 چه نقشی در امنیت سایبری بازی می کند؟

SHA-256 در محبوب ترین پروتکل های احراز هویت و رمزگذاری از جمله SSL، TLS، IPsec، SSH و PGP استفاده می شود. در یونیکس و لینوکس، SHA-256 برای هش کردن رمز عبور امن استفاده می شود. ارزهای رمزنگاری شده مانند بیت کوین برای تأیید معاملات از SHA-256 استفاده می کنند.

 

منابع:

https://www.ssltrust.com.au/blog/what-is-sha-256

https://www.n-able.com/blog/sha-256-encryption