حمزه قائم پناه
حمزه قائم پناه
خواندن ۳ دقیقه·۱ سال پیش

مفاهیم امنیت و دستکاری داده نرم‌افزار که باید فرقشون بدونیم

معنی Encode کردن:

به پروسه تبدیل کردن داده از یک فرمت به فرمت دیگه می‌گن. موقع encode کردن دنبال امنیت نیستیم چون غالبا یک فرآیند برگشت‌پذیره، یعنی می‌تونی decode بکنیش تا به فرم اصلیش برگرده. اسکیماهای متداول encode کردن این موارده: Base64, URL encoding, HTML encoding

معنی Encrypt کردن:

به فرآیند تغییر داده به فرمت امن و غیرقابل خوندن به کمک الگوریتم encryption و یک key می‌گن. دلیل اصلیش، حفاظت از داده‌های محرمانه است. فقط کسانی که به کلید decryption دسترسی دارن، می‌تونن به داده اصلی دسترسی پیدا کنن. الگوریتم‌های encryption شامل AES, RSA, DES میشه و ازشون معمولا برای امن کردن دیتاهای حساس مثل اطلاعات کارت اعتباری و داده‌های شخصی در طی انتقال داده یا ذخیره‌سازی استفاده میشه.

معنی Hash کردن:

هش کردن پروسه گرفتن یک ورودی یا پیام و برگردوندن یک رشته از کاراکترهای با طول مشخص هست که معمولا اعداد هگزادسیمال هستن. عملیات هش یک عملیات یک طرفه است، یعنی به سادگی نمیشه پروسه رو معکوس کرد تا به ورودی اولیه هش برسی. هش معمولا برای اعتبارسنجی و تایید صحت اطلاعات استفاده میشه. برای بررسی اینکه آیا داده‌ها دستکاری شده‌ان مفیدن چون هر تغییری در ورودی منجر به تولید یک هش کاملا متفاوت میشه. فانکشن‌های هش مرسوم: MD5, SHA-1, SHA-256 هستن.

معنی Compression کردن:

به معنی پروسه کاهش دادن سایز داده برای اینکه فضای ذخیره سازی کمتری بگیره و یا کارایی انتقال داده رو افزایش بده. این معمولا یک فرآیند برگشت پذیره و می‌تونی داده رو Decompress کنی تا به حالت اولش برگرده.

معنی Salting کردن:

سلتینگ تکنیکی که در هش کردن استفاده میشه تا امنیت پسوردهای هش شده رو افزایش بده. یک مقدار رندوم (salt) به پسورد قبل هش کرد اضافه میشه که باعث میشه چالش بیشتری برای اتکرها ایجاد بشه که از جدول‌های از پیش‌محاسبه شده (rainbow tables) برای شکستن پسوردها استفاده کنن. به طور مثال برای هش کردن پسورد کاربران به ازای هر یوزر باید از salt یکتایی استفاده کرد.

معنی Tokenization کردن:

به پروسه جایگزین کردن اطلاعات حساس با شناسه منحصر به فرد (unique identifier or token) می‌گن. دیتای اصلی امن نگهداری میشه و فقط توکین در سیستمی که به صورت پابلیک هست استفاده میشه تا دردسترس بودن اطلاعات حساس رو کاهش بده.


در ادامه میخوام درباره مفاهیمی که در مواردی که صحبت کردیم به کار میره کمی بیشتر دقیق بشم:

کلید (key) چیه؟

کلید بخشی از اطلاعاته که در الگوریتم‌های رمزنگاری (cryptographic) استفاده میشه تا پروسه رمزگذاری و رمزگشایی رو کنترل کنه و برای این پروسه وجودش ضروریه. دو نوع داره:

  • متقارن (symmetric): در رمزنگاری متقارن، یک کلید واحد برای رمزنگاری و رمزگشایی استفاده میشه.
  • نامتقارن (asymmetric): در رمزنگاری نامتقارن، معمولا یک جفت کلید وجود داره، یکی برای رمزنگاری (public key) و دیگری برای رمزگشایی (private key).

نمک (salt) چیه؟

رندوم دیتایی که تولید و اضافه میشه به ورودی برای توابع رمزگذاری هش، معمولا در کانتکس هش‌کردن پسورد به کار میره تا امنیت پسورد هش شده رو افزایش بده. با salt مطمئن میشیم که حتی اگر دو کاربر رمز یکسانی رو به‌کار ببرن، مقدار هش‌شده شون یکی نخواهد بود.

فلفل (pepper) چیه؟

مشابه salt و یک دیتای رندومه اما به صورت متفاوتی استفاده میشه، معمولا یک مقدار محرمانه‌ است که جدا از دیتای هش‌شده نگهداری میشه. به داده قبل از هش شدن اضافه میشه اما در دیتابیسی که مقدار هش‌شده نگهداری میشه، نگهداری نمیشه. هدفش اینه که یک لایه دیگه امنیت اضافه کنه و اگر مهاجم‌ها به داده هش‌شده دسترسی پیدا کردن، کار رو براشون سخت‌تر کنه.

encodeencrypthashsaltingtokenization
مهندس نرم‌افزار و عاشق توسعه فردی - مهندس نرم‌افزار - اکس هم بنیان‌گذار و مدیرفنی و پرداکت استارتاپ کشمون
شاید از این پست‌ها خوشتان بیاید