PDA

View Full Version : الگوریتم های کد گذاری در PHP و بازگشایی کدها



ashokri.nll
جمعه 13 تیر 1393, 15:39 عصر
سلام
چندتا تاپیک بود که میگفتن توش الگوریتم هایی مثل md5و sha1 و ... لو رفته از دوهفته پیش دارم دربارش تحقیق میکنم و چیزی رو دیدم که فهمیدم داستان چیه ؟
"داستان این بود که اینا کدها رو تو کتابخونشون ذخیره میکنن و فیلد دیکد رو از قبل ذخیره میکنن و نمایش میدن و هیچ کاری درباره ی دیکد انجام نمیدن یعنی راهی جز این هم نداره ."

به نظرم افتاد من هم این کارو بکنم یه کار کوچولو کردم میخام بدونم چه طور شده ؟

حذف شد

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

#Elahe#
جمعه 13 تیر 1393, 16:12 عصر
این بحث قبلا هم تو انجمن مطرح شده و نتیجه هم همینی بوده که شما دو هفته دنبالش رفته اید

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

رشته ی ورودی : 21232f297a57a5a743894a0e4a801fc3
تو سایت اعداد رو فارسی مینویسه

aalmair
جمعه 13 تیر 1393, 16:35 عصر
وب سایت مورد نظر 100 سال هم ازش بگذره کارایی نداره . بهتره بجای اینکه کاربر رشته ی مورد نظر را در بانک اطلاعاتی ثبت کنه ، رشته رو به صورت خودکار ایجاد و هش مورد رو ثبت کنید .

#Elahe#
جمعه 13 تیر 1393, 17:28 عصر
بهتره خودتون یه تکه کد بنویسید و بندازید رو سرور اجرا بشه که خودش خودکار رشته تولید کنه و به دیتابیس اضافه کنه

ashokri.nll
شنبه 14 تیر 1393, 17:13 عصر
مرسی از توجهتون .
1 ) کاراکتر ها حتما انگلیسی میشه .
2 ) اگر توجه کرده باشید گفتم این ساده بود قراره تعداد 1 میلیون رکورد اضافه بشه اونم به صورت خودکار ولی هنوز در حال تحقیقم ببینم رمز عبورهای استفاده شده بیشر تو چه رنجی هستن همین جوری نمیشه این کارو کرد این تعداد هم که تو بانک هست رو بقیه اضافه کردن من فقط 10 تا برای تست اضافه کردم و همشو بقیه گذاشتن .
ولی بعد از افزودن توسط خود سرور بهتره مکانی باشه که جدید هم کاربر بتونه اضافه کنه


حالا از اینا بگذریم خوب شد یا نه ؟؟

Mohammadsgh
شنبه 14 تیر 1393, 22:40 عصر
این لینک (http://fa.wikipedia.org/wiki/%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%AF%D8%A7%D8%B1%D 8%AF_%D8%B1%D9%85%D8%B2%D9%86%DA%AF%D8%A7%D8%B1%DB %8C_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87)ه بد نیست نگاه کنید:لبخندساده:

rezaonline.net
یک شنبه 15 تیر 1393, 01:26 صبح
چرا از اعداد استفاده نمیکنید ؟
از 1 تا n را هش کنید و در دیتابیس ذخیره کنید .
چون طول هش تولیدی یکسان هست احتمال یکسان بودن هش دو تا پسورد زیاده پس اگه روی اعداد فقط مانور بدید میتونید نسبتا بانک خوبی داشته باشید .
:)

emadrezvani
یک شنبه 15 تیر 1393, 08:35 صبح
یه نگاهی هم به لینک های زیر بندازید بد نیست:
http://en.wikipedia.org/wiki/Rainbow_table

و:
http://www.onlinehashcrack.com/
http://www.hashkiller.co.uk/
https://www.cloudcracker.com/
http://www.hash-cracker.com/
http://www.md5online.org/
http://rainbowtables.it64.com/
.....

ashokri.nll
یک شنبه 15 تیر 1393, 11:21 صبح
بازم مرسی از توجه همه به تاپیک !:تشویق:


چرا از اعداد استفاده نمیکنید ؟
از 1 تا n را هش کنید و در دیتابیس ذخیره کنید .
چون طول هش تولیدی یکسان هست احتمال یکسان بودن هش دو تا پسورد زیاده پس اگه روی اعداد فقط مانور بدید میتونید نسبتا بانک خوبی داشته باشید .
:)

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

ashokri.nll
یک شنبه 15 تیر 1393, 11:23 صبح
بازم مرسی از توجه همه به تاپیک !:تشویق:


