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 و دیگر پروتکل‌هایی است که نیاز به حفاظت داده‌ها دارند.