یعنی امنیت hashing به خطر افتاده؟

شروع موضوع توسط I.NoBody ‏2 جولای 2008 در انجمن برنامه‌نویسی با PHP

کلمات کلیدی:
  1. I.NoBody

    I.NoBody Active Member

    ارسال‌ها:
    1,157
    تشکر شده:
    365
    امتیاز دستاورد:
    36
    سلام.
    http://passcracking.com/index.php
    لطفاً آدرس فوق رو ببینید. یه کد hash شده رو بهش بدید، دیکد شده بر می گردونه و حتی بهتون میگه چجوری هش شده؟!!!!
    نمی دونم این مساله برای من جدیده یا واقعاً عجیبه؟:sad:
     
    نوشته شده توسط I.NoBody در ‏2 جولای 2008
  2. Yashar_Iran

    Yashar_Iran Member

    ارسال‌ها:
    158
    تشکر شده:
    47
    امتیاز دستاورد:
    16
    سلام
    این سایت برای شما تازه هست
    خیلی وقته که این جور سایتها هستند(بیش از 5-6 سال) تا اونجایی که میدونم

    یکیش هم برای سایت معروفه میلورم هست
    http://www.milw0rm.com/cracker/
     
    نوشته شده توسط Yashar_Iran در ‏2 جولای 2008
  3. mahdi-vb

    mahdi-vb Member

    ارسال‌ها:
    99
    تشکر شده:
    8
    امتیاز دستاورد:
    6
    اگر رمز hash رو فقط خودت داشته باشی فکر نکنم مشکلی بوجود بیاد من خودم یه کلاس PHP نوشتم که مثلا a رو تبدیل میکنه به !* و A رو تبدیل میکنه به $* و .. رمز این کلمات پیش منه و کسی نمیتونه این ها رو بدزده .
     
    نوشته شده توسط mahdi-vb در ‏2 جولای 2008
  4. EMIRATES

    EMIRATES Active Member

    ارسال‌ها:
    2,151
    تشکر شده:
    1,046
    امتیاز دستاورد:
    36
    با سلام

    امنیت هش هنوزم که هنوزه 100%‌.

    برای دوبله کردن امنیت هم میتونید یک رمز رو 2 بار هش کنید !‌(مثل ویبولتین)

    تا دیگه غیر قابل نفوذ بشه!

    نمونش همینه که الان دارین توش مینیویسین.

    با تشکر.
     
    نوشته شده توسط EMIRATES در ‏3 جولای 2008
    amirkhoshhal از این پست تشکر کرده است.
  5. amir-haghighi

    amir-haghighi Member

    ارسال‌ها:
    331
    تشکر شده:
    65
    امتیاز دستاورد:
    16
    به یاد او::

    کاملا درست و منطقی گفتید امنیت هش همچنان بر قراره.

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

    این تیکه رو اصلا خوب نگفتی چون هیچ وقت همچین چیزی امکان نداره.


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

    شما ها که فکر نمیکنید از مایکروسافت حرفه ای تر هستید؟!!!!


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

    یادمه قدیما که نحوه نوشتن کدهای مخرب(اکسپلویت نویسی با c) رو تمرین میکردم روش هایی رو از هکرها یاد میگرفت که وقتی خودم میخواستم با php کد بنویسم میموندم چطوری بنویسم که حفره نداشته باشه.

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

    نمونش یکی از دوستان ایرانی بود که برای phpbb2 مد تاریخ شمسی نوشته بود.و برای سایت سازنده فرستاده بود اونها هم کلی تغییرات روی کد داده بودند.خوب فکر میکنید برای چی این کار رو کرده بودند؟

    یه پیشنهاد دوستانه برای اونهایی که میخوان حرفه ای و قدرتمند کد بنویسن (البته خودم رو هنوز php نویس حرفه ای نمیدونم) اینه که حتما به دنبال مقالاتی بگردند که نحوه پیدا کردن حفره های امنیتی رو در برنامه های php یاد میده .این طوری یه کم با امنیت بیشتر کد مینیویسید.

    همین طور از برنامه های کد باز مثل phpbb و غیره استفاده کنید و سعی کنید شیوه کد نویسی خودتون رو به روز نگه دارید.

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

    در ضمن فکر نکنید که vbulettin قدرتمنده ها.آدرس بدید سایت هک شده رو تحویل بگیرید:D

    یادمه که یه نفر که خیلی ادعای امنیت میکرد و میگفت که 1 میلیون تومان به کسی که به سرور های ما نفوذ کنه میدیم .آقای x نامی انجمنش رو که اتفاقآ وی بی بود رو هک کرد و فیلم آموزشیش رو هم روی سایت آشیانه گذاشته بود.

    کاش سایت سیمرغ هنوز به کارش ادامه میداد و از دوستان فوق حرفه ای ما در اون سایت کمک میگرفتید.

    من خودم برای نگه داشتن امنیت اطلاعات اونها رو به کمک یک سناریویی که در ذهن خودم دارم 2 بار اینکد بندیش میکنم و بعد از توابع هش استفاده میکنم.

    اگه جایی از صحبتهای من رو نیاز داشتید که بیشتر توضیح بدم مطرح کنید.
     
    نوشته شده توسط amir-haghighi در ‏4 جولای 2008
  6. amirkhoshhal

    amirkhoshhal Member

    ارسال‌ها:
    471
    تشکر شده:
    134
    امتیاز دستاورد:
    16
    منتظر مقالاتتون هستم !
     
    نوشته شده توسط amirkhoshhal در ‏4 جولای 2008
  7. parsiteam

    parsiteam Member

    ارسال‌ها:
    336
    تشکر شده:
    130
    امتیاز دستاورد:
    16
    عزیزم اینگونه سایت ها در اصل بهشون میگن کتاب خانه هش . یعنی اومده مثلا 1000000 کلمه رو هش کرده ریخته توی دیتابیسش بعد وقتی شما در خواست میدی اون میره و هش رو از توی دیتابیس پیدا میکنه و میاره به شما کلمه اصلیشو نشون میده .

    تازه این کارو دستی هم انجام نمیدن . مثلا میان از aaaaaaaa تا zzzzzzzz تمام حالات رو برنامه نویسی میکنن بعد میگن از a تا z تمام حالاتی که میشه یک کلمه 8 حرفی نوشت رو وارد دیتابیس کن .

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

    برای امنیت من این راه رو پیشنهاد میکنم . مثلا وقتی هش میکنی 2 حرف اول + 5 حرف آخر رو بردار بقیشو ول کن . بعد دوباره این 7 حرف رو هش کن . اینجوری امکان بدست آوردش 0 میشه . آخه کسی هم که نمیدونه شما از چه روشی استفاده کردی .
     
    نوشته شده توسط parsiteam در ‏5 جولای 2008
    EMIRATES و amirkhoshhal از این پست تشکر کرده اند.
  8. my friend

    my friend Member

    ارسال‌ها:
    277
    تشکر شده:
    117
    امتیاز دستاورد:
    16
    حوصله توضیح ندارم... ولی این روش، بدترین روش هست!
    اصلا توصیه نمیکنم از این روش استفاده کنید.... اصلا!!!
     
    نوشته شده توسط my friend در ‏6 جولای 2008
  9. amirkhoshhal

    amirkhoshhal Member

    ارسال‌ها:
    471
    تشکر شده:
    134
    امتیاز دستاورد:
    16
    سلام . می شه بگید چرا این روش بدترین روش هست ؟ ممنون
     
    آخرین ویرایش: ‏6 جولای 2008
    نوشته شده توسط amirkhoshhal در ‏6 جولای 2008
  10. EMIRATES

    EMIRATES Active Member

    ارسال‌ها:
    2,151
    تشکر شده:
    1,046
    امتیاز دستاورد:
    36
    با سلام

    ویبولتین نسخه های قدیمش ( 3.6.7 یه باگ پیدا کرده بود که آقای (اسکورپیون) اونو تو همه انجمنهای هک گذاشته بود ولی نکته خنده دارش اینجا بود که در همه فیلم های آموزشی که میزاشتن فقط تا مرحله پیدا کردن "ام دی 5" جلو میرفتن و میگفتن که زمان میبره(این درست) ولی تاحالا من به شخصه که تو کل انجمنهای هک از قبیل (‌" سیمرغ ای وی - آشیانه - دلتا و... رو زیر و رو کردم") فیلم , اثر , یا .... رو از انجمن وی بی (کلا!)هک شده ندیدم.
    ==============

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


    با تشکر.
     
    نوشته شده توسط EMIRATES در ‏6 جولای 2008
  11. I.NoBody

    I.NoBody Active Member

    ارسال‌ها:
    1,157
    تشکر شده:
    365
    امتیاز دستاورد:
    36
    فکر نمی کنم اینطور باشه
     
    نوشته شده توسط I.NoBody در ‏6 جولای 2008
  12. parsiteam

    parsiteam Member

    ارسال‌ها:
    336
    تشکر شده:
    130
    امتیاز دستاورد:
    16
    ولی من مطمئنم که اینا کتابخونه هش هستند نه تبدیل کننده . بازم میتونید از پیش کسوتای این فروم بپرسید .
     
    نوشته شده توسط parsiteam در ‏6 جولای 2008
  13. my friend

    my friend Member

    ارسال‌ها:
    277
    تشکر شده:
    117
    امتیاز دستاورد:
    16
    ببخشید امیر جون، خیلی وقت بود به اینجا سر نزده بودم...
    مثلا:
    (برای ساده شدن مثال فرض میکنیم مقدار هش، یک استرینگ 15 بایتی هست که در عمل روش کار یکی هست)
    من یه کلمه عبور برای خودم انتخاب میکنم: lfiasdfihi
    مقدار هش این کلمه عبور مثلا: 156fsf489sg48g4
    خب، شما مثلا 7 تا از این حروف و اعداد هش رو بر میداری: 16s8g84 که مثلا مقدار هشش میشه: a539tfsh14s6e2
    خب، من username ام مثلا my friend هست، اشتباهی تایپ میکنم myfriend (بدون فاصله میانی)
    که البته یه نفر با همین نام کاربری myfriend بدون فاصله ثبت نام کرده و مقدار هش کلمه عبورش: 1d6js4y83fgj824.
    حالا وقتی کلمه عبور رو وارد میکنم، شما 7 تا از این حروف رو بر میداری که اگه مکان حروف رو با مثال قبلی مقایسه کنیم، مقدار 16s8g84 در هر دو هش در یک مکان قرار داره.... خب، بالطبع مقدار هش ثبت شده در دیتابیس برای این دو اکانت برابر میشه و من خیلی راحت وارد اکانت یکی دیگه میشم!! و اون هم میتونه با کلمه عبورش وارد اکانت من بشه!!
    یا اینکه هکر میتونه یه برنامه بنویسه تا مقادیر random به جای پسورد من با سرعت وارد کنه و به دلیل مشابه ، در کمتر از چند دقیقه میتونه وارد اکانت من بشه که این زمان از حالت معمولی و استفاده از مقدار md5 کامل خیلی خیلی کمتر زمان میبره.

    من پیشنهاد میکنم مقدار sha1 و md5 رو با هم مخلوط کنید!
    اینطوری یک استرینگ با طول 72 دارید که امنیت بالاتری نسبت به md5 و sha1 به تنهایی داره!
    برای مثال:
    (برای ساده شدن مثال زیر فرض میکنیم طول هش، 3 هست که در عمل روش کار یکی هست)
    پسورد من که lfiasdfihi بود، مقدار md5 اش 752 هست و مقدار sha1 اش 9sg هست، حالا اینها رو با یک قاعده خاص با هم ترکیب میکنیم و مقدار 92s5g7 بدست میاد که نه sha1 هست و نه md5 و طولش از هر دو بیشتر هست و بالطبع امنیت بالاتری داره.

    البته خلاقیت هم باید اینجور مواقع وجود داشته باشه، مثلا استفاده از الگوریتم های تابع hash که به روش فوق با هم مخلوط بشن، استفاده از مقدار معروف به salt، مثلا از تابع ()time موقع ثبت نام استفاده کنیم و از این مقدار بجای salt استفاده کنیم. اینطوری چیز جالبی میشه و مقدار salt برای هر کاربر تغییر پیدا میکنه و هکر نمیتونه اونو بدست بیاره(مگه اینکه به پایگاه داده دسترسی داشته باشه که دیگه همه این کارها بی فایده هست!!) یا اینکه اگه شما دارید سیستمی مینویسید که روی سرورهای مختلف نصب میشه (مثل VB, PHPBB, MT و غیره) برای انتخاب حروف ، بصورت رندوم و اختصاصی همون سیستم استفاده کنید. مثلا موقع نصب سیستم، شما بصورت تصادفی اینها رو بچینید: یکبار مقدار 752 و 9sg که به ترتیب برای md5 و sha1 هست رو به صورت 92s5g7 مخلوط کنید، و دفعه بعد ، موقع نصب سیستم بصورت g9s275 مخلوط کنید. اینطوری اگه سورس سیستم هم دست هکر بیوفته، چون بصورت رندوم مقادیر با هم ادغام میشن و برای هر سایت فرق داره، هکر عملا نمیتونه کاری بکنه و مقدار md5 یا sha1 اصلی رو از 92s5g7 بدست نمیتونه بیاره...

    خب، خیلی حرف زدم... فعلا!
     
    آخرین ویرایش: ‏1 سپتامبر 2008
    نوشته شده توسط my friend در ‏1 سپتامبر 2008
    eAmin و amirkhoshhal از این پست تشکر کرده اند.
  14. foranyone

    foranyone Well-Known Member

    ارسال‌ها:
    1,414
    تشکر شده:
    609
    امتیاز دستاورد:
    113

    بهترین روش اینه نه الگوریتم های تکراری!
     
    نوشته شده توسط foranyone در ‏1 سپتامبر 2008
  15. Amenocy

    Amenocy Member

    ارسال‌ها:
    231
    تشکر شده:
    54
    امتیاز دستاورد:
    16
    بله درسته اینا کتاب خانه هستن ..ولی خب کمی هم رو هش کار میکنن مثلا 10 دقیقه اگه پیدا شد که شد اگه نشد میگه نمیشه..
     
    نوشته شده توسط Amenocy در ‏1 سپتامبر 2008
  16. my friend

    my friend Member

    ارسال‌ها:
    277
    تشکر شده:
    117
    امتیاز دستاورد:
    16
    :foranyone@
    این روشی که آقا مهدی گفت و شما نقل قول کردید ، بهش hash نمیگن و encode کردن نام داره که decode کردن هم کاری نداره، فقط کافیه کمی با علم رمزنگاری آشنایی داشت... پس امنیت چندانی نداره.
    hash یک روش رمزنگاری هست که امکان رمز گشایی نداره، به همین علت امنیت بیشتری داره.

    بهرحال، استفاده از الگوریتم هایی مثل md5, sha1 و امثالهم رو من و خیلی های دیگه ترجیح میدیم، چون امتحانشون رو از نظر خطا پس دادند و
    تنها مشکلشون همین دیکشنری ها هستن که با روشی که گفتم به سادگی حل میشه.
     
    آخرین ویرایش: ‏1 سپتامبر 2008
    نوشته شده توسط my friend در ‏1 سپتامبر 2008
  17. Dark-M4N

    Dark-M4N Member

    ارسال‌ها:
    236
    تشکر شده:
    131
    امتیاز دستاورد:
    16
    هم کتابخونه یب هش هست هم یه الگوریتم ئه که ام دی 5 های ساده رو دیکد میکنه(اسکریپت میلورم اینو داشت کدشم پیدا کنم میزارم)

    ولی بهتری شما 2 تا رو بهم بچسبونی

    مثلآ

    md5(x).sha1(x)

    موفق باشی
     
    نوشته شده توسط Dark-M4N در ‏1 سپتامبر 2008
  18. Dark-M4N

    Dark-M4N Member

    ارسال‌ها:
    236
    تشکر شده:
    131
    امتیاز دستاورد:
    16
    هم کتابخونه یب هش هست هم یه الگوریتم ئه که ام دی 5 های ساده رو دیکد میکنه(اسکریپت میلورم اینو داشت کدشم پیدا کنم میزارم)

    ولی بهتری شما 2 تا رو بهم بچسبونی

    مثلآ

    md5(x).sha1(x)

    موفق باشی
     
    نوشته شده توسط Dark-M4N در ‏1 سپتامبر 2008
  19. ziXet

    ziXet مدیر انجمن PHP/MYSQL

    ارسال‌ها:
    1,707
    تشکر شده:
    979
    امتیاز دستاورد:
    36
    نمیدونم چرا شما اینقدر پیچیدش میکنی!

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

    md5(base64_encode(md5($str).sha1($str)))
    میشه هم یه prefix هم براش در نظر گرفت.
     
    نوشته شده توسط ziXet در ‏2 سپتامبر 2008
  20. my friend

    my friend Member

    ارسال‌ها:
    277
    تشکر شده:
    117
    امتیاز دستاورد:
    16
    طرز تفکر هر کسی فرق داره...
    وقتی طول مقدار برگشتی بیشتر باشه، از امنیت بیشتری برخورداره. چون همیشه ممکنه دو مقدار x و y در الگوریتم md5 یا sha1 مقدار مشابه برگردونند، اما اینکه x و y هر دو، در الگوریتم های md5 و sha1 مقدار مشابه داشته باشند، بسیار بسیار کمتر هست. برای همین از هر دو الگوریتم بهتره استفاده کنیم.
    اینی هم که میگم کاراکترهاشون با هم ادغام بشن برای اینه که اگه این دو تا رو کنار هم بزاریم ($str = md5($str).sha1($str)) جدا کردنشون کاری نداره، مقدار md5 یا 32 کاراکتر اول هست، یا 32 کاراکتر آخر، اما اگه ادغام بشن جدا کردن md5 و sha1 سخت میشه.

    PHP:

    /**
     * Calculate hash of string using md5 & sha1.
     *
     * @param bool[optional] $str
     * @return string The hash as 72-character hexadecimal number
     */

    function hashI($str = ''){
        $str .= 'salt';
        $str = md5($str).sha1($str);
       
        return  $str{40}.$str{41}.$str{42}.$str{43}.$str{44}.$str{45}.$str{46}.$str{47}.$str{48}.$str{49}.
                $str{20}.$str{21}.$str{22}.$str{23}.$str{24}.$str{25}.$str{26}.$str{27}.$str{28}.$str{29}.
                $str{0}.$str{1}.$str{2}.$str{3}.$str{4}.$str{5}.$str{6}.$str{7}.$str{8}.$str{9}.$str{71}.$str{70}.
                $str{30}.$str{31}.$str{32}.$str{33}.$str{34}.$str{35}.$str{36}.$str{37}.$str{38}.$str{39}.
                $str{10}.$str{11}.$str{22}.$str{13}.$str{14}.$str{15}.$str{16}.$str{17}.$str{18}.$str{19}.
                $str{60}.$str{61}.$str{62}.$str{63}.$str{64}.$str{65}.$str{66}.$str{67}.$str{68}.$str{69}.
                $str{50}.$str{51}.$str{52}.$str{53}.$str{54}.$str{55}.$str{56}.$str{57}.$str{58}.$str{59}
                ;
    }

    /**
     * Calculate hash of string using md5, base64 & sha1
     *
     * @param bool[optional] $str
     * @return string The hash as 32-character hexadecimal number
     */

    function hashII($str){
        $str .= 'salt';
        return md5(base64_encode(md5($str).sha1($str)));
    }
     
    پس در مثال بالا ، ()hashI امنیت بیشتری نسبت به ()hashII داره...

    ===

    برای من فرقی نداره که شما و ایشون از کدوم روش استفاده کنید، اصلا پسورد رو مستقیم وارد دیتابیس بکنید یا نکنید برای من فرقی نداره... اما توصیه میشه که همیشه باید از الگوریتمی استفاده کرد که پیچیده تر هست و برای decrypt کردن زمان+حوصله بیشتری نیاز داشته باشه و این کار باعث میشه:
    1) امنیت سیستم رو بالا بره و لازم نیست بعد از مدتی کارفرما رو سر برنامه نویس خراب بشه که آره، سیستمت باگ داره و پولم رو پس بده و خسارت بده و از اینجور موارد.
    2) با توجه به مورد 1، اگه کار رو درست انجام بدیم ممکنه بعدا دوباره کارفرما باز هم سفارش بده به برنامه نویس یا اگه کسی نیاز به برنامه نویس داشته باشه و به اون کارفرما مراجعه کنه، ایشون برنامه نویس خودشون رو معرفی کنه.

    در ضمن، وجدان اخلاقی و کاری میگه که تا جایی که امکان داره کاری که بهمون محول شده رو بی عیب و نقص انجام بدیم...

    ===
    در مورد سوال تاپیک جواب دادم، مثالی هم نوشتم، فکر میکنم بحث کردن دیگه بی فایده باشه...
    من دیگه تو این تاپیک پست نمیدم پس سوالی ازم نپرسید.

    با تشکر.
     
    نوشته شده توسط my friend در ‏2 سپتامبر 2008
    eAmin و amirkhoshhal از این پست تشکر کرده اند.

به اشتراک بگذارید