چرا از اعداد استفاده نمیکنید ؟
از 1 تا n را هش کنید و در دیتابیس ذخیره کنید .
چون طول هش تولیدی یکسان هست احتمال یکسان بودن هش دو تا پسورد زیاده پس اگه روی اعداد فقط مانور بدید میتونید نسبتا بانک خوبی داشته باشید .
:)

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


یه نگاهی هم به لینک های زیر بندازید بد نیست:
http://en.wikipedia.org/wiki/Rainbow_table

و:
http://www.onlinehashcrack.com/
http://www.hashkiller.co.uk/
https://www.cloudcracker.com/
http://www.hash-cracker.com/
http://www.md5online.org/
http://rainbowtables.it64.com/
.....

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

eshpilen
یک شنبه 15 تیر 1393, 11:42 صبح
دوستانی که دیدن دیگه تاپیک هایی برای دیکد یا لورفتن نسازن چون واقعا خنده داره و غیر از این هم راهی نداره پس خودتون رو اذیت نکنین و تو کاراتون راحت استفاده کنید با خیال جمع و تو کارتون پیچیدگی ایجاد نکنین .
در ارتباط با استفاده از md5 و sha1 برای هش پسورد مسئله این نیست که تونستن این الگوریتم رو بشکنن و به سادگی (بصورت مستقیم) هش رو به رشتهء اولیه برگردونن، بلکه مسئلهء اصلی اینه که این الگوریتم ها بسیار سریع هستن و نیاز به منابع سخت افزاری ناچیزی دارن و میتونن در سخت افزارهایی مثل GPU یا FPGA هم براحتی پیاده سازی و اجرا بشن و به این ترتیب بسیار سریعتر و بهینه تر اجرا بشن.
وقتی کرکر بتونه به این راحتی و با هزینهء بسیار کم، در هر ثانیه میلیاردها رشته رو هش کنه، در نتیجه میتونه در هر ثانیه هش میلیاردها پسورد ممکن رو محاسبه و تست کنه، و این برای امنیت اصلا خوب نیست!
در نتیجه اومدن و الگوریتم های مخصوص هش پسورد رو طراحی کردن که بسیار کندتر هستن و به منابع سخت افزاری بسیار بیشتری نیاز دارن و بالا بردن سرعت اونا به میزان زیاد، بسیار پرهزینه و دور از دسترس است. از این نوع الگوریتم ها مثل bcrypt و scrypt.
اون سایتهایی هم که دیتابیس هش های md5 رو دارن خب بخاطر همین سرعت بالا و منابع سخت افزاری ارزان و در دسترس هم بوده که تونستن تعداد بسیار زیادی هش رو محاسبه کنن. وگرنه اگر میتونن عمرا یک چنان دیتابیس های عظیمی رو با bcrypt تهیه کنن! شاید شدنی باشه، اما با صرف هزینه و/یا زمان بسیار بیشتری! بهرحال هم هرچقدر که دیتابیس هش های md5 بتونه حداکثر بزرگ باشه (مثلا فرض کنید بزرگترین دیتابیس موجود یا قابل ایجاد در دنیا در حال حاضر که عملی باشه)، حداکثر تعداد هش های موجود در دیتابیسی از هش های bcrypt یا scrypt چند هزار برابر یا چند صد هزار برابر کوچکتر خواهد بود، و این به معنای احتمال کمتر و تعداد کمتر پسوردهای کرک شده است.
ضمنا Brute-force بصورت Real time هم که همیشه یک تهدید محسوب میشه که باید درنظر گرفت. یعنی تولید هش پسوردهای ممکن در همون زمان کرک.

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

eshpilen
یک شنبه 15 تیر 1393, 12:29 عصر
شاید بگید خب من از یه روشی مثل این استفاده میکنم:

$hash=md5(sh1(md5($salt.$password)).sh1($password) .$salt)
و حالا کی میتونه اینو کرک کنه؟

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

خب حالا که فرض میکنیم کرکر الگوریتم استفاده شده رو دقیقا میدونه، میاد و این الگوریتم رو بصورت بهینه (احتمالا با زبانی مثل C) که با حداکثر سرعت ممکن اجرا بشه مینویسه (نیازی هم نداره که همهء بخشها رو خودش بنویسه، چون طبیعتا کدها و کتابخانه های حاوی پیاده سازیهای بسیار بهینه و سریع برای الگوریتم های هش مثل md5 و sha1 از قبل موجود و در دسترس است)، و اگر بخواد، برای چند برابر افزایش سرعت بیشتر میتونه از پردازش روی GPU (کارت گرافیک) یا حتی FPGA استفاده کنه.
خب حالا کرکر قادر است که هش پسوردهای احتمالی رو با حداکثر سرعت ممکن تولید کنه، که این تعداد به حداقل چند میلیارد هش در هر ثانیه میرسه، و بنابراین کرکر قادر است که در هر ثانیه چند میلیارد پسورد ممکن رو تست کنه. و این یعنی یک فاجعهء امنیتی!

