دنیای کریپتوکارنسی دارای ماهیت دیجیتالی و غیرملموس بوده و به همین علت برای ارتقای سطح امنیت داراییهای خود به سراغ استفاده از برخی امکانات و فناوریهای موجود در علوم کامپیوتر رفته است. هشینگ (Hashing) و الگوریتمهای هشنگاری مثل الگوریتم SHA 256 یکی از این امکانات بوده که تضمینکننده امنیت اطلاعات در دنیای نوظهور رمزارزهاست.
البته الگوریتمهای هشنگاری امنیت یکسانی ندارند؛ اما الگوریتم SHA 256 را میتوان یکی از امنترین الگوریتمهای هشنگاری به شمار آورد که در بلاکچین بیت کوین نیز مورد استفاده قرار گرفته است. با توجه به اهمیت شناخت الگوریتمهای هشنگاری در درک بهتر سطح امنیت شبکههای بلاکچینی ما در این مقاله از بلاگ کیف پول من به سراغ معرفی الگوریتم SHA 256 و کاربرد آن در بلاکچین رفتهایم. اگر شما هم در این زمینه کنجکاو هستید؛ پس تا انتهای این مطلب ما را همراهی کنید.
الگوریتم SHA 256 چیست؟
امروزه سیستمهای بسیار متنوعی برای رمزگذاری اطلاعات پدید آمدهاند که الگوریتم SHA 256 نیز یکی از آنهاست. این الگوریتم از سوی بیت کوین به منظور تضمین یکپارچگی اطلاعات ذخیره شده در یک بلاک مورد استفاده قرار گرفته است. البته ناگفته نماند همچون تمامی پیشرفتهای رخ داده در حوزه رمزنگاری، نباید نقش دولتها را در ظهور چنین الگوریتمی از یاد برد! الگوریتم SHA یا همان الگوریتم هش ایمن (Secure Hash Algorithm) یکی از الگوریتمهای رمزنگاری بود که توسط آژانس امنیت ملی ایالات متحده (NSA) و موسسه ملی استاندارد و فناوری (NIST) طراحی و توسعه یافت.
هدف از طراحی این الگوریتم رمزنگاری، تولید هش یا همان کدهای منحصربهفرد براساس استاندارد مشخص است که با کمک آن میتوان اسناد و دادههای رایانهای را در برابر عوامل خارجی ایمن کرد. الگوریتم SHA 256 در نوع خود پیشرفت بزرگی در راه تضمین حراست از حریم خصوصی و پردازش اطلاعات به شمار میرود. در سال 1993 میلادی بود که اولین پروتکل SHA که از آن با نام SHA-0 یاد میشود، خلق شد.
2 سال پس از این ماجرا نسخه قدرتمندتر آن با نام SHA-1 معرفی گردید. البته توسعه الگوریتم SHA به همینجا ختم نشد، بلکه چند سال بعد از نسخه SHA-2 رونمایی شد که با توجه به تعداد بیتها به چهار نوع SHA-224، SHA-256، SHA-384 و SHA-512 تقسیم گردید.
کالبدشکافی بیشتر ماهیت الگوریتم SHA 256 در بیت کوین
الگوریتم SHA 256 همان تابع هش مورد استفاده در استخراج بیت کوین است. این الگوریتم به تابع هش رمزنگاری اشاره دارد که قادر است خروجی 256 بیتی را ارائه کند. در بلاکچین بیت کوین از این الگوریتم رمزنگاری به منظور ایجاد و مدریت آدرسها و همچنین تأیید تراکنشها استفاده میشود. جالب است بدانید که بیت کوین از 2 الگوریتم SHA 256 استفاده میکند؛ به این معنی که توابع هش را دو بار اعمال مینماید.
این الگوریتم که در اصل نوعی الگوریتم رمزنگاری SHA-2 بوده، مستقیماً از سوی آژانس امنیت ملی آمریکا توسعه پیدا کرده است. اصولاً از این الگوریتم در پروتکلهای محبوب رمزگذاری نظیر SSH، TLS و SSL یا سیستمهای عامل منبع باز مثل Unix/Linux نیز استفاده میشود. سطح امنیت الگوریتم SHA 256 به قدری است که در ایالات متحده از آن برای محافظت از اطلاعات و دادههای حساس بهره میبرند.
به بیان خلاصه، امکان انجام مهندسی معکوس و آشکارسازی دادههای اولیه هش شده از طریق الگوریتم SHA 256 به دلیل نیاز به انرژی محاسباتی عظیم در حدس زدن رشته صحیح اعداد تقریباً غیرممکن است. همین ویژگی بود که ساتوشی ناکاموتو را به استفاده از این الگوریتم هش در بیت کوین اقناع کرد.
ویژگیهای الگوریتم SHA 256
مسیر حرکت در هشینگ یک طرفه است! یعنی شما میتوانید کلمهای مثل «me» را با کمک الگوریتم SHA 256 به هش «2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0» تبدیل کنید؛ اما امکان این که با کمک مقدار هش فوق به کلمه «me» برسید امکانپذیر نیست! از طرفی جالب است بدانید که طول هش به دست آمده از الگوریتم SHA 256 همواره ثابت و یکسان است؛ به این معنی که فرقی نمیکند محتوای مدنظر شما برای هشینگ چقدر باشد، نتیجه همواره یک رشته 64 کاراکتری ترکیبی از حروف و اعداد خواهد بود.
در ادامه به بررسی تفصیلیتر ویژگیهای الگوریتم SHA 256 میپردازیم:
هش تولیدی الگوریتم SHA 256، منحصربهفرد است!
هنگامی که از تابع هش SHA 256 استفاده میشود، هر ورودی مجزا مقادیر هش منحصربهفرد و خاص خود را تولید میکنند. جالب است بدانید که حتی یک تغییر کوچک در این ورودی منجر به تولید هش کاملاً متفاوتی خواهد شد. در ادامه میتوانید نمونه پیادهسازی شده بر روی الگوریتم SHA 256 را مشاهده کنید:
ورودی | مقدار هش خروجی |
m | 62c66a7a5dd70c3146618063c344e531e6d4b59e379808443ce962b3abd63c5a |
me | 2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0 |
meandyou | cf7af6b1be152c4f427a3b5beb444e85eeadfb9e062ed420fb9b9a10ccfbadf7 |
برگشت ناپذیری الگوریتم SHA 256
مقادیر هش ایجاد شده با استفاده از الگوریتم SHA 256 تحت تاثیر مهندسی معکوس قرار نمیگیرند؛ به این معنی که مهاجم سایبری نمیتواند با استفاده از مقادیر هش به دست آمده از الگوریتم SHA 256 به داده اولیه برسد. چنین ویژگی تضمین کننده این واقعیت است که حتی اگر مقدار هش در دسترس عموم قرار بگیرد نیز همچنان دادههای ورودی از محافظت حداکثری برخوردار هستند و نباید نگران فاش شدن آنها باشیم.
یکسان بودن مقدار هش خروجی در الگوریتم SHA 256
الگوریتم SHA 256 همواره مقدار هش یکسانی را برای ورودیها تولید میکند. این ویژگی تضمین کننده ثبات در فرآیند هشینگ بوده و امکان تأیید دادهها را در سیستمهای راه دور فراهم میکند. این ویژگی قطعی بودن تابع هش SHA-256 را میتوانید با مراجعه به تولیدکنندههای آنلاین هش مانند OnlineWebToolKit و Movable Type Scripts درباره مقدار هش m، me و meadyou که در بالا ذکر شد، مورد بررسی قرار دهید تا مستقیماً متوجه میزان قطعی بودن این الگوریتم شگفتانگیز شوید.
نحوه کار الگوریتم SHA 256 به چه صورت است؟
از الگوریتم SHA 256 برای خلاصه کردن و رمزنگاری استفاده میشود. آیا تاکنون به محتوای سس موردعلاقه خود توجه کردهاید؟! یک سس از مخلوط کردن سبزیجات و ادویهها متنوع به دست میآید و در ترکیبات سس مایونز تخم مرغ، سرکه، آبلیمو، فلفل سیاه، شکر و غیره به کار رفته است؛ حال سوال اینجاست که به هنگام مزه کردن این سس طعم تمامی این ترکیبات به صورت مجزا در ذهن شما تداعی میشود؟! مطمئناً خیر و زمانی متوجه آنها خواهید شد که نگاهی به ترکیبات نوشته شده بر روی برچسب سس بیندازید!
الگوریتم SHA 256 نیز دقیقا همچون سس مایونز است که کلمات و نمادها را دریافت و با یکدیگر ترکیب میکند تا در نهایت خروجی کاملاً منحصربهفردی را ارائه کند. جالب است بدانید که فرآیند هشینگ بسیار حساس بوده و حتی با انجام کوچکترین تغییر در بزرگ یا کوچک کردن حروف، نتیجه کاملاً متفاوت میشود؛ به طوری که هش به دست آمده از «E» کاملاً متفاوت از هش به دست آمده از «e» خواهد بود.
امضای دیجیتال برای الگوریتم SHA 256 فرقی نمیکند که شما عبارت «هری پاتر» را بخواهید به هش تبدیل کنید یا به دنبال هشینگ یک کتاب الکترونیکی 100 هزار کلمهای باشید، این الگوریتم میتواند هر دو حالت را با عبور از مراحل پیچیده درهمسازی و هشینگ در نهایت به مقدار هش 256 بیتی تبدیل کند.
کاربردهای استفاده از تابع هش SHA 256
گفته شد که الگوریتم SHA 256 با هدف تضمین امنیت اطلاعات طراحی و توسعه یافته است. همین ویژگی موجب شده تا استفاده از این الگوریتم در حوزههای مختلفی کاربرد داشته باشد که در ادامه به بررسی مهمترین نمونههای آن میپردازیم:
- یکپارچگی فایل: هش کردن به وسیله الگوریتم SHA 256 میتواند به حفاظت از یکپارچگی فایلها کمک کند در واقع فرقی نمیکند که فایل مورد نظر شما یک سند، فیلم یا هر فایل دیگری باشد، با کمک این الگوریتم میتوانید از ایمن باقی ماندن آن اطمینان حاصل کنید. این موضوع زمانی اهمیت خود را نشان میدهد که بخواهید از امضای دیجیتال استفاده کنید یا نرمافزاری را بهروزرسانی کنید؛ چراکه در این حالت اطمینان پیدا خواهید کرد که فایلهای مورد نظر دستکاری نشدهاند.
- هش رمز عبور: یکی از کاربردهای اصلی که میتوان برای استفاده از الگوریتم SHA 256 در نظر گرفت، استفاده از آن در هشینگ رمز عبور است. کمپانیهای بزرگ به جای آن که خود رمزعبور کاربران را ذخیره کنند، امروزه به سراغ استخراج مقدار هش رمزعبور رفته و این مقادیر را در نزد خود نگه میدارند تا بدین ترتیب کار را برای مهاجمان و هکرانی که قصد ورود به حساب کاربری کاربران را دارند، دشوار و غیرممکن گردد. زمانی که شخص رمزعبور خود را وارد میکند، سیستم به طور خودکار رمز ورودی را به مقدار هش تبدیل و بررسی میکند که آیا این رمز با آنچه که در پایگاه داده ذخیره شده مطابقت دارد یا خیر!
- شبکه بلاکچین: یکی از بسترهای اصلی معرفی الگوریتمهای هش، فناوری بلاکچین است. شبکههای بلاکچین از این الگوریتم به منظور ایمنسازی و تغییرناپذیری دادههای ذخیره شده در بلاکها کمک میگیرند. در واقع بلاکها از طریق پیوند داده شدن مقادیر هش به همدیگر متصل میشوند و نتیجه این موضوع چیزی جز ایجاد شدن دفترکل شفاف و از بین رفتن احتمال تحریف دادهها نخواهد بود.
SHA 256؛ الگوریتمی برای تضمین امنیت دادهها!
الگوریتم SHA 256 به دلیل پیشرفته بودن و پس دادن امتحان خود در حوزه تضمین امنیت دادهها، امروزه کاربردهای بسیار زیادی در حوزه صیانت از رمزعبور، فناوری بلاکچین، گواهینامه SSL/TLS، امضای دیجیتال و غیره دارد. در واقع اگر دنیای کریپتوکارنسی به شکل امروزی آن وجود دارد، بیش از هرچیزی به استفاده از الگوریتم SHA 256 مدیون است؛ چراکه این الگوریتم بود که استخراج بیت کوین، ارسال تراکنش و انجام معاملات بیت کوینی که اولین رمزارز بازار ارزهای دیجیتال به شمار میرود را فراهم کرد. حال نظر شما درباره الگوریتم SHA 256 چیست؟ آیا این نسل از الگوریتم هش SHA دارای کارآمدی کافیست یا باید انتظار نسل جدیدتر آن را نیز داشته باشیم؟! نظرات خود را برای ما بنویسید.