PDA

View Full Version : سوال: آیا می شه به کمک سالت و توابع کد کردن قابل بازیابی مثل base64 یه متن طولانی رو هش کرد؟



idocsidocs
دوشنبه 30 آبان 1390, 13:23 عصر
آیا می شه به کمک سالت و توابع کد کردن قابل بازیابی مثل base64 یه رشته رو هش کرد و برای خارج کردن متن از حالت هش شده، از همون سالت و تابع base64 استفاده کرد؟

persian-boy
دوشنبه 30 آبان 1390, 19:10 عصر
یعنی منظورتون اینه که نتونن برگردونن ؟

base64 رو هر کاری کنی میشه بازیابی کرد . فقط میتونید کار رو سخت کنید .

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

idocsidocs
دوشنبه 30 آبان 1390, 19:24 عصر
یعنی منظورتون اینه که نتونن برگردونن ؟ من می خوام که رشته هش رو برگردونن. اما برای امنیت بیشتر از رشته سالت استفاده می کنم تا اگر کسی رشته سالت رو نداشت، نتونه رشته رو از حالت هش خارج کنه.

آیا این روش ایمن هست؟

pejman_view
سه شنبه 01 آذر 1390, 02:13 صبح
سلام

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

شما می توانید هرگونه که می خواهید امنیت دیتابیس خود را حفظ کنید فرضاً چندین بار هش و سالت رو با هم انجام بدی و خودتان هم یک الگوریتم اضافه کنید.

و این ایده خوبی هست.

اما فراموش نکنید در بیشتر سایت ها، هکرها توانستن به دیتابیس سایت و اسکریپت آن دسترسی پیدا کنند پس هرکاری بکنید آنها باز هم می توانند متوجه شوند.

مخلص کلام اینه که امنیت اسکریپت یک طرفه قضیه اس و طرف دیگه امنیت هاست پس باید به هر دوی این ها توجه کنید تا یک سایت نسبتاً ایمن داشته باشید.

با آرزوی موفقیت

eshpilen
سه شنبه 01 آذر 1390, 08:40 صبح
باید بگم در زمینه شکافت یابی (کرک) هیچ چیز غیر ممکن نیست مثلاً همین md5 رو مثال بزنم که زمانی که ساخته شد همه می گفتند شکستن و برگرداندنش غیر ممکن است اما نیازی به شکستن پیدا نشد فقط بعضی از سایت ها با ایجاد دیتابیس های عظیم توانستن کمک کنند تا md5 های نسبتاً ساده پیدا شود.

از ابتدا هم طراحان این الگوریتم ها میدونستن که این روشها برای کرک ممکن هست.
دیتابیس و اینها همه انواعی از حمله های Brute-force محسوب میشن که درمورد هر الگوریتمی امکانپذیر هستند. اما این امکانپذیر بودن به معنای ضعف و شکست اون الگوریتم نیست.
همین md5 که میفرمایید اگر از یک رشتهء تصادفی با تعداد حالتهای بقدر کافی زیاد استفاده کنید، یا از یک سالت قوی (البته درصورتیکه پسورد خیلی ضعیف نباشه)، هیچکدام از این سایتها نمیتونن کرکش کنن (خواستید خودم بهتون یه نمونه میدم ببینید میشه کرک کرد یا نه). اونهایی که کرک میشن اول بخاطر ضعیف بودن خود پسورد و در درجهء دوم عدم استفاده از یک Salt قوی هست. البته قوی بودن پسورد از همه چیز مهمتره و اگر پسورد زیاد ضعیف باشه حتی با سالت هم امنیت بالایی نخواهیم داشت.

البته md5 از نظرهای دیگه هم الگوریتمی شکسته شده بحساب میاد و مدتهاست توصیه شده دیگه ازش استفاده نشه. بنظر بنده حتی برای هش پسورد هم ازش استفاده نکنید.

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

اینکه میگن هش قابل شکسته شدن نیست منظور دربرابر حمله های غیر Brute-force هست. دربرابر حمله های Brute-force هم میشه ایمن بود، اما شرایط ویژهء خودش رو داره. مثلا یه پسورد درپیت تقریبا هیچوقت نمیتونه دربرابر Brute-force خیلی امن بشه. همچنین باید از سالت قوی استفاده کنید. این شرایط اگر رعایت بشن دربرابر Brute-force هم امنیت هست.

