موضوع مقاله: اس‌اچ‌ای-۱ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # اس‌اچ‌ای-۱ | مقدمه: در رمزنگاری اِس‌اِچ‌اِی-۱ یا شا-۱ تابع درهم‌سازی در مقولهٔ رمزنگاری است که یک ورودی می‌گیرد و یک مقدار درهم ۱۶۰ بیتی (۲۰ بایت) به نام چکیده پیام (message digest) تولید می‌کند - که معمولاً به عنوان یک عدد ۱۰ رقمی در مبنای ۱۶ نمایش داده می‌شود. | ## بخش 1: اس‌اچ‌ای-۱ | توسط سازمان امنیت ملی در ایالات متحدهٔ آمریکا طراحی شده و یک استاندارد مؤسسه ملی فناوری و استانداردها محسوب می‌شود. از ابتدای سال ۲۰۰۵ SHA-1 در برابر حمله کننده‌های با امکانات بالا امن محسوب نمی‌شود. سازمان NIST به صورت رسمی استفاده از SHA-1 را در سال ۲۰۱۱ منسوخ اعلام کرد و در سال ۲۰۱۳ استفاده آن در امضای دیجیتال را ممنوع کرد. در نتیجه پیشنهاد می‌شود که SHA-1 را از تمام محصولات هر چه سریع تر حذف کنیم و به جای آن از SHA-256 یا SHA-3 استفاده کنیم. تمام فروشندگان مرورگرهای اینترنتی از سال ۲۰۱۷ پذیرش گواهی ssl که با SHA-1 تولید شده است را متوقف کردند. این نسخه مدت کوتاهی پس از انتشار توسط NSA پس گرفته شد و توسط نسخه اصلاح شده جایگزین شد (منتشر شده در انتشار ۱۸۰–۱ از FIPS). SHA-1 تنها در یک چرخش بیتی در برنامه پیام تابع فشرده‌سازی خود با SHA-0 متفاوت است. طبق حرف‌های NSA این کار برای تصحیح یک ایراد در الگوریتم اصلی انجام شده بود که امنیت رمزنگاری آن را کاهش می‌داد اما آن‌ها توضیحات بیشتری ندادند. روش‌های در اختیار عموم در سال ۲۰۰۴ یک ایراد را در SHA-0 قبل از SHA-1 در ۲۰۱۷ نشان دادند. الگوریتم SHA-1 شباهت بسیار زیادی به اس‌اچ‌ای-۰ دارد ولی در اصل ایرادهایی اساسی که در نسخه ۰ وجود داشته و سبب ضعف این الگوریتم شده بود را برطرف نموده است. نسخهٔ ۰ در تعداد کمی از نرم‌افزارهای امنیتی به کار می‌رود و کاربرد گسترده‌ای ندارد. الگوریتم درهم‌سازی ایمن با نسخهٔ ۱ در حال حاضر پرکاربردترین الگوریتم درهم‌سازی از این خانواده است و در بسیاری از نرم‌افزارها و کاربری‌های امنیتی امروزه به خدمت گرفته شده است. در سال ۲۰۰۵ خطاهای امنیتی این الگوریتم در موضوع ریاضیات به کار رفته در آن تشخیص داده شد که نشان می‌داد ممکن است این الگوریتم شکسته شود. در سال ۲۰۱۷، مؤسسهٔ ملی تحقیقات ریاضی و علوم کامپیوتر آمستردام و گوگل، مشترکاً دو فهرست از رشته‌های متفاوت منتشر کردند که خروجی یکسانی داشتند. با این تفسیر الگوریتم دیگری هم در حال توسعه است با نسخه ۳ که NIST برای انتخاب بهترین الگوریتم با این نام، مسابقه‌ای مثل دوره‌های قبل برگزار کرده که تا پایان سال ۲۰۱۲ پیش‌بینی شده به طول انجامد. تابع درهم‌سازی SHA-1 الگوریتم SHA-1 یک چکیده پیام ۱۶۰ بیتی بر اساس روشی مشابه به الگوریتم‌های MD4 و ام‌دی۵ تولید می‌کند و البته قدری هم محافظه کارانه است. مشخصه‌های اصلی این الگوریتم اولین بار در سال ۱۹۹۳ به عنوان استاندارد درهم‌سازی ایمن توسط NIST انتشار یافت. این نسخه را به نسخه ۰ هم ارجاع می‌دهند چون ساختار به کار رفته در آن همان‌طور که قبلاً گفتیم شبیه نسخه ۰ است. NSA مدتی پس از انتشار نسخهٔ ۰ آن را پس گرفت و با یک نسخه جدید با تجدید نظر کلی جانشین کرد که امروز آن را با نام sha-1 می‌شناسیم. در واقع فرق میان این دو نسخه یعنی ۰ و ۱ در یک گردش بیتی در الگوریتم ساخت پیام است؛ یعنی بخش تابع فشرده‌سازی تغییر یافته است. البته NSA هم برای این عملکرد خود دلیل مشخص و واضحی بیان نکرد و معتقد بود با این کار امنیت الگوریتم نسبت به نسخه قبلی ارتقا خواهد یافت. لازم است ذکر شود نوع ۵۱۲ بیتی بر روی سیستم‌های ۶۴ بیتی بسیار سریعتر از ۲۵۶ بیتی است. | ## بخش 2: اس‌اچ‌ای-۱ | در این کاربردها می‌توان از الگوریتم درهم‌سازی MD5 هم استفاده کرد و به همین صورت می‌توان MD4 را هم در این کاربردها جایگزین کرد که البته امنیت کمتری را تضمین خواهند نمود. از sha-1 هم چنین در سیستم‌های کنترل بازنگری استفاده می‌شود از قبیل گیت (Git) و مرکوریال و مونوتُن. در این موارد از sha-1 برای شناسایی و بازنگری تغییرات و تشخیص تخریب داده‌ای یا تغییر داده‌ای استفاده می‌شود. اما با وجود همهٔ این کاربردها، یک حملهٔ بالقوه و سازمان یافته در مقابل این الگوریتم ممکن است سبب شکسته شدن آن و گذر از سیستم یا سرویس امنیتی شود. الگوریتم‌های درهم‌سازی SHA-1 و اس‌اچ‌ای-۲ الگوریتمهای ایمنی هستند که بنابر قانون در آمریکا بر روی نرم‌افزارهای مشخصی حتماً باید مورد استفاده قرار گیرند که می‌توانند همراه با الگوریتم‌های رمزنگاری دیگری هم استفاده شوند. و البته sha-1 در بیشتر موارد استفادهٔ حکومتی در دولت آمریکا استفاده نمی‌شود و کنار گذاشته شده، به‌طوری‌که NIST گفته «آژانسهای فدرال آمریکا باید استفاده از SHA-1 را کنار بگذارند برای مصارف مختلف و در مصارفی که توانایی تحمل خطا مهم است و باید بالا باشد، از سال ۲۰۱۰ به بعد باید از نسخه ۲ استفاده کنند.» انگیزهٔ اولیه برای انتشار خانواده sha، امضای دیجیتال بود. صحت داده Git در ساختار خود از SHA-1 نه برای امنیت، بلکه جهت صحت و اطمینان از عدم تغییر داده‌ها استفاده می‌کند. و البته Git با این الگوریتم بسیار هم موفق است به‌طوری‌که اگر به عنوان مثال شما داده‌ای را در آن ذخیره کنید و حتی ۵ سال از آن زمان بگذرد و شما بخواهید داده‌های خود را ملاحظه کنید خواهید دید که داده‌ها به‌طور تضمین شده‌ای دچار هیچ گونه تغییری نشده‌اند. آنالیز و ارزیابی رمزنگاری وقتی یک چکیده پیام با طول L داریم در اغلب موارد می‌توانیم رمز شدهٔ این پیام را با همین طول با پیچیدگی ۲ به توان L، مورد حملهٔ غیرهوشمندانه قرار داد و آن را افشا نمود. مسئله دومی که در اینجا مطرح می‌شود پیدا کردن دو الگوریتم رمزنگاری متفاوت است که هر دو یک چکیده پیام را تولید کنند. در چنین مواقعی می‌گوییم یک برخورد به وجود آمده و زمان لازم برای کشف آن از مرتبهٔ ۲ به توان L/2 است. با دلایل ذکر شده و یک سری دلایل محاسباتی طول کلید تابع در هم‌سازی را با نصف طول چکیده پیام رمز شده در رمزنگاری متقارن مقایسه می‌کنند تا نتایج بهتری بدست آورند. با این شرایط SHA-1 طولی بالغ بر ۸۰ خواهد داشت تا امنیت لازم را برای عملیات رمزنگاری تضمین کند. البته دانشمندان رمزنگاری، برخوردهای دوتایی برای الگوریتم sha-0 و نیز sha-1 پیدا کردند. با وجود این برخورد در الگوریتم sha-1 تعداد کل حالات به جای آنکه از مرتبهٔ ۲ به توان ۸۰ باشد کادرهم‌سازی یافته و از مرتبهٔ همان عدد به توان ۴۰ خواهد شد که زمان بسیار کمتری را برای افشا نیازمند است. بعضی کاربردهایی که از درهم سازی رمزنگاری استفاده می‌کنند (مثل ذخیره‌سازی رمزعبور) خیلی کم توسط حملهٔ برخورد تحت تأثیر قرار می‌گیرند. ساختن کلمه‌عبوری که برای یک حساب‌کاربری کار می‌کند علاوه بر حمله به پیش‌تصویر نیازمند دسترسی به hash کلمه‌عبور اولیه می‌باشد که ممکن است بدیهی نباشد. برعکس کردن رمزنگاری کلمه‌عبور (به عنوان مثال برای بدست آوردن کلمه‌عبوری که بتوان برای یک حساب کاربری دیگر کاربر استفاده کرد) توسط این حمله‌ها ممکن نیست. (با این حال یک الگوریتم hash امن نمی‌تواند از یک حمله brute-force به یک کلمه‌عبور ضعیف جلوگیری کند) در مورد امضای دیجیتال اسناد حمله‌کننده نمی‌تواند به سادگی یک امضا از یک سند موجود را جعل کند. یکی بدون آسیب و دیگری آسیب زننده و کاری کند تا نگه‌دارنده کلید خصوصی نسخه بدون آسیب را امضا کند. تا پایان سال ۲۰۰۸ ایجاد گواهی‌نامه‌های جعلی SSL با استفاده از حمله برخورد MD5 ممکن بود. یک بهبود ساده برای جلوگیری از این حمله دو بار درهم‌سازی است (طول 0b و zero block برابر اندازه بلوک الگوریتم درهم‌سازی می‌باشد) در اصطلاح امنیت کاربردی، نگرانی ویژه در مورد این گونه حملات تازه بنیاد اینست که روزی ممکن است راه افشا را از این هم که هست راحتتر کنند. | ## بخش 3: اس‌اچ‌ای-۱ | بدین صورت که پس از دستیابی به رمز عبور، آن را با الگوریتمی که تبدیل کردند، به صورت معکوس، رمز واقعی و Plain Text بدست می‌آورند. به دلیل ویژگی‌های ساختاری الگوریتم‌های درهم‌سازی sha، کلیهٔ آن‌ها نسبت به حملات تداخلی آسیب‌پذیر هستند. حمله‌ها در اوایل سال ۲۰۰۵ رایمن و ازوالد مطلبی در مورد یک حمله روی یک نسخه کاهش یافته از SHA-1 که ۵۳ دور از ۸۰ دور را داشت منتشر کردند که برخوردها را با هزینه محاسباتی کمتر از 280 عملیات پیدا می‌کند. در ماه اول سال ۲۰۰۵ حمله‌ای توسط چایون وانگ و ییچون لیزا یین و هونگ‌بوی یو منتشر شد که می‌توانست برخوردها را در نسخه کامل SHA-1 با هزینهٔ محاسباتی کمتر از 269 عملیات پیدا کند. (یک جستجوی غیرهوشمندانه به 280 عملیات نیاز دارد) طبق نویسندگان مطلب بالا: <<به صورت خاص تحلیل ما بر اساس حملات تفاضلی اصلی بر روی SHA-0 و تکنیک‌های برخورد چند بلوکی علاوه بر تکنیک‌های تغییر پیام استفاده شده در حمله collision search بر روی MD5 می‌باشد. در یک مصاحبه Yin می‌گوید که «به‌طور کلی ما از این دو ضعف استفاده می‌کنیم: یکی این که مرحله پیش پردازش فایل به اندازه کافی پیچیده نیست و دیگری این که بعضی حملات ریاضی در ۲۰ دور اول ویژگی‌های پیش‌بینی نشده امنیتی دارند.» در ۱۷ اوت ۲۰۰۵ یک بهبود روی حمله به SHA-1 از طرف چایون وانگ، اندرو یائو و فرانسیس یائو در جلسه CRYPTO 2005 Rump اعلام شد که پیچیدگی مورد نیاز برای یافتن برخورد در SHA-1 را به 263 کاهش می‌داد. یک برخورد دو بلوکی که توسط توابع غیر بهینه با 235 عملیات مقایسه پیدا شده بود برای SHA-1 نشان داده شد. به خاطر این که این حمله تنها حدوداً 235 ارزیابی نیاز دارد یک پیشرفت تءوری بزرگ در نظر گرفته می‌شود. با این حال برای این که یک برخورد در ۸۰ دور کامل الگوریتم درهم‌سازی پیدا شود مقدار بسیار زیادی زمان مورد نیاز است. در جلسه Rump همایش CRYPTO سال ۲۰۰۶ کریستین رچبرگر و کریستف دو کانیه ادعا کردند که یک حملهٔ برخورد روی SHA-1 پیدا کرده‌اند که به فرد متهاجم اجازه می‌دهد حداقل قسمت‌هایی از پیام را انتخاب کند. در سال ۲۰۰۸ یک روش حمله توسط استفان مانوئل با پیچیدگی تئوری 251 تا 257 عملیات برخوردها را گزارش می‌داد. با این حال او بعداً پس از همیدا این که مسیرهای برخورد محلی از هم مستقل نبودند از این موضع عقب‌نیشنی کرد. (که در آن مهاجم نمی‌تواند وضعیت اولیه درونی را انتخاب کند) ولی ادعاهای امنیتی SHA-1 را تضعیف می‌کند. تمام حملات قبلی برای این که طراحان آن‌ها آن‌ها را نمایش بدهند زیادی هزینه‌بر بودند. روش کار آن‌ها بر پایه کار قبلی خودشان و همچنین تکنیک‌های سرعت بخشی با استفاده از مسیرهای کمکی (یا همان بومرنگ) که توسط Joux و Peyrin ابداع شده بودند و استفاده از کارت گرافیک‌های با کارایی بالا و هزینه پایین شرکت انویدیا بود. نویسندگان ادعا کردند که یک برخورد مشابه می‌تواند توسط خرید US$۲٬۰۰۰ زمان GPU از EC2 پیدا شود. این تقریباً یک بیلیون برابر سریع تر (و قابل استفاده برای بسیاری از حملات هدفمند به خاطر امکان انتخاب prefix) از حملات قبلی است که 277.1 ارزیابی نیاز داشتند. این روش هم‌چنان می‌تواند برخوردهای chosen-prefix را دز تابع MD5 با پیچیدگی زمانی 246.3 پیدا کند که از بهترین روش تا آن زمان برای این کار که در تءوری 239 (البته در عمل ممکن بود به ≤249 ارزیابی برسد) ارزیابی نیاز داشت بهتر نیست. SHA-0 در سال ۱۹۹۸ توسط دو فرانسوی این الگوریتم مورد حمله تداخلی قرار گرفت که با پیچیدگی ۲ به توان ۶۱ که خیلی کمتر از حمله نرمال آن بود (یعنی ۲ به توان ۸۱) به موفقیت رسید. به‌طور مشابه در سال ۲۰۰۴ با پیدا کردن collision این میزان به ۲ به توان ۶۲ کادرهم‌سازی یافت و موفق شدند آن را بشکنند. در اوت همان سال توسط تیمی دیگر این میزان به ۲ به توان ۵۱ کادرهم‌سازی یافت که با امکاناتی که در آن روز در اختیار داشتند فرایند حمله را ظرف مدت ۱۳ روز به اتمام رسانیدند. | ## جمع‌بندی | بعد از آن حملاتی با پیچیدگی ۲ به توان ۴۰ و ۳۹ هم اتفاق افتاد که به زمان کمتری جهت شکستن الگوریتم نیاز داشتند.