Sobes.tech
Junior

TLS nima?

sobes.tech AI

AIdan javob

TLS (Transport Layer Security) — bu, tarmoqda xavfsiz aloqa ta'minlaydigan kriptografik protokol, masalan, veb-brauzer va server o'rtasida.

Asosiy funksiyalar:

  • Autentifikatsiya: Tomonlarning haqiqiyligini tekshirish (odatda X.509 sertifikatlari yordamida).
  • Maxfiylik: Uzatilyotgan ma'lumotlarni shifrlash, ruxsatsiz kirishni oldini olish uchun.
  • Boshqaruv: Ma'lumotlar uzatish jarayonida o'zgartirilmaganligini tekshirish.

TLS protokoli OSI modelining transport qatlamida (yoki yuqoriroq, amalga oshirish va kontekstga qarab) ishlaydi. SSL (Secure Sockets Layer) protokoli o'rnini bosdi. Hozirgi versiyalari TLS 1.2 va TLS 1.3.

Go kontekstida, TLS net/http standart kutubxonasida HTTPS ni qo'llab-quvvatlash uchun ishlatiladi.

package main

import (
	"crypto/tls"
	"net/http"
	"log"
)

func main() {
	// TLS bilan HTTP serverini sozlash misoli
	// Sertifikat va shaxsiy kalit fayllari talab qilinadi
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Xavfsiz, salom dunyo!"))
	})

	// HTTPS serverini ishga tushirish
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

Interaksiya bir nechta bosqichda (Handshake) yuzaga keladi:

  1. ClientHello: Mijoz TLS ning qo'llab-quvvatlanadigan versiyalarini, shifrlash to'plamlarini va boshqa parametrlarni yuboradi.
  2. ServerHello: Server mijoz taklif qilgan parametrlar orasidan eng optimalini tanlaydi.
  3. Certificate: Server o'z sertifikatini yuboradi.
  4. ServerKeyExchange (ixtiyoriy): Shifrlash kalitlari almashinuvi.
  5. CertificateRequest (ixtiyoriy): Server mijcidan sertifikat so'rashi mumkin, ikki tomonlama autentifikatsiya uchun.
  6. ServerHelloDone: Server Handshake ning o'z qismi tugaganini bildiradi.
  7. Certificate (ixtiyoriy): Mijoz o'z sertifikatini yuboradi.
  8. ClientKeyExchange: Mijoz, serverning umumiy kalitidan shifrlangan pre-master sirini yuboradi, bu sessiya kalitlarini yaratishda ishlatiladi.
  9. CertificateVerify (ixtiyoriy): Mijoz, server imzosini tekshiradi.
  10. ChangeCipherSpec: Mijoz va server, kelishilgan sessiya kalitlaridan foydalanishga o'tishini bildiradi.
  11. Finished: Handshake ning yakunlanishi, yangi kalitlar bilan shifrlangan xabarlar almashinuvi orqali, jarayon muvaffaqiyatli bo'lganligini tekshirish.

TLS tarmoq aloqalari uchun ishonchli xavfsizlik darajasini ta'minlaydi, HTTPS va boshqa ma'lumotlarni himoyalash talab qiladigan protokollar uchun standarti hisoblanadi.