PDA

View Full Version : سوالی در مورد امنیت ذخیره پسورد ها



barnamenevis2016
چهارشنبه 27 خرداد 1394, 19:26 عصر
سلام....من می خواستم متدی رو برای ذخیره پسورد ها انتخاب کنم.....توی php تابع های ها مختلفی هست...من توی گوگل جست و جو کردم...یک خورده گیج شدم و نمی دونم کدوم رو انتخاب کنم...
به نظر می رسه crypt یکی بهترین و اطمینان ترین تابع هاست....ولی من که تستش کردم...سرعتش پایینه..که منو اگر از نگرانی اینکه ممکنه از بابت سرعت و سنگینی پردازش مشکلی پیش بیاد در بیارید من از از این تابع استفاده می کنم .نظرتون در مورد password_hash و سرعتش چیه؟
بعد این تابع کلا برای مقابله با هکرهاست..درست.من یک سوال دارم.... اینکه خوب این اقدام و استفاده از crypt برای مقابله با هکر در زمانیه که هکر بتونه به پایگاه داده متصل بشه؟؟چون اگر هکر به پایگاه داده متصل نشه....دیگه نمی نتونه پسورد های کاربران رو از اونجا بخونه و دیگه نیازی به استفاده از crypt و هش کردن هم نیست...و حالا سوالم اینه که چطور هکر می تونه به پایگاه داده متصل بشه و پسورد ها رو بتونه بخونه ولی امکان دست بردن در پایگاه داده رو نداشته باشه؟؟اگر این امکان رو هم داشته باشه که دست ببره توی پایگاه داده دیگه چه نیازی به پسورد های کاربر داره...اگر تغییر خواست بده..همون پایگاه داده رو رو که بدست داره تغییر می ده اطلاعاتشو به دلخواه...و یا می تونه اطلاعات مورد نیازشو از پایگاه داده بگیره....دیگه با این توضیح در بیشتر موارد دیگه نیاز چندانی به پسورد کاربرا نداره که حالا بخواییم اونا را هش کنیم یا نه.:متفکر: تازه می تونه اگر هم پسورد ها هش بودن..یک ایمیل دلخواه بده و بعد درخواست پسورد بخواد به این حساب که پسورد رو فراموش کرده....
و بعد دسرسی به پایگاه داده امکان پذیره و اونوقت پیدا کردن محتوای کدهای php خیر؟؟
البته فکر می کنم...یکی کارایی های هش این باشه که می تونیم پسورد رو هش شده به عنوان کوکی در کامپیوتر کاربر ذخیره کنیم...و امنیت از این حیث پابر جا کنیم که هکر به کوکی های هم اگر دسرسی داشت..پسورد رو نتونه بخونه :متفکر:...
خلاصه ممنون می شم اگر منو یک جورایی در این زمینه روشن کنید...و فلسفه استفاده از هش رو دقیق بگید...و هش کردن و نکردن چه قد می تونه در امنیت موثر باشه....

fatima-php
پنج شنبه 28 خرداد 1394, 01:09 صبح
بهتره موقع ذخیره کردن رمز و چک کردنش از الگوریتمهای کند استفاده کنید. این کار باعث میشه عملیات Bruteforce به شدت کند بشه و دیگه بصرفه نباشه. کاربر هم که میخواد رمزش رو چک کنه، حالا بجای چند هزارم ثانیه که سرعت MD5 هست، حتی در بدترین حالت بخواد یکی دو ثانیه معطل هش شدن رمزش بشه تا با دیتابیس چک بشه هم موردی نیست چون اینقدر اینترنت ایران لهه که میگذاره به حساب سرعت اینترنت و این یکی دو ثانیه توی تایم لود شدن صفحات گمه.

us1234
پنج شنبه 28 خرداد 1394, 09:36 صبح
برای مقابله با هکر در زمانیه که هکر بتونه به پایگاه داده متصل بشه؟؟چون اگر هکر به پایگاه داده متصل نشه....دیگه نمی نتونه پسورد های کاربران رو از اونجا بخونه و دیگه نیازی به استفاده از crypt و هش کردن هم نیست...و حالا سوالم اینه که چطور هکر می تونه به پایگاه داده متصل بشه و پسورد ها رو بتونه بخونه ولی امکان دست بردن در پایگاه داده رو نداشته باشه؟؟اگر این امکان رو هم داشته باشه که دست ببره توی پایگاه داده دیگه چه نیازی به پسورد های کاربر داره...اگر تغییر خواست بده..همون پایگاه داده رو رو که بدست داره تغییر می ده اطلاعاتشو به دلخواه...و یا می تونه اطلاعات مورد نیازشو از پایگاه داده بگیره....دیگه با این توضیح در بیشتر موارد دیگه نیاز چندانی به پسورد کاربرا نداره که حالا بخواییم اونا را هش کنیم یا نه.:متفکر: تازه می تونه اگر هم پسورد ها هش بودن..یک ایمیل دلخواه بده و بعد درخواست پسورد بخواد به این حساب که پسورد رو فراموش کرده....
و بعد دسرسی به پایگاه داده امکان پذیره و اونوقت پیدا کردن محتوای کدهای php خیر؟؟
البته فکر می کنم...یکی کارایی های هش این باشه که می تونیم پسورد رو هش شده به عنوان کوکی در کامپیوتر کاربر ذخیره کنیم...و امنیت از این حیث پابر جا کنیم که هکر به کوکی های هم اگر دسرسی داشت..پسورد رو نتونه بخونه :متفکر:...
خلاصه ممنون می شم اگر منو یک جورایی در این زمینه روشن کنید...و فلسفه استفاده از هش رو دقیق بگید...و هش کردن و نکردن چه قد می تونه در امنیت موثر باشه....

شما فکر کنید هکر به هیچ وجه دسترسی به دیتابیس نداره ولی مدیر سایت (یا هاست ) هم نخواهد داشت ؟

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

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

بهتر است همیشه از الگوریتم های هش قوی مثل sha1 استفاده کنید .

البته هش کردن پسورد به تنهایی هم چاره ساز نیست و بهتره یک کد ثابت ( مثلا زمان ثبت نام کاربر یا ایمیل کاربر ) را هم به اول یا آخر ( یا با الگوریتم خاص دیگری ) با پسورد کاربر ادغام کنید و کل این رشته را هش کنید .

stackprogramer
پنج شنبه 28 خرداد 1394, 11:04 صبح
سلام....من می خواستم متدی رو برای ذخیره پسورد ها انتخاب کنم.....توی php تابع های ها مختلفی هست...من توی گوگل جست و جو کردم...یک خورده گیج شدم و نمی دونم کدوم رو انتخاب کنم...
به نظر می رسه crypt یکی بهترین و اطمینان ترین تابع هاست....ولی من که تستش کردم...سرعتش پایینه..که منو اگر از نگرانی اینکه ممکنه از بابت سرعت و سنگینی پردازش مشکلی پیش بیاد در بیارید من از از این تابع استفاده می کنم .نظرتون در مورد password_hash و سرعتش چیه؟
بعد این تابع کلا برای مقابله با هکرهاست..درست.من یک سوال دارم.... اینکه خوب این اقدام و استفاده از crypt برای مقابله با هکر در زمانیه که هکر بتونه به پایگاه داده متصل بشه؟؟چون اگر هکر به پایگاه داده متصل نشه....دیگه نمی نتونه پسورد های کاربران رو از اونجا بخونه و دیگه نیازی به استفاده از crypt و هش کردن هم نیست...و حالا سوالم اینه که چطور هکر می تونه به پایگاه داده متصل بشه و پسورد ها رو بتونه بخونه ولی امکان دست بردن در پایگاه داده رو نداشته باشه؟؟اگر این امکان رو هم داشته باشه که دست ببره توی پایگاه داده دیگه چه نیازی به پسورد های کاربر داره...اگر تغییر خواست بده..همون پایگاه داده رو رو که بدست داره تغییر می ده اطلاعاتشو به دلخواه...و یا می تونه اطلاعات مورد نیازشو از پایگاه داده بگیره....دیگه با این توضیح در بیشتر موارد دیگه نیاز چندانی به پسورد کاربرا نداره که حالا بخواییم اونا را هش کنیم یا نه.:متفکر: تازه می تونه اگر هم پسورد ها هش بودن..یک ایمیل دلخواه بده و بعد درخواست پسورد بخواد به این حساب که پسورد رو فراموش کرده....
و بعد دسرسی به پایگاه داده امکان پذیره و اونوقت پیدا کردن محتوای کدهای php خیر؟؟
البته فکر می کنم...یکی کارایی های هش این باشه که می تونیم پسورد رو هش شده به عنوان کوکی در کامپیوتر کاربر ذخیره کنیم...و امنیت از این حیث پابر جا کنیم که هکر به کوکی های هم اگر دسرسی داشت..پسورد رو نتونه بخونه :متفکر:...
خلاصه ممنون می شم اگر منو یک جورایی در این زمینه روشن کنید...و فلسفه استفاده از هش رو دقیق بگید...و هش کردن و نکردن چه قد می تونه در امنیت موثر باشه....
احساس کردم با تایپیک که زدی کد هش را زیر سوال بردی،باید عرض کنم که بله وقتی یک هکر پایگاه داده دسترسی پیدا کرد،دیگه کد هش هم کارساز نخواد بود،خوب ولی این حداقل یک مزیت داره
و اون اینه تابخواد اصل پسورد را پیدا کنه،یعنی دیکد کنه ،12ساعتی طول می کشه،برای هر پسورد،برای ایمیل هم که می گی از اون طریق خیلی از سایت با ایمیل یک سوال امنیتی که روز ثبت نام پرسیده هم باید اقای هکر جواب بده،ولی در کل کد هش بهتره،تو باید دسترسی اطلاعات برای کاربران هم در نظر بگیری،این طوری سایتت کسی نخواهد اومد،سرعت لود بالا خیلی مهمه!البته یک trade off بینشون خودت برقرا کن

