Sobes.tech
Junior

Ի՞նչ է TLS-ը։

sobes.tech AI

Պատասխան AI-ից

TLS (Transport Layer Security) — սա է կրիպտոգրաֆիկ պրոտոկոլ, որը ապահովում է անվտանգ հաղորդակցություն ցանցում, օրինակ՝ վեբ բրաուզերի և սերվերի միջև:

Հիմնական գործառույթներ:

  • Անձնագրության հաստատում: Կողմերի օրինականության ստուգում (հաճախ X.509 սերտիֆիկատների օգտագործմամբ):
  • Գաղտնիություն: Տարածվող տվյալների կոդավորումը՝ անօրինական մուտքի կանխարգելման համար:
  • Անվտանգություն: Տվյալների փոփոխության ստուգում փոխանցման ընթացքում:

Protokol TLS-ը աշխատում է OSI մոդելի տրանսպորտային շերտում (կամ վերևում, կախված կոնկրետ իրականացման և կոնտեքստից): Այն փոխարինել է SSL-ին (Secure Sockets Layer): Ներկա տարբերակներն են TLS 1.2 և TLS 1.3:

Go ծրագրավորման լեզվում, TLS-ը օգտագործվում է net/http ստանդարտ գրադարանում HTTPS-ի աջակցությամբ:

package main

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

func main() {
	// Օրինակ՝ TLS աջակցությամբ HTTP սերվերի կարգավորումը
	// Պահանջվում են սերտիֆիկատ և մասնավոր բանալի ֆայլեր
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Hello, secure world!"))
	})

	// HTTPS սերվերի գործարկում
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

Հետգործողությունը տեղի է ունենում մի քանի փուլով (Handshake):

  1. ClientHello: Կլիենտը ուղարկում է աջակցվող TLS տարբերակների ցանկը, կոդավորումների հավաքածուներ և այլ պարամետրեր:
  2. ServerHello: Սերվերը ընտրում է լավագույն տարբերակները՝ առաջարկված կլիենտից:
  3. Certificate: Սերվերը ուղարկում է իր սերտիֆիկատը:
  4. ServerKeyExchange (ընտրովի): Կոդավորող բանալիների փոխանակում:
  5. CertificateRequest (ընտրովի): Սերվերը կարող է պահանջել կլիենտի սերտիֆիկատ՝ երկկողմանի հաստատման համար:
  6. ServerHelloDone: Սերվերը հայտնում է, որ իր մասի Handshake-ն ավարտված է:
  7. Certificate (ընտրովի): Կլիենտը ուղարկում է իր սերտիֆիկատը:
  8. ClientKeyExchange: Կլիենտը ուղարկում է նախապես կոդավորված գաղտնիք, որը օգտագործվում է սեսիայի բանալիներ ստեղծելու համար:
  9. CertificateVerify (ընտրովի): Կլիենտը ստուգում է սերվերի ստորագրությունը:
  10. ChangeCipherSpec: Կլիենտն ու սերվերը հայտնում են, որ անցնում են համաձայնեցված սեսիայի բանալիների օգտագործմանը:
  11. Finished: Handshake-ի վերջնական փուլը՝ հաղորդագրությունների փոխանակում՝ նոր բանալիներով,՝ գործընթացի հաջողությունը ստուգելու համար:

TLS-ը ապահովում է ցանցային հաղորդակցությունների անվտանգության հուսալի մակարդակ՝ հանդիսանալով HTTPS և այլ պրոտոկոլների ստանդարտը՝ տվյալների պաշտպանության համար։