Bosh sahifa Wiki Handshake

Handshake

Handshake — ikki endpoint asosiy ma’lumot almashishdan oldin aloqa parametrlari, imkoniyatlari yoki identifikatsiyasini kelishadigan jarayon.

Handshake transport ulanishi, shifrlash, autentifikatsiya, protocol version va session parametrlarini tayyorlashi mumkin.

Har protokol handshake ishlatmaydi. UDP datagram ko‘pincha oldindan kelishuvsiz yuboriladi, TCP va TLS esa alohida handshakega ega.

Vazifalari

Handshake orqali endpointlar quyidagilarni kelishadi:

Muvaffaqiyatsiz kelishuvda sessiya boshlanmaydi yoki cheklangan rejimga o‘tadi.

TCP three-way handshake

TCP connection uch bosqichda yaratiladi.

Client → SYN
Server → SYN-ACK
Client → ACK

SYN

Client o‘z boshlang‘ich sequence numberini va TCP optionlarini yuboradi.

SYN-ACK

Server client SYNini tasdiqlaydi va o‘z sequence numberini beradi.

ACK

Client server sequence numberini tasdiqlaydi. Connection ESTABLISHED holatiga o‘tadi.

Nima uchun uch bosqich?

Har ikki tomon:

  • qarshi tomonga packet yetayotganini;
  • qaytish yo‘li ishlayotganini;
  • sequence number qabul qilinganini

tasdiqlaydi.

Ikki bosqich eski duplicate packetni yangi ulanish deb qabul qilish xavfini yetarli kamaytirmaydi.

TCP optionlar

Handshake vaqtida quyidagilar kelishilishi mumkin:

  • MSS;
  • window scale;
  • SACK permitted;
  • timestamp;
  • TCP Fast Open.

Connection o‘rnatilgandan keyin ayrim optionlarni qo‘shib bo‘lmaydi.

TLS handshake

TLS handshake himoyalangan sessiya yaratadi.

Umumiy bosqichlar:

  1. Client qo‘llaydigan version va cipherlarni bildiradi.
  2. Server version va cipherni tanlaydi.
  3. Server sertifikat yuboradi.
  4. Key exchange bajariladi.
  5. Endpointlar session key hosil qiladi.
  6. Handshake yaxlitligi tekshiriladi.
  7. Application data shifrlangan holda uzatiladi.

TLS 1.3 eski versiyalarga qaraganda kamroq round trip talab qiladi.

Server sertifikati

Client sertifikat orqali:

ni tekshiradi.

Sertifikat haqiqiy bo‘lmasa, handshake to‘xtaydi yoki foydalanuvchiga ogohlantirish beriladi.

Client sertifikati

Mutual TLSda server ham clientdan sertifikat talab qiladi.

Bu:

muhitlarida ishlatiladi.

Client sertifikati application loginni to‘liq almashtirishi shart emas.

SSH handshake

SSH ulanish boshida:

kelishiladi.

Shundan keyin foydalanuvchi autentifikatsiyasi bajariladi.

Server host key TLS sertifikatiga o‘xshash identifikatsiya vazifasini bajaradi, ammo trust modeli boshqacha.

Wi‑Fi handshake

WPA2 Personalda four-way handshake client va access pointga pairwise session keylarni hosil qilish va ikkala tomon pre-shared keydan kelib chiqqan materialga ega ekanini tekshirishga yordam beradi.

Handshake ichida parolning o‘zi yuborilmaydi.

Yozib olingan handshake zaif Wi‑Fi parolni offline tekshirishda ishlatilishi mumkin. Kuchli va uzun parol muhim.

DHCP jarayoni

DHCP DORA ketma-ketligi ham kelishuv jarayoniga o‘xshaydi:

Discover
Offer
Request
Acknowledgement

Client IP manzil va tarmoq optionlarini oladi.

Bu transport connection handshake emas, lekin ko‘p bosqichli protocol kelishuvi.

QUIC handshake

QUIC transport va TLS 1.3 handshake’ini birlashtiradi.

Yangi ulanishda transport parametrlari va shifrlash kalitlari bir jarayonda kelishiladi.

Oldingi sessiyaga ega client 0-RTT data yuborishi mumkin, ammo replay xavfi hisobga olinadi.

Round-trip time

Handshake ko‘p round trip talab qilsa, uzoq masofali tarmoqda sezilarli kechikish qo‘shadi.

Masalan:

  • TCP handshake;
  • TLS handshake;
  • application login.

Persistent connection, TLS session resumption va QUIC bu xarajatni kamaytiradi.

Timeout va retry

Endpoint handshake javobini ma’lum vaqt kutadi.

Javob kelmasa:

  • qayta yuboradi;
  • boshqa serverga urinadi;
  • fallback qiladi;
  • sessiyani bekor qiladi.

Juda qisqa timeout sekin tarmoqda xato, juda uzun timeout foydalanuvchiga uzoq kutish beradi.

Version negotiation

Client va server umumiy protocol version topishi kerak.

Masalan:

Client: TLS 1.3, TLS 1.2
Server: TLS 1.2
Natija: TLS 1.2

Hech qanday umumiy version bo‘lmasa, handshake ishlamaydi.

Downgrade hujumiga qarshi tanlov handshake ichida himoyalanadi.

Cipher negotiation

Client qo‘llaydigan cipher suite ro‘yxatini yuboradi, server policyga mos variantni tanlaydi.

Eski algoritm hali qo‘llab-quvvatlansa, noto‘g‘ri policy zaif variantni tanlashi mumkin.

Server eski protokol va cipherlarni o‘chiradi.

Handshake failure

Keng tarqalgan sabablar:

Qaysi bosqichda to‘xtagani log va packet capture orqali aniqlanadi.

Handshake va DoS

Handshake serverda state va kriptografik hisob talab qilishi mumkin.

Hujumchi ko‘p yarim ochiq sessiya yaratadi.

Himoya:

Diagnostika

Handshake tahlilida:

tekshiriladi.

TCP handshake tugashi TLS yoki application handshake muvaffaqiyatli bo‘lganini anglatmaydi.

Session resumption

Avvalgi muvaffaqiyatli sessiya ma’lumoti keyingi handshake’ni qisqartirishi mumkin.

TLS session ticket yoki PSK yordamida tomonlar avvalgi ishonchga tayanadi. Bu serverga kamroq kriptografik hisob va clientga kichikroq kechikish beradi.

Resumption ticket amal qilish muddati, key rotation va replay siyosati bilan boshqariladi. Ticket uzoq saqlansa yoki server kaliti sizib chiqsa, ko‘p sessiya xavf ostida qolishi mumkin.

Bog‘liq tushunchalar

TCP, SYN, TLS, SSH, Authentication, Key exchange, Certificate, QUIC, Session, Timeout, Protocol negotiation