LTK大小的堆栈强制执行

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
7个帖子/ 0个新
最后发表
JamesHiebert
离线
最后看到:8个月1周前
加入:2014-10-24真理
LTK大小的堆栈强制执行

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

谢谢!

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

嗨JamesHiebert,

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

谢谢,PM_Dialog

JamesHiebert
离线
最后看到:8个月1周前
加入: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位加密密钥为
0 x123456789abcdef0123456789abcdef0

它被简化为7个八位元(56位),那么最终的密钥是
0 x0000000000000000003456789abcdef0。

所以我的问题是,堆栈是否曾经传递一个无效的大小(<7或>16)到应用程序(例如,在一个bond请求指示的GAPC_LTK_EXCH味道),如果主发送一个无效的密钥大小?

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

嗨JamesHiebert,

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

谢谢,PM_Dialog

JamesHiebert
离线
最后看到:8个月1周前
加入: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
离线
最后看到:12小时52分钟前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

在每一种情况下,主端和从端发送的LTK都被rom代码修改为16字节。在你提出的两个问题中,master的LTK将被零掩盖,以达到16字节的大小。

谢谢,PM_Dialog

JamesHiebert
离线
最后看到:8个月1周前
加入:2014-10-24真理
嗨,对话框中,

嗨,对话框中,

我知道堆栈将键填充为16字节大小。我的问题是关于报告的“key_size”字段是为一个主LTK大小5。如果主服务器和从服务器协商的LTK大小为7,则该值为7。如果主提供的LTK尺寸是5,会是多少?我试图确定应用程序是否可以确定和响应一个无效的key_size提供了一个GAPC_LTK_EXCH堆栈消息。