ضمنا اگر میخواید هش شما خیلی قوی باشه، bcrypt (http://barnamenevis.org/showthread.php?310375-bcrypt-hash-%DB%8C%DA%A9-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%B4-%DA%A9%D9%87-%DA%A9%D8%B1%DA%A9%D8%B1%D9%87%D8%A7-%D8%B1%D8%A7-%D8%A8%DB%8C%DA%86%D8%A7%D8%B1%D9%87-%D9%85%DB%8C%DA%A9%D9%86%D8%AF%21&highlight=bcrypt) یک نمونه از یک هش فوق امنیتی هست که مخصوص ذخیرهء پسورد کاربران ساخته شده. ولی بازم میگم که بنده نمیگم این هش هیچوقت شکسته نمیشه. امنیت یه مسئلهء نسبی و دینامیکه و در طول زمان باید بر اساسش تغییر کرد. شما هم هر الگوریتمی اختراع بکنید شامل همین ویژگیها میشه. ولی اگر میخواید تا حداکثر ممکن امن باشید، حتما الگوریتم ها و روشهای استاندارد رو همراه با روش خودتون بکار ببرید.
در ضمن بازم تایید میکنم که پسوردهای خیلی ضعیف رو هیچ روشی نمیتونه خیلی حفاظت بکنه. اون مشکل پسورد هست، نه مشکل الگوریتم و روشهای امنیتی استفاده شده.


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

eshpilen
سه شنبه 01 آذر 1390, 08:56 صبح
من می خوام که رشته هش رو برگردونن. اما برای امنیت بیشتر از رشته سالت استفاده می کنم تا اگر کسی رشته سالت رو نداشت، نتونه رشته رو از حالت هش خارج کنه.

آیا این روش ایمن هست؟
این کاری که میخوای بکنی اصلا منطقی نیست. چون راه اصولی خیلی بهتری وجود داره.

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

ضمنا برای «AES128 در مد CBC» کتابخانه و نمونه کد خواستی بگو تا برات بذارم.

idocsidocs
سه شنبه 01 آذر 1390, 10:26 صبح
ضمنا برای «AES128 در مد CBC» کتابخانه و نمونه کد خواستی بگو تا برات بذارم.
بله ممنون می شم اگر نمونه کد ارائه بدید.


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

eshpilen
سه شنبه 01 آذر 1390, 10:34 صبح
بله ممنون می شم اگر نمونه کد ارائه بدید.

انشاا... به زودی بصورت یک تاپیک میذارم.
چون بدرد عموم میخوره و تاحالا از اینطور آموزشها ندیدم.


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

idocsidocs
چهارشنبه 02 آذر 1390, 11:29 صبح
بهع خسته نباشید!!
پس ما رو سرکار گذاشتی یا خودت را؟ :لبخند:
گزینهء دوم: هردو!
تست چی اونوقت؟
به هر حال بعدا این موضوع به درد می خوره.

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

eshpilen
چهارشنبه 02 آذر 1390, 12:10 عصر
به چه دردی؟

idocsidocs
چهارشنبه 02 آذر 1390, 12:30 عصر
به چه دردی؟

بعدا به درد می خوره، الان فقط می خوام بدونم که استفاده از base64 و سالت می تونه امنیت بالاتری نسبت به استفاده تنها از base64 ایجاد کنه یا نه؟

eshpilen
چهارشنبه 02 آذر 1390, 14:54 عصر
بعدا به درد می خوره
پس یادت باشه بعدا بگی.


الان فقط می خوام بدونم که استفاده از base64 و سالت می تونه امنیت بالاتری نسبت به استفاده تنها از base64 ایجاد کنه یا نه؟
نچ!

idocsidocs
شنبه 05 آذر 1390, 01:20 صبح
پس یادت باشه بعدا بگی.
فرض کنید که بخوایم کوکی ها رو هش کنیم و بفرستیم برای کلاینت و وقتی کوکی ها رو دوباره گرفتیم، اونا رو دیکد کنیم.

من برای این موضوع می خوام از این روش استفاده کنم.

این روش مناسب هست؟

eshpilen
شنبه 05 آذر 1390, 09:26 صبح
هش کنی؟
هش کردن دقیقا یعنی چی؟
و برای چی میخوای هش کنی؟

idocsidocs
شنبه 05 آذر 1390, 10:42 صبح
هش کنی؟
هش کردن دقیقا یعنی چی؟
و برای چی میخوای هش کنی؟ یعنی واقعا نمی دونی هش کردن چیه؟:متفکر:
وقتی کوکی رو بصورت معمولی و بدون هش کردن بفرستیم، هکر می تونه این کوکی ها رو بدزده و بخونه. من می خوام وقتی کوکی ها برای کلاینت فرستاده می شن با این روش هش بشه و وقتی به سرور برگشت، اونا رو از حالت هش خارج کنم.

eshpilen
شنبه 05 آذر 1390, 12:10 عصر
والا تاجایی که بنده تاحالا دیدم به رمزنگاری (یعنی بازگشت پذیر) هش کردن گفته نمیشه. هش به چیزهایی مثل md5 میگن که بازگشت پذیر نیست.
از اول هم گفتم اگر میخوای امنیت واقعی داشته باشی خب از رمزنگاری استفاده کن. کتابخانه و آموزشش رو هم که تازگی گذاشتم.

چرا دقیق صحبت نمیکنی؟
خب بگو میخوام رمز کنم. رمزنگاری. اینطوری بدون ابهام و خیلی دقیق‌تر هست.

هش یه چیزه. رمزنگاری یه چیز دیگه. صرفا مخدوش/ناخوانا کردن (که طبیعتا امنیت حرفه ای نداره) یه چیز دیگه.
اگر تعریف معتبری برای این استفاده ای که از اصطلاح هش میکنی سراغ داری معرفی کن خب منم بخونم ببینم شاید درست میگی.

idocsidocs
شنبه 05 آذر 1390, 13:24 عصر
اگر تعریف معتبری برای این استفاده ای که از اصطلاح هش میکنی سراغ داری معرفی کن خب منم بخونم ببینم شاید درست میگی.
من دارم رشته رو هش می کنم، با این تفاوت که خودم یه رشته سالت هم به رشته اصلی اضافه می کنم. تابع base64 براش فرق نمی کنه داره روی چه رشته ای اعمال می شه، اسم این هش کردن هست نه چیز دیگه ای.

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

eshpilen
شنبه 05 آذر 1390, 13:35 عصر
تابع base64 براش فرق نمی کنه داره روی چه رشته ای اعمال می شه، اسم این هش کردن هست نه چیز دیگه ای.

جان؟!! :متعجب:
این تعریف رو از کجا آوردی؟ منبع؟
اینطور باشه که بقیهء توابع هم میشن تابع هش!

تعریف از ویکیپدیا (http://en.wikipedia.org/wiki/Hash_function):

A hash function is any algorithm (http://en.wikipedia.org/wiki/Algorithm) or subroutine (http://en.wikipedia.org/wiki/Subroutine) that maps large data sets (http://en.wikipedia.org/wiki/Data_set) to smaller data sets.

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

این تعریف کوچکترین تناسبی با کار تابع base64 نداره.
base64 هر مجموعهء داده ای بزرگی رو به یک مجموعهء داده ای به همون اندازه نگاشت میکنه.

تازه تعریف هش هایی که در علم رمزنگاری بکار میرن (Cryptographic hash function (http://en.wikipedia.org/wiki/Cryptographic_hash_function)) که خیلی شرایط دیگه هم داره. چون امنیت اینها باید خیلی بالا باشه.

idocsidocs
شنبه 05 آذر 1390, 14:21 عصر
base64 هر مجموعهء داده ای بزرگی رو به یک مجموعهء داده ای به همون اندازه نگاشت میکنه.

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

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


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

eshpilen
شنبه 05 آذر 1390, 15:36 عصر
حالا باید چیکار کرد؟ چون تعریف هش توی توابع مختلف فرق می کنه دیگه نباید از این روش استفاده کنم؟

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


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

لینک این تاپک رو برام بفرست.مگه تاحالا ندیدیش توی تالار؟!!
آموزش استفادهء ساده از رمزنگاری متقارن (AES128-CBC) (http://barnamenevis.org/showthread.php?314829-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%D8%A1-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B1%D9%85%D8%B2%D9%86%DA%AF%D8%A7%D8%B1%DB%8C-%D9%85%D8%AA%D9%82%D8%A7%D8%B1%D9%86-%28AES128-CBC%29)
البته کتابخانهء استفاده شده یه باگ داشت که گزارش کردم و در نسخهء جدید رفع شده. به زودی فایل zip ضمیمه شده رو آپدیت میکنم و اطلاع میدم.

idocsidocs
شنبه 05 آذر 1390, 15:48 عصر
البته کتابخانهء استفاده شده یه باگ داشت که گزارش کردم و در نسخهء جدید رفع شده. به زودی فایل zip ضمیمه شده رو آپدیت میکنم و اطلاع میدم.
باگ رو کجا گزارش کردی ؟

eshpilen
شنبه 05 آذر 1390, 16:33 عصر
اینجا: http://www.frostjedi.com/phpbb/viewtopic.php?f=46&t=26341
تازه قبلا هم یه باگ دیگه پیدا کرده بودم: http://www.frostjedi.com/phpbb/viewtopic.php?f=46&t=26109
اینم یه پیشنهاد که به نسخهء جدید اضافه کردن: http://www.frostjedi.com/phpbb/viewtopic.php?f=46&t=26334

idocsidocs
شنبه 05 آذر 1390, 16:56 عصر
http://www.frostjedi.com (http://www.frostjedi.com/phpbb/viewtopic.php?f=46&t=26341)
این سایت کارش چیه؟

eshpilen
شنبه 05 آذر 1390, 17:13 عصر
اون تالاری که من توش تاپیک زدم فروم پشتیبانی phpseclib هست.
بقیش بنظر نامربوط میاد. ظاهرا مربوط به بازی و اینها میشه.