احراز هویت چیست؟
احراز هویت (Authentication) فرایندی است که در آن یک فرد باید هویتی را که مدعی آن شده است، ثابت کند. زمانی که شما در یک سایت ثبت نام میکنید و نام و مشخصات خود را وارد میکنید، مدعی هویتی شده اید که باید برای ادامهی مسیر آن را ثابت کنید.
در واقع هر مکانیزمیکه بتواند هویت واقعی یک فرد را بدون هیچ ابهامی، تایید یا رد کند سرویسی جهت احراز هویت است. این سرویس برخلاف باور عموم یکی از پیچیده ترین مباحث امنیت شبکه به شمار می رود.
این فرایند هم می تواند بسیار بسیار ساده باشد و هم می تواند بسیار بسیار پیچیده و دشوار باشد. ساده ترین راهکار احراز هویت که همگی ما از آن استفاده کرده ایم ساختار بسیار ساده نام کاربری به همراه یک کلید احراز هویت متنی است که ما آن را به عنوان پسورد یا رمز عبور می شناسیم و برای احراز هویت شدن در سیستم های مختلف از آن استفاده می کنیم.
در واقع رمز عبور یکی از شاخص های اصلی فرایند احراز هویت است که فقط خود کاربر از آن اطلاع دارد که به این نوع از اطلاعات authentication factor گفته می شود و هرچه در این فرایند از فاکتور های بیشتری استفاده کنیم طبیعتا امنیت بالاتری خواهیم داشت که در ادامه بیشتر راجع به این فاکتور ها توضیح خواهیم داد.
اهمیت احراز هویت
فرایند احراز هویت از اهمیت زیادی برخوردار است زیرا باعث می شود تا اطلاعات آن سازمان یا سیستم مربوط فقط در اختیار افراد احراز هویت شده قرار گیرد تا از منابع مشخص شده خود استفاده کنند، این منابع می تواند شامل سیستم های کامپیوتری و سخت افزاری، شبکه ها، پایگاه داده، وب سایت و یا هر برنامه یا سیستم تحت شبکه باشد.
افزون بر احراز هویت، یک کاربر یا پردازش معمولا تحت یک فرایند اعطای مجوز یا authorization نیز قرار می گیرد. فرایند authorization برای مشخص کردن این است که آیا یک ورودی احراز هویت شده اجازه دسترسی به یک منبع یا سیستم خاص را دارد یا خیر. ممکن است یک کاربر به درستی احراز هویت شده باشد اما اجازه دسترسی به یک بخش خاص از سیستم را نداشته باشد، مثلا در یک وب سایت هر کاربری که احراز هویت می شود لزوما دسترسی مدیریت سیستم را ندارد.
زمانی که فرایند احراز هویت در حال اعتبار سنجی و شناسایی یک کاربر است، فرایند اعطای مجوز در حال پردازش این است که آیا کاربر مورد نظر اجازه دسترسی به این بخش از برنامه را دارد یا خیر. سپس کاربر احراز هویت شده را به بخش مربوطه منتقل می کند. به فرایندی که دسترسی منابع را برای کاربران مشخصی محدود می کند فرایند کنترل دسترسی یا access control می گویند. همواره فرایند احراز هویت قبل از فرایند اعطای مجوز استفاده می شود.
به طور کلی، یک کاربر باید یک نام کاربری (username) یا شناسه کاربری و یک رمز عبور معتبر برای استفاده از یک سیستم انتخاب کند. تمام شرکت ها از فرایند احراز هویت استفاده می کنند تا کاربرانی که در وب سایت آن ها لاگین می کنند را اعتبار سنجی کنند. بدون استفاده از این دست الزامات امنیتی، اطلاعات خصوصی کاربران می تواند به راحتی در اختیار هکر ها قرار گیرد.
در طول فرایند احراز هویت، ورودی های کاربر با ورودی های اعتبارسنجی شده در پایگاه داده مقایسه می شود. اگر این داده ها با هم مطابقت داشته و کاربر مجاز به استفاده از این منابع باشد، فرایند کامل شده و دسترسی های لازم به کاربر اعطا می شود.
پروتکل های HTTP و HTTPS
البته وب سایت ها و اصولا پروتکل های HTTP و HTTPS همگی stateless هستند، به این معنی که هر بار صفحه ای به سمت سرور ارسال می شود یک نمونه ی جدید از این صفحه ساخته می شود و اطلاعات فعلی این صفحه از بین می رود و ممکن است کاربر نتواند این اطلاعات را برگرداند. بنابراین ما به مکانی برای ذخیره اطلاعات نیاز داریم. Session امکانی را فراهم می کند تا بتوان اطلاعات را در حافظه ی سرور موقتا ذخیره کرد. مزایای استفاده از session عبارت است از:
- Session وضعیت های یک کاربر را در تمام برنامه ذخیره می کند
- پیاده سازی session آسان است
- برای هر کاربر به صورت جداگانه session ایجاد می شود و داده های مربوط به آن ذخیره می شود.
البته در حالتی که حجم زیادی از کاربران وارد سایت شده باشند، چون داده های session در حافظه سرور ذخیره می شود باعث بروز مشکلاتی برای سایت و کاهش کارایی آن می شود که می توان با ساز و کار هایی تا حدودی این مشکلات را حل کرد.
تفاوت احراز هویت و شناسایی identification
احراز هویت مفهوم مستقلی از فرایند شناسایی (identification) است. برای مثال وقتی در یک بانک که قبلا حساب نداشته اید، با مراجعه به بانک و ارائه مدارک لازم، بانک هویت شما را شناسایی کرده و برای شما حساب بانکی افتتاح می کند. به این فرایند، شناسایی یا identification می گویند. اما پس از آن، برای هر کاری که می خواهید انجام دهید، لازم است هر بار احراز هویت شوید. مثلا برای انتقال وجه از طریق عابر بانک، زمانی که شما کارت بانکی خود را وارد عابر بانک می کنید، سیستم بانک با استفاده از اطلاعات کارت شما، هویت شما را شناسایی می کند (identification) و با وارد کردن رمز توسط شما، می فهمد که کسی که از کارت شما استفاده می کند خود شما هستید (authentication).
بررسی هویت واقعی طرف مقابل ارتباط، فرایند دشواری است که چند فاکتور اساسی دارد:
چیزی که شما می دانید (what you know)
این فاکتور، ساده ترین و ضعیف ترین فاکتور احراز هویت در امنیت اطلاعات است. با توجه به این که چیزی را که شما می دانید را فرد دیگری هم می تواند بداند، پس آن شخص می تواند به جای شما احراز هویت شود؛ مثلا رمز دوم کارت بانکی شما را ممکن است فرد دیگری هم بداند از این رو این فاکتور، ضعیف است و امکان حملاتی مثل فیشینگ در مثال بانک، زیاد است.
چیزی که شما دارید (what you have)
این فاکتور به معنای داشتن سخت افزارهایی مثل کارت های هوشمند، تلفن همراه و ... می باشد. اما این روش هم مانند روش قبل، چندان مناسب نیست زیرا هر کس دیگری هم به این سخت افزار دسترسی پیدا کند، می تواند به جای شما احراز هویت شود.
چیزی که شما هستید (what you are)
در دو روش قبل، امکان فراموش کردن رمز یا گم کردن ابزار سخت افزاری زیاد بود اما قطعا همیشه اعضای فیزیکی بدن شما همه جا همراهتان است. اثر انگشت، نمونه DNA، الگوی مردمک چشم و... نمونه هایی از این فاکتور هستند که به آن در اصطلاح، احراز هویت بیومتریک (biometric) هم گفته می شود. از مشکلات این روش نیز می توان به هزینه زیاد برای پیاده سازی مکانیزم و سخت افزار های مربوطه می باشد.
احراز هویت چند فاکتوری (multifactor authentication)
احراز هویت چند فاکتوری یعنی از چندین فاکتور برای احراز هویت افراد استفاده شود. برای مثال کارت بانکی شما دارای سیستم احراز هویت Two factor authentication یا احراز هویت دو عامله است چون از شما هم رمز عبور پرسیده می شود هم باید خود کارت بانکی را داشته باشید. یا مانند شکل زیر که سیستم احراز هویت دو عاملی گوگل را نمایش می دهد که نیازمند رمز عبور و تلفن همراه به عنوان دو فاکتور احراز هویت (2FA) است.
اگر هر سه فاکتور با هم در یک سیستم احراز هویت استفاده شود، سیستم دارای احراز هویت Multifactor Authentication یا احراز هویت چند عامله است که امنیت حداکثری ایجاد می شود اما امنیت حداکثری، باعث کاهش دسترسی پذیری سیستم شما شده و در این شرایط به صورت عمومی برای اغلب کاربران، امنیت به عنوان یک عامل اذیت کننده تلقی می شود.