TLS/PSK
目录
- 一、 TLS/PSK 概念
- 1. TLS
- 2. PSK
- 二、TLS/PSK 的用法举例
- 1. 物联网设备连接(智能家居)
- 2. 移动应用与后端服务
- 3. 企业内网服务间通信
- 三、 PSK 的配置与管理
- 总结:
一、 TLS/PSK 概念
1. TLS
TLS(Transport Layer Security) 是一种加密协议,用于在网络通信中确保隐私和数据完整性。它通过加密数据传输、验证通信双方身份来防止窃听和篡改。
2. PSK
PSK(Pre-Shared Key) 是一种认证机制,通信双方在建立连接前预先共享一个密钥(对称密钥),用于身份认证和会话密钥的生成。与传统的基于证书的 TLS 不同,PSK 无需依赖公钥基础设施(PKI),更适合资源受限的环境。
TLS/PSK 结合了 TLS 的安全框架和 PSK 的轻量级认证,双方使用预共享的密钥直接建立加密通道,省去了证书交换和复杂的非对称加密计算。
二、TLS/PSK 的用法举例
1. 物联网设备连接(智能家居)
场景: 智能灯泡与家庭网关通信。
实现:
出厂时,灯泡和网关预置相同的 PSK(如 0x1234abcd…)。
灯泡发起 TLS 连接时,发送 PSK 标识(如设备 ID “Bulb_001”)。
网关根据标识查找对应的 PSK,验证身份后生成会话密钥。
后续通信使用对称加密(如 AES-GCM)保护数据。
优点: 适合计算能力弱的设备,无需证书管理。
2. 移动应用与后端服务
场景: 手机 App 与服务器安全通信。
实现:
App 首次启动时,通过安全渠道(如扫码)获取 PSK。
每次请求时,App 使用 PSK 建立 TLS 连接。
服务器验证 PSK 后,启用加密通信。
# 服务器端(使用 TLS-PSK 库)
import ssl, socket
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.set_ciphers('PSK')
context.psk_server_callback = lambda identity: b'my_shared_secret_key'
3. 企业内网服务间通信
场景: 内部微服务之间的安全调用。
实现:
管理员为每对服务分配唯一 PSK。
服务 A 调用服务 B 时,通过 TLS/PSK 认证。
使用 HTTP 客户端库(如 curl)测试:
curl --psk "my_key" --psk-identity "service_a" https://internal-api.example.com
优点: 简化内网证书管理,降低运维成本。
三、 PSK 的配置与管理
- 密钥生成: 使用强随机数生成(如 32 字节),避免弱密钥(如 password123)。
- 密钥分发: 通过安全渠道(硬件安全模块、手动注入)预置。
- 密钥轮换: 定期更新 PSK,旧密钥逐步淘汰。
注意: 安全性依赖 PSK 保密性:泄露等同于身份被盗用。适用场景:资源受限设备、可控内网环境。TLS 版本:推荐 TLS 1.3(支持更高效的 PSK 交换)。通过 TLS/PSK,可在保证安全的前提下简化身份认证过程,适用于物联网、移动端及内部系统等场景。
总结:
本文介绍了网络通信中的一种加密协议TLS/PSK,关于对称加密、签名、密钥等等概念请参考加密与电子签名