9.6. Sessiyalar, cookie va yagona kirish tizimlari

Veb-muhitda autentifikatsiyaning o'ziga xosligi

Yuqorida ko'rilgan autentifikatsiya usullari asosan bir martalik tekshiruvni tasvirlaydi: foydalanuvchi o'zini tanishtiradi, tizim uni tekshiradi va kirishga ruxsat beradi. Veb-ilovalarda esa qo'shimcha muammo tug'iladi. HTTP protokoli o'z tabiatiga ko'ra holatni saqlamaydi, ya'ni har bir so'rov mustaqil hisoblanadi va server oldingi so'rovni eslamaydi. Agar hech qanday qo'shimcha vosita bo'lmasa, foydalanuvchi har bir sahifani ochganda qaytadan parol kiritishiga to'g'ri kelardi.

Bu muammoni sessiya (session) tushunchasi hal qiladi. Sessiya foydalanuvchining tizimga kirgan paytdan chiqqan paytigacha davom etadigan ish davri bo'lib, server uni maxsus identifikator orqali tanib turadi. Foydalanuvchi muvaffaqiyatli autentifikatsiyadan o'tgach, server unga sessiya identifikatorini beradi va bu identifikator brauzerda cookie ko'rinishida saqlanadi. Shundan keyin brauzer har bir so'rov bilan birga bu cookie ni avtomatik yuboradi, server esa uni ko'rib, foydalanuvchini taniydi (9.11-rasm).

9.11-rasm. Sessiya va cookie orqali kirishni saqlash (muallif ishlanmasi; CS161 va SecurityTolboom asosida).
9.11-rasm. Sessiya va cookie orqali kirishni saqlash (muallif ishlanmasi; CS161 va SecurityTolboom asosida).

Cookie faqat sessiya identifikatorini saqlash uchun emas, balki foydalanuvchi sozlamalarini yoki ilova holatini saqlash uchun ham ishlatiladi. Masalan, cookie da savatdagi mahsulotlar ro'yxati yoki interfeys mavzusi tanlovi saqlanishi mumkin.

Sessiya bilan bog'liq xavflar va himoya choralari

Sessiya mexanizmining muhim xususiyati shundaki, sessiya identifikatori amalda vaqtinchalik kalit vazifasini bajaradi. Agar tajovuzkor uni qo'lga kiritsa, u parolni umuman bilmasdan turib foydalanuvchi nomidan tizimga kira oladi. Bu hujum sessiyani o'g'irlash (session hijacking) deb ataladi.

Sessiya identifikatori bir necha yo'l bilan o'g'irlanishi mumkin. U himoyalanmagan aloqa kanali orqali uzatilsa, yo'lda ushlab olinishi mumkin. Zararli skript brauzerda ishga tushsa, u cookie ni o'qib olishi mumkin. Boshqa ilova yoki brauzerdagi zararli ilova ham unga murojaat qilishi mumkin.

Shu sababli sessiyalarni himoyalash uchun bir necha chora birgalikda qo'llaniladi. Birinchidan, sessiya identifikatori tasodifiy va taxmin qilib bo'lmaydigan bo'lishi kerak. Ikkinchidan, u kriptografik usulda himoyalanadi, ya'ni uni o'zgartirib bo'lmaydigan qilinadi. Uchinchidan, aloqa albatta shifrlangan kanal orqali, ya'ni HTTPS orqali amalga oshiriladi, aks holda identifikator ochiq holda uzatiladi. To'rtinchidan, cookie ga maxsus bayroqlar qo'yiladi: ular cookie ni faqat shifrlangan ulanishda yuborilishini va uni brauzerdagi skriptlar o'qiy olmasligini ta'minlaydi.

Beshinchi va muhim chora, sessiyaning amal qilish muddatini cheklashdir. Muddat tugagach, sessiya bekor qilinadi va foydalanuvchi qaytadan kirishi kerak bo'ladi. Bu o'g'irlangan identifikatorning foydalanish oynasini qisqartiradi. Bundan tashqari, foydalanuvchi tizimdan chiqqanda sessiya server tomonida ham bekor qilinishi shart: faqat cookie ni o'chirish yetarli emas, chunki uning nusxasi tajovuzkorda qolgan bo'lishi mumkin.

Yagona kirish tizimi

