10-LABORATORIYA ISHI
Mavzu: Tarmoqda xavfsiz soketlarlarni yaratish
Ishning maqsadi:
Talabalarda Java dasturlash tilining javax.net.* va javax.net.ssl.* paketlari
klasslaridan foydalanib tarmoqda xavfsiz soketlarlarni yaratish bo‘yicha amaliy
ko‘nikmalar hosil qilish.
Nazariy qism:
Xavfsiz soketlar. AT&T AQSh Milliy Xavfsizlik Agentligiga barcha
kliyentlarning internet trafigiga paketlarni kommutatsiya markazlarida maxfiy
xonalarga oʻrnatilgan ma’lumotlarni qayta ishlash qurilmalariga nushalash orqali
toʻliq ulanish imkonini berdi. Britaniyaning GCHQ kompaniyasi jahonning
koʻpgina telefon qoʻngʻiroqlari va Internet trafigiga ega boʻlgan optik tolali
kabellarga kirib bordi. Shvetsiyada Milliy mudofaa radioeshittirish instituti optik
tolali kabel egalari oʻz binolarida tolalar aks ettirish uskunalarini oʻrnatishlarini
talab qiladi va bu biz biladigan narsalarni eshitib turadigan hukumatning kichik bir
misolidir.
Internet foydalanuvchisi sifatida kuzatuvchilarga qarshi himoya qilish kerak.
Internet ulanishlarini yanada xavfsiz qilish uchun soketlarni shifrlash mumkin. Bu
esa, tranzaktsiyalarning konfidentsial, autentifikatsiya qilingan va toʻgʻri boʻlishiga
imkon beradi.
Ammo, shifrlash murakkab masala. Uni toʻgʻri bajarish ma’lumotlarni faqat
shifrlash uchun ishlatiladigan matematik algoritmlarni emas, balki kalitlarni va
shifrlangan ma’lumotlarni almashish uchun ishlatiladigan protokollarni ham
batafsil tushunishni talab qiladi. Hatto kichik xatolar qurilmadagi katta teshikni
ochishi va aloqani xavfli boʻlishiga olib kelishi mumkin. Shifrlash dasturiy
ta’minotini yozish eng yaxshi mutaxassislarga topshirilgan vazifadir.
Yaxshiyamki, nomutaxassislar oddiy protokol va algoritmlar bilan mutaxassislar
tomonidan yaratilgan dasturiy ta’minot yordamida aloqaning xavfsizligini
ta’minlaydi. Internet doʻkondan biror narsa buyurtma qilganingizda, operatsiyani
2
amalga oshirish jarayoni shifrlangan va tasdiqlangan protokol hamda
algoritmlardan foydalanib autentifikatsiya qilinadi. Internet doʻkonlar bilan aloqa
qiladigan dasturiy ta’minot dasturini yozmoqchi boʻlgan dasturchilar protokol va
algoritmlar haqida bir oz koʻproq ma’lumotga ega boʻlishi kerak. Agar siz internet
doʻkonni boshqarayotgan server dasturini boshqa dasturlardan foydalanmasdan
yozmoqchi boʻlsangiz koʻproq tajribaga ega boʻlish zarur.
Java Secure Sockets Extension (JSSE) Secure Sockets Layer (SSL) va
Transport Layer Security (TLS) protokollari va ularga bogʻliq algoritmlar
yordamida tarmoq aloqalarini xavfsizligini ta’minlash mumkin. SSL veb-
brauzerlar va boshqa TCP kliyentlarining HTTP va boshqa TCP serverlari bilan
turli xil konfidentsiallik va autentifikatsiya darajalarida aloqa qilish imkonini
beradigan xavfsizlik protokoli.
Xavfsiz aloqa. Internet kabi ochiq kanal orqali konfedentsial aloqalar
ma’lumotlarning shifrlangan boʻlishini talab qiladi. Kompyuterda koʻpgina
shifrlash sxemalari matn bilan cheklanmagan, umumiy parolning kalitiga
asoslangan. Matematik algoritmga muvofiq kalitning bitlari bilan birlashtirilgan
oddiy matnli xabar shifrlangan matnini yaratadi. Bitlar sonini oshirish orqali
xabarlarni deshifrlashni qiyinlashtiradi.
An’anaviy yopiq kalit (yoki simmetrik) shifrlashda, bitta kalit ma’lumotlarni
shifrlash va deshifrlash uchun ishlatiladi. Yuboruvchi va qabul qiluvchi bitta
kalitni bilishi kerak. Tasavvur qiling, Anvar Sobirga maxfiy xabar yuborishni
xohlaydi. U avval Sobirga sirli almashuv uchun foydalanadigan kalitni yuboradi.
Lekin kalitni shifrlash mumkin emas, chunki Sobirning kaliti hali mavjud emas,
shuning uchun Anvar kalitni shifrlanmagan joʻnatishi kerak. Eldor, Anvar bilan
Sobir oʻrtasidagi aloqani eshitib turuvchi. U kalitni Sobir bilan bir vaqtning oʻzida
oladi. Shundan boshlab Anvar va Sobir shu kalit yordamida joʻnatilgan xabarlarni
Eldor eshitib turadi.
Ochiq kalit (yoki assimetrik) shifrlashda ma’lumotlarni shifrlash va
deshifrlash uchun turli xil kalitlardan foydalaniladi. Ochiq kalit deb ataladigan bitta
kalit ma’lumotni shifrlaydi. Bu kalit ixtiyoriy odamga berilishi mumkin.
3
Ma’lumotlarni deshifrlash uchun maxsus kalit deb ataladigan boshqa kalit
ishlatiladi. Bu kalitni maxfiy tutish kerak. Agar Anvar Sobirga xabar joʻnatmoqchi
boʻlsa, Sobirdan uning ochiq kalitini soʻraydi. Sobir uni shifrlanmagan aloqa orqali
yuboradi. Anvar xabarni shifrlash uchun Sobirning ochiq kalitidan foydalanadi va
uni unga yuboradi. Agar Eldor, Sobir kalitini yuborganida eshitsa, Eldor Sobirning
ochiq kalitini oladi. Ammo, bu Eldorga Sobirni yuborgan xabarni deshifrlashga
ruxsat bermaydi, chunki deshifrlash Sobirning shaxsiy kalitini talab qiladi. Agar
ochiq kalitlari tranzitda aniqlansa ham xabar xavfsizdir.
Asimetrik shifrlash autentifikatsiya va xabarlarning butunligini tekshirish
uchun ham ishlatilishi mumkin. Buning uchun Anvar uni yuborishdan oldin
shaxsiy kalit bilan shifrlashi kerak edi. Sobir buni qabul qilganda, uni Anvar ochiq
kaliti bilan deshifrlaydi. Agar deshifrlab boʻlgach, Sobir bu xabarni Anvardan
kelganligini bilardi. Axir, boshqa hech kim uning ochiq kaliti bilan toʻgʻri
shifrlangan xabarni yarata olmasdi. Sobir shuningdek, bu xabarning Eldor
tomonidan yomon niyat bilan oʻzgartirilmaganligini yoki bilvosita xato dastur yoki
tarmoq shovqinidan oʻzgarmasligini biladi, chunki bu kabi oʻzgarish
deshifrlashning buzilishiga olib kelar edi. Biroz koʻproq harakat bilan, Anvar
xabarni ikki marta shifrlashi mumkin, birinchi marta oʻz shaxsiy kaliti bilan,
ikkinchi marta Sobirning ochiq kaliti bilan, bu konfedentsiallik, autentifikatsiya va
butunlikni ta’minlaydi.
Amalda, ochiq kalit shifrlash yopiq kalit shifrlashdan koʻra sekinroq. Shu
sababli, Sobirning ochiq kaliti bilan barcha translatsiyani shifrlash oʻrniga, Anvar
an'anaviy yopiq kalitni shifrlaydi va uni Sobirga yuboradi. Sobir uni shaxsiy kaliti
bilan ochadi. Endi Anvar va Sobir yopiq kalitni bilishadi, lekin Eldor emas.
Shuning uchun, Sobir va Anvar endi Eldor tinglamasdan shaxsiy ravishda muloqot
qilish uchun tezkor yopiq kalit shifrlashidan foydalanishi mumkin.
Ushbu misol, shifrlash va autentifikatsiya qilish nazariyasi va amaliyoti, har
ikkala algoritm va protokollar kriptografiyani hayratga solish uchun minalar va
tuzoqlarga toʻlib toshgan qiyin masala. Yaxshi shifrlash algoritmini yoki
protokolni ishlab chiqish juda oson. Va algoritmlar va protokollarning qaysi biri
4
yaxshi va qaysi biri yomonligi har doim ham aniq emas. Yaxshiyamki, Java
tarmoq dasturlarida kuchli kriptografiya ishlatish uchun kriptografiya mutaxassisi
boʻlish shart emas. JSSE algoritmlar qanday ishlashi, kalitlarni almashtirish,
tomonlar tasdiqlashi va ma’lumotlar shifrlanganligining past darajadagi
tafsilotlarini sizdan himoya qiladi. JSSE sizga xavfsiz muloqot uchun zarur
boʻlgan shifrlarni boshqaradigan kliyent va server soketlarni yaratishga imkon
beradi. Java Secure Socket Extension toʻrtta paketga boʻlingan:
javax.net.ssl - Xavfsiz tarmoq aloqasi uchun Java APIni aniqlaydigan
abstrakt sinflar.
javax.net - Xavfsiz soketlarni yaratish uchun konstruktorlar oʻrniga
ishlatiladigan abstrakt sinflar.
java.security.cert - SSL uchun kerakli ochiq kalit sertifikatlarini boshqarish
uchun sinflar.
com.sun.net.ssl - JSSEda qoʻllanadigan shifrlash algoritmlari va
protokollarini amalga oshiradigan aniq sinflar. Texnik jihatdan, ular JSSE
standartining bir qismi emas. Boshqa dasturchilar ushbu paketni oʻzlaridan biriga
almashtirishi mumkin; Masalan, protsessor-intensiv kalit ishlab chiqarish va
shifrlash jarayonini tezlashtirish uchun mahalliy koddan foydalanadigan kishi.
|