به پروسه تبدیل کردن داده از یک فرمت به فرمت دیگه میگن. موقع encode کردن دنبال امنیت نیستیم چون غالبا یک فرآیند برگشتپذیره، یعنی میتونی decode بکنیش تا به فرم اصلیش برگرده. اسکیماهای متداول encode کردن این موارده: Base64, URL encoding, HTML encoding
به فرآیند تغییر داده به فرمت امن و غیرقابل خوندن به کمک الگوریتم encryption و یک key میگن. دلیل اصلیش، حفاظت از دادههای محرمانه است. فقط کسانی که به کلید decryption دسترسی دارن، میتونن به داده اصلی دسترسی پیدا کنن. الگوریتمهای encryption شامل AES, RSA, DES میشه و ازشون معمولا برای امن کردن دیتاهای حساس مثل اطلاعات کارت اعتباری و دادههای شخصی در طی انتقال داده یا ذخیرهسازی استفاده میشه.
هش کردن پروسه گرفتن یک ورودی یا پیام و برگردوندن یک رشته از کاراکترهای با طول مشخص هست که معمولا اعداد هگزادسیمال هستن. عملیات هش یک عملیات یک طرفه است، یعنی به سادگی نمیشه پروسه رو معکوس کرد تا به ورودی اولیه هش برسی. هش معمولا برای اعتبارسنجی و تایید صحت اطلاعات استفاده میشه. برای بررسی اینکه آیا دادهها دستکاری شدهان مفیدن چون هر تغییری در ورودی منجر به تولید یک هش کاملا متفاوت میشه. فانکشنهای هش مرسوم: MD5, SHA-1, SHA-256 هستن.
به معنی پروسه کاهش دادن سایز داده برای اینکه فضای ذخیره سازی کمتری بگیره و یا کارایی انتقال داده رو افزایش بده. این معمولا یک فرآیند برگشت پذیره و میتونی داده رو Decompress کنی تا به حالت اولش برگرده.
سلتینگ تکنیکی که در هش کردن استفاده میشه تا امنیت پسوردهای هش شده رو افزایش بده. یک مقدار رندوم (salt) به پسورد قبل هش کرد اضافه میشه که باعث میشه چالش بیشتری برای اتکرها ایجاد بشه که از جدولهای از پیشمحاسبه شده (rainbow tables) برای شکستن پسوردها استفاده کنن. به طور مثال برای هش کردن پسورد کاربران به ازای هر یوزر باید از salt یکتایی استفاده کرد.
به پروسه جایگزین کردن اطلاعات حساس با شناسه منحصر به فرد (unique identifier or token) میگن. دیتای اصلی امن نگهداری میشه و فقط توکین در سیستمی که به صورت پابلیک هست استفاده میشه تا دردسترس بودن اطلاعات حساس رو کاهش بده.
در ادامه میخوام درباره مفاهیمی که در مواردی که صحبت کردیم به کار میره کمی بیشتر دقیق بشم:
کلید بخشی از اطلاعاته که در الگوریتمهای رمزنگاری (cryptographic) استفاده میشه تا پروسه رمزگذاری و رمزگشایی رو کنترل کنه و برای این پروسه وجودش ضروریه. دو نوع داره:
رندوم دیتایی که تولید و اضافه میشه به ورودی برای توابع رمزگذاری هش، معمولا در کانتکس هشکردن پسورد به کار میره تا امنیت پسورد هش شده رو افزایش بده. با salt مطمئن میشیم که حتی اگر دو کاربر رمز یکسانی رو بهکار ببرن، مقدار هششده شون یکی نخواهد بود.
مشابه salt و یک دیتای رندومه اما به صورت متفاوتی استفاده میشه، معمولا یک مقدار محرمانه است که جدا از دیتای هششده نگهداری میشه. به داده قبل از هش شدن اضافه میشه اما در دیتابیسی که مقدار هششده نگهداری میشه، نگهداری نمیشه. هدفش اینه که یک لایه دیگه امنیت اضافه کنه و اگر مهاجمها به داده هششده دسترسی پیدا کردن، کار رو براشون سختتر کنه.