امنیت اطلاعات حساس در هر چارچوب ارتباطی، به همکاری و اعتماد بین طرفین نیاز دارد. رمزهای عبور و اطلاعات حساس باید به طور محرمانه مبادله شوند تا از نظر امنیتی محافظت شوند. در واقع، برای حفظ امنیت داده ها، تلاش مشترک طرفین و رعایت اعتماد متقابل بسیار ضروری است. توصیه میشود که کاربران اطلاعات ورودی خود، مانند رمز عبور را به خوبی حفظ نمایند و آن را در محیط های قابل دسترس برای هکر ثبت نکنند.
credential stuffing نوعی حمله سایبری است که در آن مهاجم اطلاعات حساب کاربری را به سرقت می برد. این اطلاعات معمولاً شامل فهرستهایی از نامهای کاربری یا آدرسهای ایمیل و رمزهای عبور مربوطه است. سپس هکر از آنها برای دسترسی غیرمجاز به حسابهای کاربری استفاده میکند.
محرمانگی نام کاربری برای اهداف امنیتی، به تنهایی کافی نبوده و تضمین کننده حفاظت از اطلاعات نمیباشد. در حال حاضر بسیاری از روشهای احراز هویت هنوز هم بر اساس نام کاربری و رمز عبور عمل میکنند. این چارچوب صرفاً برای تایید هویت استفاده میشود. اگر هکری قصد سوء استفاده از کاربر و دسترسی به یک سرویس آنلاین را داشته باشد، باید هم نام کاربری و هم رمز عبور را به دست آورد.
تصویر(1)
سادهترین روش استخراج رمز عبور، استفاده از تحلیلگر پروتکل نرمافزاری packet sniffer است که با رهگیری اطلاعات ارسال شده از طریق شبکه، داده ها را بازیابی میکند.
برای جلوگیری از credential stuffing، گذرواژه ها باید به صورت رمزنگاری شده و نه به صورت متن ساده، در سرور ذخیره شوند. هکری که به مقدار هش شده رمز عبور دسترسی پیدا کند با استفاده از تکنیکهای مختلف میتواند حملاتی انجام دهد تا گذرواژه مربوطه را شناسایی نماید.
اخیراً، روشهای موثری برای دستیابی به رمزهای عبور در پایگاه داده ها، رایج شدهاند. یک روش معروف استفاده از جداول Rainbow است. با استفاده از جدول Rainbow جهت استخراج رمز عبور مورد نظر، نیاز است تمام مراحل زنجیره عملیات هش را بازسازی کنید. به عبارت دیگر، شما باید تمام ورودیهای مورد استفاده برای پیشمحاسبه تابع هش را تعیین نمایید تا بتوانید به رمز عبور مورد نظر دسترسی یابید.
تصویر(2)
در جستجوی مشخصات، هکر ممکن است تلاش نماید به هر اطلاعاتی که در سمت کاربر ذخیره شده، دسترسی پیدا کند. اطلاعات نگهداری شده در سمت کاربر معمولا به صورت متن ساده هستند و رمزگذاری نمیشوند که این میتواند یک ضعف امنیتی باشد. برای جلوگیری از سرقت اطلاعات حساس کاربر، داده ها را به هیچ وجه در سمت کلاینت ذخیره نکنید.
راهکار جایگزین برای credential stuffing
برای ساده سازی فرایند استفاده از گذرواژه ها، کاربران عموما رمزهایی را انتخاب میکنند که به خاطر سپردن آنها آسان است و در عین حال بتوانند بدون اشتباه آنها را تایپ نمایند. این روش امکان یادآوری رمز عبور را فراهم خواهد کرد و از ذخیره آن در یک رسانه فیزیکی که مهاجم میتواند به آن دسترسی پیدا کند، جلوگیری می نماید. برای جلوگیری از انتخاب گذرواژه های بسیار ساده، استفاده از یک کارت هوشمند مناسب است. در این حالت، یک دستگاه سختافزاری که مسئول تولید و ذخیره اطلاعات برای دسترسی به سرویس می باشد، باید در اختیار کاربر قرار گیرد.
رمز عبور یکبار مصرف
با استفاده از رمز عبور یکبار مصرف OTP، هیچ هکری که نام کاربری و رمز عبور را در اختیار داشته باشد، نمیتواند از آنها برای ورود استفاده کند. رمز عبور یکبار مصرف، توسط سیستم به صورت پویا و تصادفی تولید میشود و در هر بار ورود کاربر به سیستم تغییر می یابد. توسط OTP، از هر نوع حمله تکراری جلوگیری خواهد شد.
OTP را میتوان به عنوان یک حالت خاص از الگوی چالش/پاسخ (challenge/response) در نظر گرفت. در صورت لزوم میتوانید آن را بدون استفاده از الگوریتمهای رمزنگاری متقارن یا نامتقارن، توسط توابع digest پیادهسازی نمایید.
تصویر(3)
اگرچه بسیاری از سرویسهای آنلاین فقط به کاربران اجازه میدهند هویت خود را اعتبارسنجی کنند اما برنامههایی در حال توسعه و گسترش هستند که در آنها نیاز است کاربر قبل از استفاده از سرویس، مشخصات سرور را نیز اعتبارسنجی کند.
- مرحله اول: کاربر نام کاربری خود را ارسال میکند.
- مرحله دوم: سرور با یک چالش اولیه R پاسخ میدهد.
- مرحله سوم: کاربر یک نسخه رمزنگاری شده از R1 را (با استفاده از یک کلید مشترک KAB) برمیگرداند.
- مرحله چهارم: کاربر یک چالش دوم R2 را ارسال میکند.
- مرحله پنجم: سرور یک نسخه رمزگذاری شده از R2 را (با استفاده از یک کلید مشترک KAB) برمیگرداند.
در این نمونه، میتوانید مراحل را به شکل زیر تغییر دهید:
- کاربر نام کاربری خود و یک چالش اولیه R1 را ارسال میکند.
- سرور یک کپی رمزگذاری شده از R1 (با استفاده از یک کلید مشترک KAB) و دومین چالش R2 را برمی گرداند.
- کلاینت یک نسخه رمزنگاری شده از R2 را (با استفاده از یک کلید مشترک KAB) ارسال میکند.
با توجه به طرح قبلی، هکر میتواند پاسخی از سرور دریافت کند که شامل نسخه رمزنگاری شده R1 و چالش دوم R2 است. اگر هکر به نسخه رمزنگاری شده R1 و چالش دوم R2 دسترسی پیدا کند، نمیتواند مستقیما به چالش پاسخ دهد زیرا کلید مشترک KAB برایش قابل دسترس نیست.
احراز هویت در سطح سرور ایراداتی دارد. پیشنهاد می شود احراز هویت را بر عهده کاربر بگذارید تا با استفاده از اطلاعاتی مانند نام کاربری و رمز عبور، بتوانند به طور مستقیم وارد سیستم شوند. بدین ترتیب مشکل اصلی امنیت در سطح سرور حل شده و احتمال سوء استفاده از مشخصات احراز هویت کاهش مییابد.
برای جلوگیری از حمله reflection، نیازی به اجرای طرح های پیچیده نیست. با اعمال تغییرات مناسب می توانید روند احراز هویت متقابل را حفظ نمود. استفاده از کلیدهای متفاوت برای عملیات رمز گذاری که توسط مشتری و سرور انجام میشود، میتواند یک راه حل مناسب باشد.
رمزنگاری نامتقارن
راهکار دیگر برای برطرف کردن credential stuffing، استفاده از رمزنگاری نامتقارن است. در این رویکرد، هر کاربر برای احراز هویت، یک چالش دریافت میکند که باید آن را با استفاده از کلید خصوصی خود رمزنگاری نماید. اعتبارسنجی پاسخ، با رمزگشایی پیام از طریق کلید عمومی متناظر انجام می گردد. با استفاده از رمزنگاری نامتقارن، هکر نمی تواند پاسخ چالش پیشنهادی را آزادانه از سرور دریافت کند.
جمع بندی
امنیت اطلاعات در ارتباطات نیازمند همکاری صمیمانه و اعتماد متقابل میان طرفین است. برای حفاظت کامل از دادهها و credential stuffing، باید گذرواژهها و مشخصات ورودی حساب کاربری به صورت رمزنگاری شده ذخیره و مبادله شوند. بدین ترتیب می توانید سبب تقویت امنیت ارتباطات شوید.