Zamonaviy tashkilotda xodim o'nlab turli xizmatdan foydalanadi: elektron pochta, hujjat almashish tizimi, loyihalarni boshqarish vositasi, buxgalteriya dasturi. Agar ularning har biri alohida login va parol talab qilsa, bir necha muammo yuzaga keladi. Xodim ko'p parolni eslay olmaydi va shu sababli bir xil parolni hamma joyda ishlatadi yoki uni qog'ozga yozib qo'yadi. Yangi xodim kelganda unga o'nta tizimda alohida hisob ochish kerak bo'ladi, ishdan bo'shaganda esa ularning barchasini alohida bekor qilish talab qilinadi va odatda bir nechtasi unutiladi.

Ushbu muammolarni yagona kirish (Single Sign-On, SSO) tizimi hal qiladi. Uning mohiyati shundaki, foydalanuvchi bir marta, bitta ishonchli tizimda autentifikatsiyadan o'tadi va shundan keyin qayta parol kiritmasdan bir necha xizmatdan foydalana oladi. Bu ishonchli tizim shaxsni tasdiqlovchi provayder (Identity Provider, IdP) deb ataladi (9.12-rasm).

9.12-rasm. Yagona kirish (SSO) jarayonining bosqichlari (muallif ishlanmasi; CS161 va SecurityTolboom asosida).
9.12-rasm. Yagona kirish (SSO) jarayonining bosqichlari (muallif ishlanmasi; CS161 va SecurityTolboom asosida).

Jarayon quyidagicha kechadi. Foydalanuvchi biror xizmatga, masalan korporativ pochtaga murojaat qiladi. Xizmat uni shaxsni tasdiqlovchi provayderga yo'naltiradi. Foydalanuvchi u yerda bir marta tizimga kiradi, ya'ni parol va zarur bo'lsa ikkinchi omil aynan shu yerda tekshiriladi. Provayder ma'lumotni tekshirgach, xizmatga maxsus tasdiq yuboradi. Xizmat bu tasdiqni ko'rib, foydalanuvchiga kirishga ruxsat beradi. Muhim jihat shundaki, parol faqat provayderda saqlanadi va tekshiriladi, alohida xizmatlar esa uni umuman ko'rmaydi.

Yagona kirishning afzalliklari aniq. Foydalanuvchi bitta kuchli parolni eslasa yetarli. Tashkilot uchun hisoblarni boshqarish soddalashadi: xodim ishdan bo'shaganda uning provayderdagi hisobi bekor qilinsa, u barcha bog'liq xizmatlarga kirish imkonini bir vaqtda yo'qotadi. Ko'p omilli autentifikatsiyani joriy etish ham osonlashadi, chunki uni har bir xizmatda emas, faqat provayderda sozlash yetarli bo'ladi.

Ayni paytda yagona kirishning muhim cheklovi bor: u markazlashgan xavf nuqtasini yaratadi. Agar foydalanuvchining provayderdagi hisobi buzilsa, tajovuzkor bir vaqtning o'zida barcha bog'liq xizmatlarga kirish imkonini oladi. Aynan shu sababli yagona kirish tizimida hisobni himoyalash odatdagidan ko'ra qattiqroq bo'lishi, xususan ko'p omilli autentifikatsiya majburiy qilinishi kerak.

Yagona kirish protokollari

Yagona kirishni amalga oshiradigan bir necha protokol mavjud. Ular vazifasi va qo'llanish sohasi bo'yicha farqlanadi (9.5-jadval).

Protokol

Vazifasi

Qo'llanish sohasi va izoh

SAML

Shaxsni tasdiqlash uchun XML formatida tasdiq almashish

Korporativ muhitda keng tarqalgan; xizmat va provayder o'rtasida ishonch oldindan sozlanadi

OpenID Connect

Uchinchi tomon provayderi orqali foydalanuvchi shaxsini tasdiqlash

Veb va mobil ilovalarda qulay; OAuth ustiga qurilgan zamonaviy yechim

OAuth

Foydalanuvchi ruxsati bilan uning ma'lumotlarining bir qismiga kirish huquqini berish

To'liq ma'noda autentifikatsiya protokoli emas, balki vakolat berish (avtorizatsiya) protokoli

9.5-jadval. Yagona kirish tizimlarida qo'llaniladigan asosiy protokollar (CS161 va SecurityTolboom asosida).

