Sobes.tech
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):

  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 и други протоколи, изискващи защита на данните.