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

I.NoBody

Active Member
سلام.
http://passcracking.com/index.php
لطفاً آدرس فوق رو ببینید. یه کد hash شده رو بهش بدید، دیکد شده بر می گردونه و حتی بهتون میگه چجوری هش شده؟!!!!
نمی دونم این مساله برای من جدیده یا واقعاً عجیبه؟:sad:
 
سلام
این سایت برای شما تازه هست
خیلی وقته که این جور سایتها هستند(بیش از 5-6 سال) تا اونجایی که میدونم

یکیش هم برای سایت معروفه میلورم هست
http://www.milw0rm.com/cracker/
 

mahdi-vb

Member
اگر رمز hash رو فقط خودت داشته باشی فکر نکنم مشکلی بوجود بیاد من خودم یه کلاس PHP نوشتم که مثلا a رو تبدیل میکنه به !* و A رو تبدیل میکنه به $* و .. رمز این کلمات پیش منه و کسی نمیتونه این ها رو بدزده .
 

EMIRATES

Active Member
با سلام

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

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

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

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

با تشکر.
 
به یاد او::

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

اگه جایی از صحبتهای من رو نیاز داشتید که بیشتر توضیح بدم مطرح کنید.
 

parsiteam

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

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

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

برای امنیت من این راه رو پیشنهاد میکنم . مثلا وقتی هش میکنی 2 حرف اول + 5 حرف آخر رو بردار بقیشو ول کن . بعد دوباره این 7 حرف رو هش کن . اینجوری امکان بدست آوردش 0 میشه . آخه کسی هم که نمیدونه شما از چه روشی استفاده کردی .
 

my friend

Member
برای امنیت من این راه رو پیشنهاد میکنم . مثلا وقتی هش میکنی 2 حرف اول + 5 حرف آخر رو بردار بقیشو ول کن . بعد دوباره این 7 حرف رو هش کن . اینجوری امکان بدست آوردش 0 میشه . آخه کسی هم که نمیدونه شما از چه روشی استفاده کردی .
حوصله توضیح ندارم... ولی این روش، بدترین روش هست!
اصلا توصیه نمیکنم از این روش استفاده کنید.... اصلا!!!
 

EMIRATES

Active Member
به یاد او::

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

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

با سلام

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

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


با تشکر.
 

I.NoBody

Active Member
عزیزم اینگونه سایت ها در اصل بهشون میگن کتاب خانه هش . یعنی اومده مثلا 1000000 کلمه رو هش کرده ریخته توی دیتابیسش بعد وقتی شما در خواست میدی اون میره و هش رو از توی دیتابیس پیدا میکنه و میاره به شما کلمه اصلیشو نشون میده .

تازه این کارو دستی هم انجام نمیدن . مثلا میان از Aaaaaaaa تا Zzzzzzzz تمام حالات رو برنامه نویسی میکنن بعد میگن از A تا Z تمام حالاتی که میشه یک کلمه 8 حرفی نوشت رو وارد دیتابیس کن .

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

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

my friend

Member
amirkhoshhal گفت:
سلام . می شه بگید چرا این روش بدترین روش هست ؟ ممنون
ببخشید امیر جون، خیلی وقت بود به اینجا سر نزده بودم...
مثلا:
(برای ساده شدن مثال فرض میکنیم مقدار هش، یک استرینگ 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 بدست نمیتونه بیاره...

خب، خیلی حرف زدم... فعلا!
 
آخرین ویرایش:

foranyone

Well-Known Member
اگر رمز hash رو فقط خودت داشته باشی فکر نکنم مشکلی بوجود بیاد من خودم یه کلاس php نوشتم که مثلا a رو تبدیل میکنه به !* و a رو تبدیل میکنه به $* و .. رمز این کلمات پیش منه و کسی نمیتونه این ها رو بدزده .


بهترین روش اینه نه الگوریتم های تکراری!
 

Amenocy

Member
بله درسته اینا کتاب خانه هستن ..ولی خب کمی هم رو هش کار میکنن مثلا 10 دقیقه اگه پیدا شد که شد اگه نشد میگه نمیشه..
 

my friend

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

بهرحال، استفاده از الگوریتم هایی مثل md5, sha1 و امثالهم رو من و خیلی های دیگه ترجیح میدیم، چون امتحانشون رو از نظر خطا پس دادند و
تنها مشکلشون همین دیکشنری ها هستن که با روشی که گفتم به سادگی حل میشه.
 
آخرین ویرایش:

Dark-M4N

Member
هم کتابخونه یب هش هست هم یه الگوریتم ئه که ام دی 5 های ساده رو دیکد میکنه(اسکریپت میلورم اینو داشت کدشم پیدا کنم میزارم)

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

مثلآ

md5(x).sha1(x)

موفق باشی
 

Dark-M4N

Member
هم کتابخونه یب هش هست هم یه الگوریتم ئه که ام دی 5 های ساده رو دیکد میکنه(اسکریپت میلورم اینو داشت کدشم پیدا کنم میزارم)

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

مثلآ

md5(x).sha1(x)

موفق باشی
 

ziXet

مدیر انجمن PHP/MYSQL
نمیدونم چرا شما اینقدر پیچیدش میکنی!

خیلی راحت میشه یجوری هش کرد که خداترین هکر ها هم نتونن درش بیارن!
مثل این:
PHP:
md5(base64_encode(md5($str).sha1($str)))
میشه هم یه prefix هم براش در نظر گرفت.
 

my friend

Member
نمیدونم چرا شما اینقدر پیچیدش میکنی!
خیلی راحت میشه یجوری هش کرد که خداترین هکر ها هم نتونن درش بیارن!
طرز تفکر هر کسی فرق داره...
وقتی طول مقدار برگشتی بیشتر باشه، از امنیت بیشتری برخورداره. چون همیشه ممکنه دو مقدار 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، اگه کار رو درست انجام بدیم ممکنه بعدا دوباره کارفرما باز هم سفارش بده به برنامه نویس یا اگه کسی نیاز به برنامه نویس داشته باشه و به اون کارفرما مراجعه کنه، ایشون برنامه نویس خودشون رو معرفی کنه.

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

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

با تشکر.
 

جدیدترین ارسال ها

بالا