اس‌اچ‌ای-۱: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
Hosein ed (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
Hosein ed (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱۵: خط ۱۵:


SHA-1 یک [[message digest]] بر اساس قوانینی مشابه آن هایی که توسط [[Ron Rivest|Ronald L. Rivest]] از [[Massachusetts Institute of Technology|MIT]] در طراحی message digest های [[MD2 (hash function)|MD2]] و [[MD4]] و [[MD5]] از آن ها استفاده کرده است تولید می کند اما یک مقدار درهم بزرگ تر ( ۱۶۰ بیت به جای ۱۲۸ بیت ) تولید می کند.
SHA-1 یک [[message digest]] بر اساس قوانینی مشابه آن هایی که توسط [[Ron Rivest|Ronald L. Rivest]] از [[Massachusetts Institute of Technology|MIT]] در طراحی message digest های [[MD2 (hash function)|MD2]] و [[MD4]] و [[MD5]] از آن ها استفاده کرده است تولید می کند اما یک مقدار درهم بزرگ تر ( ۱۶۰ بیت به جای ۱۲۸ بیت ) تولید می کند.

SHA-1 به عنوان بخشی از پروژه ی [[Capstone (cryptography)|Capstone project]].<ref>[http://x5.net/faqs/crypto/q150.html RSA FAQ on Capstone]</ref> دولت آمریکا به وجود آمد. توضیحات اولیه ی الگوریتم در سال ۱۹۹۳ تحت عنوان ''Secure Hash Standard'' در انتشار ۱۸۰ [[Federal Information Processing Standard|FIPS]] توسط سازمان استاندارد دولتی آمریکا[[NIST]](National Institute of Standards and Technology).<ref>{{cite book|last1=Selvarani|first1=R.|last2=Aswatha|first2=Kumar|last3=T V Suresh|first3=Kumar|title=Proceedings of International Conference on Advances in Computing|page=551|url=https://books.google.com/books?id=L2OFg7OiV9YC&pg=PA551|date=2012|publisher=Springer Science & Business Media|isbn=978-81-322-0740-5}}</ref><ref>{{citation|title=Secure Hash Standard, Federal Information Processing Standards Publication FIPS PUB 180|institution=National Institute of Standards and Technology|date=11 May 1993}}</ref> منتشر شد.





نسخهٔ ‏۱۱ مهٔ ۲۰۲۰، ساعت ۰۸:۵۷

در رمز نگاری اس‌اچ‌ای-۱ یا شا-۱ (به انگلیسی: SHA-1) تابع درهم‌سازی در مقولهٔ رمزنگاری است که یک ورودی می گیرد و یک مقدار درهم ۱۶۰ بیتی ( ۲۰ بایت ) به نام #تغییرمسیر message digest تولید می کند - که مغمولا به عنوان یک عدد ۴۰ رقمی در مبنای ۱۶ نمایش داده می شود. توسط سازمان امنیت ملی در ایالات متحدهٔ آمریکا طراحی شده و یک استاندارد مؤسسه ملی فناوری و استانداردها محسوب می شود. از ابتدای سال ۲۰۰۵ SHA-1 در برابر حمله کننده های با امکانات بالا امن محسوب نمی شود. از سال ۲۰۱۰ سازمان های بسیاری جایگزین برای آن پیشنهاد داده اند. سازمان NIST به صورت رسمی استفاده از SHA-1 را در سال ۲۰۱۱ منسوخ اعلام کرد و در سال ۲۰۱۳ استفاده آن در امضای دیجیتال را ممنوع کرد. در سال ۲۰۲۰ حمله های علیه ‌SHA-1 به اندازه ی حمله علیه MD5 کاربردی هستند. در نتیجه پیشنهاد می شود که SHA-1 را از تمام محصولات هر چه سریع تر حذف کنیم و به جای آن از SHA-256 و یا SHA-3 استفاده کنیم. جایگزین کردن SHA-1 در جاهایی که برای امضای دیجیتال استفاده می شود ضروری است. تمام فروشندگان مرورگرهای اینترنتی از سال ۲۰۱۷ پذیرش گواهی ssl که با SHA-1 تولید شده است را متوقف کردند. در فروردین سال ۲۰۱۷ CWI و Google اعلام کردند که با اجرای یک حمله ی برخورد علیه SHA-1 دو فایل PDF غیر مشابه ایجاد کرده اند که hash یکسانی برای آن ها تولید می شود.


Development

یک چرخه الگوریتم SHA-1
A, B, C, D, E کلمات ۳۲ بیتی وضعیت هستند;
F یک تابع غیر خطی است که متغیر است;
نشان دهنده یک چرخش به چپ بیتی n تای است;
n برای هر عملیات متفاوت است.;
Wt پیام گسترش داده شده در مرحله t است.;
Kt is the round constant of round t;
Addition نشان دهنده باقی مانده جمع به 232.

SHA-1 یک message digest بر اساس قوانینی مشابه آن هایی که توسط Ronald L. Rivest از MIT در طراحی message digest های MD2 و MD4 و MD5 از آن ها استفاده کرده است تولید می کند اما یک مقدار درهم بزرگ تر ( ۱۶۰ بیت به جای ۱۲۸ بیت ) تولید می کند.

SHA-1 به عنوان بخشی از پروژه ی Capstone project.[۱] دولت آمریکا به وجود آمد. توضیحات اولیه ی الگوریتم در سال ۱۹۹۳ تحت عنوان Secure Hash Standard در انتشار ۱۸۰ FIPS توسط سازمان استاندارد دولتی آمریکاNIST(National Institute of Standards and Technology).[۲][۳] منتشر شد.



SHA-1 در واقع ابتدای واژه‌های این عبارت است: "الگوریتم درهم‌سازی ایمن" یا به انگلیسی SHA-1 (Secure Hash Algorithm 1) . در حال حاضر سه الگوریتم درهم‌سازی از این گروه با نسخه‌های ۰ و ۱ و ۲ وجود دارد. الگوریتم SHA-1 شباهت بسیار زیادی به اس‌اچ‌ای-0 دارد ولی در اصل ایرادهایی اساسی که در نسخه ۰ وجود داشته و سبب ضعف این الگوریتم شده بود را برطرف نموده‌است. نسخهٔ ۰ در تعداد کمی از نرم‌افزارهای امنیتی به کار می‌رود و کاربرد گسترده‌ای ندارد. در حالی که نسخه ۲ این الگوریتم بسیار با نسخه‌های  ۰ و ۱ متفاوت است.

الگوریتم درهم‌سازی ایمن با نسخهٔ ۱ در حال حاضر پرکاربردترین الگوریتم درهم‌سازی از این خانواده‌است و در بسیاری از نرم‌افزارها و کاربری‌های امنیتی امروزه به خدمت گرفته شده‌است. در سال ۲۰۰۵ خطاهای امنیتی این الگوریتم در موضوع ریاضیات به کار رفته در آن تشخیص داده شد که نشان می‌داد ممکن است این الگوریتم شکسته شود. و از آن زمان بود که نیاز به یک الگوریتم بهتر در این حوزه احساس شد. اس‌اچ‌ای-۲ از بعضی SHA-1 است. در سال ۲۰۱۷، مؤسسهٔ ملی تحقیقات ریاضی و علوم کامپیوتر آمستردام و گوگل، مشترکاً دو فهرست از رشته‌های متفاوت منتشر کردند که خروجی یکسانی داشتند.[۴][۵][۶]

با این تفسیر الگوریتم دیگری هم در حال توسعه‌است با نسخه ۳ که NIST برای انتخاب بهترین الگوریتم با این نام، مسابقه‌ای مثل دوره‌های قبل برگزار کرده که تا پایان سال ۲۰۱۲ پیش‌بینی شده به طول انجامد.

تابع درهم‌سازی SHA-1

الگوریتم SHA-1 یک چکیده پیام ۱۶۰ بیتی بر اساس روشی مشابه به الگوریتم‌های MD4 و ام‌دی۵ تولید می‌کند و البته قدری هم محافظه کارانه‌است.

مشخصه‌های اصلی این الگوریتم اولین بار در سال ۱۹۹۳ به عنوان استاندارد درهم‌سازی ایمن توسط NIST انتشار یافت. این نسخه را به نسخه ۰ هم ارجاع می‌دهند چون ساختار به کار رفته در آن همانطور که قبلاً گفتیم شبیه نسخه ۰ است. NSA مدتی پس از انتشار نسخهٔ ۰ آن را پس گرفت و با یک نسخه جدید با تجدید نظر کلی جانشین کرد که امروز آن را با نام sha-1 می‌شناسیم. در واقع فرق میان این دو نسخه یعنی ۰ و ۱ در یک گردش بیتی در الگوریتم ساخت پیام است. یعنی بخش تابع فشرده‌سازی تغییر یافته‌است. البته NSA هم برای این عملکرد خود دلیل مشخص و واضحی بیان نکرد و معتقد بود با این کار امنیت الگوریتم نسبت به نسخه قبلی ارتقا خواهد یافت.

مقایسه‌ای میان توابع درهم‌سازی

الگوریتم و
متغیر
اندازه خروجی (بیت) اندازه وضعیت داخلی (بیت) اندازه بلوک (بیت) اندازه ماکزیمم پیغام (بیت) اندازه کلمه (بیت) دوره عملگرها تداخل‌های یافته‌شده پرفورمانس (MiB/s)[۷]
MD5 (به‌عنوان مرجع) ۱۲۸ ۱۲۸ ۵۱۲ ۲۶۴ − ۱ ۳۲ ۶۴ and,or,xor,rot بله ۲۵۵
SHA-0 ۱۶۰ ۱۶۰ ۵۱۲ ۲۶۴ − ۱ ۳۲ ۸۰ +,and,or,xor,rot بله -
SHA-1 ۱۶۰ ۱۶۰ ۵۱۲ ۲۶۴ − ۱ ۳۲ ۸۰ +,and,or,xor,rot بله ۱۵۳
SHA-2 SHA-256/224 ۲۵۶/۲۲۴ ۲۵۶ ۵۱۲ ۲۶۴ − ۱ ۳۲ ۶۴ +,and,or,xor,shr,rot نه ۱۱۱
SHA-512/384 ۵۱۲/۳۸۴ ۵۱۲ ۱۰۲۴ ۲۱۲۸ − ۱ ۶۴ ۸۰ +,and,or,xor,shr,rot نه ۹۹

سیستم تست شده در جدول بالا سیستمی یک ریسه (thread) با پردازنده intel Core 2 1.83Ghz است تحت ویندوز Vista ایکس۸۶. لازم به ذکر است نوع ۵۱۲ بیتی بر روی سیستم‌های ۶۴ بیتی بسیار سریعتر از ۲۵۶ بیتی است.

کاربردها

SHA-1 امروزه در نرم‌افزارها و پروتکلهای متعددی کاربرد دارد. از میان آن‌ها می‌توان به TLS، SSL، PGP، SSH، S/MIME و آی‌پی‌سک اشاره کرد. در این کاربردها می‌توان از الگوریتم درهم‌سازی MD5 هم استفاده کرد و به همین صورت می‌توان MD4 را هم در این کاربردها جایگزین کرد که البته امنیت کمتری را تضمین خواهند نمود. از sha-1 هم چنین در سیستم‌های کنترل بازنگری استفاده می‌شود از قبیل گیت (Git) و مرکوریال و Monotone. در این موارد از sha-1 برای شناسایی و بازنگری تغییرات و تشخیص تخریب داده‌ای یا تغییر داده‌ای استفاده می‌شود. از این الگوریتم هم چنین در کنسول بازی Nintendo’s Wii در زمانی که سیستم بوت می‌شود جهت تأیید امضای شخص استفاده می‌شود. اما با وجود همهٔ این کاربردها، یک حملهٔ بالقوه و سازمان یافته در مقابل این الگوریتم ممکن است سبب شکسته شدن آن و گذر از سیستم یا سرویس امنیتی شود.

الگوریتم‌های درهم‌سازی SHA-1 و اس‌اچ‌ای-۲ الگوریتمهای ایمنی هستند که بنابر قانون در آمریکا بر روی نرم‌افزارهای مشخصی حتماً باید مورد استفاده قرار گیرند که می‌توانند همراه با الگوریتم‌های رمزنگاری دیگری هم استفاده شوند. در کابردهایی مثل محافظت داده‌های حساس طبقه‌بندی نشده. و البته sha-1 در بیشتر موارد استفادهٔ حکومتی در دولت آمریکا استفاده نمی‌شود و کنار گذاشته شده، به‌طوری‌که NIST گفته "آژانسهای فدرال آمریکا باید استفاده از SHA-1 را کنار بگذارند برای مصارف مختلف و در مصارفی که توانایی تحمل خطا مهم است و باید بالا باشد، از سال ۲۰۱۰ به بعد باید از نسخه ۲ استفاده کنند."

انگیزهٔ اولیه برای انتشار خانواده sha، امضای دیجیتال بود.

توابع درهم‌سازی sha بنیان و اساس SHACAL block ciphers هستند.

صحت داده

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

آنالیز و ارزیابی رمزنگاری

وقتی یک چکیده پیام با طول L داریم در اغلب موارد می‌توانیم رمز شدهٔ این پیام را با همین طول با پیچیدگی ۲ به توان L، مورد حملهٔ Brute Force قرار داد و آن را افشا نمود. به آن حمله Preimage Attack هم گفته می‌شود. که حتی می‌تواند غیر وابسته به طول پیام یا شرایط محاسباتی حمله باشد. مسئله دومی که در اینجا مطرح می‌شود پیدا کردن دو الگوریتم رمزنگاری متفاوت است که هر دو یک چکیده پیام را تولید کنند. در چنین مواقعی می گوییم یک برخورد به وجود آمده و زمان لازم برای کشف آن از مرتبهٔ ۲ به توان L/2 است. حملهٔ اخیر را با نام حملهٔ روز تولد یاد می‌کنند. با دلایل ذکر شده و یک سری دلایل محاسباتی طول کلید تابع در هم‌سازی را با نصف طول چکیده پیام رمز شده در رمزنگاری متقارن مقایسه می‌کنند تا نتایج بهتری بدست آورند. با این شرایط SHA-1 طولی بالغ بر ۸۰ خواهد داشت تا امنیت لازم را برای عملیات رمزنگاری تضمین کند.

البته دانشمندان رمزنگاری، برخوردهای دوتایی برای الگوریتم sha-0 و نیز sha-1 پیدا کردند. با وجود این برخورد در الگوریتم sha-1 تعداد کل حالات به جای آنکه از مرتبهٔ ۲ به توان ۸۰ باشد کادرهم‌سازی یافته و از مرتبهٔ همان عدد به توان ۴۰ خواهد شد که زمان بسیار کمتری را برای افشا نیازمند است.

در اصطلاح امنیت کاربردی، نگرانی ویژه در مورد این گونه حملات تازه بنیاد اینست که روزی ممکن است راه افشا را از این هم که هست راحتتر کنند. و البته استفاده از الگوریتمهای رمزنگاری قدرتمندتر قدری اطمینان بخش است. نرم‌افزارهایی که رمز عبور را با استفاده از درهم‌سازی ذخیره می‌کنند کمتر در معرض خطر collision هستند. برای این موارد می‌توان از حملات Preimage Attack استفاده کرد. بدین صورت که پس از دستیابی به رمز عبور، آن را با الگوریتمی که تبدیل کردند، به صورت معکوس، رمز واقعی و Plain Text بدست می‌آورند. در چنین مواقعی هم وجود یک الگوریتم درهم‌سازی قدرتمند احساس می‌شود.

به دلیل ویژگی‌های ساختاری الگوریتم‌های درهم‌سازی sha، کلیهٔ آن‌ها نسبت به حملات تداخلی آسیب پذیر هستند. این دسته از حملات به حمله‌کننده اجازه پیشرفت و نفوذ بیشتر را می‌دهند.

SHA-0

در سال ۱۹۹۸ توسط دو فرانسوی این الگوریتم مورد حمله تداخلی قرار گرفت که با پیچیدگی ۲ به توان ۶۱ که خیلی کمتر از حمله نرمال آن بود (یعنی ۲ به توان ۸۱) به موفقیت رسید. به‌طور مشابه در سال ۲۰۰۴ با پیدا کردن collision این میزان به ۲ به توان ۶۲ کادرهم‌سازی یافت و موفق شدند آن را بشکنند. در آگوست همان سال توسط تیمی دیگر این میزان به ۲ به توان ۵۱ کادرهم‌سازی یافت که با امکاناتی که در آن روز در اختیار داشتند فرایند حمله را ظرف مدت ۱۳ روز به اتمام رسانیدند. بعد از آن حملاتی با پیچیدگی ۲ به توان ۴۰ و ۳۹ هم اتفاق افتاد که به زمان کمتری جهت شکستن الگوریتم نیاز داشتند.

منابع

  1. RSA FAQ on Capstone
  2. Selvarani, R.; Aswatha, Kumar; T V Suresh, Kumar (2012). Proceedings of International Conference on Advances in Computing. Springer Science & Business Media. p. 551. ISBN 978-81-322-0740-5.
  3. Secure Hash Standard, Federal Information Processing Standards Publication FIPS PUB 180, National Institute of Standards and Technology, 11 May 1993
  4. "CWI, Google announce first collision for Industry Security Standard SHA-1". Retrieved 2017-02-23.
  5. "Announcing the first SHA1 collision". Google Online Security Blog. 2017-02-23.
  6. "SHAttered". Retrieved 2017-02-23.
  7. "Crypto++ 5.6.0 Benchmarks". Retrieved 2011-02-27.

استانداردها: SHA-1, SHA-2