golbafan
پنج شنبه 28 خرداد 1394, 11:14 صبح
اخوب ولی این حداقل یک مزیت داره
و اون اینه تابخواد اصل پسورد را پیدا کنه،یعنی دیکد کنه ،12ساعتی طول می کشه

سلام
کد هش برگشت پذیر نیست
و قابل دیکد هم نیست!

12 ساعت که سهله شما بگو 12 سال...

fatima-php
پنج شنبه 28 خرداد 1394, 11:49 صبح
دیکد که نمیشه کرد ولی میشه bruteforce چک کرد که اینجا هرچقدر الگوریتم هش شما کندتر و پیچیده تر باشه، عملیات bruteforce یا dictionary attack رو طولانی تر میکنه. اکثر کاربران رمزهای ساده ای دارن مثل 123456 و... که اگه شما از الگوریتمهای سریعی مثل md5 استفاده کنید، خیلی سریع قابل کشف هستن ولی اگه اون رو کند کنید، زمان بیشتری لازمه. مثلاً اگه یه سیستم بتونه با الگوریتم MD5 رو که حدود 4 هزارم ثانیه طول میکشه تا محاسبه بشه، 345,600,000 رمز رو در روز تست کنه (4000 رمز در 86400 ثانیه یک روز) خیلی زود به عدد 123456 میرسه (تازه اگه از dictionary attack استفاده کنه خیلی زودتر از اینا میرسه) اما اگه از الگوریتم سنگینی مثل bcrypt و scrypt و... استفاده کنید و فرضاً هر محاسبه هش 1 ثانیه طول بکشه، شما کاربر اصلی که میخواسته لاگین کنه رو فقط 1 ثانیه معطل کردین تا بهش بگین رمز رو درست وارد کرده یا نه ولی هکر برای تست کردن همین تعداد رمز که توی یک روز میخواست حساب کنه، 4000 روز زمان لازم داره که میشه نزدیک به 11 سال. خوب تا این موقع معلوم نیست اصلاً سایت اصلی یا کاربری که رمزشو میخواسته بفهمه زنده مونده باشه!!!

stackprogramer
پنج شنبه 28 خرداد 1394, 13:46 عصر
سلام
کد هش برگشت پذیر نیست
و قابل دیکد هم نیست!

12 ساعت که سهله شما بگو 12 سال...

سلام اولا من این ها را از خودم در نمی اورم،با سند حرف می زنم،اول برو به لینک زیر،اسم سایت code generator است،http://danbarnett.net/scripts/hash.php
یک رشته بهش می دی ،کد هش را جنریت می کنه،خوب این از این
حالا نوبت دیکد کردن،به این لینک سری بزنید،اسم سایت هش تول کیت است اینم لینکش https://hashtoolkit.com/
مثلا من پسورد 1234 را به عنوان کلید انتخاب کردم،هش را با سایت اول بدست می یارم،MD5 من کار می کنم کاری با فرمت های دیگه ندارم،اگه دوست داشتید امتحان کنید خودتون:چشمک:

کد هشmd5 اون می شه،81dc9bdb52d04dc20036dbd8313ed055
اینم لینک عکس عملیات
http://s3.picofile.com/file/8194324318/Untitled.jpg

حالا همینو داخل سایت دومی کپی می کنم ببینم چی بهم می ده، جواب می ده
1234
اینم لینک عکس عملیات
http://s3.picofile.com/file/8194324650/Untitled2.jpg (http://s3.picofile.com/file/8194324650/Untitled2.jpg)
دوم کد هش را می شه تو زمان هم کم بدست اورد،با یک روش خاص و یک مین فریم،که دیگه حوصله ندارم تایپ کنم

دوم منتظر جواب کاربرانی که اشکال می گرفتن هستم

Unique
پنج شنبه 28 خرداد 1394, 16:19 عصر
چرا فوری با هم جر و بحث میکنید ؟
توابعی مثل MD5 و SHA1 یا SHA2 و ... غیر قابل برگشت هستند ! سایت هایی که شما بهش Hash را میدین و معادلش را بهتون میده داره از جدویل ک هبا brute force و روش های دیگه ایجاد شده جواب میده !

همین الان هم خیلی از سایت های بزرگ دارن پسورد ها را بدون هش ذخیره میکنن (حتی سایتی مثل Adobe) که قطعا کار اشتباهیه و شما نباید این کار را بکنید ! اما نمیخواد خیلی هم به خودتون زحمت بدین. اگه به ابتدا و انتهای گذرواژه مقدار خاصی را اضافه کنید و توی یک حلقه مثلا ۱۲۰۰۰ بار اون را hash کنید حالا چه با md5 یا sha1 یا sha2. مطمئن باشین تا 99 درصد غیر قابل کشف میشه مگه کل کامپیوتر های دنیا را بسیج کنن که سایت شما را هک کنه.

البته استفاده از bcrypt یا PBKDF2 هم میتونه مناسب باشه.

نکته دیکه اینکه چرا شما سایت را جستجو نمیکنید !؟ میدونین چقدر تاپیک با این مضمن توی این همه سال فعالیت انجمن ایجاد شده و دوستان خیلی خوب من همه تجربیاتشون را توی اون ها مطرح کردن ؟

