PDA

View Full Version : سوال: دلیل استفاده از الگوریتم md5 با وجود منسوخ شدن



omidabedi
شنبه 03 فروردین 1392, 13:23 عصر
سلام
چرا با وجود اینکه این الگوریتم منسوخ شده باز هم cms های بزرگ ازش استفاده میکنن؟؟

hamid_kha
شنبه 03 فروردین 1392, 13:56 عصر
سلام

به خاطر اینه که اگر مثلا کدی را با الگوریتم MD5 رمزنگاری کنیم دیگه نمیشه رمزگشایی کرد

به همین خاطر

lordofphp
شنبه 03 فروردین 1392, 14:28 عصر
به نام خدا سلام منسوخ شده؟ این حرف کی گفته و به چه دلیلی گفته؟ البته امروزه از نظر شخصی من رمزنگاری ترکیبی بهتره چون مدت زمان شکستنش با کلید های 16 رقمی واقعا وحشتناکه اما ام دی فایو تا جایی که من اطلاع دارم نامتقارن و غیر قابل برگشت پذیر البته خیلیا امروزه با تشکیل دیتابیس های بزرگ تونستن تو کدشکستن پیش برن اما با قراردادن کلید کار فوق العاده سخت میکنید (تقریبا برای هکر هایی که سازمانی کار نمیکنن در حد غیر ممکنه(در حد گفتما!شایدم تونستن !البته به شرط ترکیبی بودن و استفاده از کلید طولانی مثلا 16 رقم) ام دی فایو هنوز برد خوبی برای مانوردادن داره و من فکرنکنم درنسخه های بعد سی ام اس ها ازش استفاده نکنن

eshpilen
شنبه 03 فروردین 1392, 14:41 عصر
بله منسوخ شده و خیلی وقت هم هست.
دلیلش هم اینکه درش ضعفهای جدی کشف شده و حتی عملا هم امکان سوء استفاده ازش اثبات/تست شده. مثلا گواهینامه های دیجیتال جعلی تولید کردن، چون در اونا از هش MD5 استفاده شده بود.

البته اینطور هم نیست که بگیم در هر کاربردی و به هر شکلی ازش استفاده کنید، یه حفرهء امنیتی در برنامتون باز میشه اندازه دروازه فوتبال (یا حتی گل کوچیک).
نه، اینکه حفره یا ضعفی در چه حدی ایجاد کنه بستگی به نوع کاربرد و پارامترهای دیگری هم داره.
الگوریتم های هش امنیتی خصوصیات مختلفی دارن که هرکدام از این خصوصیات در یکسری کاربردها اساسی هستند.
یکیش Hash collision resistance هست که همین MD5 سوراخ شده!
MD5 هم یکی یا بعضی از این خصوصیاتش سوراخ شده، ولی بقیش لزوما نه.

حالا دلیل اینکه شما نباید استفاده کنید اینه که، اولا متخصص رمزنگاری نیستید و نمیتونید خودتون بطور مطمئنی کاربردها و روشهایی رو که هنوز میشه بصورت امن از MD5 استفاده کرد شناساسی و طراحی و پیاده سازی کنید، دوما الگوریتمی که سوراخ شده منطقا احتمالش خیلی زیادتر میشه که در آیندهء نزدیک یا پشت پرده سوراخ تر هم بشه/شده باشه (بخصوص اگر همچنان عدهء زیادی ازش استفاده کنن)، سوما وقتی الگوریتم های جدیدتر امن (مثل SHA256) به این راحتی همه جا در اختیار هست چرا اصرار دارید از MD5 استفاده کنید؟، چهارما با این کار حداقلش اینه که هرکسی که یخورده سواد داشته باشه میتونه از نظر امنیتی به کار شما گیر بده و این حداقلش اتلاف وقت و انرژی شما و دیگران رو در پی داره.

اینکه خیلی ها و حتی برنامه های معروف هم همچنان استفاده میکنن دلیل نمیشه که. توی همین برنامه ها درپیتی و کم سوادی هم بارها دیده شده و میشه. بخصوص در بحث امنیت و بخصوص رمزنگاری که خودش یک شاخهء فوق تخصصیه و برنامه نویسان عادی بدون اینکه چند سال در این زمینه یادگیری داشته باشن، به درجه و صلاحیت بالا در این زمینه نمیرسن.

البته حتی منم در برنامم در جاهایی از MD5 (و همچنین SHA1) استفاده کردم. ولی بارها توی فکر بودم که همهء اونا رو با SHA256 جایگزین کنم. ضمنا بنده خیلی بیشتر از شما توی امنیت و رمزنگاری مطالعه داشتم و تخصص دارم به گمانم! اون کاربردهایی هم که استفاده کردم از همون مواردی بودن که گفتم هنوزم آنچنان خطری نداره. من اون موقع که اون کدها رو نوشتم عجله داشتم، وگرنه اگر الان کد جدی بنویسم دیگه از این الگوریتم های سوراخ شده و ضعیف استفاده نمیکنم.

ضمنا فقط MD5 نیست که منسوخ شده، SHA1 هم منسوخ بحساب میاد اما وضعش از MD5 یخورده بهتره.
سعی کنید از هیچکدام از اینا دیگه استفاده نکنید.

بابا یه مقالهء ویکیپدیا رو هم کامل بلد باشی بخونی اینا رو توش گفته.
شما از همه جا بی خبر میگید کی کجا؟!!
لابد منبعتون واسه این چیزا فروم آشیانه هست فقط!

eshpilen
شنبه 03 فروردین 1392, 15:26 عصر
سلام
چرا با وجود اینکه این الگوریتم منسوخ شده باز هم cms های بزرگ ازش استفاده میکنن؟؟
احتمالا یک دلیلش پرفونس بهتر باشه.
دلیل دیگر سازگاری و Backward compatibility.
اینها لزوما از الگوریتم های حرفه ای امنیتی اصلا استفاده نمیکنن. شاید بخاطر اینکه پرفورمنسشون اونوقت میاد پایین و کاربران ناراضی میشن.
مثلا میان هش رو 65000 بار تکرار کنن؟ (Key stretching).
ضمنا این برنامه ها گفتم که ملاک اصول امنیت نیستن.
همین الان توی خیلی هاشون مشکلات اصولی هست.
و مثلا همین ویبالتین الان من میتونم یک مورد سوء استفادهء قابل اکسپلویت رو براتون بگم که قبلا تست کردم روی همین سایت برنامه نویس. البته مورد خیلی جدی ای نیست، اما بنظر من بهرحال اشکاله و قابل سوء استفاده.
حتی اینکه Forgot password میزنی و میگه ایمیل مورد نظر موجود نمی باشد خودش از نظر اصول امنیت درست نیست یا حداقل جالب نیست اصلا. چون نشت اطلاعاتیه و اینطوری هکرها میتونن براحتی وجود و عدم وجود ایمیلهای مختلف در سایت رو تست کنن.
امنیت خیلی جزییات و ظرافت داره و پیاده سازی اصولی و حرفه ایش هم واقعا سخته و کار میبره (و بعضی وقتا با یوزرفرندلی بودن حداکثری هم تضاد پیدا میکنه).
سیستم رجیستر و لاگینی که بنده نوشتم فکر میکنم از نظر امنیت از سیستمهای رجیستر و لاگین همهء این برنامه ها حرفه ای تر و مجهزتر باشه. حتی امکانات و انعطافش هم بیشتره بنظرم.
منتها خب کار خیلی زیاد برده و سواد زیادی میخواد و پرفورمنس و منابع دیگر هم زیادتر مصرف میکنه مسلما.
انتظار نداشته باشید روی یک CMS و یا فروم همچین سیستم رجیستر و لاگینی بذارن.
اصلا اینقدر وقت و اولویت ندارن که روی فقط یک بخش از یک CMS یا فروم صرف کنن. اینطوری چند برابر طول میکشه تا تموم بشه!
الان جدولهای سیستم رجیستر و لاگین من از تعداد کل جدولهای وردپرس بیشتره!!

omidabedi
شنبه 03 فروردین 1392, 18:37 عصر
خیلی متشکر از توضیحات بسیار بسیار مفیدتون
بنظرتون cms دروپال از لحاظ امنیتی نسبت به بقیه ی cms ها برتری ندارد؟؟
از md5 استفاده کرده
برترین cms جهان شناخته شده چند سال متوالی
بقدری پیشرفت کرده که دیگه به خودش میگه framework دروپال.
من خودم دروپال کارم 5 سال هنوز هیچ کدام از سایت هایی که راه اندازی کردم مشکلی نداشتن از لحاظ امنیتی

eshpilen
شنبه 03 فروردین 1392, 19:25 عصر
بنظرتون cms دروپال از لحاظ امنیتی نسبت به بقیه ی cms ها برتری ندارد؟؟
خبر ندارم.


من خودم دروپال کارم 5 سال هنوز هیچ کدام از سایت هایی که راه اندازی کردم مشکلی نداشتن از لحاظ امنیتی
مشکل که پیش نمیاد همینطوری.
مشکل هش پسورد بعد از هک شدن/نفوذ صورت میگیره.
به این شکل که نفوذگر هش ها رو بدست میاره و بعد میخواد ببینه اصل پسوردها چی بوده.

ضمنا بعضی چیزها هنوز موردی از حمله و نفوذ درشون دیده نشده دلیل نمیشه نشدنی باشه و ضعیف نباشن. اغلب دلایل دیگری داره.
بعضی حمله ها نیاز به هکرها/کرکرهای واقعا باسواد و توانمند داره. اینا تعدادشون کمه و هر جایی و واسه هرچیزی کار نمیکنن. لزوما هم نتایج کارشون پابلیک نمیشه، و حتی لزوما شناخته شده نیستن (مثلا ممکنه برای مافیا یا سازمانهای خاصی یا حتی شخصی و بطور ناشناس کار کنن).
بعضی حمله ها از سخت افزارهای سفارشی استفاده میکنن.
اون اصول و روشهایی که ما میگیم درحدی هست برابر یا حداقل تاحد قابل توجهی نزدیک به استانداردهای حکومتی و سازمانهای اطلاعاتی و نظامی.
کرکرهای معمولی فکر میکنم اونقدری Target های آسون تر هنوزم گیرشون میاد که خودشون رو با پرداختن به سیستمهای پیچیده تر و پرهزینه تر به دردسر نیاندازن. همون md5 هم اگر مقداری با روشهای اصولی ترکیب شده باشه خب کرک کردنش از حالت سادهء اون مسلما میتونه خیلی دشوارتر/پرهزینه تر/کندتر بشه.

eshpilen
شنبه 03 فروردین 1392, 22:25 عصر
اینا رو فقط منم نمیگما!

برید توی security.stackexchange.com اسم از md5 بیارید ببینید چطور در ظرف مدت کوتاهی تبدیل به گوشت کوبیده میشید :لبخند:

البته فکر کنم مشکل همون زبان انگلیسی باشه.
زبان خودتون رو تقویت کنید.
نیازی نیست حتما کلاس زبان برید. خودآموز هم میشه. لغت زیاد حفظ کنید. متن ها تخصصی خودتون رو بخونید و ترجمه کنید. ویکیپدیا، همین سایتها، هر منبعی خلاصه.

بدون زبان انگلیسی شما هیچوقت یه برنامه نویس واقعی نمیشید.

lordofphp
شنبه 03 فروردین 1392, 22:48 عصر
سلام
خوبین آقای eshpilen (http://barnamenevis.org/member.php?148005-eshpilen) ؟
جدا بگم آقا eshpilen (http://barnamenevis.org/member.php?148005-eshpilen) تو بحث امنیت خیلی خوب پیش رفتین ! عالیه ! آیدی یاهو میدین؟
شخصا روی sha256 تحقیق و مدل دیگش انجام دادم و خوبه که به سمتش رفت
درمورد md5 که گفتید من نظرتون قبول دارم برای همین گفتم ترکیبی و با کلید اون چند رقمی!(حالا خودمم یواش یواش از sha استفاده میکنم:لبخند:)
آقای omidabedi (http://barnamenevis.org/member.php?282659-omidabedi) من پیشنهاد میکنم فصل 8 کتاب شبکه های کامپیوتری تننبام بخونید کتاب فوق العاده سطح بالاییه جامع توضیح داده شما بخونید خیلی از مسائل براتون میسر میشه !
درپناه وراه ایزد منان پیروز و پایدار باشید

eshpilen
شنبه 03 فروردین 1392, 23:05 عصر
سلام
خوبین آقای eshpilen (http://barnamenevis.org/member.php?148005-eshpilen) ؟
جدا بگم آقا eshpilen (http://barnamenevis.org/member.php?148005-eshpilen) تو بحث امنیت خیلی خوب پیش رفتین ! عالیه ! آیدی یاهو میدین؟

آیدی یاهوم: hamidreza_mz
ولی سال به سال هم به زور توی مسنجر آنلاین میشم.
یا ایمیل بده یا اگر خواستی آنلاین صحبت کنیم قبلش از طریق PM ای چیزی هماهنگی کن.
تاجاییکه تجربه دارم و فکر میکنم، چت کردن معمولا بیشتر وقت تلف کردنه :لبخند:

lordofphp
شنبه 03 فروردین 1392, 23:12 عصر
به نام خدا
سلام چت کردن اگه اصولی باشه و برروی منطق باشه اتفاقا خیلی خوبه!
نمیخوام شعار بدما قبول دارم کار سختیه ولی به قول یکی از دوستان که میگفت هرچقدر سختی بیشتر باشه موفقیت بهتره نتیجه مثبتی داره !
چت دو تا برنامه نویس (البته برای من زوده) باید بخش عمدش علمیه باور کنید
حتی احوال پرسیشون به نظرم یه نفس تازه بهشون میده و...
من آنلاینم منتظرتون هستم:D
درکل مرسی
منتظر دیدار(البته اگه مزاحم نمیشم )

eshpilen
یک شنبه 04 فروردین 1392, 01:29 صبح
بنده واسه شما سوال کردم در http://security.stackexchange.com.

دربارهء این پرسیدم که اگر md5 شکسته شده و دیگه نباید ازش استفاده کرد، پس چرا هنوز خیلی نرم افزارهای معروف ازش استفاده میکنن.

ترجمهء یکی از جوابهای خوبی که تا این لحظه داده شده (http://security.stackexchange.com/a/33112/8729) رو براتون میذارم:

« بیشتر کاربردهای باقیمانده MD5 بخاطر توسعه دهندگانی است که چیز بهتری بلد نیستند. اگر شما زیاد خوانندهء این سایت باشید، به زودی یاد خواهید گرفت که تابع هش پیشفرض برای استفاده، SHA-256 است؛ آن چیزی است که رمزنگارها و مراجع استانداردسازی توصیه میکنند. اما شما همچنین یک جریان ظاهرا بی پایان از افرادی را مشاهده خواهید کرد که میخواهند از MD5 استفاده کنند یا MD5 را پیشنهاد میکنند، یا شروع به پرسیدن درمورد MD5 از خودشان میکنند و درحال جستجوی راهنمایی هستند. آن بدین معناست که:

- یک سنت سنگین استفادهء MD5 وجود دارد.
- اطلاعات درمورد اینکه SHA-256 چقدر از MD5 بهتر است، بطور گسترده وجود ندارد.
- بیشتر توسعه دهندگان «توسعه میدهند» و دربارهء امنیت مهارت ندارند (و به ندرت به آن خیلی اهمیت میدهند).

روش توسعهء معمولی (منظورم اینست که بیشتر توسعه دهندگان به این روش کار میکنند) این است:

1- در گوگل به دنبال مسئلهء جاری جستجو کن.
2- نخستین راه حلی را که بنظر مطلوب میاید و در وبلاگی یا یک سایت پرسش و پاسخ پیدا میشود کپی و پیست کن.
3- کامپایل و اجرا.
4- بنظر میرسد که آن کار میکند، درمورد آن در وبلاگ بنویس (اختیاری).
5- به دنبال مسئلهء بعدی برو.

آن رازی نیست که 95% (حداقل) از وبسایت ها و اپلیکیشن های مرتبط به آن شکل توسعه می یابند. اما وب پر از MD5 است؛ بنابراین، بیشتر اپلیکیشن ها همچنین پر از MD5 خواهند بود -- و، به علت گزینهء شماره 4، وب حتی بیشتر هم از MD5 پر خواهد شد.

توجه کنید که در بیشتر موارد، اضطراری برای تعویض کردن MD5 وجود ندارد. MD5 در ارتباط با collisions ها کاملا شکسته شده است، اما آن هنوز (تقریبا) برای preimage ها (م: یکی از خصیصه های مطرح درمورد توابع هش امنیتی) همانقدر جدید است؛ همچنین، بنظر میرسد که آن هنوز برای استفاده در HMAC و مشتقات (شامل PBKDF2) بدون مشکل است. Collision ها در بسیاری موارد مسئله ای نیستند (و این شامل هش کردن پسورد میشود؛ مشکل MD5 برای هش کردن پسورد Collision ها نیست، بلکه سرعت است). پس درحالیکه MD5 کاملا از دوران اوج خود گذشته است و نباید در کاربردهای جدید استفاده شود، تعداد زیادی از کاربردهای MD5 هنوز بصورت معقولی مستحکم هستند و مجوز آپدیت اضطراری را بدست نمیدهند. وحشت نکنید. »

omidabedi
یک شنبه 04 فروردین 1392, 14:28 عصر
خیلی تشکر میکنم ازتون اقای eshpilen
دروپال چیزی نیست که افراد نا وارد و معمولی نوشته باشنش . تیم امنیتی که روی هسته و افزونه هاش کار میکنه خیلی فعال و بروز هستند چون هر ساله از لحاظ امنیتی توی رده بندی cms ها مقام اول رو میاره.
هنوز تو هیچ انجمنی (چه ایرانی چه غیر ایرانی) مشاهده نکردم که بگن فلان سایت دروپالی بدلیل ضعف امنیتی هسته یا افزونه ها هک شده هر چی بوده بدلیل امن نبودن سرور بوده.
دروپال با اینکه خیلی بعد از جوملا و ورد پرس اومده فکر کنم 2002 خیلی وقته ورژن 8 خودش رو منتشر کرده این نشان دهنده ی فعالیت تیم پشتیبانیش هست پس لابد دلیل دیگه ای داره که از این الگوریتم استفاده میکنند
یکی از تجربه های خودمم در این زمینه بگم که
یک بار پسورد ادمین یکی از این سایت های دروپالی رو فراموش کردم و بدنبال ان وارد دیتابیس شدم و یک یوزر جدید با سطح دسترسی ادمین ساختم و پسورد رو با MD5 هش کردم و بصورت ناباورانه کار کرد این یوزر
برای من سوال شده که چرا حتی هیچ تغییراتی توی php روی پسورد صورت نگرفته!!!!!
الان هم قصد دارم تو خود سایت drupal این سوال رو مطرح کنم
حتما نتیجه رو اطلاع میدم.
با تشکر

eshpilen
یک شنبه 04 فروردین 1392, 15:58 عصر
یک بار پسورد ادمین یکی از این سایت های دروپالی رو فراموش کردم و بدنبال ان وارد دیتابیس شدم و یک یوزر جدید با سطح دسترسی ادمین ساختم و پسورد رو با MD5 هش کردم و بصورت ناباورانه کار کرد این یوزر
برای من سوال شده که چرا حتی هیچ تغییراتی توی php روی پسورد صورت نگرفته!!!!!
الان هم قصد دارم تو خود سایت drupal این سوال رو مطرح کنم
حتما نتیجه رو اطلاع میدم.
با تشکر
خب تاجاییکه من دیدم بعضی فریمورک ها/سیستمهای هش اینطوری هستن که چندین نوع هش رو میپذیرن.
این بنظر میشه همون Backward compatibility.
انواع هش ها از روی علامتهایی که در ابتداشون دارن یا خصوصیات دیگر، از هم تشخیص داده میشن.

البته اینکه هکر دسترسی نوشتنی به دیتابیس داشته باشه بنظرم بعدش دیگه زیاد مهم نیست که هش پسورد چطوری باشه.
هدف عمده از هش کردن پسورد همونه که از هش های موجود کاربران نتونن براحتی به اصل پسوردهاشون پی ببرن. بخاطر همین برنامه نباید از MD5 ساده استفاده کنه (باید سالت و key stretching داشته باشه)؛ برنامه های جدید هم که نباید از MD5 استفاده کنن از نظر اصولش (ولی با اون روشهایی که گفتم اگر ترکیب بشه اونقدرها هم ناامن نیست).

AbiriAmir
یک شنبه 04 فروردین 1392, 17:01 عصر
با سلام
اولا عذر خواهی میکنم در حضور افرادی مثل آقا حمیدرضا که مطالعشون بالاست من نظر میدم
اما لازم دونستم یک نکته رو بگم که قبلا هم اشاره شده.
ببینید عزیز مثلا شما CMS دروپال رو مثال زدید
الان سایت های بزرگی با این CMS ساخته شدن که تعداد کاربراشون قابل توجه هست
حالا فرض کنید CMS دروپال بیاد در نسخه جدید بجای استفاده از MD5 مثلا از SHA-256 استفاده کنه.
از اونجایی که الگوریتم MD5 یک طرفه هست و هش ها قابل برگشت نیستن سیستم نمیتونه دیتابیس قبلی (مربوط به ورژن های قبل) رو آپدیت کنه.
خوب اونوقت تکلیف کاربران فعلی سایت ها چی میشه که نمیتونن لوگین کنن؟
واسه همین هست که برخی تغییرات توی سیستم های گسترده و عمومی انجامشون بسیار سخت هست.
( همون Backward compatibility که آقا حمیدرضا فرمودن)
اما چیزی که واضح هست استفاده از الگوریتم های جدید در نرم افزارهای جدید توصیه میشه.
در ضمن ببینید اینجوری هم نیست که بگیم هر سایتی از MD5 استفاده کرده دیگه مشکل امنیتی داره.
مشکل زمانی بوجود میاد که هکر محترم (!) به دیتابیس دسترسی پیدا کرده باشه و پسورد های هش شده لو رفته باشه و اونوقته که با استفاده از حفره های امنیتی الگوریتم های Hashing هکر میتونه از روی هش پسورد، پسورد اصلی رو پیدا کنه؛ که در این صورت (زمانی که هکر به دیتابیس دسترسی پیدا کرده باشه) عملا سایت شما هک شده و بیشتر بحث Privacy کاربران هست که مطرحه که پسوردشون لو نره.
واسه همین هم استفاده از الگوریتم MD5 یا حتی خیلی خیلی واضح (بلکه ضایع) تر از اون ذخیره پسورد بدون هش کردن در دیتابیس تا زمانی که هکر به دیتابیس شما دسترسی پیدا نکرده مشکل امنیتی واسه سایت شما نداره.زمانی هم که به دیتابیس شما دسترسی پیدا کرد که در 90% مواقع دسترسی های دیگر از جمله Insert و Update رو هم داره که خوب در اون صورت دیگه لو رفتن پسورد ها واسه سایت شما چندان مهم نیست (چرا که هکر دسترسی هایی فراتر داره). بلکه بحث Privacy و سوء استفاده های احتمالی از پسورد های کاربران مطرح هست.

omidabedi
یک شنبه 04 فروردین 1392, 19:52 عصر
چرا دروپال نمیاد پسورد های هش شده ی MD5 دیتابیس رو در ورژن های جدیدش با الگوریتم های جدید تر رمزنگاری کنه که کاملا امن بشه؟؟
بزارید بهتر بگم
مثلا الان من میخوام دیتابیس رو از ورژن 6.20 دروپال به 7.14 اکسپورت کنم.برای این کار دروپال ماژول داره یعنی نیاز نیست به صورت مستقیم از دیتابیس اکسپورت بگیریم و تو ورژن جدید ایمپورت کنیم.
این ماژول بیاد پسوردهارو شناسایی کنه و اونارو که md5 هستند یکبار دیگر به SHA512 هش کنه.(نمیگم برشون گردونه هااااا نهه همون 32 کارکتر رو دوباره هش کنه)
اینجوری قابل استفاده میشه دروپال
همینجور که میشه دیتابیس جوملا و وردپرس حتی vbulletn و سیستم های مطرح دیگر رو تبدیل کنه فکر نکنم این کاره سختی براش باشه.
تنها دلیلی که منطقیه همون Backward compatibility هست.
تو انجمن دروپال جوابی که گرفتم همین بود.
یک سوال دیگر از اساتید
HMAC-MD5
نظرتون در مورد این الگوریتم چیه ؟؟ ایا نسل جدید MD5 هست ؟

eshpilen
یک شنبه 04 فروردین 1392, 20:07 عصر
خیر HMAC-MD5 نوع دیگر/جدیدی از MD5 نیست.
HMAC خودش یک نوع از الگوریتم ها در علم رمزنگاری است برای کاربردهای خاصی.
درواقع MAC ها رو داریم. HMAC به MAC ای گفته میشه که با استفاده از الگوریتم های هش ساخته میشه.
HMAC-MD5 هم HMAC ای است که با استفاده از MD5 ساخته میشه.
MD5 در اینجا فرض کنید مثلا مثل یک موتور/Engine هست برای یک اتومبیل.
بعنوان موتور میتونن انواع مختلفی از موتور با مارکها و مدلهای مختلف و تعداد سیلندر و حجم و قدرت مختلف رو بذارن.
یعنی ما HMAC-SHA1 هم داریم، HMAC-SHA256 هم داریم و غیره.
این HMAC ها مستقیما ربطی به کاربرد هش پسورد ندارن، ولی بعضیا برای هش پسورد هم استفاده میکنن؛ اما بهرحال همینطوریش بقدر کافی قوی نیست برای چنین کاربردی. یا باید روش کار کرد و اون چیزهای دیگری رو که لازمه بهش اضافه کرد، یا اینکه از الگوریتم های مخصوص هش استفاده کنیم.

FingerPrint
دوشنبه 20 خرداد 1392, 00:02 صبح
بحث خیلی خوبی شد!
درحال حاضر برترین الگوریتم های رمزنگاری (که در قالب هیچ پلتفرمی نیستند) این دو هستند :

بیضوی (کارت شارژهای ایرانسل از این نوع هستند)
مکعب (کیوب)

اما بنده دارم با پلتفرم دات نت کار می کنم ، و یکبار هم با SHA512 کار کردم اما سئوال مهم :

در حال حاضر بهترین الگوریتم رمزنگاری (قابل بازگشت - متقارن) در دات نت (سی شارپ) چیه؟

پارامترهای مورد نظر :
سرعت ، سبکی ، محرمانگی (منظور فاش نشدن دیکشنری و الگوریتمه)

eshpilen
دوشنبه 20 خرداد 1392, 00:23 صبح
درحال حاضر برترین الگوریتم های رمزنگاری (که در قالب هیچ پلتفرمی نیستند) این دو هستند :در قالب هیچ پلتفرمی نیستن یعنی چی؟


بیضوی (کارت شارژهای ایرانسل از این نوع هستند)
مکعب (کیوب)
بیضوی؟ مکعب؟
نشنیده بودم تاحالا.
میشه بیشتر توضیح بدید؟
رفرنسی چیزی.
حداقل کیورد واسه سرچ بدید.


منظور فاش نشدن دیکشنری و الگوریتمهمنظورت از فاش نشدن دیکشنری و الگوریتم دقیقا چیه؟

FingerPrint
دوشنبه 20 خرداد 1392, 18:22 عصر
ینی حمیدرضا عزیز یلحظه زدی توو خط ترور سئوالی ها!!!:لبخندساده:

منظورم از اینکه عرض کردم تحت هیچ پلتفرمی نیست این بود که مانند MD5 و SHA و DES در محیطی مانند دات نت (اطلاعاتی که در این زمینه دارم اینه که در هیچ چارچوب و کتابخانه ای!) پیاده سازی نشده.

در اینجا درباره بیضوی که قدرتمندترین مدل رمزنگاری است ، میتونید اطلاعات هرچند کم بدست بیارید :
https://en.wikipedia.org/wiki/Elliptic_curve_cryptography

منظورم از فاش نشدن این بود :
الآن ام دی فایو یجورایی لو رفته ، حتی اس اچ ای هم همینطور (البته نه کاملا") ، چیزی که به ما میگن اینه که تا حدی رمزگشایی کردیم ، اما از کجا معلوم این حرف درست باشه

میرسیم به سئوال خودم :

در حال حاضر بهترین الگوریتم رمزنگاری (قابل بازگشت - متقارن) در دات نت (سی شارپ) چیه؟

پارامترهای مورد نظر :
سرعت ، سبکی ، محرمانگی

eshpilen
دوشنبه 20 خرداد 1392, 22:19 عصر
منظورم از اینکه عرض کردم تحت هیچ پلتفرمی نیست این بود که مانند MD5 و SHA و DES در محیطی مانند دات نت (اطلاعاتی که در این زمینه دارم اینه که در هیچ چارچوب و کتابخانه ای!) پیاده سازی نشده.
تاجاییکه یادمه دات نت Elliptic curve داشت.
خودم رفرنس دات نت رو چند سال پیش کامل خوندم دیده بودم.

البته Elliptic curve فکر میکنم روش انحصار باشه (Patent) و احتمالا به همین خاطر جاهای دیگه پیدا نمیشه.
احتمالا میکروسافت پول داده و مجوز استفاده ازش رو گرفته.


در اینجا درباره بیضوی که قدرتمندترین مدل رمزنگاری است ، میتونید اطلاعات هرچند کم بدست بیاریدکی گفته قدرتمندترین؟
دلیل/سند.
تاجاییکه بنده میدونم قدرتمندترین در این زمینه چندان معنا نمیده.
Elliptic curve از RSA بهتره چون طول کلید کوتاهتری نیاز داره برای امنیت یکسان، و یک مزیت دیگرش هم مقاومت دربرابر رایانه کوانتمی است. البته هنوز رایانه های کوانتمی که بتونن RSA رو بشکنن درحد خیال هستن و فعلا میشه از همون RSA هم استفاده کرد، و معلوم نیست چه زمانی رایانه های کوانتمی خفن به واقعیت مبدل بشن (حتی بعضی متخصصان میگن معلوم نیست اصلا شدنی بشه).
البته از طرف دیگر یک مزیت RSA بر Elliptic curve اینه که مدت و حجم زیادی روش تحقیقات و مطالعه و تست شده و امتحان خودش رو پس داده و احتمال وجود ضعف جدی درش کمتره تا الگوریتم های جدیدتری مثل Elliptic curve.

قدرتمندترین در این باب زیاد معنی نمیده.
تمام این الگوریتم های نامتقارن از نظر کلی در یک خانواده هستن و هیچکدام اثبات ریاضی قطعی ندارن. یعنی ثابت نشده که قابل شکست نیستن. یعنی در آینده ممکنه ریاضیات پیشرفت کنه و راه حلی برای شکست اینها پیدا بشه.

البته همینطور هست داستان الگوریتم های متقارنی مثل AES. اونم اثبات ریاضی نداره.
ولی میتونم بگم AES حتی میتونه از Elliptic curve هم قوی تر فرض بشه. هرچند از نظر خانواده متقارن است و مقایسه در این باب به یک سطح کلی تر که الگوریتم های برگشت پذیر باشن برمیگرده.

یکی از معدود رمزگذاری هایی که اثبات شده امنه، OTP (http://en.wikipedia.org/wiki/One-time_pad) است.
ولی این الگوریتم بخاطر نیاز به کلیدهایی به اندازهء خود دیتا، در عمل خیلی کمتر استفاده میشه. ضمنا هیچ کلیدی هم نباید بیش از یک بار استفاده بشه. یعنی برای هر بار رمزگذاری باید یک کلید جدید تولید بشه.
عملا امنیت الگوریتم های دیگر با اینکه اثبات ندارن، برای بیشتر کاربردها کافی فرض میشه، بخصوص که اغلب سیستمها نقاط ضعف/محدودیت های دیگری هم دارن که باعث میشه امنیت اونا نتونه هیچوقت به حداکثر برسه.


الآن ام دی فایو یجورایی لو رفته ، حتی اس اچ ای هم همینطور (البته نه کاملا")،md5 و sha1 دیگه نباید استفاده بشن. مدتهاست دیگه از طرف سازمانهای استاندارد رد شدن.
ولی مثلا sha256 مشکلی نداره.


چیزی که به ما میگن اینه که تا حدی رمزگشایی کردیم ، اما از کجا معلوم این حرف درست باشهmd5 که خیلی سوراخ شده، ولی هنوزم اگر بلد باشی در بعضی کاربردها/به روشهای خاصی میشه ازش استفاده کرد.
از نظر اطمینان هم خب امنیت تقریبا تمام الگوریتمهای استاندارد بر این پایه هست که این همه افراد و متخصصان بعد از سالها نتونستن درشون ضعف جدی پیدا کنن. ولی این احتمال هرچند بصورت ضعیف وجود داره که مثلا سازمانهای امنیتی با بودجه و متخصصانی که به این امور اختصاص دادن تونسته باشن ضعفهایی کشف کنن که دیگران متوجه نشدن. اما بقول متخصصان امنیت میگن که اگر این سازمانها در این الگوریتم ها ضعفهای جدی سراغ داشتن نمیامدن اینها رو بعنوان استاندارد و قابل استفاده برای مردم خودشون منجمله شرکتهای تجاری، سازمانهای دولتی و نظامی و غیره معرفی کنن (البته در سطح امنیت حداکثری ممکنه از الگوریتم های اختصاصی استفاده بشه)، چون اونوقت دشمنان هم به احتمال زیاد این ضعفها رو میدونستن و میتونستن به این شکل به اطلاعات و ارتباطات این کشورها رخنه کنن که خطر و خسارت مالی و امنیتی که میتونستن با این ببار بیارن خودش کم چیزی نیست.


در حال حاضر بهترین الگوریتم رمزنگاری (قابل بازگشت - متقارن) در دات نت (سی شارپ) چیه؟بدون شک AES الگوریتم اول دنیاست.
سالهاست امتحان خودش رو پس داده.
سرعتش هم خوبه.

البته باید توجه داشت که این الگوریتم ها خیلی وقتها به تنهایی کافی نیستن.
بطور مثال AES خودش به تنهایی نمیتونه همهء دستکاری ها (ممکنه کورکورانه باشه) رو فاش کنه، و اگر محافظت دربرابر دستکاری نیاز هست باید از الگوریتم های MAC هم استفاده کرد.

در رمزنگاری، خانواده های الگوریتم مختلفی وجود دارن برای کاربردهای مختلفی. هرکدام یک قابلیت هایی دارن و یک قابلیت هایی ندارن که اصلا برای اون قابلیت ها طراحی نشدن. در یک سیستم اغلب نیاز هست که چند الگوریتم از چند خانواده، به شکل صحیح با هم ترکیب بشن تا یک سیستم بی نقص بدست بیاد.

sh.n.n786
دوشنبه 20 خرداد 1392, 23:56 عصر
دورد و ...
بله متاسفانه حق با eshpilen :لبخند: (http://barnamenevis.org/member.php?148005-eshpilen)

این سایتو یه نگاهی بندازید
http://thehackernews.com/2013/05/drupal-resets-1-million-passwords-after.html
http://thehackernews.com/2013/05/cracking-16-character-strong-passwords.html

FingerPrint
سه شنبه 21 خرداد 1392, 07:11 صبح
حمدرضا عزیز دمت درد نکنه عزیز!
MD5 که سهله تو منم سوراخ کردی داداشم !
ببینم AES که نوشتی گفتم شاید اشتباه نوشتی ، منظورت TripleDES ؟
بی زحمت یه لینک آموزش خوب برام میذاری

eshpilen
سه شنبه 21 خرداد 1392, 07:42 صبح
ببینم AES که نوشتی گفتم شاید اشتباه نوشتی ، منظورت TripleDES ؟

TripleDES هم استاندارد نیست.

AES اینه: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

یکی از پر استفاده ترین الگوریتم های امروزی است و در بیشتر کتابخانه های امنیتی/رمزنگاری پیدا میشه.

البته در خیلی جاها از اسم Rijndael هم برای اشاره به این الگوریتم استفاده میشه.
AES و Rijndael یکی هستن (البته یک اختلافهای جزیی ممکنه باشه ولی مهم نیست).
AES همون Rijndael است که توسط NIST استاندارد شده.


بی زحمت یه لینک آموزش خوب برام میذاریآموزش چی؟

FingerPrint
سه شنبه 21 خرداد 1392, 16:20 عصر
از AES و نحوه کار و ...

eshpilen
سه شنبه 21 خرداد 1392, 21:31 عصر
نحوهء کارش که توی مقالهء ویکیپدیا هم هست.
منم از همونجا خوندم.
اینم آموزش استفاده در PHP است: http://www.hamidreza-mz.tk/?p=566