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):
- ClientHello: Կլիենտը ուղարկում է աջակցվող TLS տարբերակների ցանկը, կոդավորումների հավաքածուներ և այլ պարամետրեր:
- ServerHello: Սերվերը ընտրում է լավագույն տարբերակները՝ առաջարկված կլիենտից:
- Certificate: Սերվերը ուղարկում է իր սերտիֆիկատը:
- ServerKeyExchange (ընտրովի): Կոդավորող բանալիների փոխանակում:
- CertificateRequest (ընտրովի): Սերվերը կարող է պահանջել կլիենտի սերտիֆիկատ՝ երկկողմանի հաստատման համար:
- ServerHelloDone: Սերվերը հայտնում է, որ իր մասի Handshake-ն ավարտված է:
- Certificate (ընտրովի): Կլիենտը ուղարկում է իր սերտիֆիկատը:
- ClientKeyExchange: Կլիենտը ուղարկում է նախապես կոդավորված գաղտնիք, որը օգտագործվում է սեսիայի բանալիներ ստեղծելու համար:
- CertificateVerify (ընտրովի): Կլիենտը ստուգում է սերվերի ստորագրությունը:
- ChangeCipherSpec: Կլիենտն ու սերվերը հայտնում են, որ անցնում են համաձայնեցված սեսիայի բանալիների օգտագործմանը:
- Finished: Handshake-ի վերջնական փուլը՝ հաղորդագրությունների փոխանակում՝ նոր բանալիներով,՝ գործընթացի հաջողությունը ստուգելու համար:
TLS-ը ապահովում է ցանցային հաղորդակցությունների անվտանգության հուսալի մակարդակ՝ հանդիսանալով HTTPS և այլ պրոտոկոլների ստանդարտը՝ տվյալների պաշտպանության համար։