Junior
Какво е TLS?
sobes.tech AI
Отговор от AI
TLS (Transport Layer Security) — това е криптографски протокол, който осигурява безопасна комуникация в мрежата, например между уеб браузър и сървър.
Ключови функции:
- Аутентификация: Проверка на автентичността на страните (обикновено с използване на X.509 сертификати).
- Конфиденциалност: Шифроване на предаваните данни за предотвратяване на неоторизиран достъп.
- Целост: Проверка дали данните не са били променени по време на предаването.
Протоколът 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() {
// Пример за настройка на HTTP сървър с TLS поддръжка
// Необходими са файлове с сертификат и частен ключ
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 и други протоколи, изискващи защита на данните.