این یکی (http://barnamenevis.org/showthread.php?453258-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%DA%AF%D8%B2%DB%8C%D9%86%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B1%D9%85%D8%B2-%DA%A9%D8%AF%D8%A7%D9%85-%D8%A7%D8%B3%D8%AA-md5-%DB%8C%D8%A7-sha-%DB%8C%D8%A7-crc32-%DB%8C%D8%A7-hash)
تین یکی دیگه (http://barnamenevis.org/showthread.php?386523-%D8%A2%DB%8C%D8%A7-%DA%86%D9%86%D8%AF-%D8%A8%D8%A7%D8%B1-%DA%A9%D8%AF-%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%D9%BE%D8%B3%D9%88%D8%B1%D8%AF-(hash-md5-)-%D8%AA%D8%A7%D8%AB%DB%8C%D8%B1%DB%8C-%D8%AF%D8%A7%D8%B1%D9%87%D8%9F)
اینم یکی دیگه (http://barnamenevis.org/showthread.php?390090-%D8%AF%D9%84%DB%8C%D9%84-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-md5-%D8%A8%D8%A7-%D9%88%D8%AC%D9%88%D8%AF-%D9%85%D9%86%D8%B3%D9%88%D8%AE-%D8%B4%D8%AF%D9%86)
اینم قدیمی ترش (http://barnamenevis.org/showthread.php?111492-MD5-Decryption)

stackprogramer
پنج شنبه 28 خرداد 1394, 18:56 عصر
چرا فوری با هم جر و بحث میکنید ؟
توابعی مثل MD5 و SHA1 یا SHA2 و ... غیر قابل برگشت هستند ! سایت هایی که شما بهش Hash را میدین و معادلش را بهتون میده داره از جدویل ک هبا brute force و روش های دیگه ایجاد شده جواب میده !

همین الان هم خیلی از سایت های بزرگ دارن پسورد ها را بدون هش ذخیره میکنن (حتی سایتی مثل Adobe) که قطعا کار اشتباهیه و شما نباید این کار را بکنید ! اما نمیخواد خیلی هم به خودتون زحمت بدین. اگه به ابتدا و انتهای گذرواژه مقدار خاصی را اضافه کنید و توی یک حلقه مثلا ۱۲۰۰۰ بار اون را hash کنید حالا چه با md5 یا sha1 یا sha2. مطمئن باشین تا 99 درصد غیر قابل کشف میشه مگه کل کامپیوتر های دنیا را بسیج کنن که سایت شما را هک کنه.

البته استفاده از bcrypt یا PBKDF2 هم میتونه مناسب باشه.

نکته دیکه اینکه چرا شما سایت را جستجو نمیکنید !؟ میدونین چقدر تاپیک با این مضمن توی این همه سال فعالیت انجمن ایجاد شده و دوستان خیلی خوب من همه تجربیاتشون را توی اون ها مطرح کردن ؟

این یکی (http://barnamenevis.org/showthread.php?453258-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%DA%AF%D8%B2%DB%8C%D9%86%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B1%D9%85%D8%B2-%DA%A9%D8%AF%D8%A7%D9%85-%D8%A7%D8%B3%D8%AA-md5-%DB%8C%D8%A7-sha-%DB%8C%D8%A7-crc32-%DB%8C%D8%A7-hash)
تین یکی دیگه (http://barnamenevis.org/showthread.php?386523-%D8%A2%DB%8C%D8%A7-%DA%86%D9%86%D8%AF-%D8%A8%D8%A7%D8%B1-%DA%A9%D8%AF-%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%D9%BE%D8%B3%D9%88%D8%B1%D8%AF-(hash-md5-)-%D8%AA%D8%A7%D8%AB%DB%8C%D8%B1%DB%8C-%D8%AF%D8%A7%D8%B1%D9%87%D8%9F)
اینم یکی دیگه (http://barnamenevis.org/showthread.php?390090-%D8%AF%D9%84%DB%8C%D9%84-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-md5-%D8%A8%D8%A7-%D9%88%D8%AC%D9%88%D8%AF-%D9%85%D9%86%D8%B3%D9%88%D8%AE-%D8%B4%D8%AF%D9%86)
اینم قدیمی ترش (http://barnamenevis.org/showthread.php?111492-MD5-Decryption)

جناب موضوعی که در موردش بحث شد،این بود،که داخل 12 ساعت می شه کد هش را دیکود کرد یا نه ،که جواب شد اره در تایپیکی که فرستادم؛بحث سر روش کار نبود،،بحث سر زمان بود!!!!:چشمک:دوم این روشی که شما می فرمایید بهش می گن افراط در امنیت،شما نمی تونین بگین سایت من امنیت می خواد پس باید سرعت کارش پایین باشه،الان سایت هایی که مطرح هستند،یک سازش بین این دو ایجاد کرده،اند،چون امنیت افراطی نشان داده که کارابرن را از سایت دور می کنه!1200 بار هش کن،هکر ها از ابزار های قدرتمندی استفاده می کنند مخصوصا هکر های .......،حالا خسته ام فکر کنم کافی بود موقع افطار نزدیکه:اشتباه:

Unique
پنج شنبه 28 خرداد 1394, 22:55 عصر
که داخل 12 ساعت می شه کد هش را دیکود کرد یا نه ،که جواب شد اره در تایپیکی که فرستادم
دیکد کلمه غلطیه ! هش ها که دیکد نمیشن دوست من ،‌حالا شما ۱۲ سال هم زمان بگذاری نمیتونی hash ی را دیکد کنی این ها یکطرفه هستند. هش ها قابل برگشت نیستند.

اون سایت هایی که معرفی میکنین مقادیر hash شده با یک بار صدا زدن md5 هستند. اگه توی گذرواژه salt باشه و چندین بار با همون salt یا تغییر منظمی در salt هش بشه این سایت ها هیچکدوم به درد نمیخوره و فقط میشه brute force کرد ! تازه جلوی brute force را هم میشه با ایجاد تغییر گرفت. حتما دیدین سایت هایی که اگه شما گذرواژه را ۳ بار اشتباه بزنین حساب را میبندن و از طریق ایمیل خودتون باید حساب را unlock کنین یا مثلا ۱ ساعت اجازه ورود نمیدن. نمیگم روش منطقی هست و ممکنه کسی هم سر به سر شما بگذاره ! مثلا میتونید با id یاهو و gmail بقیه همین کار را بکنید و اذیتشون کنین اما موضوع brute force تقریبا بی معنی میشه و توی ۱۲ سال هم طرف نمیتونه به قول شما هش را با brute force دیکد کنه و درست ترش حدس بزنه.


دوم این روشی که شما می فرمایید بهش می گن افراط در امنیت،شما نمی تونین بگین سایت من امنیت می خواد پس باید سرعت کارش پایین باشه،

وقتی میشه با یک تابع پنج خطی که هیچ سرباری روی سرور نداره امنیت بیشتری داشت اگه استفاده نکنید اونوقت دارین عمدا امنیت را پایین میارین :



function strong_hash($pass){
$salt = "Dr4*$5389*E34dc";
$hash = md5($pass);
for($i=1;$i<12000;$i++)
$hash = md5($hash.$salt.$i + 1360);
return $hash;
}

$start = microtime(true);
$hashed_pass = strong_hash("1234");
$end = microtime(true);

$diff = $end - $start;
$sec = intval($diff);
$micro = $diff - $sec;

echo "Hashed Pass: ".$hashed_pass."<br>";
echo "Time : ".strftime('%T', mktime(0, 0, $sec)) . str_replace('0.', '.', sprintf('%.3f', $micro));

روی سیستم من خروجی میده :

Hashed Pass: 26588e932c7ccfa1df309280702fe1b5
Time : 00:00:00.023

روی سرور از این هم کمتره ! از ارتیاط برنامه شما با پایگاه داده هم کمتره مخصوصا اگه پایگاه داده روی یک سرور دیگه توی شبکه شما باشه.

پی نوشت : چرا پیام خصوصی میدی ؟! من خودم تاپیک را دنبال میکنم.

fatima-php
پنج شنبه 28 خرداد 1394, 23:48 عصر
والا به منم پیام خصوصی دادن. دوست عزیز ما همگی تاپیکهایی که توش پست میگذاریم رو دنبال میکنیم. شما توی اینترنت درمورد Bruteforce Attack و Dictionary Attack جستجو کنید، به خیلی از این اطلاعات دسترسی پیدا میکنید. فرق Hash با CODEC در همینه که CODEC ترکیب Code/Decode هست یا درست ترش Encode و Decode یعنی الگوریتم قابل برگشت داره ولی Hash قابل برگشت نیست و یکطرف است. ضمناً سایتهایی هم که میگین، همونطور که دوستمون اشاره کردن، یک دیتابیس عظیم از رشته ها و هش های متناظرشون درست کردن که اگه شما هش رو بهشون بدین، براتون میگردن و اگه پیدا کردن رشته معادلش رو میدن و به مرور زمان این جدول داره بزرگ و بزرگتر میشه. وقتی خودتون یک رشته رو میدین که هش کنن، اون رو هم ذخیره میکنن و از اون به بعد اگه کسی هش رو سرچ کنه، رشته رو تحویلش میدن.

H:Shojaei
جمعه 29 خرداد 1394, 00:05 صبح
به نظر من هم یه salt کفایت میکنه همراه با هر تابعی به جز MD5 البته این تابع هم مشکلی در حدی که پروژه های کوچیک استفاده کنن نداره ولی بهتره کلا استفاده نشه...
و یه حلقه تکرار هرچند کوچیک با تابع ایجاد hash کفایت میکنه...
...................
واسه حملات bruteforce هم چیزی که من تحقیق کردم بهترین روش اینه که همین روش معمولی گفته شده و تایید شده انجام بشه... اما salt هر password مجزا باشه... یعنی salt ررندم ایجاد بشه و کنار پسورد ذخیره بشه...

Unique
جمعه 29 خرداد 1394, 02:21 صبح
به نظر من هم یه salt کفایت میکنه همراه با هر تابعی به جز MD5 البته این تابع هم مشکلی در حدی که پروژه های کوچیک استفاده کنن نداره ولی بهتره کلا استفاده نشه...
چرا MD5 نه ؟ آخه SHA1 هم دیگه کمتر استفاده میشه اما واقعا MD5 چرا نه ؟ همه میگن بهتره استفاده نشه ! مگه برگشت پذیر نیست ؟ پس مشکل کجاست ؟

H:Shojaei
جمعه 29 خرداد 1394, 03:08 صبح
چرا MD5 نه ؟ آخه SHA1 هم دیگه کمتر استفاده میشه اما واقعا MD5 چرا نه ؟ همه میگن بهتره استفاده نشه ! مگه برگشت پذیر نیست ؟ پس مشکل کجاست ؟
من امشب کلا رفتم تو کار تحقیق امنیت و خیلی جاها نه یکی دوجا دیدم که گفتن md5 باگهای امنیتی پیدا کرده حالا چطور و کجاش هنوز خودمم هم نفهمیدم...
ولی اغلب جاها گفته شده بود که نقاط ضعفی توی خود الگوریتم رمز نگاریش کشف شده... و همچنین گفته شده بود که باز خطرناکتر از این نقاط ظعف سرعت بالایی که داره هست که به این مورد تو پیج ویکی پدیاش هم اشاره شده البته مستقیم ذکر نشده که به لحاظ امنیتی مشکل داره ولی به نوعی ذکر شده که میزان سرعتی که داره واسه یه الگوریتم رمز نگاری مناست نیست...
این لینک (https://en.wikipedia.org/wiki/Collision_attack#Chosen-prefix_collision_attack) هم توضضیحاتی درباره این مطلب داده...

H:Shojaei
جمعه 29 خرداد 1394, 03:35 صبح
barnamenevis2016 این مطلب (http://codahale.com/how-to-safely-store-a-password/) رو هم بخونید بدک نیست...

fatima-php
جمعه 29 خرداد 1394, 09:02 صبح
چرا MD5 نه ؟ آخه SHA1 هم دیگه کمتر استفاده میشه اما واقعا MD5 چرا نه ؟ همه میگن بهتره استفاده نشه ! مگه برگشت پذیر نیست ؟ پس مشکل کجاست ؟

توی MD5 یه سری نواقص پیدا شده. مثلاً هش دو عبارت مختلف (که الان یادم نیست ولی میتونید سرچ کنید) یکی در میاد. حتی هش فایلهای بزرگ رو هم چند نمونه دیدم که یکسان در میومد و برای اطمینان خودم تست کردم و دیدم واقعاً همینطوره. در کل یکسری باگها داخلش پیدا کردن که بهرحال درمورد الگوریتمی که بیش از یک دهه است داره استفاده میشه، چنین مواردی ممکنه پیش بیاد.

ازطرفی بعضی سایتها واقعاً دیکشنری MD5 شون خیلی غنی شده و تقریباً هرچی بزنی توی دیتابیسشون دارن. البته اگه فقط از MD5 معمولی بدون نمک و فلفل و در حد یکی دو بار استفاده کرده باشین. یه سایتی دیدم که هش تا 3 مرحله پشت سر هم MD5 رو هم ذخیره کرده بود. الان هم که الگوریتمهای جدیدتر مثل SHA256 و... در دسترسمون هست و به راحتی میشه استفاده کنیم، چسبیدن به الگوریتمهای فسیل شده بنظرم دلیل منطقی نداره.

terminator68
جمعه 29 خرداد 1394, 09:25 صبح
md5 نوع رمزنگاریش کشف شده..بهمین خاطره که اکثرا زود کرک میشن...
ولی میان الان اینکارو می کنن...
اول پسوردو ذخیره می کننو بعدش مثلا اونو به sha1 تبدیل می کنن.....و حالا بعد از اینکه تبدیل به هش شد..همون هش رو تبدیل به md5 می کنن...
حالا عمرا کرک بشه....

البته اینا همش یه بخشه....
وقتی طرف دسترسی از سایت یا سرور داشته باشه با یه دستور update می تونه پسورد خودشو جایگزین پسورد فعلی کنه:قهقهه:

g00d luCk

fatima-php
جمعه 29 خرداد 1394, 09:47 صبح
سروری که طرف دسترسی بهش بتونه بگیره رو باید گِل گرفت. حالا شما بیا سنگین ترین سیستم هش رو هم بگذار. بقول شما طرف میاد با همون الگوریتم رمز دلخواه خودشو یکبار هش میکنه و یه UPDATE بدون WHERE میذاره و خلاص!

از هر جایی هاست نگیرین.

stackprogramer
جمعه 29 خرداد 1394, 17:12 عصر
دیکد کلمه غلطیه ! هش ها که دیکد نمیشن دوست من ،‌حالا شما ۱۲ سال هم زمان بگذاری نمیتونی hash ی را دیکد کنی این ها یکطرفه هستند. هش ها قابل برگشت نیستند.

سلام امروز اتفاقا امتحان داشتم،رفتم پیش دوتا از اساتیدم،که ببینم،MD5 brute force یک روش دیکدینگ محسوب می شه یا نه،که هر دو تاکید کردن در رمزنگاری،یکی از روش ها دیکدینگ (که گفتند اخرین روش معمولا )brute force است،دوم من تاکید کردم،که استاد brute force واقعا جزو دیکدینگ است،با تاکید گفتند اره،دوم بنده خودم می دونم هش برگشت پذیر نیست ولی داخل کتاب های امنیت به عنوان brute force decoding نام برده اند،که با تایید استادم
شک من بر طرف شد.
این یک کتاب از گوگل بوک که کلمه brute force decoding را اورده،
https://books.google.com/books?id=8BCSFUL8qU0C&pg=PA365&lpg=PA365&dq=brute%20force%20is%20a%20decoding&source=bl&ots=WS7IgUqtj7&sig=D0WaWIvWfoN1fVpaV1Hf5jFbvGY&hl=en&sa=X&ei=9MWDVZ_rB-n8ygOsrYjAAg&ved=0CGAQ6AEwCQ#v=onepage&q=brute%20force%20is%20a%20decoding&f=false

لینک کتاب دوم،https://books.google.com/books?id=7ESXGXxyWJkC&pg=PA82&dq=brute+force++decoding&hl=en&sa=X&ei=HROEVZDDA6TcywOqroewBw&ved=0CCMQ6AEwAQ#v=onepage&q=brute%20force%20%20decoding&f=false

لینک زیر را داخل گوگل پیست کنید،عنوانی که در گوگل براش انتخاب کرده چیست خودتون ببینید عنوانش اینه
code golf - Decode MD5, Brute Force - Programming (http://codegolf.stackexchange.com/questions/42043/decode-md5-brute-force)http://codegolf.stackexchange.com/questions/42043/decode-md5-brute-force

به لینک یوتیوب برید عنوانش چیست
http://www.youtube.com/watch?v=PAYgwsopaEU



اون سایت هایی که معرفی میکنین مقادیر hash شده با یک بار صدا زدن md5 هستند. اگه توی گذرواژه salt باشه و چندین بار با همون salt یا تغییر منظمی در salt هش بشه این سایت ها هیچکدوم به درد نمیخوره و فقط میشه brute force کرد ! تازه جلوی brute force را هم میشه با ایجاد تغییر گرفت. حتما دیدین سایت هایی که اگه شما گذرواژه را ۳ بار اشتباه بزنین حساب را میبندن و از طریق ایمیل خودتون باید حساب را unlock کنین یا مثلا ۱ ساعت اجازه ورود نمیدن. نمیگم روش منطقی هست و ممکنه کسی هم سر به سر شما بگذاره ! مثلا میتونید با id یاهو و gmail بقیه همین کار را بکنید و اذیتشون کنین اما موضوع brute force تقریبا بی معنی میشه و توی ۱۲ سال هم طرف نمیتونه به قول شما هش را با brute force دیکد کنه و درست ترش حدس بزنه.

اولا اطلاعاتی که داید،هر اماتوری اینو می دونه،دوما بحث سر این بوده،که هش پسورد یک کاربر می دونیم،حالا پسورد را می خوایم،تایپیک ها را از اول بخون،پس ما کاری با سرور نداریم این صورت مسیله بود


وقتی میشه با یک تابع پنج خطی که هیچ سرباری روی سرور نداره امنیت بیشتری داشت اگه استفاده نکنید اونوقت دارین عمدا امنیت را پایین میارین :






روی سیستم من خروجی میده :وی سرور از این هم کمتره ! از ارتیاط برنامه شما با پایگاه داده هم کمتره مخصوصا اگه پایگاه داده روی یک سرور دیگه توی شبکه شما باشه.
Time : 00:00:00.023

دررابطه به این سوال شما خودتون جواب خودتون را دادید،بله شما می گویید باری رو سرور نداره،کاملا درست می گید،اقای کدر c++ هم داخل دیکد کردن،5 مرحله هش می کنه وسپس مقایسه،خوب
این کار هم برای رمز گشا چندان تفاوت زمانی نمیکند،روند قبل تکرار خواهد شد


پی نوشت : چرا پیام خصوصی میدی ؟! من خودم تاپیک را دنبال میکنم.

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

stackprogramer
جمعه 29 خرداد 1394, 17:20 عصر
من امشب کلا رفتم تو کار تحقیق امنیت و خیلی جاها نه یکی دوجا دیدم که گفتن md5 باگهای امنیتی پیدا کرده حالا چطور و کجاش هنوز خودمم هم نفهمیدم...
ولی اغلب جاها گفته شده بود که نقاط ضعفی توی خود الگوریتم رمز نگاریش کشف شده... و همچنین گفته شده بود که باز خطرناکتر از این نقاط ظعف سرعت بالایی که داره هست که به این مورد تو پیج ویکی پدیاش هم اشاره شده البته مستقیم ذکر نشده که به لحاظ امنیتی مشکل داره ولی به نوعی ذکر شده که میزان سرعتی که داره واسه یه الگوریتم رمز نگاری مناست نیست...
این لینک (https://en.wikipedia.org/wiki/Collision_attack#Chosen-prefix_collision_attack) هم توضضیحاتی درباره این مطلب داده...


اول از توجه شما اقای H:Shojaei (http://barnamenevis.org/member.php?241637-H-Shojaei) متشکرم،واقعیت امر این است در امریکا یک سری انجمن رمزگشایی باز شده ،که اونا قصد داشتند،(الان این عملی شده)از پردازش موازی و کامپیوتر های mainframe استفاده کنند،تا سخت ترین رمز نگاری را در کمتر از چند ساعت محاسبه کنند،که موفقیت های چشم گیری بدست اورده اند،با پردازش موازی ابرکامپیوتر برای اونها غیر ممکن ممکن شد،چون همون قدر که سرور قوی باشه مین فریم های اونها هم کم نمیاره،بازی موش و گربه شده،هیچ کدام قصد تسلیم شدن ندارند،دوستان از همه تون متشکرم

Unique
جمعه 29 خرداد 1394, 19:36 عصر
وقتی طرف دسترسی از سایت یا سرور داشته باشه با یه دستور update می تونه پسورد خودشو جایگزین پسورد فعلی کنه
اگه منظورتون فقط دسترسی به پایگاه داده هست که این حرفتون نادرسته ! یعنی شاید کاربر بتونه هر بلایی سر پایگاه داده و اطلاعاتش بیاره اما نمیتونه بدون اینکه نحوه hash شدن را بدونه پسوورد خودش را جایگزین کنه !


بقول شما طرف میاد با همون الگوریتم رمز دلخواه خودشو یکبار هش میکنه و یه UPDATE بدون WHERE میذاره و خلاص!
fatima همچین چیزی نمیشه ! اگه طرف الگوریتم هش را ندونه نمیتونه چیزی را جایگزین کنه ! باید حتما به سورس و نحوه عملکرد هم دسترسی داشته باشه.


سلام امروز اتفاقا امتحان داشتم،رفتم پیش دوتا از اساتیدم،که ببینم،MD5 brute force یک روش دیکدینگ محسوب می شه یا نه،که هر دو تاکید کردن در رمزنگاری،یکی از روش ها دیکدینگ (که گفتند اخرین روش معمولا )brute force است،دوم من تاکید کردم،که استاد brute force واقعا جزو دیکدینگ است،با تاکید گفتند اره،دوم بنده خودم می دونم هش برگشت پذیر نیست ولی داخل کتاب های امنیت به عنوان brute force decoding نام برده اند،که با تایید استادم
شک من بر طرف شد.

دوست عزیز ، وقتی میگیم Decode یعنی قصد داریم یک مقدار Encode شده را به اصل خودش برگردونیم ! نمیخوایم حدس بزنیم و سعی و خطا کنیم ! میخوایم با یک الگوریتم مشخص اون را به حالت اولیه برگردونیم ! حالا اگه اساتید شما اسم حدس زدن و سعی و خطا را میگذارن Decode خوب حتما بیشتر از من میدونن اما من چنین موضوع واضحی را با استاد مطرح نمیکنم مثل اینکه برم از استاد بپرسم الان روز هست یا شب بعد استاد بگه ببین چون توی اون طرف کره زمین هوا تاریکه میتونه بیگم الان شبه !

در مورد جستجو ها و کتاب هایی که توی گوگل میگین هم نمیشه به این چیزا اکتفا کرد ! من هم میتونم بگم مثلا توی ویکیپدیا (https://en.wikipedia.org/wiki/Brute-force_attack) که Brute Force را معنی کرده و توضیح داده هیچ جا از کلمه decode استفاده نکرده.

خلاصه هنوز هم میگم brute force دیکد نیست.


اولا اطلاعاتی که داید،هر اماتوری اینو می دونه
خدا را شکر


وما بحث سر این بوده،که هش پسورد یک کاربر می دونیم،حالا پسورد را می خوایم
والا منم منظورم همین بود ، حالا شما بیا پسورد این هش با این همه مشکل md5 را به من بده : 9edab5111093f4ffd417738f0fa29f34


دررابطه به این سوال شما خودتون جواب خودتون را دادید،بله شما می گویید باری رو سرور نداره،کاملا درست می گید،اقای کدر C++‎ هم داخل دیکد کردن،5 مرحله هش می کنه وسپس مقایسه،خوب این کار هم برای رمز گشا چندان تفاوت زمانی نمیکند،روند قبل تکرار خواهد شد
شما اصلا حواستون به یک سری موضوعات نیست. اولا اون سایت یا حالا همون آقای ++C شما از کجا میدونه من از چه salt ی pepper ی استفاده میکنم یا چند بار اون را هش میکنم ؟ میدونی اگه بخواد تک به تک این ها را بررسی کنه چقدر طول میکشه ؟ نه دوست من به این راحتی که شما فکر میکنین نیست حالا من اگه md5 را بکنم sha1 یا sha2 و ترکسب کنم که که دیگه واویلاست !


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

fatima-php
شنبه 30 خرداد 1394, 01:53 صبح
صحبتهای Unique رو کاملاً تأیید میکنم.

H:Shojaei
شنبه 30 خرداد 1394, 03:05 صبح
اول از توجه شما اقای H:Shojaei (http://barnamenevis.org/member.php?241637-H-Shojaei) متشکرم،واقعیت امر این است در امریکا یک سری انجمن رمزگشایی باز شده ،که اونا قصد داشتند،(الان این عملی شده)از پردازش موازی و کامپیوتر های mainframe استفاده کنند،تا سخت ترین رمز نگاری را در کمتر از چند ساعت محاسبه کنند،که موفقیت های چشم گیری بدست اورده اند،با پردازش موازی ابرکامپیوتر برای اونها غیر ممکن ممکن شد،چون همون قدر که سرور قوی باشه مین فریم های اونها هم کم نمیاره،بازی موش و گربه شده،هیچ کدام قصد تسلیم شدن ندارند،دوستان از همه تون متشکرم
ممنون دوست عزیز بابت تشکر ولی نیاز به تشکر نیست داریم صحبت میکنیم و داشنمون رو ردو بدل میکنیم...
خوب این که عده ای در سراسر دنیا روی رمز نگاری و همچنین شکستن الگوریتمها و ... کار میکنن دلیل بر چیزی توی این تاپیک لااقل نمیشه نمیدونم منظورتون از این صحبتها چی بود!



سلام امروز اتفاقا امتحان داشتم،رفتم پیش دوتا از اساتیدم،که ببینم،MD5 brute force یک روش دیکدینگ محسوب می شه یا نه،که هر دو تاکید کردن در رمزنگاری،یکی از روش ها دیکدینگ (که گفتند اخرین روش معمولا )brute force است،دوم من تاکید کردم،که استاد brute force واقعا جزو دیکدینگ است،با تاکید گفتند اره،دوم بنده خودم می دونم هش برگشت پذیر نیست ولی داخل کتاب های امنیت به عنوان brute force decoding نام برده اند،که با تایید استادم
شک من بر طرف شد.

ببینید این مسئله ی encode , decode رو که جناب Unique توضیح دادن و بنده هم این چند سالی که تو این فرم فعالیت دارم کامل میشناسمشون و تایید هم میکنم حرفهاشون رو و به قول ایشون این مسئله چیزی نیست که بخواید به جایی یا کسی مراجعه کنید کاملا مشخصه وقتی خود سایتهایی که hash میدین رشته مربوطه رو میدن قبول دارن که هیچ برگردانی انجام نمیشه و فقط آزمون خطاست... این که تو یک سایتی شما یک hash رو بدین و معادلش رو بدن هیچ ربطی به decode شدن رمز یا شکسته شدن اون الگوریتمی که استفاده شده نداره...(که اگر بگیم دیکد شده پس اون الگوریتم هم شکسته شده دیگه ثانیه ای میشه پیدا کرد هر رمزی رو خوب الگوریتمش کشف شده دیگه اینطور نیست!)
اونا فقط یک dictionary از hash ها و رشته ای که اون hash رو داره رو دارن و تمام hash میدین جستجو میکنن رشته مربوطه رو میدن...
و مهمترین بخش حرفهام که اول میخواستم بگم این که به هیچ وجه به دانشگاه اعتماد نکنید!!! (البته همیشه استثنا هم وجود داره ولی تو دانشگاه ها خیلی کمه)
به چه دلیل چون به روز نیستن اطلاعات پوسیده و یا غلط با اعتماد به نفس کامل بهتون میدن ککشونم نمیگزه!
من چند سال پیش که تازه شروع کرده بودم و فرق html و php رو نمیدونستم و فقط کمی کد زدن php بلد بودم دنبال یک مطلبی بودم اون هم این که چطور توی php یک msgBox به کاربر نشون بدیم...
و منظور من این بود که مثلا مثل C# بزنیم msgBox.show(); معادلش توی php رو میخواستم در عمل همه میدونید که همچین چیزی امکان نداره...
خوب تعریف یک استاد وب خوب رو هم شنیده بودم رفتم ازش پرسیدم همین مطلب رو که میخوام با php به کاربر msgbox نشون بدم 10 دقیقه صحبت کرد و بعد گفت همچین چیزی هست و من مطمئن هم هستم که وجود داره ولی من نمیدونم معادلش توی php چیه ولی مگه میشه نباشه حتما هست شما جستجو کنید پیدا میشه...!!!!!! حالا من 1 هفته دنبال همین بودم که اگر وجود داره پیداش کنم و استفاده کنم...
بعد که فهمیدم قضیه چیه به حرفهایی که اون استاد زده بود و مثلا منو راهنمایی کرده بود خندم گرفته بود و درس عبرتی شد... خلاصه که به یک فرد خواص هرچقدر هم که تعریفشو بکنن یا خودتون قبولش داشته باشید اعتماد نکنید...

H:Shojaei
شنبه 30 خرداد 1394, 03:34 صبح
یک مثالی هم بزنم شاید این موضوع ها برطرف بشه...
ببینید ما یک الگوریتم رمزنگاری داریم که هر رشته ای که بگیره تبدیل میکنه به یک hash، الگوریتم به این صورته که مثلا بعد هر حرف که ما گذاشتیم یک حرف هم خودش بذاره که حرف بعدی اون حرف تو حروف الفباست مثلا اگر a اومد b رو هم الگوریتم بهش اضافه کنه مثلا اگر رشته anr بدیم hash اون با این الگوریتم میشه abnors...

حالا روی این رشته hash شده به دو روش عملیات میتونه انجام بشه که عملا رشته اصلی بدست بیاد:
1- این که آزمون خطا کنیم:(حملات bruteforce , doctionary attack , collition attak همه روششون همین هست که با همین الگوریتم hashی ساخته بشه و نتیجه hash اون با hashی که ما داریم سنجیده بشه و اگر تطابق داشت که رشته اصلی رو هم پیدا کردیم...)
2-این که الگوریتم رمزنگاری رو دقیقا پیدا کنیم و بفهمیم که توی این الگوریتم بعد هر حرف یک حرف دیگه درج میشه و اون حرف هم حرفی هست که توی حروف الفبا بعد همین حرف که توی رشته اومده قرار داره...

صورت اول که خوب کاریه که الآن هم به صورت وسیعی داره انجام میشه و حملات به همون 3 روش هست و برای این که مثلا رشته anr از hash اون یعنی abnors بدست بیاد هزینه زیادی واسه آزمون و خطاهای بسیاری نیازه تا به رشته anr برسیم و اون رو هش کنیم و با هشی که داریم(abnors) مقایسش کنیم تا بفهمیم رشته اصلی چی بوده...

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

golbafan
شنبه 30 خرداد 1394, 14:28 عصر
سلام دوست عزیز stackprogramer (http://barnamenevis.org/member.php?353093-stackprogramer)
نمیدونم چرا برای یک همچین موضوعی پیام خصوصی دادید! (اونهم با لحنی عجیب: "منتظر دفاع شما هستم در تایپیک جدید" )

من یک کد 8 رقمی (شامل فقط رقم های بین 1 تا 9) رو فقط 2 بار با md5 هش کردم و میزارم اینجا
هر وقت به قول خودتون دیکد کردید بزارید توی همین تاپیک

01b98032d36d1359370887a276f305c2


یک توضیح هم بدم بد نیست:
ببین، وقتی دو بار هش انجام میشه تعداد عملیات بروت فورس برای برگردوندن مقدار اولیه به توان 2 خواهد شد و اگر 3 بار هش بشه به توان 3

fatima-php
شنبه 30 خرداد 1394, 14:56 عصر
عجب عنوان باحالی واسه پیام براتون انتخاب کردن! :چشمک:

البته فکر میکنم تعداد عملیات ضرب در 2 یا 3 بشه و بصورت توانی افزایش پیدا نمیکنه.

H:Shojaei
شنبه 30 خرداد 1394, 14:57 عصر
سلام اولا من این ها را از خودم در نمی اورم،با سند حرف می زنم،اول برو به لینک زیر،اسم سایت code generator است،http://danbarnett.net/scripts/hash.php
یک رشته بهش می دی ،کد هش را جنریت می کنه،خوب این از این
حالا نوبت دیکد کردن،به این لینک سری بزنید،اسم سایت هش تول کیت است اینم لینکش https://hashtoolkit.com/
مثلا من پسورد 1234 را به عنوان کلید انتخاب کردم،هش را با سایت اول بدست می یارم،MD5 من کار می کنم کاری با فرمت های دیگه ندارم،اگه دوست داشتید امتحان کنید خودتون:چشمک:

کد هشmd5 اون می شه،81dc9bdb52d04dc20036dbd8313ed055
اینم لینک عکس عملیات
http://s3.picofile.com/file/8194324318/Untitled.jpg

حالا همینو داخل سایت دومی کپی می کنم ببینم چی بهم می ده، جواب می ده
1234
اینم لینک عکس عملیات
http://s3.picofile.com/file/8194324650/Untitled2.jpg (http://s3.picofile.com/file/8194324650/Untitled2.jpg)
دوم کد هش را می شه تو زمان هم کم بدست اورد،با یک روش خاص و یک مین فریم،که دیگه حوصله ندارم تایپ کنم

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

m.esmaeilzadeh
یک شنبه 31 خرداد 1394, 12:21 عصر
در خصوص اولین پست و سوال اصلی : یعنی چی سرعتش پایینه ؟ یعنی شما میخوای مثلا یک کلمه مثل Hello رو هش کنه چند دقیقه طول میکشه برنامه ات اجرا و تمام بشه !؟
بهترین روش استفاده از MD5 هستش و اون سایت هایی که میبینید md5 رو بر میگردونن از یک دیتابیس دارن استفاده میکنن که مثلا یک عده رفتن معادل md5 کلمه admin یا apple رو زدن و در دیتابیس این سایت ها آرشیو شده و یک جوری بچه بازیه قضیه و الگوریتم خاصی برای شکستن رمز ننوشتن و ندارن .... :چشمک:

H:Shojaei
یک شنبه 31 خرداد 1394, 19:23 عصر
در خصوص اولین پست و سوال اصلی : یعنی چی سرعتش پایینه ؟ یعنی شما میخوای مثلا یک کلمه مثل Hello رو هش کنه چند دقیقه طول میکشه برنامه ات اجرا و تمام بشه !؟
بهترین روش استفاده از MD5 هستش و اون سایت هایی که میبینید md5 رو بر میگردونن از یک دیتابیس دارن استفاده میکنن که مثلا یک عده رفتن معادل md5 کلمه admin یا apple رو زدن و در دیتابیس این سایت ها آرشیو شده و یک جوری بچه بازیه قضیه و الگوریتم خاصی برای شکستن رمز ننوشتن و ندارن .... :چشمک:
دوست عزیز اون همه تاپیک ایجاد شد که md5 استفاده نشه بهتره باز شما یهو بهترین روش اعلام کردینش! :D لااقل میگفتید md5 هم به اون صورت زیاد مشکل نداره، نه که بهترین روشه!

barnamenevis2016
یک شنبه 31 خرداد 1394, 20:27 عصر
دس همه درد نکنه...نظر دادن...من خودم نهایت تصمیم گرفتم که پسورد ها رو هش شده ذخیره کنم...ضرر که نداره!!...از تابع password_hash در php استفاده می کنم و والسلام
البته من بیشتر می خواستم فلسفه استفاده از هش رو دقیق بدونم و هدف از ایجاد تاپیک این بود بیشتر...که حالا یک چیزایی برام روشن شد...ممنون.

stackprogramer
چهارشنبه 03 تیر 1394, 22:19 عصر
یک توضیح هم بدم بد نیست:
ببین، وقتی دو بار هش انجام میشه تعداد عملیات بروت فورس برای برگردوندن مقدار اولیه به توان 2 خواهد شد و اگر 3 بار هش بشه به توان 3

سلام خدمت دوستان ببخشید این روز در حال امتحان دادن هستیم تاخیر من را ببخشید،در مورد سوال که تعداد حالات ،من به مسیله به یک شیوه دیگه نگاه می کنم،مثلا فرض کن تکه کدی که قراره یک بار md5 کنیم از طریق brute force،مثلا فرض کن این تکه کدش است،


#include <iostream>
#include "md5.h"
#include <string>
using namespace std;

int main(int argc, char *argv[])
{string Keyenter,result;
string compare="780438d5b6e29db0898bc4f0225935c0";
char number[10]={1,2,3,4,5,6,7,8,9};
for(i1=0;i1<10;i1++)
{for(i2=0;i2<10;i2++)
{
for(i3=0;i3<10;i3++)
{
for(i4=0;i4<10;i4++)
{for(i5=0;i5<10;i5++)
{for(i6=0;i4<6;i6++)
{
for(i7=0;i7<10;i7++)
{for(i8=0;i8<10;i8++)
{



keyenter=number[i8]*10^7+number[i7]*10^6+number[i6]*10^5+number[i5]*10^4+number[i4]*10^3+number[i3]*10^2+number[i2]*10^1+number[i1]*10^0;

result=md5(Keyenter);

if( result==compare)
{ cout << "true\n";
cout << "md5 of 'key entered': " <<Keyenter<< endl;
}

}
}
}
}
}
}
}
}


return 0;
}


این تکه کد سعی می کنه ،md5 را بروت فورس کنه درسته؟!!!حالا اگه غلط نحوی هم دیدید ببخشید!
حالا من به قول شما باید از md5x2 استفاده کنم،کد من تنها تفاوتی که با قبل می کنه،همان خطی است که با md5کار داره،اون خط را تبدیل می کنم به


result=md5(md5(Keyenter));

خوب تنها قسمت برنامه که زمانش طولانی تر شده،چون دوبار md5 می گیره،اقای unique داخل تایپیک بالا 1200 بار md5 هنوز زمانش کم بود،حالا من برای دوتا فرضا دوبرابر اصلا 10 برابر بشه،!!
روشی که به کار می گیرند،پردازش لوله ساده ترین روش پردازش موازی است،چطوری،خودتون حتما استادین و بهتر از من می دونین،یعنی از 2 تا هسته سی پی یو استفاده می کنمTکد شماره یک،عدد11111111 هست،مثلا،عدد دومی هم 11111112 سومی هم 11111113 و..
عدداول که وارد شد،md51 را سی پی یو 1 انجام می ده،خوب حالا نوبت چی است،باید بر برای بار دوم به سمت سی پی یو 2،همزمان اون داده دوم به سی پی یو اول می دم،داده اول به سی پی دوم،اگه جدول پردازش موازی اش را بکشی،فقط تاخیر اول یک هش به برنامه اضافه می شه،یعنی کمتر از یک صدم ثانیه،پس من از دوتا کر سی پی یو به صورت موازی استفاده کردم،و یک کارایی قابل قبول دارم،من بحثم با اقای یونیک این بود،که این md5x2 رو با چنین روشی کاهش بدهیم،




من یک کد 8 رقمی (شامل فقط رقم های بین 1 تا 9) رو فقط 2 بار با md5 هش کردم و میزارم اینجا
هر وقت به قول خودتون دیکد کردید بزارید توی همین تاپیک

01b98032d36d1359370887a276f305c2

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

stackprogramer
چهارشنبه 03 تیر 1394, 22:33 عصر
صورت دوم اگر اتفاق بیافته عملا فاتحه اون روش رمزنگاری و الگوریتم خوندس و شما هر رشته ای رو داشته باشید با برگردان کردن الگوریتم رمز نگاری که دارید میتونین رشته اصلی رو بدست بیارید مثلا من الگوریتم این روش رمزنگاری رو پیدا کردم و میدونم که بعد هر حرف، حرفی که بعد خودش در ترتیب حروف الفبا هست رو میاره ، بنابراین همون حرف بعدیش رو حذف میکنم و هر رشته ای هم بدن فقط نیازه که یکی در میون حروفش حذف بشه!!! و سرعتی که واسه دیکد کردنش نیازه شاید حتی کمتر از سرعتیه که واسه کد کردنش لازمه و هیچ هزینه ای به لحاظ زمانی و پردازشی نداره توی دیکد این الگوریتم نهایت به اندازه همون کد کردنش! پس روش دوم هنوز روی هیجکدوم از این الگوریتمهایی که رایج هست مثل MD5 و... اعمال نشده اگر مثلا روی همین الگوریتمی که من گفتم این اتفاق میافتاد همون لحظه هر سیستمی که از این روش به صورت خام استفاده میکرده باید الگوریتمشو تغییر بده چون کلا روش برگردان پیدا شده و الگوریتم شکسته شده...
بنابراین به همین راحتی ها نمیشه گفت که مثلا MD5 دیکد شد اصلا معنی نداره این حرف! تمام حملاتی که انجام میگیره از روش اول هست و الگوریتمهای رمز نگاری هم تا حالا هیچکدوم تا جایی که من میدونم نشده که دیکد بشه یعنی خود الگوریتم رمزنگاریش کشف بشه...
امیدوارم کمی مسئله روشنتر شده باشه...

داداش من هم این حرف ها را قبول دارم،ولی واقعیت اینه که سایت های کراکر،از الفاظ decode,crack,reverse,kill,...دارند استفاده می کنند،این لفظ بین کراکر ها مد شده،و تمام سایت هایی که زدند،این کلمات را داخلشون نوشتن،حتی بعضی سایت ها خلاقیت داشتن recovery هم به کار بردند!
Reverse md5 Calculator (http://reversemd5.com/)


Hash Toolkit - Reverse MD5 / SHA1 Hashes (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCQQFjAB&url=https%3A%2F%2Fhashtoolkit.com%2F&ei=4fmKVaCfIcOr-AGn1J-QAw&usg=AFQjCNEgyOmYaQ_etrRa9q5qwVUgXxSqkw&sig2=yXJ_5CZVHl4GL5Rvgk9eJA&bvm=bv.96339352,d.cWw)


md5cracker.org | The Cracking Engine for MD5-Hashes (http://md5cracker.org/)

تو گوگل سرچ کنی،سایتش بالا می یاد



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

داداش سایت های دیگه هم هستند،دوتا سایت دیگه چک کن،مطمین باش سه کاراکتری،با یک نرم افزاری معمولی کراکر هش خیلی زود،پیدا می شه،md5 decrptor راحت شکسته می شه،الان بحث ماسر پسورد هشت تا 15 تایی است،این ها معمولا مراحل خیلی پیچید ه ای داره،

stackprogramer
چهارشنبه 03 تیر 1394, 22:53 عصر
شما اصلا حواستون به یک سری موضوعات نیست. اولا اون سایت یا حالا همون آقای ++C شما از کجا میدونه من از چه salt ی pepper ی استفاده میکنم یا چند بار اون را هش میکنم ؟ میدونی اگه بخواد تک به تک این ها را بررسی کنه چقدر طول میکشه ؟ نه دوست من به این راحتی که شما فکر میکنین نیست حالا من اگه md5 را بکنم sha1 یا sha2 و ترکسب کنم که که دیگه واویلاست !


فرض براین است که الگوریتم را بدونیم،حالا هرچی باشه یعنی pepper هم بدونیم،بله اگه ندونیم،که معمولا چیزی نداریم که بخوایم کاری کنیم،

[

والا منم منظورم همین بود ، حالا شما بیا پسورد این هش با این همه مشکل md5 را به من بده : 9edab5111093f4ffd417738f0fa29f34

من خودم را در حدی نمی بینم که بخوام کراکر هش باشم اگه بودم الان 100 بار اپلای گرفته بودم،ولی باشه داخل دفتر مجهولاتم این را دارم ،اگه پیدا کردم،حتما ،ولی سعی می کنم،که بتونم یعنی هرجا برم امتحان می کنم البته در تایپیک های بعدی روش های مدرن را پیوست می کنم که این کار ها دارند با کارایی بالایی اجرا می کنند

H:Shojaei
چهارشنبه 03 تیر 1394, 23:05 عصر
داداش من هم این حرف ها را قبول دارم،ولی واقعیت اینه که سایت های کراکر،از الفاظ decode,crack,reverse,kill,...دارند استفاده می کنند،این لفظ بین کراکر ها مد شده،و تمام سایت هایی که زدند،این کلمات را داخلشون نوشتن،حتی بعضی سایت ها خلاقیت داشتن recovery هم به کار بردند!
پس من اگر 5 سایت نشون بدم یا 5 سایت خودم بزنم و این کلمات رو به کار نبرم و مثلا از جمله مثلا md5 finder استفاده کنم مشکل این اسامی حل میشه ؟!
اینها هم یک سری آدم معمولی و طراح سایت هستن که کاری انجام دادن و چه بهتر که کارشون با کلمه هایی مثل decode ,reverse, ... بزرگ نشون داده بشه بنابراین با این چند تا تیتر سایت که نمیشه روشی رو اسمشو عوض کرد که!!!!

stackprogramer
چهارشنبه 03 تیر 1394, 23:15 عصر
ممنون دوست عزیز بابت تشکر ولی نیاز به تشکر نیست داریم صحبت میکنیم و داشنمون رو ردو بدل میکنیم...
خوب این که عده ای در سراسر دنیا روی رمز نگاری و همچنین شکستن الگوریتمها و ... کار میکنن دلیل بر چیزی توی این تاپیک لااقل نمیشه نمیدونم منظورتون از این صحبتها چی بود!



این که این حرف ها چه ربطی به تایپیک داره،ایده های نوینی است که شاید قبلا عملی نبود اما الان دارند روش کار می کنند،پردازش موازی ،GPU programing،یک سری مزایا داره برنامه نویسی جی چی یو،یک نمونه اش،یک سوپر کراکر که با 25 جی پی یو ساخته اند،وقادر است 348 بیلیون کد هش را محاسبه وتست کنه،
http://hackaday.com/2012/12/06/25-gpus-brute-force-348-billion-hashes-per-second-to-crack-your-passwords/
نرم افرارهای کوچکتری برای پی سی ها که با چی پی یو کار کنه هم ساختند،rainbow cracker
که کارایی اون با سخت افزار های مختلف در لینک زیر ببینید،
http://project-rainbowcrack.com/performance.htm

این لینک یوتیوب هم یک تصویری از محیط اجرا شدن و نحوه ی کار را نشان می ده ببینید بدک نیست
https://www.youtube.com/watch?v=HnXj0Hm7QE4

stackprogramer
چهارشنبه 03 تیر 1394, 23:27 عصر
دوستان حتما الان ازمن یک ایراد می گیرید میگید این سخت افزار ها را کی داره،:چشمک::چشمک::چشمک:یا دست یک دانشجو مثل من عمرا به این دستگاه ها برسه،؟؟؟؟؟؟؟؟؟؟؟؟منظورم سوپر کراکر است.
شاید تا قبلا این حرف درست بود ولی ،احتمالا همشه شما،با bit torrent دانلود کردید،و از اون هم راضی هستید احتمالا!
ایده ای که الان دارند به کار می گیرند،همین تورنت است،یعنی چی می گن ما سخت افزار قوی نداریم،اگر هر کامپیوتر از سراسر جهان برای ما مثلا هزار10 هزار تا،برای ما هش کنند و اون را برای ما بفرستند،ما دیگه یک کامیپوتر تنها نیستم،همان ضرب المثل معروف یک دست صدا ندارد،سیستم هایی طراحی می کنند که هر تکه اش یک جای جهان است،

انگار که شما یه سیستمی داری که قدرتش به اندازه مجموع تمام کامپیوتر های جهان هستش.

روند کار هم به این صورت هست که هر کامپیوتر میاد و بخشی از پسورد لیست رو تست میکنه و نتیجه رو روی یک سرور ذخیره میکنه

به فرض ما ده تا لبتاب داریم و یک فایل رار و همچنین 100 مگابایت پسورد لیست

میایم و به هر لبتاب 10 مگابایت پسورد میدیم تا روی یه سیستم تست کنه.

فرض کنین این فایل 10 مگابایتی دارای ده هزارتا پسورده . یه کاربر میاد و 2 هزارتا پسورد رو تست میکنه ، کاربر دیگه میاد هزارتاشو تست میکنه ، یه کاربر دیگه میاد 5 هزارتاشو تست میکنه و الی اخر تا اون فایل 10 مگی تموم بشه

حالا فرض کنید تمام کاربران از سراسر جهان توی این پروژه شرکت کنن ، یه چیزی مثل شبکه ی تورنت،این را دارند می سازند حالا،شما قضاوت کنید،به جای اینکه بگن نمی شه فکر های بزرگی پشت پروژه هاشون دارند

stackprogramer
چهارشنبه 03 تیر 1394, 23:31 عصر
پس من اگر 5 سایت نشون بدم یا 5 سایت خودم بزنم و این کلمات رو به کار نبرم و مثلا از جمله مثلا md5 finder استفاده کنم مشکل این اسامی حل میشه ؟!
اینها هم یک سری آدم معمولی و طراح سایت هستن که کاری انجام دادن و چه بهتر که کارشون با کلمه هایی مثل decode ,reverse, ... بزرگ نشون داده بشه بنابراین با این چند تا تیتر سایت که نمیشه روشی رو اسمشو عوض کرد که!!!!



داداش اینجا باید از اون کراکر ها شاکی باشی که این کلمات را به کار می برند ،من که اون سایت ها را نزدم،برو با خودشون صحبت کن،ببین چی می گن!

stackprogramer
چهارشنبه 03 تیر 1394, 23:38 عصر
از این که سرتون را درد اوردم،معذرت می خوام فردا یا پس فردا دوتا تایپیک جالب داخل همین پست می فرستم.

us1234
چهارشنبه 03 تیر 1394, 23:45 عصر
احساس میکنم این تاپیک زیادی طولانی شده و دوستان به هرشکلی دارند حرف خودشون را به دیگران مقبولند .

جدا از حاشیه ها فقط برای توضیح بیشتر این متن که به سادگی ازش گذشتید :


شما اصلا حواستون به یک سری موضوعات نیست. اولا اون سایت یا حالا همون آقای ++C شما از کجا میدونه من از چه salt ی pepper ی استفاده میکنم یا چند بار اون را هش میکنم ؟ میدونی اگه بخواد تک به تک این ها را بررسی کنه چقدر طول میکشه ؟ نه دوست من به این راحتی که شما فکر میکنین نیست حالا من اگه md5 را بکنم sha1 یا sha2 و ترکسب کنم که که دیگه واویلاست !

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

به فرض من رشته دارم به این شکل :
c7b734f7a8b9dc3fe38d8d3def9089e4

معلومات مساله : این یک رشته عددی بین 0 و 9 با طول 6 کارکتر است که کد شده ، کدینگ هم معلومه دیگه MD5 به قول بیشتر دوستان بدترین نوع هش !

خوب من از شما می خواهم این را دیکد کنید .

شما از 0 تا 9 تمامی رشته های 6 کارکتر را باید در این تابع چک کنید :


md5()

خوب به جواب نرسیدید ! الان احتمالا به این شکل باید چک کنید :


md5(md5())

بازم به جواب نرسید ؟
احتمالا این نیست :


md5(md5(md5()))

شایدم این :


md5(md5(md5(md5(md5(md5(md5))))))

به نظرت تا چند مرحله می تونی جلو بری تا به جواب برسی ؟

حالا اگر بگم جواب شاید به این شکل باشه چی ؟


md5(md5().'D:'))


شایدم به این شکل :


md5(md5().')):'))

بحث اسلت و الگوریتم برنامه نویس که از نوع هش استفاده کرده به این سادگی نیست که بگید بله md5 ضعیف است و با چند لپتاپ و بورت فورس مثلا 12 ساعته شکسته میشه !

stackprogramer
چهارشنبه 03 تیر 1394, 23:53 عصر
من داخل تایپیک بالا یی که دادم حرف unique را درحالتی که pepper ندونیم تصدیق کردم،

H:Shojaei
پنج شنبه 04 تیر 1394, 00:15 صبح
داداش اینجا باید از اون کراکر ها شاکی باشی که این کلمات را به کار می برند ،من که اون سایت ها را نزدم،برو با خودشون صحبت کن،ببین چی می گن!
شما بر اساس اسامی تیتری که انتخاب کردن این سایت ها میخواید حرفتون رو پیش ببرید بعد میگین من کاری به اونا ندارم اگر کاری ندارید پس چطور فهمیدین که کاری که اینا میکنن decode هست... !!! ... !!! من دیگه بحثی در این باره ندارم :لبخند:

golbafan
جمعه 05 تیر 1394, 11:57 صبح
بیخیال...

راستی اون که شما (stackprogramer) گفتید "استفاده از روش تورنت" رو بهش میگن پردازش ابری یا cloud processing