Đánh giá bảo mật các phiên bản TLS 1.0, 1.1, 1.2, 1.3 và mã PowerShell để quản lý các phiên bản TLS

TLS (Transport Layer Security) là một giao thức mã hóa được thiết kế để cung cấp bảo mật và toàn vẹn dữ liệu cho các liên lạc qua mạng. TLS thường được sử dụng trong các ứng dụng như duyệt web, email, nhắn tin tức thời, và VoIP. Các phiên bản khác nhau của TLS đã được phát triển qua các năm để cải thiện bảo mật và hiệu suất.

ASVASV
Aug 7, 2024 - 00:48
 180
Đánh giá bảo mật các phiên bản TLS 1.0, 1.1, 1.2, 1.3 và mã PowerShell để quản lý các phiên bản TLS

Đánh giá bảo mật các phiên bản TLS

TLS 1.0

Giới thiệu: TLS 1.0 được ra mắt vào năm 1999, là phiên bản đầu tiên của giao thức TLS, kế thừa từ SSL 3.0. Nó đã được sử dụng rộng rãi trong suốt thập kỷ đầu tiên của thế kỷ 21.

Đánh giá bảo mật: TLS 1.0 hiện nay được coi là không an toàn do các vấn đề bảo mật như:

  • BEAST Attack (Browser Exploit Against SSL/TLS): Tấn công này khai thác lỗ hổng trong việc sử dụng chuỗi mã hóa CBC (Cipher Block Chaining) của TLS 1.0.
  • Khả năng mở rộng và hỗ trợ: TLS 1.0 không hỗ trợ các thuật toán mã hóa và hàm băm hiện đại hơn, làm giảm khả năng bảo mật so với các phiên bản sau này.

Do những lý do này, TLS 1.0 đã bị khuyến cáo không nên sử dụng và nhiều tổ chức đã ngừng hỗ trợ nó.

TLS 1.1

Giới thiệu: TLS 1.1 được phát hành vào năm 2006 nhằm khắc phục một số lỗ hổng bảo mật của TLS 1.0.

Đánh giá bảo mật: TLS 1.1 có một số cải tiến so với TLS 1.0:

  • Bảo vệ chống lại BEAST Attack: Bằng cách thay đổi cách thức xử lý chuỗi mã hóa CBC.
  • Bảo vệ lại các tấn công chuyển đổi phiên bản (version rollback attack): Bằng cách bao gồm phiên bản của giao thức trong quá trình bắt tay (handshake).

Tuy nhiên, TLS 1.1 cũng đã trở nên lỗi thời và không hỗ trợ các thuật toán mã hóa và hàm băm mới hơn, do đó, nó cũng không được khuyến nghị sử dụng hiện nay.

TLS 1.2

Giới thiệu: TLS 1.2 được phát hành vào năm 2008 và đã trở thành phiên bản tiêu chuẩn trong nhiều năm.

Đánh giá bảo mật: TLS 1.2 mang lại nhiều cải tiến bảo mật đáng kể:

  • Hỗ trợ các thuật toán mã hóa hiện đại: Chẳng hạn như AES (Advanced Encryption Standard) với các chế độ mã hóa GCM (Galois/Counter Mode).
  • Hỗ trợ các hàm băm mạnh mẽ hơn: Như SHA-256.
  • Cho phép sử dụng các cipher suite với Forward Secrecy (FS): Đảm bảo rằng các khóa phiên (session keys) sẽ không bị ảnh hưởng nếu khóa riêng tư dài hạn bị xâm phạm.

TLS 1.2 hiện vẫn được sử dụng rộng rãi và được coi là an toàn nếu được cấu hình đúng cách.

TLS 1.3

Giới thiệu: TLS 1.3 được phát hành vào năm 2018 với mục tiêu đơn giản hóa giao thức và cải thiện bảo mật cũng như hiệu suất.

Đánh giá bảo mật: TLS 1.3 mang đến những cải tiến bảo mật mạnh mẽ:

  • Giảm số vòng bắt tay (handshake): Từ 2 vòng xuống còn 1 vòng, cải thiện tốc độ kết nối.
  • Loại bỏ các thuật toán mã hóa không an toàn: Chỉ hỗ trợ các thuật toán mã hóa và hàm băm hiện đại như AES-GCM và ChaCha20-Poly1305.
  • Bảo mật hoàn toàn trước các tấn công downgrade (downgrade attacks): Bằng cách sử dụng các phiên bản xác định và các kỹ thuật mã hóa mạnh mẽ.
  • Forward Secrecy (FS): Được mặc định, bảo vệ dữ liệu quá khứ ngay cả khi khóa riêng tư dài hạn bị xâm phạm.

