欢乐熊大话蓝牙知识23:你知道蓝牙连接里也有“临时会话密钥”吗?

🔐 你知道蓝牙连接里也有“临时会话密钥”吗?

“蓝牙连接不就连上了吗?还整啥密钥?”

——如果你是这么想的,那你可能真的错过了 BLE 的“秘密花园”。

今天我们要聊聊一个 BLE 配对中非常重要但经常被忽略的角色:

临时会话密钥(STK:Short Term Key)

它可能不“长久陪伴”,但它在配对初期可是担任了“安全护送使者”的关键角色。
在这里插入图片描述


🎭 一、为什么蓝牙需要临时密钥?

想象一下你是设备A,要和手机B开始一次BLE浪漫连接。

你们还不熟,怎么能一上来就交心(传敏感数据)?

这时就需要“临时密钥”来:

  1. 临时保护你们的数据传输
  2. 作为双方互相信任的起点
  3. 等将来有更强的“长期密钥”后就下线退休

就像初次见面用临时微信加个好友,以后再交换手机号。


🔐 二、STK 到底干了啥?

STK,全称 Short Term Key,是蓝牙配对过程中,用于加密连接阶段的临时密钥。

在蓝牙的三步配对流程中:

阶段目的STK 的作用
1. Feature Exchange确定双方支持的加密方式——
2. Key Generation计算出 STK🧠
3. Encryption用 STK 加密连接

当两个设备采用最基本的 Just WorksPasskey Entry 方式进行配对时,会使用 STK 加密初始连接通信。

一旦 STK 加密的连接成功,设备就可以交换更重要的密钥,比如:

  • LTK(长期密钥)
  • IRK(身份识别密钥)
  • CSRK(签名密钥)

而 STK 就此完成使命,隐身退场。
在这里插入图片描述


💡 三、STK 怎么生成的?

BLE 配对模式不同,生成 STK 的方式也不同。

以下是主流配对方法与 STK 的生成方式:

配对方式STK 来源安全性防 MITM
Just Works全 0 或随机数⭐⭐
Passkey Entry基于 6 位 PIN 计算⭐⭐⭐⭐
Numeric Comparison显示比对数值⭐⭐⭐⭐⭐
OOB(NFC/二维码)外部传入密钥⭐⭐⭐⭐⭐

STK = 加密函数(TK + 公共随机数)

其中 TK(Temporary Key)就是临时的配对密码,可由用户输入、OOB 传输,或直接设为 0(Just Works)。


🕵️ 四、STK 安全不安全?

✅ 优点:

  • 快速上手:配对第一步就能用,门槛低;
  • 加密通信:保护最初的数据交换;
  • 自动替换:后续可以切换为长期密钥。

❌ 缺点:

  • 短命:只在初次连接期间使用;
  • 容易被中间人劫持(尤其是 Just Works 模式);
  • 不能保存:下次连接需重新生成。

所以,STK 只是开场白,不能当整场演讲的主角


🧪 五、开发实战:怎么配置和使用?

✅ EFR32 中开启配对并使用 STK(默认流程):

// 开启 bonding 和 MITM 保护
sl_bt_sm_configure(SL_BT_SM_bonding | SL_BT_SM_mitm_required, sm_io_capability_display_only);

// 设置为可配对
sl_bt_sm_set_bondable_mode(1);

设备一旦进入配对状态,就会自动生成 STK,并进行加密。

✅ nRF52 中设定配对参数:

ble_gap_sec_params_t sec_params = {
    .bond = 1,
    .mitm = 1,
    .io_caps = BLE_GAP_IO_CAPS_DISPLAY_ONLY,
    .min_key_size = 7,
    .max_key_size = 16
};

sd_ble_gap_authenticate(conn_handle, &sec_params);

不需要开发者直接操作 STK,BLE 协议栈自动完成生成、使用、废弃流程。


📈 六、一张图总结 STK 的“职场生涯”

[用户发起配对] → [TK生成] → [随机数协商] → [STK生成] → [临时加密通信] → [交换LTK等长期密钥] → [STK退休]

🧠 七、总结一句话:

STK 就像蓝牙世界的“一次性加密令牌”:出现得早、走得快、作用大!

虽然它“短命”,但没有它,就没有后续更高级别的加密建立。

所以,别小看这位 BLE 小角色,在你每一次配对背后,它都“闪亮登场、悄然隐退”。
在这里插入图片描述


📚 延伸阅读推荐:


如果你觉得 STK 的故事挺有意思,别忘了点赞、评论支持一波!
还有其他 BLE 协议背后的“隐藏角色”你想了解吗?欢迎留言,说不定下一期就是它!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢乐熊嵌入式编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值