LTK大小的堆栈强制

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

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

谢谢!

关键词:
LTK
设备:
PM_Dialog
离线
最后看到:23小时34分钟前
工作人员
加入: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位的加密密钥为
0 x123456789abcdef0123456789abcdef0

并且它被减少到7个字节(56位),那么结果的密钥是
0 x0000000000000000003456789abcdef0。

所以我的问题是,如果主发送一个无效的密钥大小,堆栈是否会向应用程序传递一个无效的大小(<7或>16)(例如,在GAPC_LTK_EXCH类型的绑定请求指示中)?

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

嗨JamesHiebert,

根据DA14581的rom代码,只有当LTK大于16字节时才进行检查。因此,如果LTK大于16字节,rom代码将发送前16字节以获得有效的大小。如果LTK大小小于7字节,则未使用的字节将用零掩盖。在这两种情况下,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小时34分钟前
工作人员
加入: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。如果master提供的LTK大小是5,它会是什么?我试图确定应用程序是否可以确定和反应无效的key_size提供了一个GAPC_LTK_EXCH堆栈消息。