⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
7个职位/ 0个新职位
最后发表
JamesHiebert
离线
最后看到:10个月2个星期前
加入:2014-10-24真理
栈执行LTK大小

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

谢谢!

关键词:
LTK
设备:
PM_Dialog
离线
最后看到:23小时30分钟前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

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

谢谢,PM_Dialog

JamesHiebert
离线
最后看到:10个月2个星期前
加入:2014-10-24真理
你好,对话框,

你好,对话框,

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来创建
生成的键具有商定的加密密钥大小。掩盖应该是
在生成之后,在分发之前(在LTK的情况下),使用或
存储。

例如,128位加密密钥为
0x123456789abcdef0123456789abcdef0.

并且它被减少到7个八位(56位),然后得到的密钥是
0 x0000000000000000003456789abcdef0。

所以我的问题是,如果主程序发送一个无效的键大小,堆栈是否会传递一个无效的大小(<7或>16)给应用程序(例如,在GAPC_LTK_EXCH风格的bond请求指示)?

PM_Dialog
离线
最后看到:23小时30分钟前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

根据DA14581的rom代码,只有当LTK大于16字节时才会进行检查。因此,如果LTK大于16字节,rom代码将发送前16字节以获得有效的大小。如果LTK大小小于7字节,那么未使用的字节将被0掩盖。在这两种情况下,LTK大小都是16字节,所以如果主程序发送了一个无效的大小,就会在rom代码中进行修正。

谢谢,PM_Dialog

JamesHiebert
离线
最后看到:10个月2个星期前
加入:2014-10-24真理
谢谢你提供的信息。

谢谢你提供的信息。关于传递的密钥大小,还有一个后续问题:

如果主节点LTK大小为7,从节点LTK大小为16,并且也应该生成LTK,那么从节点堆栈将GAPC_BOND_REQ_IND (GAPC_LTK_EXCH)消息与数据一起发送给应用程序。Key_size字段值为7。

相反,如果主服务器的LTK大小为5(这是一个无效的大小),从服务器的LTK大小为16,并且也应该生成LTK,从服务器的堆栈还会发送GAPC_BOND_REQ_IND (GAPC_LTK_EXCH)消息给应用程序吗?如果是,它会指示一个(无效的)键大小为5吗?

PM_Dialog
离线
最后看到:23小时30分钟前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

在每种情况下,主服务器和从服务器发送的LTK都被rom代码修改为16字节。在你所做的两个问题中,master的LTK将被0掩盖以获得16字节的大小。

谢谢,PM_Dialog

JamesHiebert
离线
最后看到:10个月2个星期前
加入:2014-10-24真理
嗨对话框,

嗨对话框,

我明白堆栈焊接键的大小为16个字节。我的问题是报告的“key_size”字段为主LTK大小为5.如果主站和从站协商的LTK大小为7,则此值为7。如果主站提供的LTK大小为5,则将是什么?还是我正在尝试确定应用程序是否可以对具有GAPC_LTK_EXCH堆栈消息提供的无效key_size来确定和反应。