PDA

View Full Version : گفتگو: بهترین روش برای قفل گذاری برنامه با قابلیت تغییر رمز



c-sharp_South
پنج شنبه 03 اسفند 1391, 18:18 عصر
سلام.
توی برنامه برنامه برای قفل گذاشتن برای ورود به برنامه از چه روشی بهتره استفاده کرد؟
میخوام قابلیت تغییر کلمه ی عبور هم برای کاربر وجود داشته باشه.
هرچی فکرش میکنم از Registery اون روشی که من بلدم امنیت برنامه خیلی پایینه و یک سری
مشکلات خاص خودش رو داره. :متفکر:
نظر بقیه دوستان برای تعبیه کردن رمز برای ورود به برنامه با قابلیت تغییر آن توسط کاربر چه روشی بهتره؟ :اشتباه:

danialafshari
پنج شنبه 03 اسفند 1391, 18:32 عصر
سلام
از رجیستری که نمیشه استفاده کرد برای اینکار
چون اگه روی یه سیستم دیگه انتقال بده در رجیستری سیستم مقابل که ثبت نیست
بهتره از دیتابیس استفاده کنی و رمز اون رو Encrypt کنی
موفق باشی

c-sharp_South
پنج شنبه 03 اسفند 1391, 19:45 عصر
danialafshari (http://barnamenevis.org/member.php?68467-danialafshari) نمونه پروژه ندارین؟

danialafshari
پنج شنبه 03 اسفند 1391, 19:59 عصر
danialafshari (http://barnamenevis.org/member.php?68467-danialafshari) نمونه پروژه ندارین؟

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

RED-C0DE
پنج شنبه 03 اسفند 1391, 19:59 عصر
در اکثر برنامه ها ، ذخیره ی رمز عبور بصورت hash شده در دیتابیس (مثلا MD5 و یا یک مرحله بیشتر و Salty کردن اون) ، نیاز رو برآورده می کنه.

شما چ چیز بیشتری مد نظرتون هست؟ در چ سناریو و برنامه ایی؟
این مطلب رو مطالعه کنید (http://crackstation.net/hashing-security.htm)


همونطور ک گفتم برای بیشتر برنامه ها این روش جوابگو هست. اما استفاده از یک مکانیزم hashing یکطرفه شاید در بعضی جاها ک حساسیت بالاست جوابگو نباشه. بعلت وجود جداول رنگین کمان (http://en.wikipedia.org/wiki/Rainbow_table) !
میتونین خودتون هم امتحان کنید، مثلا : http://www.onlinehashcrack.com/

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

حالا فرض کنیم شما یک کرکر هستید و ب یکسری رمز عبور هش شده (ب هر طریق و متدی ، sql injection , sniffing, session hijacking, sideJacking , ...) دسترسی پیدا کردید ، یا باید بشینید خودتون حساب کنید با برنامه ها و ابزارهای مختلف (مثل L0PHT cracker (http://www.l0phtcrack.com/) , John The Ripper (http://www.openwall.com/john/) , ...) ک بسته ب سرعت و قدرت سیستم شما (یا اگر بصورت distributed هم کار کنید شاید شانس بیارید چند سالی سریعتر جواب بگیرید) با روشهای مختلف مثل DictionaryAttack , BruteForce , HybridAttack , ... ممکنه چند روز و ماه و سال طول بکشه، یا از این مخازن عظیــــــــــــــــم RainbowTable ها استفاده کنید.

HashText خودتون رو بهش بدین و PlainText تحویل بگیرین! البته خب باید اون کلمه قبلا هش شده باشه و در این مخازن ثبت شده باشه.

برای همین می گن ک ب هش خودتون یک عبارت دیگه هم (در حالت سادش) اضافه کنید تا "نمکی" (Salted) بشه و از دست این RainbowTable ها در امان بمونید.
جدا از اینا، تو این روال،‌یک keyloger همه ی معادلات رو برهم می زنه ب راحتی! ک اونجا فکرای دیگه ای باز می شه کرد...

----
پ.ن: بیشتر جاهایی ک صحبت از هش شد در این پست،‌منظور MD5 بود