SSL protokoli bosqichlari

|
SSL protokoli bosqichlari
|
bet | 4/5 | Sana | 26.12.2023 | Hajmi | 18,97 Kb. | | #128529 |
Bog'liq Ssl protokoli xavfsizligida foydalanuvchining ahamiyati Reja-fayllar.org4. SSL protokoli bosqichlari
SSL suhbat protokoli ikkita asosiy bosqichga ega.
Birinchi bosqich maxfiy aloqa kanalini yaratish uchun ishlatiladi. Ikkinchisi bosqich esa mijozni tasdiqlash uchun.
Birinchi bosqich - bu ikkala hamkor ham salom xabarlarini yuborishda ulanishning boshlang'ich bosqichidir. Mijoz CLIENT-HELLO xabarini yuborish orqali dialogni boshlaydi. Server CLIENT-HELLO xabarini qabul qiladi, uni qayta ishlaydi va SERVER-HELLO xabari bilan javob beradi. Ushbu vaqtda mijoz ham, server ham yangi bosh kalitga ehtiyoj bor yoki yo'qligini bilish uchun etarli ma'lumotga ega. Yangi bosh kalit kerak bo'lmaganda, mijoz va server darhol 2-bosqichga o'tadilar. Yangi bosh kalit kerak bo'lganda, SERVER-HELLO xabari etarli ma'lumotlarni o'z ichiga oladi, shunda mijoz shunday kalitni yaratishi mumkin. Bunga imzolangan server sertifikati, asosiy shifrlarning ro'yxati (pastga qarang) va ulanish identifikatori (ikkinchisi server tomonidan yaratilgan va seans davomida ishlatiladigan tasodifiy raqam) kiradi. Mijoz asosiy kalitni yaratadi va CLIENT-MASTER-KEY xabarini yuboradi (yoki agar server ma'lumotlari mijoz va server asosiy shifr bilan muzokara qila olmasligini ko'rsatadigan bo'lsa, ERROR xabari).
Shuni ta'kidlash kerakki, har bir SSL so'nggi nuqtasi har bir ulanish uchun bir juft shifrlardan foydalanadi (ya'ni jami 4 shifr). Har bir so'nggi nuqtada chiquvchi aloqa uchun va bitta kiruvchi qo'ng'iroqlar uchun bitta shifr ishlatiladi. Mijoz yoki server sessiya kalitini yaratganda, ular ikkita kalitni hosil qiladi: SERVER-READ-KEY (shuningdek, CLIENT-WRITE-KEY deb nomlanadi) va SERVER-WRITE-KEY (shuningdek, CLIENT-READ-KEY deb nomlanadi). Asosiy kalit mijoz va server tomonidan turli xil seans kalitlarini yaratish uchun ishlatiladi. Va nihoyat, asosiy kalit aniqlangandan so'ng, server mijozga SERVER-VERIFY xabarini yuboradi. Ushbu yakuniy bosqich serverni autentifikatsiya qiladi, chunki faqat tegishli kalitga ega bo'lgan server asosiy kalitni bilishi mumkin.
Ikkinchi bosqich autentifikatsiya bosqichidir. Server birinchi bosqichda allaqachon mijoz tomonidan tasdiqlangan, shuning uchun bu erda mijozning autentifikatsiyasi amalga oshiriladi. Odatda, stsenariyda server mijozdan biron bir narsani olishi kerak va u so'rov yuboradi. Mijoz zarur ma'lumotlarga ega bo'lsa, ijobiy javob yuboradi yoki yo'q bo'lsa, xato haqida xabar yuboradi. Ushbu protokol spetsifikatsiyasi server so'roviga javoban yuborilgan ERROR xabarining semantikasini aniqlamaydi (masalan, ma'lum bir bajarilish xatoni e'tiborsiz qoldirishi, ulanishni yopishi va hokazo va shunga qaramay ushbu spetsifikatsiyaga mos kelishi mumkin). Bir sherik boshqa sherik bilan autentifikatsiya qilinganida, u "tugagan" xabarni yuboradi. Mijoz bo'lsa, CLIENT-FINISHED xabarida server tekshirishi kerak bo'lgan CONNECTION-ID identifikatorining shifrlangan shakli mavjud. Agar tekshirish amalga oshmasa, server xato xabarini yuboradi. Hamkor "tayyor" xabarini yuborganidan so'ng, u sherikdan xabar tugaguncha, uni qabul qilishni davom ettirishi kerak. Ikkala sheriklar "tayyor" xabarlarni yuborgan va qabul qilgandan so'ng, SSL suhbat protokoli o'z ishini yakunladi. Shu paytdan boshlab dastur protokoli ishlay boshlaydi. Rasmda SSL ishlash algoritmi ko'rsatilgan.
2-rasm. SSL ishlash algoritmi
Quyida SSL suhbat protokoli ichidagi xabarlar almashinuvining ba'zi variantlari keltirilgan. Ushbu misollarda ikkita dialog ishtirokchilari keltirilgan: mijoz (C) va server (S). Agar biror narsa qavs ichiga o'ralgan bo'lsa, masalan, "{narsa} tugmachasi", bu "biror narsa" tugmachasi yordamida "shifrlangan" degan ma'noni anglatadi.
1-jadval - seans identifikatori bo'lmaganda holatda.
Client-hello
|
C S:
|
challenge, cipher_specs
|
server-hello
|
S C:
|
connection-id,server_certificate,cipher_specs
|
client-master-key
|
C S:
|
{master_key}server_public_key
|
client-finish
|
C S:
|
{connection-id}client_write_key
|
server-verify
|
S C:
|
{challenge}server_write_key
|
server-finish
|
S C:
|
{new_session_id}server_write_key
|
|
|
|
|
| |