استفاده از الگوریتم SHA-1 ممنوع چراکه گوگل توانست آن‌ را بشکند!

استفاده از الگوریتم SHA-1 ممنوع چراکه گوگل توانست آن‌ را بشکند!

همان‌طور که در مقاله چه تفاوت‌هایی میان Encryption و Hashing وجود دارد؟ گفتیم، الگوریتم SHA-1 دارای نقطه‌ضعف‌هایی است که باعث می‌شود همیشه عبارت خروجی هش فانکشن به ازای مقادیر مختلف، منحصر‌به‌فرد نباشد! گوگل برای اولین بار توانسته است با ایجاد یک نوع PDF دستکاری شده با یک پیشوند خاص، اقدام به ایجاد خطا در هش‌ این فانکشن نماید؛ محققانی که بر روی این پروژه کار می‌کردند توانستند 2 فایل مختلف را با این الگوریتم هش نموده و نتیجهٔ خروجی SHA-1 برای هر دو فایل یکسان بود. گوگل با استفاده از زیرساخت کلود خود توانست حجم عظیمی از این‌گونه تداخلات را محاسبه نماید. پس از این اتفاق، گوگل پیش‌بینی می‌کند که استفاده از الگوریتم آسیب‌پذیر SHA-1 رو به نزول رود. برای آشنایی بیشتر با جزئیات این تحقیق، در ادامه با سکان آکادمی همراه باشید.

پس از ۲ سال تلاش بی‌وقفه و تحقیقات گسترده، گوگل توانست الگوریتم SHA-1 را با موفقیت دور بزند! محققان امنیتی این غول فناوری دنیا توانستند برای اولین بار در دنیای واقعی، اقدام به شکستن یکی از محبوب‌ترین الگوریتم‌های هشینگ یعنی SHA-1 نمایند. قبل از این‌که بخواهیم در مورد جزئیات این‌که چطور این اتفاق باعث نابود شدن چارچوب اصلی انکریپشن وب گردید بپردازیم، اجازه دهید تا کمی در مورد الگوریتم SHA-1 بیشتر بدانیم.

الگوریتم SHA-1 چیست و وظیفهٔ آن چیست؟
الگوریتم SHA-1 توسط NSA که مخفف واژگان National Security Agency (آژانس امنیت ملی ایالات متحدهٔ امریکا) است، در گذشته‌ای دور ساخته شده است و جزئی لاینفک برای تبادلات اینترنتی می‌باشد. در گذشته الگوریتم SHA-1 به عنوان یک الگوریتم امن برای عملیات هشینگ بحساب می‌آمد؛ در‌واقع، Hash (هش) یک استرینگ منحصربه‌فرد است که بر اساس دیتای ورودی یک استرینگ، یک خروجی به عنوان هش ایجاد می‌کند که این خروجی یکتا و منحصر‌به‌فرد است. زمانی که شما رمزعبوری برای حساب‌های کاربری خود قرار می‌دهید، این رمزعبور اصطلاحاً هش می‌شود و در سرور ذخیره می‌گردد (البته برخی سایت‌ها هستند که اصلا به این کار اعتقادی ندارند!)

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

اگر SHA-1 تا این حد مفید است، چرا گوگل باید اقدام به شکستن آن نماید؟
مطمئناً زمانی که سرتیتر این مقاله را خواندید، به احتمال زیاد این سؤال را از خود پرسیده‌اید؛ علت اصلی که در پشت این ضربهٔ مهلک به الگوریتم SHA-1 باعث فرو ریختن اعتماد نسبت به آن شده است این که نقصان و ضعف این الگوریتم بیش از یک دهه است که به صورت تئوری اثبات شده، با این وجود، این الگوریتم هنوز هم برای کاربردهای زیادی مورد استفاده قرار می‌گیرد.

گوگل با به دست آوردن این موفقیت تأکید کرد که الگوریتم SHA-1 به پایان مسیر خود رسیده است؛ این شرکت چند سال پیش، از شرکت‌های دست‌اندرکار تکنولوژی خواسته بود تا دیگر از الگوریتم SHA-1 استفاده نکنند (در همین راستا، اعضای تیم توسعه‌دهندهٔ Chrome در سال 2014 اعلام کردند که دیگر از این الگوریتم استفاده نمی‌کنند.)

گوگل در حقیقت چه کاری انجام داده است و منظور از تداخلات Cryptographic چیست؟
این‌گونه تداخلات زمانی اتفاق می‌افتند که الگوریتم هشینگ به درستی کار نمی‌کند و نتیجه آن می‌شود که ۲ فایل مختلف، از یک هش یکسان برخوردار خواهند شد. چنین وضعیتی بسیار خطرناک است و به هکر اجازه می‌دهد که بتواند سیستم را فریب داده و باعث شود سیستم یک فایل مخرب را بپذیرد (گوگل طی ماه‌های آتی، سورس کدی که می‌تواند یک جفت PDF که دارای مقدار هش یکسانی می‌باشند را تولید می‌کند منتشر خواهد کرد که نام آن‌را هم SHAttered گذاشته است.)

به طور کلی برای آن‌که Collision (کلیژن یا تداخل) اتفاق بیفتد، گوگل اقدام به ساخت یک پیشوند PDF کرده است که می‌تواند 2 سند ایجاد کند که محتوای متمایزی دارند ولی مقدار هش شدهٔ آن یکسان است در صورتی که اگر SHA-1 درست کار می‌کرد، نباید چنین اتفاقی می‌افتاد. گوگل برای این‌که بتواند کلیژن‌ها را پیدا کند از زیرساخت کلود خود استفاده کرد به طوری که این اقدام مهندسین گوگل یکی از بزرگترین محاسباتی است که تاکنون به سرانجام رسیده است. تعجب کردید که تا چه‌ میزان این پردازش بزرگ است؟ بگذارید چند عدد را با هم مرور کنیم:

- 9 کوانتیلیون (9,223,372,036,854,775,808) محاسبات SHA-1!
- یعنی 6500 سال برای CPU طول می‌کشد تا بتواند فاز نخست این حمله را به پایان برساند!
- و 110 سال پردازش GPU تا بتوان فاز دوم از حمله را به پایان رساند!

همان‌طور که قبلاً هم گفتیم، باور عامه این شده است که دست‌اندرکاران امنیت به زودی به الگوریتم‌های امن‌تری همچون SHA-256 یا SHA-3 سوییچ می‌کنند. علاوه بر این، برای آن‌که بتوانید موارد آسیب‌پذیر را ببینید، گوگل سایتی تحت عنوان shattered.io را برای این کار ایجاد کرده که می‌توانید با مراجعه به آن این‌ موضوع را مشاهده نمایید. 

حال نوبت به نظرات شما می‌رسد؛ با این تفاسیر، به کدام‌یک از سایر الگوریتم‌های هشینگ برای محافظت از حریم خصوصی کاربران خود فکر می‌کنید؟ نظرات و دیدگاه‌های خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.

منبع