با سلام و عرض تبریک به مناسبت شروع سال جدید
در مباحث امنیت, همیشه امنیت بر 3 پایه استوار هست :
حالا محرمانگی چی هست ؟
به طور ساده به معنای این هست که اطلاعات خاص فقط و فقط باید در اختیار افرادی قرار بگیره که به اونها مجوز داده شده .
خوب مسلما زمانی که شما بسته ای رو یا پیامی رو در بستر شبکه ارسال می کنید, این بسته ممکنه شنود بشه و به جز فردی که قرار هست اطلاعات بهش برسه به فرد شنود کننده هم برسه و یه عبارت plaintext یا cleartext در اختیار فرد قرار بگیره (منظور متن ساده هست)
برای جلوگیری از این اتفاقات, رمزنگاری یا cryptography رو به وجود آوردن. در واقع ابتدا رمزنگاری برای موارد نظامی در جنگ ها استفاده می شد و بعد ها با تکامل شبکه و اهمیت محرمانگی, رمزنگاری رو توی موارد دیگه هم بسط دادن (توضیحات بیشتر در مورد قدمت رمزنگاری رو می تونید توی موتورهای جستجو سرچ کنید)
رمزنگاری در حالت کلی 2 نوع داره :
در متقارن (یا همون سنتی) از یک کلید خصوصی برای رمز کردن و رمز گشایی استفاده میشه ولی در رمزنگاری نامتقارن از یک زوج کلید استفاده میشه, کلید عمومی که در اختیار همگان هست و کلید خصوصی که باید محرمانه باقی بمونه. در حالت کلی رمزنگاری به معنای این هست که روی متن واضح اعمالی رو انجام بدیم (توابع ریاضی و ...) که به یه متن غیر خوانا و نا مفهوم برای دیگران تبدیل بشه.
اما سوالی که اینجا مطرح میشه این هست که چرا با وجود رمزنگاری متقارن, رمزنگاری نامتقارن رو ایجاد کردن؟
در حالت کلی چند تا دلیل میشه بیان کرد, مثلا یکی از دلایل, توزیع این کلید خصوصی بود. یعنی شما و دوستتون اگر میخواستید یه گفتگوی رمز شده در بستر نا امن شبکه داشته باشید, و دوستتون هم مثلا توی آمریکا زندگی میکرد, باید میرفتید آمریکا و به صورت حضوری کلید خصوصی رو منتقل میکردید (از طریق تلفن و ... نمیشد چون امن نبود) . حالا اگر با 6 نفر دیگه هم میخواستین همین کار رو بکنید باید 6 جای مختلف دیگه هم میرفتید و باز برای هر کدوم هم یک کلید خصوصی دیگه تولید میکردید .حالا فکر کنید اگر این ارتباطات قرار باشه بین 1 میلیون نفر انجام بشه چه اتفاقی میوفته, حالا اگر این ۱ میلیون نفر هم بخوان با هم ارتباط داشته باشن چی میشه ؟! تقریبا نشدنی هست این کار . یعنی هر کسی باید میلیون ها کلید داشته باشه که بتونه با دیگران صحبت کنه و این کلید ها هم حتما باید محرمانه بمونه.
برای رفع این مشکل رمزنگاری نامتقارن رو ایجاد کردن بدین صورت که هر فردی کلا 2 تا کلید داره, کلید عمومی خودش رو در اختیار همگان قرار میده و کلید خصوصی رو هم نزد خودش محرمانه نگه میداره. دیگران با کلید عمومی من رمز میکنن و بسته رو برام ارسال میکنن و منم با کلید خصوصیم که فقط نزد خودم هست اون متن رو رمزگشایی میکنم.
مبحث رمزنگاری به شدت شیرین و قشنگ هست و همچنین به شدت گسترده و دشوار، مواردی که خدمتتون بیان کردم فقط یه توضیح کلی در مورد رمزنگاری بود که فقط یه آشنایی کلی ازش پیدا کنید. اگر علاقه به یادگیریش دارید باید منابع زبان اصلی رو تهیه کنید و شروع به مطالعه کنید.
رمزنگاری به جز مواردی که در بالا خدمتتون عرض کردم کاربردهای دیگه ای هم داره, مثل امضای دیجیتال, data integrity و source integrity که انشاالله اگر عمری باشه قدم به قدم با هم میریم جلو و این مبحث رو یاد میگیریم.
سعی میکنم در کنار توضیحات, رمزنگاری هایی رو هم با زبان اسکریپتی پایتون براتون بذارم که راحت تر بتونین درک کنین.
در مباحث امنیت, همیشه امنیت بر 3 پایه استوار هست :
- محرمانگی
- جامعیت و صحت داده و مبدا
- دسترس پذیری
حالا محرمانگی چی هست ؟
به طور ساده به معنای این هست که اطلاعات خاص فقط و فقط باید در اختیار افرادی قرار بگیره که به اونها مجوز داده شده .
خوب مسلما زمانی که شما بسته ای رو یا پیامی رو در بستر شبکه ارسال می کنید, این بسته ممکنه شنود بشه و به جز فردی که قرار هست اطلاعات بهش برسه به فرد شنود کننده هم برسه و یه عبارت plaintext یا cleartext در اختیار فرد قرار بگیره (منظور متن ساده هست)
برای جلوگیری از این اتفاقات, رمزنگاری یا cryptography رو به وجود آوردن. در واقع ابتدا رمزنگاری برای موارد نظامی در جنگ ها استفاده می شد و بعد ها با تکامل شبکه و اهمیت محرمانگی, رمزنگاری رو توی موارد دیگه هم بسط دادن (توضیحات بیشتر در مورد قدمت رمزنگاری رو می تونید توی موتورهای جستجو سرچ کنید)
رمزنگاری در حالت کلی 2 نوع داره :
- متقارن
- نامتقارن
در متقارن (یا همون سنتی) از یک کلید خصوصی برای رمز کردن و رمز گشایی استفاده میشه ولی در رمزنگاری نامتقارن از یک زوج کلید استفاده میشه, کلید عمومی که در اختیار همگان هست و کلید خصوصی که باید محرمانه باقی بمونه. در حالت کلی رمزنگاری به معنای این هست که روی متن واضح اعمالی رو انجام بدیم (توابع ریاضی و ...) که به یه متن غیر خوانا و نا مفهوم برای دیگران تبدیل بشه.
اما سوالی که اینجا مطرح میشه این هست که چرا با وجود رمزنگاری متقارن, رمزنگاری نامتقارن رو ایجاد کردن؟
در حالت کلی چند تا دلیل میشه بیان کرد, مثلا یکی از دلایل, توزیع این کلید خصوصی بود. یعنی شما و دوستتون اگر میخواستید یه گفتگوی رمز شده در بستر نا امن شبکه داشته باشید, و دوستتون هم مثلا توی آمریکا زندگی میکرد, باید میرفتید آمریکا و به صورت حضوری کلید خصوصی رو منتقل میکردید (از طریق تلفن و ... نمیشد چون امن نبود) . حالا اگر با 6 نفر دیگه هم میخواستین همین کار رو بکنید باید 6 جای مختلف دیگه هم میرفتید و باز برای هر کدوم هم یک کلید خصوصی دیگه تولید میکردید .حالا فکر کنید اگر این ارتباطات قرار باشه بین 1 میلیون نفر انجام بشه چه اتفاقی میوفته, حالا اگر این ۱ میلیون نفر هم بخوان با هم ارتباط داشته باشن چی میشه ؟! تقریبا نشدنی هست این کار . یعنی هر کسی باید میلیون ها کلید داشته باشه که بتونه با دیگران صحبت کنه و این کلید ها هم حتما باید محرمانه بمونه.
برای رفع این مشکل رمزنگاری نامتقارن رو ایجاد کردن بدین صورت که هر فردی کلا 2 تا کلید داره, کلید عمومی خودش رو در اختیار همگان قرار میده و کلید خصوصی رو هم نزد خودش محرمانه نگه میداره. دیگران با کلید عمومی من رمز میکنن و بسته رو برام ارسال میکنن و منم با کلید خصوصیم که فقط نزد خودم هست اون متن رو رمزگشایی میکنم.
مبحث رمزنگاری به شدت شیرین و قشنگ هست و همچنین به شدت گسترده و دشوار، مواردی که خدمتتون بیان کردم فقط یه توضیح کلی در مورد رمزنگاری بود که فقط یه آشنایی کلی ازش پیدا کنید. اگر علاقه به یادگیریش دارید باید منابع زبان اصلی رو تهیه کنید و شروع به مطالعه کنید.
رمزنگاری به جز مواردی که در بالا خدمتتون عرض کردم کاربردهای دیگه ای هم داره, مثل امضای دیجیتال, data integrity و source integrity که انشاالله اگر عمری باشه قدم به قدم با هم میریم جلو و این مبحث رو یاد میگیریم.
سعی میکنم در کنار توضیحات, رمزنگاری هایی رو هم با زبان اسکریپتی پایتون براتون بذارم که راحت تر بتونین درک کنین.