البته ما فرض رو بر این گذاشتیم که این طرف کرکر آدم با سواد و با انگیزه ای است که میتونه همهء این کارها رو انجام بده. و البته از نظر حرفه ای بازم لازمه که شما این فرض رو داشته باشید، چون واقعا چنین آدمها و تشکیلاتی وجود داشتن، دارن، و یا حداقل امکان وجودشون همیشه هست و ممکنه در آینده یکیشون به هر علتی طرف معاملهء شما بشه!!

البته همهء اینا در نهایت با این فرض بود که برنامه نویس و هدف و برنامه و اهمیت امنیت در اون در اون حدی هست که سرش به تنش بیارزه :لبخند:
که البته شاید بیش از 50% برنامه نویسان، برنامه ها، و سایتها و اطلاعات در این حد حرفه ای نبوده و اهمیت نداشته باشن!
حالا میخواید کار حرفه ای کنید، راهش اینه، ولی اگر هم نکنید، به احتمال زیاد هیچوقت براتون مسئلهء جدی ایجاد نمیکنه، مگر اینکه کار و اهمیت امنیت درش واقعا مهم باشه.

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

پس میبینید که چرا فرضهایی که برای امنیت حرفه ای ذکر میکنم اهمیت دارن و امنیت اصولی چرا تاجای ممکن نباید بر ابهام و تصور و حدس و خوشبینی صرف استوار باشه.

ashokri.nll
یک شنبه 15 تیر 1393, 12:52 عصر
eshpilen (http://barnamenevis.org/member.php?148005-eshpilen)
مطالبی که گفتید صحیح ولی وقتی چندتا سایت خارجی همین کار رو انجام میدن بد نیست ما هم یه همچین کاری کنیم و همچین کتابخونه ای داشته باشیم .
برای دیکد مستقیم هم به نظر من باید تعدادی وقت بزارن و ماه ها کار کنن تا به نتیجه برسن تا بتونن مثلا

$hash=md5(sh1(md5($salt.$password)).sh1($password) .$salt)
رو دیکد کنن .
حالا بحث سر اینه که این ابزاره که خوبه یا نه ، نه بحث روی نوع دیکد .


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

MRmoon
یک شنبه 15 تیر 1393, 13:04 عصر
در ارتباط با استفاده از md5 و sha1 برای هش پسورد مسئله این نیست که تونستن این الگوریتم رو بشکنن و به سادگی (بصورت مستقیم) هش رو به رشتهء اولیه برگردونن، بلکه مسئلهء اصلی اینه که این الگوریتم ها بسیار سریع هستن و نیاز به منابع سخت افزاری ناچیزی دارن و میتونن در سخت افزارهایی مثل GPU یا FPGA هم براحتی پیاده سازی و اجرا بشن و به این ترتیب بسیار سریعتر و بهینه تر اجرا بشن.


درود.

هیچوقت به این مورد دقت نکرده بودم.

با زبان C امدم یه تستی بزنم.

از عدد 1 تا 500000 رو هش کردم 180 ثانیه طول کشید. اونم با این کامپیوتر قدیمی و استفاده از Qt:چشمک:

محمد.

eshpilen
دوشنبه 16 تیر 1393, 08:29 صبح
eshpilen (http://barnamenevis.org/member.php?148005-eshpilen)
برای دیکد مستقیم هم به نظر من باید تعدادی وقت بزارن و ماه ها کار کنن تا به نتیجه برسن
دیکد مستقیم امکان پذیر نیست! یعنی به این راحتی ها که شما فکر میکنید نیست.
سالهاست متخصصان رمزنگاری نتوانسته اند این کار را بصورت موثری انجام دهند، هرچند در موارد خاص و الگوریتم های ضعیفی مثل md5 شاید ممکن شود.

ashokri.nll
دوشنبه 16 تیر 1393, 15:51 عصر
دیکد مستقیم امکان پذیر نیست! یعنی به این راحتی ها که شما فکر میکنید نیست.
سالهاست متخصصان رمزنگاری نتوانسته اند این کار را بصورت موثری انجام دهند، هرچند در موارد خاص و الگوریتم های ضعیفی مثل md5 شاید ممکن شود.

پس تنها راحش همینه که با این ابزار ها بشه دیکد کرد .

ashokri.nll
سه شنبه 17 تیر 1393, 19:03 عصر
دوستان ابزار رو اشتراک گذاشتم همه بگیرن خیلی ساده هست ولی به نظرم باید ما ایرانی ها هم یه خورده فعالیتمونو بیشتر کنیم .


حذف شد
نظر یا پیشنهادی بود اعلام کنید قصد توسعه ی این اسکریپت ساده رو دارم .