TLS 1.3 與安全通訊

🔥 Vibe Prompt

「用 Python 建立 TLS 1.3 伺服器與客戶端。比較 TLS 1.2 與 1.3 的握手往返次數。」

import ssl, socket, threading, time

# 伺服器
context_srv = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context_srv.load_cert_chain(certfile="server.crt", keyfile="server.key")
context_srv.minimum_version = ssl.TLSVersion.TLSv1_3

def server():
    with socket.socket() as sock:
        sock.bind(('localhost', 8443))
        sock.listen(1)
        with context_srv.wrap_socket(sock, server_side=True) as ssock:
            conn, addr = ssock.accept()
            print(f"伺服器:收到來自 {addr} 的連線")
            print(f"伺服器:加密套件={conn.cipher()}, 版本={conn.version()}")
            data = conn.recv(1024)
            conn.send(b"Hello from TLS 1.3 server!")

# 客戶端
context_cli = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context_cli.load_verify_locations(cafile="root-ca.crt")

def client():
    time.sleep(0.1)
    with socket.create_connection(('localhost', 8443)) as sock:
        with context_cli.wrap_socket(sock, server_hostname="api.vibetutor.com") as ssock:
            print(f"客戶端:加密套件={ssock.cipher()}, 版本={ssock.version()}")
            ssock.send(b"Hello!")
            print(f"客戶端收到:{ssock.recv(1024)}")

threading.Thread(target=server).start()
threading.Thread(target=client).start()
time.sleep(0.5)

TLS 1.3 改進

| 功能 | TLS 1.2 | TLS 1.3 | |------|---------|---------| | 握手 | 2 RTT | 1 RTT(0-RTT 恢復) | | 加密套件 | 多種(部分弱) | 僅 AEAD(GCM/ChaCha) | | Session Tickets | 必要 | 恢復用 PSK |

密碼學課程完成!🎉

  • ✅ AES 加密
  • ✅ RSA 非對稱加密
  • ✅ 雜湊與 HMAC
  • ✅ PKI
  • ✅ TLS 1.3

本章總結

  • 理解核心概念與原理
  • 掌握實作方法與技巧
  • 熟悉常見問題與解決方案
  • 能夠應用於實際專案

延伸閱讀

  • 官方文件與 API 參考
  • GitHub 開源專案範例
  • 相關技術書籍與課程
  • 社群討論與技術部落格

實作範例

基礎範例

# 本節提供一個完整的實作範例
# 讓你能夠將所學應用到實際專案中

步驟說明

  1. 初始化:設定開發環境與必要工具
  2. 資料準備:收集與整理所需資料
  3. 核心實作:實作主要功能與邏輯
  4. 測試驗證:確保功能正確運作
  5. 最佳化:調整效能與使用者體驗

常見錯誤

| 錯誤類型 | 可能原因 | 解決方法 | |---------|---------|---------| | 編譯錯誤 | 語法問題 | 檢查程式碼語法 | | 執行錯誤 | 環境問題 | 確認相依套件已安裝 | | 邏輯錯誤 | 演算法問題 | 逐步除錯與測試 | | 效能問題 | 效率問題 | 使用效能分析工具 |

程式碼範例

# 範例程式碼
import sys

def main():
    # 主程式邏輯
    print("Hello, World!")

if __name__ == "__main__":
    main()

相關資源

  • 官方文件
  • API 參考手冊
  • 開源專案範例
  • 技術社群討論

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!