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:
- protokol versiyasi;
- server va client roli;
- sequence boshlanishi;
- shifrlash algoritmi;
- session key;
- sertifikat;
- autentifikatsiya;
- maksimal frame yoki packet hajmi;
- compression;
- extension;
- timeout.
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:
- Client qo‘llaydigan version va cipherlarni bildiradi.
- Server version va cipherni tanlaydi.
- Server sertifikat yuboradi.
- Key exchange bajariladi.
- Endpointlar session key hosil qiladi.
- Handshake yaxlitligi tekshiriladi.
- Application data shifrlangan holda uzatiladi.
TLS 1.3 eski versiyalarga qaraganda kamroq round trip talab qiladi.
Server sertifikati
Client sertifikat orqali:
- server nomi;
- CA zanjiri;
- amal qilish muddati;
- public key;
- key usage
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:
- protocol version;
- key exchange;
- host key;
- cipher;
- MAC yoki AEAD;
- compression
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:
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:
- port bloklangan;
- protocol version mos emas;
- sertifikat xatosi;
- cipher yo‘q;
- host key o‘zgargan;
- authentication rad etildi;
- MTU;
- packet loss;
- vaqt noto‘g‘ri;
- rate limit;
- proxy protocolni buzgan.
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:
- SYN cookie;
- stateless retry token;
- rate limit;
- connection limit;
- load balancer;
- timeout;
- client puzzle ayrim tizimlarda.
Diagnostika
Handshake tahlilida:
- birinchi packet;
- javob;
- round trip;
- retransmission;
- version;
- algorithm;
- sertifikat;
- sequence;
- timeout;
- firewall;
- server log
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