TLS 1.3 được coi là tiêu chuẩn vàng cho bảo mật giao thức mạng hiện nay và được khuyến nghị sử dụng bất cứ khi nào có thể.

Mã PowerShell để quản lý các phiên bản TLS và đánh giá bảo mật các phiên bản TLS 1.0, 1.1, 1.2, 1.3

Mã PowerShell này cho phép hiển thị phiên bản TLS đang chạy trên hệ thống và cung cấp các chức năng để bật hoặc tắt các phiên bản TLS cụ thể:

# Function to get the enabled TLS versions
function Get-TLSVersions {
    $regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols"
    $tlsVersions = Get-ChildItem -Path $regPath | ForEach-Object {
        $_.PSChildName
    }
    $enabledVersions = @()
    foreach ($version in $tlsVersions) {
        $clientKey = "$regPath\$version\Client"
        $serverKey = "$regPath\$version\Server"
        if ((Get-ItemProperty -Path $clientKey -Name "Enabled" -ErrorAction SilentlyContinue).Enabled -eq 1 -or
            (Get-ItemProperty -Path $serverKey -Name "Enabled" -ErrorAction SilentlyContinue).Enabled -eq 1) {
            $enabledVersions += $version
        }
    }
    return $enabledVersions
}

# Display the enabled TLS versions
$enabledTLSVersions = Get-TLSVersions
Write-Output "Enabled TLS Versions: $($enabledTLSVersions -join ', ')"

# Function to disable TLS 1.0 or 1.1
function Disable-TLS {
    param (
        [string]$version
    )

    $regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$version"
    $clientKey = "$regPath\Client"
    $serverKey = "$regPath\Server"

    if ((Get-ItemProperty -Path $clientKey -Name "Enabled" -ErrorAction SilentlyContinue).Enabled -ne 0 -or
        (Get-ItemProperty -Path $serverKey -Name "Enabled" -ErrorAction SilentlyContinue).Enabled -ne 0) {
        Set-ItemProperty -Path $clientKey -Name "Enabled" -Value 0 -Force
        Set-ItemProperty -Path $serverKey -Name "Enabled" -Value 0 -Force
        Write-Output "$version has been disabled."
    } else {
        Write-Output "$version is already disabled."
    }
}

# Function to enable a TLS version
function Enable-TLS {
    param (
        [string]$version
    )

    $regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$version"
    $clientKey = "$regPath\Client"
    $serverKey = "$regPath\Server"

    if ((Get-ItemProperty -Path $clientKey -Name "Enabled" -ErrorAction SilentlyContinue).Enabled -ne 1 -or
        (Get-ItemProperty -Path $serverKey -Name "Enabled" -ErrorAction SilentlyContinue).Enabled -ne 1) {
        New-Item -Path $clientKey -Force | Out-Null
        Set-ItemProperty -Path $clientKey -Name "Enabled" -Value 1 -Force
        New-Item -Path $serverKey -Force | Out-Null
        Set-ItemProperty -Path $serverKey -Name "Enabled" -Value 1 -Force
        Write-Output "$version has been enabled."
    } else {
        Write-Output "$version is already enabled."
    }
}

# Menu for selecting functions
function Show-Menu {
    param (
        [string]$message
    )
    Write-Host $message
    Write-Host "1: Disable TLS 1.0"
    Write-Host "2: Disable TLS 1.1"
    Write-Host "3: Enable TLS 1.2"
    Write-Host "4: Enable TLS 1.3"
    Write-Host "5: Exit"
    $choice = Read-Host "Enter your choice"
    return $choice
}

do {
    $choice = Show-Menu -message "Select an option:"
    switch ($choice) {
        "1" { Disable-TLS -version "TLS 1.0" }
        "2" { Disable-TLS -version "TLS 1.1" }
        "3" { Enable-TLS -version "TLS 1.2" }
        "4" { Enable-TLS -version "TLS 1.3" }
        "5" { Write-Host "Exiting..." }
        default { Write-Host "Invalid choice. Please try again." }
    }
} while ($choice -ne "5")

Lưu ý: việc thay đổi các thiết lập TLS có thể yêu cầu quyền quản trị và có thể ảnh hưởng đến khả năng tương thích với các ứng dụng và dịch vụ hiện có. Hãy kiểm tra kỹ trước khi thực hiện các thay đổi này trên hệ thống sản xuất.

Cảm xúc của bạn?

like

dislike

love

funny

angry

sad

wow

ASV QR DONATE: Anh em cảm thấy hữu ích hãy ủng hộ mình một ly cafe để có nhiều bài viết giá trị hơn nữa. Cần hỗ trợ tư vấn dịch vụ, vui lòng liên hệ mình. Xin cảm ơn./.