ایجاد و مدیریت توکن های رمزنگاری قوی با پایتون برای امنیت بهتر برنامه های وب
مدیریت کلید مخفی یک جنبه حیاتی از روال روزانه یک مهندس نرم افزار است. در این مقاله، نحوه ایجاد و مدیریت کلیدهای امن رمزنگاری شده در پایتون با استفاده از ماژول رمزنگاری محبوب Pypi را بررسی خواهید کرد. همچنین اهمیت ذخیره ایمن این کلیدها را برای اطمینان از حداکثر حفاظت از داده های حساس در برنامه های کاربردی وب و نرم افزار خود خواهید آموخت.
پیش نیازها
اگر پایتون را نصب نکرده اید، باید پایتون را روی دستگاه خود نصب کنید. این تنها نیاز خارجی مورد نیاز است. می توانید پایتون را از صفحه دانلودهای رسمی آنها نصب کنید. توصیه می شود برای این آموزش آخرین نسخه پایتون را نصب کنید.
برای پیگیری این آموزش، باید دانشی در مورد نوشتن برنامه های ساده پایتون داشته باشید. تمام بسته هایی که مورد بحث قرار خواهند گرفت از کتابخانه استاندارد پایتون یا مدیر بسته Pypi هستند.
کلیدهای رمزگذاری متقارن ایمن
وقتی صحبت از رمزگذاری و رمزگشایی در پایتون می شود، ماژول رمزنگاری Pypi یک انتخاب محبوب است. یکی از سادهترین و مطمئنترین راهها برای پیادهسازی رمزنگاری متقارن با استفاده از این ماژول، رمزگذاری متقارن Fernet است. با این حال، برای استفاده از کلیدهای Fernet برای رمزگذاری متقارن، آنها باید به طور ایمن تولید و ذخیره شوند.
بیایید شیرجه بزنیم
با ایجاد یک پروژه جدید پایتون شروع کنید و محیط مجازی خود را راه اندازی کنید تا وابستگی های پروژه خود را از وابستگی های جهانی خود جدا کنید.
python -m venv venv
# or
python3 -m venv venv
دستور Python بالا با Python3 امکان پذیر است. اگر در تنظیم این مشکل دارید، اسناد رسمی venv پایتون را بررسی کنید تا در مورد ایجاد یک محیط مجازی بیاموزید.
- محیط ایجاد شده را فعال کنید
# Windows: cmd.exe
venv\Script\activate
# Linux: bash or Mac: zsh
source venv/bin/activate
بسته به پوسته شما، دستور فعال سازی محیط مجازی شما متفاوت خواهد بود. این را بررسی کنید ارجاع برای دستوری که برای پوسته شما کار می کند.
- حالا باید نصب کنید
cryptography
pip install cryptography
اگر با مشکلی در نصب مواجه شدید، می توانید راهنمای نصب آن را بررسی کنید.
وارد پوسته پایتون شوید و دستورات زیر را برای تولید کلید اجرا کنید.
>>> from cryptography.fernet import Fernet
>>> key = Fernet.generate_key()
b'RAuFlYBGswBmBOccV13UNYXxJTi19LCGhUOLZOi6oFY='
ارزش RAuFlYBGswBmBOccV13UNYXxJTi19LCGhUOLZOi6oFY=
در رشته بایت کلید مهم است. به این ترتیب ذخیره می شود زیرا این همان چیزی است که کتابخانه رمزنگاری دوست دارد با آن کار کند. بنابراین، اگر یک کلید جدید در آینده ایجاد کنید، باید قبل از ارسال آن به هر تابع هش، آن را به بایت تبدیل کنید.
آیا Fernet.generate_key() از نظر رمزنگاری امن است؟
پاسخ قاطع است آره!
پیاده سازی متد Fernet.generate_key از تابع os.urandom استفاده می کند که نسبت به تابع تصادفی ماژول تصادفی داخلی، تصادفی کافی بیشتری دارد.
چرا؟ به این دلیل است که os.urandom را نمی توان مانند تصادفی تخمین زد و منبع آنتروپی خود را از بسیاری از منابع غیرقابل پیش بینی استخراج می کند و آن را تصادفی تر می کند. برای درک بیشتر، می توانید این پاسخ StackOverflow را بررسی کنید.
اکنون می توانید از کلید ایجاد شده ایمن خود برای رمزگذاری و رمزگشایی داده ها استفاده کنید.
# Initialize a Fernet object
>>> f = Fernet(key)
# Generate a cryptographically secure and url-safe fernet token
>>> token = f.encrypt(b"Hashnode Neptune is the best")
>>> print(token)
b'gAAAAABkDv-R51WpztocZoMMat3UyKg8jz6KgCQgCq4g9SU36OF7kiPhqQwjLXPT-39lbb5cL-MlUWSmoDLKXlkOZo2Od_Icp_6jPFLDgF32f2r9agrRr50='
شما آن را دارید. شما یک توکن امن ایجاد کرده اید که می توانید از آن برای اطمینان از امنیت داده های خود در پروژه های خود استفاده کنید.
اگر نمی خواهید از تابع generate_key برای ایجاد توکن های Fernet خود استفاده کنید. می توانید از این استفاده کنید منبع تا با استفاده از الگوریتم PBKDF2HMAC توکن ایمن تر و قوی تر تولید کنید.
مدیریت ایمن کلیدهای مخفی خود
برای اطمینان از امنیت کامل، باید کلیدهای خود را ایمن ذخیره کنید. هرگز با کسی به اشتراک نگذارید.
یک راه آسان برای انجام این کار استفاده از Pypi decouple است.
- بیایید با نصب آن در محیط خود شروع کنیم.
pip install python-decouple
- یک فایل ایجاد کنید
.env
در دایرکتوری پروژه شما کلید تولید شده قبلی را به فایل اضافه کنید.
SECRET_KEY="RAuFlYBGswBmBOccV13UNYXxJTi19LCGhUOLZOi6oFY="
فایل را ذخیره کنید.
- یک برنامه پایتون جدید ایجاد کنید،
main.py
، در دایرکتوری پروژه شما. سپس کد اضافه شده در زیر را در فایل قرار دهید.
from decouple import config
SECRET_KEY = config('SECRET_KEY')
print(SECRET_KEY)
را اجرا کنید main.py
برنامه پایتون
python main.py
کلید مخفی ذخیره شده در فایل محیط نمایش داده می شود. Decouple پروژه ای است که برای ذخیره محیط و کلیدهای مخفی استفاده می شود. می توانید در Pypi Decouple بیشتر بخوانید.
چه چیزی این رویکرد را بهتر از استفاده از یک محیط سیستم عامل می کند؟ زیرا به اشتراک گذاری اسرار هنگام همکاری با دیگران آسان تر می شود. آنها فقط باید پروژه را شبیه سازی کنند و آن را کپی کنند .env
فایل.
همچنین، برخورد کلیدهای مشابه در چندین پروژه در یک دستگاه را از بین می برد. به عنوان یک امتیاز، می توانید یک فایل ایجاد کنید env.example
، این فایل حاوی کلیدهای فایل .env واقعی اما با مقادیر جعلی خواهد بود.
پس از آن، همکار شما می تواند؛
-
آنها را ایجاد کنید
.env
فایل، -
محتویات را کپی کنید
env.example
را در آنها ثبت کنید.env
فایل، -
یک کلید مخفی تولید کنید،
-
جایگزین کلید نمونه (جعلی) در
.env
فایل با کلید جدید ایجاد شده
اطمینان حاصل کنید که فراموش نکنید اضافه کنید
.env
فایل به.gitignore
بنابراین به مخزن GitHub شما فشار داده نمی شود و در نتیجه کلیدهای شما آشکار می شود. بهتر است یک نمونه فایل مانندenv.example
که می تواند برای پیگیری کلیدهایی که یک همکار باید هنگام اجرای پروژه در دستگاه خود ایجاد کند، تحت فشار قرار دهد.
استفاده از کتابخانه اسرار داخلی پایتون
از پایتون Documentation: The
secrets
ماژول برای تولید اعداد تصادفی رمزنگاری قوی مناسب برای مدیریت داده هایی مانند رمز عبور، احراز هویت حساب، توکن های امنیتی و اسرار مرتبط استفاده می شود.
از کتابخانه Secrets برای اهداف امنیتی استفاده کنید تا چیزی تصادفی تولید کنید، مانند نشانهها، ارقام یا رشتههای تصادفی. تصادفی بودن آن از نظر رمزنگاری امن است.
ایجاد یک توکن هگز امن
>>> import secrets
>>> secrets.token_hex()
'20a3f7333abd0668e474d393870a0b47463a6935e2eb730343820767eaf77226'
این یک راه ساده برای ایجاد یک توکن بسیار امن است. هر چه توکن طولانیتر باشد، تصادفی بودن کافیتر است.
کارکرد token_hex
یک پارامتر را می پذیرد، n_bytes
، برای چه مدت رمز را می خواهید.
>>> import secrets
>>> secrets.token_hex(64
'5222cffc8c2881afcbf219c90c6e2f3a8b168c7547f790c2e852a047e9f4c8094577d8198a1d802ee053d13987e9111b317a7771c9ce87597a67203311afc69f')
در مستندات پایتون بیشتر بخوانید
اکنون می توانید از توکن های بسیار امن برای پروژه های خود استفاده کنید. این توکن ها می توانند به عنوان یک کلید مخفی در هر پروژه ای مانند جنگو، نود جی اس، گلانگ و غیره استفاده شوند.
ایمن سازی برنامه ها و نرم افزارهای وب نیازمند مدیریت موثر کلیدهای مخفی است. پایتون کتابخانه هایی مانند رمزنگاری و اسرار را ارائه می دهد که فرآیند تولید توکن های امن رمزنگاری را ساده می کند. برای اطمینان از حداکثر محافظت از داده های حساس، ذخیره ایمن این کلیدها با استفاده از ابزارهایی مانند Pypi Decouple و AWS Secrets Manager بسیار مهم است. با رعایت بهترین شیوه ها برای مدیریت کلیدهای مخفی، توسعه دهندگان می توانند امنیت پروژه های خود را تضمین کنند و از دسترسی غیرمجاز به اطلاعات حساس جلوگیری کنند.
-
الگوریتم های رمزنگاری – ابتدایی
-
خزانه های رمز عبور
-
مدیر اسرار AWS
من را در توییتر دنبال کنید @netrobeweb، Hashnode و Dev.to جایی که من پروژه ها و مقالات شگفت انگیزی را پست می کنم.
ممنون که خواندید، 🤓😊