تاریخ انتشار | ۱۶ شهریور ۱۳۹۳ |
---|---|
عنوان انگلیسی | Security review of enterprise software authentication mechanisms |
۱٫مقدمه
احراز هویت اولین مسئله در ایجاد امینت برای نرمافزارهای سازمانی است. عدم رعایت نکات امنیتی در طراحی مکانیزم احراز هویت میتواند منجر به درز اطلاعات کاربران و در نتیجه از بین رفتن کلی امنیت سامانه شود. در این مقاله ابتدا به بررسی مکانیزمهای مختلفی احراز هویت از نقطهنظر امنیت میپردازیم.
در مقالهی دیگری در مورد درگاه احراز هویت واحد معرفی شد که پیشنهاد میشود قبل از این مقاله آن را مطالعه نمایید. در این مقاله خود را به بررسی روشهای احراز هویت مناسب برای نرمافزارهای سازمانی از نقطه نظر امنیتی محدود میکنیم.
در سالهای اخیر مکانیزمهایی چون OpenID برای احراز هویت در نرمافزارهای مخاطب عام تحت وب رایج شده است. در این مکانیزمها سامانه احراز هویت، یکی از سرویسدهندههای عمومی مانند Google یا Github است که افراد در آنها به صورت پیشفرض حسابهایی دارند و از همان حساب برای احراز هویت در سایتهای جدید استفاده میشود. این روشها گرچه برای نرمافزارهای مخاطب عام مناسب هستند اما برای نرمافزارهای سازمانی اغلب به کار نمیروند.
۲٫ دستهبندی مکانیزمهای احراز هویت
۱-۲ احراز هویت ابتدایی[۱]
احراز هویت ابتدایی، سادهترین مکانیزم احزار هویت است که طی آن کلاینت نام کاربری و کلمه عبور را مستقیماً برای سرور ارسال میکند و سرور در پاسخ با یک Token به کلاینت میدهد که کلاینت آن را در فراخوانیهای بعدی مورد استفاده قرار میدهد. کلاینت برای این منظور از فیلد Authorization در سرآیند HTTP استفاده میکند. نمونهای از چنین فیلدی در خط زیر آمده است:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
در احراز هویت ابتدایی اگر بدون رمزنگاریهای امن استفاده گردد، نام کاربری و کلمهی عبور کاربر به صورت plaintext به سرور ارسال میشود که این یک ریسک امنیتی بزرگ است. شکل زیر نمونهای از مشخص شدن اطلاعات هویتی در هنگام احراز هویت است.
۲-۲درگاههای احراز هویت واحد مبتنی بر [۲] TLS
برای حل مهمترین مشکل احراز هویت ابتدایی که ارسال اطلاعات هویتی به صورت plaintext است، از روشهای رمزنگاری امن استفاده میشود. پروتکل TLS یک استاندارد IETF است که در حدود سال ۱۹۹۹ اولین نسخهی آن به تایید رسید.
طبق این پروتکل، سرور باید یک گواهی مجاز از مراکز [۳]CAکسب کرده باشد و کلاینت از هویت CA مورد استفاده سرور آگاه باشد. گواهیهای مورد استفاده از TLS، ذاتاً کلیدهای رمز نامتقارن هستند که در الگوریتم RSA مورد استفاده قرار میگیرند. یک نشست رمزنگاری شده با رد و بدل شدن یک کلید رمز متقارن، که با RSA رمز شده است، شروع میشود. پس از دریافت کلید رمز متقارن، تمام ارتباطات با این کلید رمزنگاری میشود. پروتکل HTTPS همان درخواست و پاسخ HTTP روی بستر TLS است.
پروتکلهای احراز هویت واحد بسیاری مبتنی بر TLS طراحی شدهاند، که از این میان میتوان به [۴]SAMLو CAS اشاره کرد. پروتکل SAML یک استاندارد OASIS است که نسخهی ابتدایی آن در سال ۲۰۰۱ منتشر شد و نسخهی ۲.۰ که نسخهی آخر است در سال ۲۰۰۵ منتشر شده است. نسخههای قبل از ۲.۰ مبتنی بر بستر SOAP بودهاند و در بستر HTTP به صورت مستقل معنیدار نبودهاند.
پروتکلهای مربوط به WS-* که بیشتر مرتبط با احراز هویت هستند، پروتکلهای WS-Federation، WS-Trust و WS-Security میباشند. پروتکل WS-Federation مشابه SAML است اما به دلیل پیچیدگی و مشکلات طراحی فراگیر نشده است. موضوع استانداردهای WS-Trust و WS-Security احراز هویت نیست، بلکه اینها برای رمزنگاری پیامها به کار میروند و میتوانند از Token های SAML نیز بهره ببرند.
پروتکل CAS پروتکلی نسبتاً ساده است که از TLS برای رمزنگاری استفاده میکند. این پروتکل در نرمافزار متنبازی که با همین نام تولید شده است، پیادهسازی شده است.
۳-۲ پروتکل کربرس[۵]
پروتکل کربرس برای احرازهویت درون شبکههای باز و ناامنی است که در آنها ارتباط بین اعضای شبکه پایدار نیست. وقتی کامپیوترهای مورد استفاده آسیبپذیر باشند این پروتکل هیچ تضمینی برای امنیت دسترسی به شبکه نمیکند. سرورها و کاربران همیشه باید به روز باشند طوری که صحت کاربران و ارائه دهندگان خدمات تضمین شده باشد.
اینها به این معنی هست که این پروتکل برای سرورهای امن و شبکه ناامن طراحی شده و مثلا اگر کسی باشد که به اطلاعات سرور دسترسی دارد میتواند رمزهای عبور را به دست آورد و با تغییراتی ساده مشکل DNS و IP را هم حل کند و به عنوان کاربر اصلی احراز هویت شود.
۱-۳-۲ ویژگیهای پروتکل کربرس
- رمز عبور کاربران روی شبکه جابجا نمیشود.
- رمز عبور کاربران به هیچ شکلی نباید روی کامپیوترها ذخیره شوند و باید پس از استفاده فوراً دور ریخته شوند.
- رمز عبورها با رمزگذاری بر روی پایگاه داده سرور احراز هویت قرار میگیرند.
- از کاربر فقط یک بار برای هر جلسه کاری رمز عبور پرسیده میشود. بنابراین کاربر با این ورود میتواند از تمام خدمات در دسترس خود استفاده کند. به عبارت دیگر کربرس یک پروتکل احراز هویت واحد است.
- کنترل تصدیق اطلاعات در یک مرکز و روی سرور مخصوص به این کار قرار دارد، سرورهای برنامه نباید شامل اطلاعات احراز هویت کاربران باشند، این موضوعات برای به دست آوردن نتایج زیر ضروری هستند:
- مدیریت سیستم میتواند در یک مکان خاص بدون نیاز به بررسی سرورهای دیگر یک کاربر را غیر فعال کند.
- هنگامی که کاربر رمز عبور خود را تغییر میدهد این تغییر همان موقع در تمام خدمات اعمال میشود.
- اطلاعات چند جا پخش نیستند و میتوان آنها را یکجا محافظت کرد و نیاز به محافظت از چند نقطه متفاوت نیست.
- نه تنها کاربران باید هویت خود را احراز کنند، بلکه هر سرویس هم باید این کار را انجام دهد که به این روش احراز هویت متقابل[۶] گفته میشود.
- بعد از احراز هویت سرویس و کلاینت، سرویس و کلاینت باید بتوانند در صورت نیاز یک اتصال پایدار و رمزنگاری شده داشته باشند، به این منظور کربرس از روشهایی برای تولید و تبادل اطلاعات رمزگذاری شده پشتیبانی میکند.
۴-۲ پروتکل OAuth
پروتکل OAuth در واقع یک پروتکل مجوزسنجی[۷] است و مکانیزم صریحی برای احراز هویت ندارد. این پروتکل برای این نیاز استفاده میشود که سرویسدهندهای بخواهد بخشی از اطلاعات یک کاربر را به سرویسدهندهی دیگری با اجازهی آن کاربر ارائه کند. این مورد برای جلوگیری از تصور متداول اینکه OAuth یک پروتکل احراز هویت است، در اینجا ذکر شد.
۳٫جمعبندی
پروتکلهای احراز هویت ابتدایی برای اکثر کاربردها غیرامن محسوب میشوند. برای استفاده از پروتکل کربرس باید اطلاعات گواهی کاربران و سرویسدهندهها همگی روی سرور احراز هویت تعریف شوند. گرچه این موجب افزایش امنیت میشود، در کاربردهای متداول غیرقابل قبول زیرا کاربر باید گواهی کربرس خود را روی هر کامپیوتری که کار میکند، کپی کند.
پروتکلهای مبتنی بر TLS مذکور در این مقاله، برای سازمانهای امروزی بهترین راهحل برای احراز هویت هستند. ویراتک نیز در محصولات خود از این پروتکلها استفاده می:ند. با این حال استفادهی غیراصولی از این پروتکلها نیز میتواند حفرههای امنیتی برای نفوذگران باز کند. در مقالهای دیگر به بعضی اصولی که در این مورد باید رعایت شود، اشاره میشود.
[۱]Basic Authentication
[۲]Transport Layer Security
[۳]Certificate Authority
[۴]Security Assertion Markup Language
[۵]Kerberos
[۶]Mutual Authentication
[۷]Authorization
«استفاده از مطالب این وبلاگ با ذکر لینک و منبع، بلامانع است»