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 開源專案範例
- 相關技術書籍與課程
- 社群討論與技術部落格
實作範例
基礎範例
# 本節提供一個完整的實作範例
# 讓你能夠將所學應用到實際專案中
步驟說明
- 初始化:設定開發環境與必要工具
- 資料準備:收集與整理所需資料
- 核心實作:實作主要功能與邏輯
- 測試驗證:確保功能正確運作
- 最佳化:調整效能與使用者體驗
常見錯誤
| 錯誤類型 | 可能原因 | 解決方法 | |---------|---------|---------| | 編譯錯誤 | 語法問題 | 檢查程式碼語法 | | 執行錯誤 | 環境問題 | 確認相依套件已安裝 | | 邏輯錯誤 | 演算法問題 | 逐步除錯與測試 | | 效能問題 | 效率問題 | 使用效能分析工具 |
程式碼範例
# 範例程式碼
import sys
def main():
# 主程式邏輯
print("Hello, World!")
if __name__ == "__main__":
main()
相關資源
- 官方文件
- API 參考手冊
- 開源專案範例
- 技術社群討論