همانطور که در مقالهٔ چه تفاوتهایی میان Encryption و Hashing وجود دارد؟ گفتیم، الگوریتم SHA-1 دارای نقطه ضعفهایی است که باعث میشود همیشه خروجی هَش فانکشن به ازای مقادیر مختلف، منحصربهفرد نباشد و گوگل برای اولین بار توانست با ایجاد یک نوع PDF دستکاری شده با یک پیشوند خاص، اقدام به ایجاد خطا در هَش 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 چیست؟
اینگونه تداخلات زمانی اتفاق میافتند که الگوریتم هَشینگ به درستی کار نمیکند و نتیجه آن میشود که دو فایل مختلف، از یک هَش یکسان برخوردار میشوند. چنین وضعیتی بسیار خطرناک است و به هکر اجازه میدهد تا بتواند سیستم را فریب داده و باعث شود سیستم یک فایل مخرب را بپذیرد.
به طور کلی، برای آنکه اصطلاحاً Collision (تداخل) اتفاق بیفتد، گوگل اقدام به ساخت یک پیشوند PDF کرد که میتواند دو داکیومنت ایجاد کند که محتوای متمایزی دارند ولی مقدار هَش شدهٔ آن یکسان است و این در حالی است که اگر SHA-1 درست کار میکرد، نباید چنین اتفاقی میافتاد.
گوگل برای اینکه بتواند کُلیژنها را پیدا کند، از زیرساخت کلود خود استفاده کرد به طوری که این اقدام مهندسین گوگل یکی از بزرگترین محاسباتی است که تاکنون به سرانجام رسیده است. اگر تمایل دارید که بدانید حجم این محاسبات تا چه میزان بزرگ بود، بگذارید چند عدد و رقم را با هم مرور کنیم:
- 9 کوانتیلیون (9,223,372,036,854,775,808) محاسبه!
- به عبارت دیگر، 6500 سال برای CPU طول میکشد تا بتواند فاز نخست این حمله را به پایان برساند و 110 سال پردازش GPU تا بتوان فاز دوم از حمله را به پایان رساند!
آشنایی با سایت Shattered
برای آنکه بتوانید موارد آسیبپذیر را ببینید، گوگل سایتی تحت عنوان Shattered را برای این کار ایجاد کرده که میتوانید با مراجعه به این سایت بیشتر کسب اطلاع نمایید.
همانطور که قبلاً هم گفتیم، باور عمومی بر این است که دست اندر کاران امنیت به زودی به الگوریتمهای امنتری همچون SHA-256 یا SHA-3 سوییچ میکنند. با این تفاسیر، به کدامیک از سایر الگوریتمهای هَشینگ برای محافظت از حریم خصوصی کاربران خود فکر میکنید؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.