Ushbu jadvaldagi eng ko'p chalkashtiriladigan nuqtaga alohida e'tibor berish kerak. OAuth va OpenID Connect ko'pincha birga tilga olinadi, biroq ular turli vazifani bajaradi. OpenID Connect savolga javob beradi: «bu foydalanuvchi kim?». OAuth esa boshqa savolga javob beradi: «bu ilovaga foydalanuvchi nomidan qanday amallarni bajarishga ruxsat berilgan?». Sodda taqqoslash bilan aytganda, OpenID Connect shaxsni tasdiqlovchi hujjat bo'lsa, OAuth cheklangan vakolat beruvchi ishonchnomadir.

Bu farqning amaliy ahamiyati bor. OAuth ni to'liq autentifikatsiya vositasi sifatida qo'llash keng tarqalgan xato hisoblanadi, chunki u dastlab boshqa maqsad uchun, ya'ni ilovalarga cheklangan huquq berish uchun yaratilgan. Zamonaviy amaliyotda shaxsni tasdiqlash zarur bo'lsa, OpenID Connect qo'llaniladi.

Amaliy misol

Otabek «Raqamli Yechim» uchun yagona kirish tizimiga o'tishni rejalashtiradi. Hozircha kompaniyada har bir xizmat alohida parol talab qiladi va bu bir necha muammo tug'diradi: xodimlar bir xil parolni takrorlaydi, yangi xodimni tizimlarga ulash bir necha kun davom etadi. Otabek yechimni bosqichma-bosqich amalga oshirishga qaror qiladi: avval eng ko'p ishlatiladigan uchta xizmatni yagona kirishga ulaydi, provayder hisobida esa ko'p omilli autentifikatsiyani majburiy qiladi. Shu tariqa xodimlar bitta kuchli parol va ikkinchi omil bilan ishlaydi, ishdan bo'shash paytida esa bitta hisobni bekor qilish yetarli bo'ladi.

Kasbiy vaziyat

Bekzod e'tiroz bildiradi: «Yagona kirish xavfli emasmi? Bitta parol buzilsa, hamma tizim ochiladi-ku. Har xizmatga alohida parol xavfsizroq emasmi?» Otabek masalani ikki tomonlama baholaydi. Nazariy jihatdan Bekzod haq: yagona kirish markazlashgan xavf nuqtasini yaratadi. Biroq amalda alohida parollar tizimi undan ham yomonroq natija beradi, chunki xodimlar o'nta parolni eslay olmagani uchun bir xil yoki oson parollarni tanlaydi va ularni turli joylarda takrorlaydi. Natijada eng zaif xizmat butun tashkilotning zaif nuqtasiga aylanadi. Yagona kirish esa himoyani bir joyga to'plash imkonini beradi: bitta hisobga kuchli parol, ko'p omilli autentifikatsiya va batafsil nazorat qo'llash mumkin. Xulosa shuki, yagona kirish o'z-o'zidan xavfsiz emas, u faqat markaziy hisob yaxshi himoyalanganda xavfsiz bo'ladi.

Amaliy topshiriq

Quyidagi topshiriqlarni bajaring. (a) Sessiya identifikatori o'g'irlanishining uchta yo'lini sanang va har biriga qarshi bittadan aniq himoya chorasini ko'rsating. (b) Foydalanuvchi tizimdan chiqqanda nima uchun faqat cookie ni o'chirish yetarli emasligini tushuntiring. (v) Yagona kirish tizimining tashkilot uchun uchta afzalligi va bitta jiddiy xavfini jadval ko'rinishida keltiring, xavfni kamaytirish uchun aniq chora taklif qiling. (g) OpenID Connect va OAuth o'rtasidagi farqni o'z so'zlaringiz bilan ikki jumlada yozing.

Nazorat savollari

  1. 1HTTP protokolining holatni saqlamasligi qanday muammo tug'diradi va u qanday hal qilinadi?
  2. 2Sessiya identifikatori nima uchun vaqtinchalik kalit vazifasini bajaradi?
  3. 3Sessiyani himoyalashning kamida to'rtta chorasini sanang.
  4. 4Yagona kirish tizimi qanday muammolarni hal qiladi?
  5. 5Yagona kirishning asosiy xavfi nimada va u qanday kamaytiriladi?
  6. 6OpenID Connect va OAuth qanday turli savollarga javob beradi?