انجمنهای فارسی اوبونتو
جامعه کاربران => کافه اوبونتو => نویسنده: مرتضی . م در 07 تیر 1401، 02:37 بظ
-
سلام
برای کارهای معمول (مثل ورود به سیستم و اینا) سیستم عامل میاد رمز ها رو هش می کنه و خب هش رمز ها رو چک میکنه.
ولی برنامه هایی که در واقع third party هستند. (مثل همین برنامه های مدیریت ایمیل و اینا) چجوری رمز رو نگه میدارن؟ هش که نمیکنن. از الگوریتم های رمز نگاری برگشت پذیر استفاده میکنن؟ خب وقتی open source هستن الگوریتم لو نمیره و نمیشه که رمز اصلی ایمیل رو پیدا کرد؟
-
گیری از دستهکلید گنوم استفاده میکنه. تاندربرد سازوکار خودش رو داره.
الگوریتمشون هم چیز مخفیای نیست. در واقع اگه از الگوریتمهای مرسوم استفاده نکنی برای رمزنگاری، حتماً برنامهات مشکل امنیتی خواهد داشت.
-
سلام.
...
خب وقتی open source هستن الگوریتم لو نمیره و نمیشه که رمز اصلی ایمیل رو پیدا کرد؟
سلام
چرا رمز لو بره؟ اصلا توی کدوم مرحله ممکنه لو بره که این حرف رو میزنید؟
-
سلام.
...
خب وقتی open source هستن الگوریتم لو نمیره و نمیشه که رمز اصلی ایمیل رو پیدا کرد؟
سلام
چرا رمز لو بره؟ اصلا توی کدوم مرحله ممکنه لو بره که این حرف رو میزنید؟
فرض کنید رمز من 1234 هست.
خب این برنامه ها باید رمز رو یه جایی ذخیره کنن. مطمئنا نمیان که توی یه فایل ۱۲۳۴ رو بنویسن! احتمالا اول رمزش می کنن بعد یه جا میزارنش مثلا فرض کنید رمز می کنه و میزاره تو فایل pass.
خب منی که به یه طریقی تونستم به سیستم یکی دیگه دسترسی پیدا کنم، خیلی راحت میتونم اون متن رمز شده رو ببینم(فرض کنید دسترسی فیزیکی دارم مثلا) از طرفی چون کد برنامه رو دارم، الگوریتم رمز گشایی هم میدونم. خب میتونم متن رمز شده رو رمزگشایی کنم و به ۱۲۳۴ اصلی برسم.
گیری از دستهکلید گنوم استفاده میکنه. تاندربرد سازوکار خودش رو داره.
الگوریتمشون هم چیز مخفیای نیست. در واقع اگه از الگوریتمهای مرسوم استفاده نکنی برای رمزنگاری، حتماً برنامهات مشکل امنیتی خواهد داشت.
درسته الگوریتم های مرسوم به دلایل خوبی مرسوم هستند!
خب الان این مشکلی که گفتم پیش نمیاد؟
این که اون دوتا برنامه رو گفتم برای مثال بود.. یه مثال بهتر که الان به ذهنم رسید، همین فایرفاکس هست... مثلا رمز ایمیل من رو یه جایی ذخیره کنه.. خب من وقتی هم متن رمز شده رو دارم هم الگوریتم رمز گشایی رو، رمز اصلی رو دارم دیگه
-
نه دیگه مگه به همین راحتیه که شما برید تو فایل و رمزش رو باز کنید ؟
بستگی به الگوریتمش داره
مثلا یادمه توی گنو کلا رمز یک طرفست و به غیر از خود سیستم عامل کس دیگه ای نمیتونه بخونش
-
اصلاٍ رمزنگاری برای این انجام میشه که نشه از متن رمز شده به رمز خام رسید!
-
خب وقتی open source هستن الگوریتم لو نمیره و نمیشه که رمز اصلی ایمیل رو پیدا کرد؟
خیر نمیشه. به قول جناب بهزادی:
اصلاٍ رمزنگاری برای این انجام میشه که نشه از متن رمز شده به رمز خام رسید!
مثلا همین هش کردن، وقتی شما رمز ورود رو داخل برنامه میزنین، برنامه هش میکنه و با رمز هش شده قبلی مقایسه میکنه و اگر یکی بودن یعنی رمز درسته. پس بازم رمز اصلی مشخص نیست چیه.
-
نه دیگه مگه به همین راحتیه که شما برید تو فایل و رمزش رو باز کنید ؟
بستگی به الگوریتمش داره
مثلا یادمه توی گنو کلا رمز یک طرفست و به غیر از خود سیستم عامل کس دیگه ای نمیتونه بخونش
حرفت تقریبا درسته. حالا شاید «خیلی راحت» نه ولی در نهایت اگر به سیستم کسی دسترسی فیزیکی داشته باشی و اونم رمز رو جایی ذخیره کرده باشه تو در نهایت میتونی بهش دسترسی داشته باشی. در نهایت هرطوری هم که اون ۱۲۳۴ رمزگذاری بشه، در نهایت وقتی قراره مثلا تاندربرد اونو برای یه سرور بفرسته خب باید بدونه که ۱۲۳۴ بوده. در نتیجه کاری که می کنه اینه که اون ۱۲۳۴ رو با یه کلید که خودش داره رمز می کنه و نگه می داره. حالا اگر تو لازمش داری باید بیای اون کلید رو برداری و باهاش رمز رو باز کنی و به ۱۲۳۴ برسی.
کاری که دسته کلید گنوم و غیره می کنن، اینه که باز شدن رمز رو وابسته به یه رمز اصلی دیگه هم می کنن که خب معمولا همون پسورد لاگین تو است. این یه مرحله کار رو سخت تر می کنه و حتی اگر به کامپیوتر دسترسی فیزیکی پیدا کنی، برای باز کردن مرکز کلیدها، نیازمند یه پسورد هستی.
اما در نهایت حرفت درسته چون اگر من قراره به عنوان یه برنامه، بالاخره یه جوری به رمز برسم و بفرستمش برای یه سرور، تو هم می تونی با همون روش ها به اون رمز برسی ولی به جای فرستادن برای سرور، بنویسیش توی یک فایل (: اما راه حل چیه؟
۱. راه حل اول امن کردن فیزیکی سرورها است. دسترسی فیزیکی به معنی دسترسی به این رمزها هم هست.
۲. کنار گذاشتن این مدل رمزها. مثلا الان گوگل دیگه این مدل لاگین رو قبول نمی کنه. گیت هاب هم اخیرا دسترسی از طریق یوزرنیم پسورد رو محدود کرده. راه حل بهتر اینه که تاندربرد بگه «من تاندربرد هستم روی این ماشین خاص و می خوام بعد از ارائه رمزنگاری خودم، به ایمیل های فلانی دسترسی پیدا کنم» بعد گوگل یه جوری مطمئن می شه تو خودت هستی (مثلا پسورد می زنی یا موبایلت رو اوکی می کنی و ...) و بعد گوگل یه توکن می ده به تاندربرد و با اون توکن فقط اون تاندربرد [تازه شاید فقط از اون کامپیوتر / آی پی / .. ] می تونه به اون موضوع دسترسی داشته باشه. چیزهایی مثلا Oauth2 و بعدی ها (:
-
مثلا یادمه توی گنو کلا رمز یک طرفست و به غیر از خود سیستم عامل کس دیگه ای نمیتونه بخونش
این حالت هدفشه دیگه... من میگم چطور به این هدف میرسه؟ اگه منظورت هش و ایناست سوال رو اشتباه متوجه شدی! ما میخوایم بتونیم یه جوری به متن اولیمون برسیم که اگه هش کنیم باید خوابشو ببینیم ;D
مثلا همین هش کردن، وقتی شما رمز ورود رو داخل برنامه میزنین، برنامه هش میکنه و با رمز هش شده قبلی مقایسه میکنه و اگر یکی بودن یعنی رمز درسته. پس بازم رمز اصلی مشخص نیست چیه.
گفتم هش قضیش جداست! ما برای ورود به سیستم عامل کافیه که چک کنیم رمزمون یکی هست یا نه ولی مسئله من جایی هست که برنامه نیاز داره متن اصلی رو بتونه پیدا کنه.
حرفت تقریبا درسته. حالا شاید «خیلی راحت» نه ولی در نهایت اگر به سیستم کسی دسترسی فیزیکی داشته باشی و اونم رمز رو جایی ذخیره کرده باشه تو در
۱. راه حل اول امن کردن فیزیکی سرورها است. دسترسی فیزیکی به معنی دسترسی به این رمزها هم هست.
۲. کنار گذاشتن این مدل رمزها. مثلا الان گوگل دیگه این مدل لاگین رو قبول نمی کنه. گیت هاب هم اخیرا دسترسی از طریق یوزرنیم پسورد رو محدود کرده. راه حل بهتر اینه که تاندربرد بگه «من تاندربرد هستم روی این ماشین خاص و می خوام بعد از ارائه رمزنگاری خودم، به ایمیل های فلانی دسترسی پیدا کنم» بعد گوگل یه جوری مطمئن می شه تو خودت هستی (مثلا پسورد می زنی یا موبایلت رو اوکی می کنی و ...) و بعد گوگل یه توکن می ده به تاندربرد و با اون توکن فقط اون تاندربرد [تازه شاید فقط از اون کامپیوتر / آی پی / .. ] می تونه به اون موضوع دسترسی داشته باشه. چیزهایی مثلا Oauth2 و بعدی ها (:
یعنی همین ssh گیتهاب (و خیلی جاها) و یا app password ها ؟
ممنونم من جوابمو گرفتم :)