PDA

View Full Version : سوال: حفاظت از کلمه عبور با رمز گذاری



mohsen.nsb44
سه شنبه 16 آذر 1389, 19:04 عصر
سلام من می خوام یک سیستم ثبت نام طراحی کنم
همانطور که می دونید برای رمز کردن عمدتا از دو روش md5 , sha1 استفاده می شود .
می خواستم بدونم ایا این روش ها برای رمز کردن مناسب هستند؟ ا(از نظر امنیتی).
و چطور میشه رمز رو دیکود کرد؟




Label1.Text = FormsAuthentication.HashPasswordForStoringInConfig File(TextBox1.Text, "sha1");
Label1.Text = FormsAuthentication.HashPasswordForStoringInConfig File(TextBox1.Text, "md5");



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

PhoenixNet
سه شنبه 16 آذر 1389, 19:19 عصر
سلام

الگوریتم هایی که بالا نوشتید مثل MD5 , SHA1 یک طرفه رمز نگاری می کنند و قابل رمز گشایی نیستند.

این الگوریتم ها قدیمی هستند و براحتی بازیابی می شوند.در این آدرس ملاحظه نمایید

http://sha1.web-max.ca/

برای رمز کردن پسورده از SHA-512 یا SHA-256 استفاده نمایید بهتر است.

hobab-theme
سه شنبه 16 آذر 1389, 20:06 عصر
من یه کامپوننت برای انواع رمزگزاری ها نوشتم. هم قابل بازیابی و هم یکطرفه(غیر قابل بازیابی)

با انواع سطوح رمزنگاری، با امکان تنظیم تعداد کاراکترهای خروجی و تعریف لایه های تودرتو

در صورت تمایل با من تماس بگیرید
mehdi348@gmail.com

موفق باشید

mohsen.nsb44
سه شنبه 16 آذر 1389, 20:20 عصر
سلام

الگوریتم هایی که بالا نوشتید مثل MD5 , SHA1 یک طرفه رمز نگاری می کنند و قابل رمز گشایی نیستند.

این الگوریتم ها قدیمی هستند و براحتی بازیابی می شوند.در این آدرس ملاحظه نمایید

http://sha1.web-max.ca/

برای رمز کردن پسورده از SHA-512 یا SHA-256 استفاده نمایید بهتر است.

میشه کمی در مورد SHA-512 یا SHA-256 و نحوه استفادشون(در سیستم ثبت نام برای رمز عبور ) توضیح بدین

Peyman.Gh
سه شنبه 16 آذر 1389, 21:24 عصر
و چطور میشه رمز رو دیکود کرد؟ الگوریتم های MD5 و SHA1 یک طرفه هستند !

mohsen.nsb44
چهارشنبه 17 آذر 1389, 11:28 صبح
الگوریتم های MD5 و SHA1 یک طرفه هستند !

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

aserfg
چهارشنبه 17 آذر 1389, 13:39 عصر
دوست عزیز تا جایی که من می دونم :
بازیابی مقادیر هش شده توسط دو الگوریتمی که شما گفتی غیر ممکنه ولی برای لوگین کاربر ، شما نیازی به بازیابی مقدار هش شده ندارید . ابتدا با در زمان ثبت نام کاربر ، با همون کدایی که نوشتی هش رو انجام بده و در بانک ذخیره کن و هنگام login کردن کاربر پسورد وارد شده کاربر رو بگیر دوباره هش کن و با مقدار درون بانک مقایسه کن اگه درست بود ....
درسته که بازیابی مقادیر هش شده غیر ممکنه ولی هش یک کلمه خاص مقداری منحصر به فرد است . مثلا برای رشته mehdi و با استفاده از الگوریتم SHA1
D8932FD49BB05FF0670C3545D15547CB7BAAF208


موفق باشید .

mamaliy
چهارشنبه 17 آذر 1389, 14:49 عصر
میشه بگین کسی که خود می خواهد یک فرم login طراحی کند برای رمز کردن کلمه عبور از چه الگوریتمی و چطور باید استفاده بکند؟سلام دوست من.

فكر ميكنم شما براي اين كار هم بايد از هشينگ استفاده كني هم از رمز نگاري.
رمز نگاري براي محافظت اطلاعات از دست افراد بدخواه ، هشينگ براي محرمانه موندن اطلاعات كاربر (حتي از چشم مدير سايت).

قسمتي از پروسه رمز نگاري بايد سمت كلاينت باشه قسمتي هم سمت سرور. ( ssl نمونه كامل اين عرض بنده هست)
بهترين كار اينه كه شما از ssl استفاده كنيد.

اگر نمي خواي اين كار رو انجام بدي خوب خودت بايد رمز نگاري رو در دو طرف (client-server) پياده سازي كني. چون اگه اطلاعات خام(plain Text) به سمت سرور برن روي شبكه قابل شنود هستن. (sniff)
اگه خودت ميخواي اين كار رو انجام بدي بايد سمت كلاينت هش كني! سمت كلاينت رمز نگاري كني! بعد ، سمت سرور از رمز خارج كني و مقدار هش شده رو مورد بررسي قرار بدي كه آيا با رمز مورد نظر (رمزي كه قبلا" هش شده و بعد ذخيره شده) مطابقت ميكنه يا نه.(همون طور كه دوستمون فرمودند "هش یک کلمه خاص مقداری منحصر به فرد است")

بنده يك توضيح كاملتري براي اين عرايضم (همراه با مثال و كد) توي اين پست آوردم .خواستي استفاده كن.
http://barnamenevis.org/showthread.php?255980-%D9%BE%D9%8A%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%D9%8A-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7%D9%8A-%D8%A7%D9%85%D9%86-%D8%A8%D9%8A%D9%86-%D8%B3%D8%B1%D9%88%D8%B1-%D9%88-%D9%83%D9%84%D8%A7%D9%8A%D9%86%D8%AA&highlight=
موفق باشيد.

aserfg
چهارشنبه 17 آذر 1389, 15:55 عصر
بنده يك توضيح كاملتري براي اين عرايضم (همراه با مثال و كد) توي اين پست آوردم .خواستي استفاده كن.دوست عزیز ، اونچه در یک وب سایت بسیار مهمه مقوله ای تحت عنوان performance یا همون کارائی است که کد شما هر چند باعث وجود امنیت می شه ولی چون عملیات رمز گذاری در سمت کلاینت انجام می شه همون جوری که خودتون هم گفتین بسیار زمان بر بوده و حتی مرورگر پیغامی مبنی بر این موضوع می ده . که عملا این سورس رو غیر عملی می کنه . اگر کسی اینقدر به فکر امنیته به جای این کار بهتره از ممبر شیپ خود asp.net استفاده کنه . مقالات بسیار متعددی از لحاظ امنیت تعبیه شده در این کلاس منتشر شده . این کلاس جدا از امنیت نوعی یکپارچگی با وب سرویس ایجاد می کنه که مشکلات احتمالی که در وضعیت سشنها ممکنه اتفاق بیفتن(session state) رو به حداقل می رسونن .
شما برای هش کردن به همون شیوه خودتون و برای اعتبارسنجی نام کاربر و پسورد همونی که توی پست 7 گفتم و برای وجود ارتباطی امن بین کلاینت و سرور(در صورت لزوم ) از پروتوکل https استفاده کنید که کلیه درخواستها و پاسخها( httprequest&httpresponse) به صورت امن صورت گیرند .