LTK大小的堆栈执行

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
7个帖子/ 0新
最后一篇
杰曼伯特
离线
最后一次露面:10个月2周前
加入:2014-10-24 14:17
LTK大小的堆栈执行

DA14581芯片的BLE堆栈是否强制执行BLE LTK大小限制(7-16字节),以便应用程序始终相信密钥大小有效?

谢谢!

关键词:
设备:
PM_DIALOG.
离线
最后一次露面:2天9小时前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

你能澄清你的问题吗?您是介于什么意思DA14581芯片的BLE堆栈强制执行BLE LTK大小限制(7-16字节)。请注意,LTK是16字节。

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:10个月2周前
加入:2014-10-24 14:17
你好对话框,

你好对话框,

BLE V4.1规范说LTK可以在7到16个字节之间。

第2.4.2.3节LTK,EDIV和RAND的生成

“生成的LTK大小不得超过协商的加密密钥大小,并且可能需要减少其大小(参见第2.3.4节)”。

2.3.4加密密钥大小
每个设备应具有最大和最小加密密钥长度参数
这定义了加密密钥的最大和最小大小
八位字节允许。最大和最小加密密钥长度参数
应在7个八位字节(56位)和16个八位字节(128位)之间,1个八位座(8
位)步骤。这由配置文件或设备应用程序定义。

启动和响应设备的较小值最大加密
关键长度参数应用作加密密钥大小。

启动和响应设备都应检查所得到的
加密密钥大小不小于该键的最小键尺寸参数
设备,如果是,设备应使用错误发送配对失败命令
代码“加密密钥大小”。

可以存储加密密钥大小,因此可以通过任何服务进行检查
具有最小加密密钥长度要求。
如果密钥具有小于16个八位字节(128位)的加密密钥大小,则应
通过屏蔽生成键的适当MSB来创建以提供a
得到的密钥具有商定的加密密钥大小。掩蔽应该是
生成后和在分发之前完成(在LTK的情况下),使用或
存储。

例如,如果128位加密密钥是
0 x123456789abcdef0123456789abcdef0

它减少到7个八位字节(56位),然后得到的键是
0x00000000000000000000003456789abcdef0。

所以我的问题是,如果主机发送无效的密钥大小,则堆栈会将堆栈将无效大小(<7或> 16)传递给应用程序(例如,在绑定请求指示的GAPC_LTK_EXCH风味中)吗?

PM_DIALOG.
离线
最后一次露面:2天9小时前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

根据DA14581的ROM代码,仅当LTK更大的16bytes时才有一个校验。因此,如果LTK超过16字节,则ROM代码将发送前16字节以具有有效大小。如果LTK大小小于7字节,则将用零屏蔽未使用的字节。在这两种情况下,LTK大小将是16字节,因此如果主设备发送无效大小,则ROM代码中存在校正。

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:10个月2周前
加入:2014-10-24 14:17
谢谢提供信息。

谢谢提供信息。有关通过的密钥大小的一个更新问题:

如果主设备具有LTK大小为7并且从站具有LTK大小为16并且也应该生成LTK,则从Slave的堆栈将Gapc_bond_req_ind(gapc_ltk_exch)消息发送到应用程序的数据.key_size字段值为7。

相反,如果主设备具有5(是无效大小)的LTK大小(其大小),因此从设备具有LTK大小为16并且也应该生成LTK,因此从堆栈仍将发送GAPC_BOND_REQ_IND(GAPC_LTK_EXCH)消息应用程序?如果它,它会表示(无效)键大小为5?

PM_DIALOG.
离线
最后一次露面:2天9小时前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

在每种情况下,主站和从头发送的LTK由ROM代码修改为16个字节。在您所做的这两个问题中,Master的LTK将用零屏蔽以才能有16Bytes大小。

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:10个月2周前
加入:2014-10-24 14:17
嗨,对话框中,

嗨,对话框中,

我知道堆栈填充键的大小为16字节。我的问题是关于报告的“key_size”字段是一个主LTK大小为5。如果主从双方协商的LTK大小为7,则该值为7。如果master提供的LTK大小是5,会是什么?我试图确定,如果应用程序可以确定和反应无效的key_size提供了GAPC_LTK_EXCH堆栈消息。