三星蓝牙位置追踪系统的安全性分析
2024-1-18 09:55:34 Author: www.freebuf.com(查看原文) 阅读量:11 收藏

本研究对三星的离线查找(OF,Offline Finding)协议进行了详细分析,该协议是三星Find My Mobile系统的一部分,用于定位三星移动设备和Galaxy SmartTags。OF协议利用蓝牙低功耗(BLE)广播丢失设备的独特信标,然后附近的三星手机或平板电脑(helper,帮助者设备)会捕获该信标并将其以及捕获位置信息转发到供应商服务器。失主随后可以查询服务器以查找其设备的位置。

通过对OF协议及其实现进行多方面的安全性和隐私性分析,包括通过BLE数据跟踪OF设备的可行性、通过滥用OF网络实现不希望的个人跟踪的可行性、供应商是否能够去匿名化位置报告以确定所有者或helper设备的位置,以及攻击者是否能够破坏位置报告的完整性。研究结果表明,在OF协议的设计和实现方面存在各种隐私风险。

智能手机和平板电脑等便携设备通常配备了一项功能,允许所有者在设备丢失时找回它们,这通过供应商提供的Web门户进行,例如谷歌的Find My Device、三星的Find My Mobile(FMM)]和苹果的Find My。这类功能正常工作的要求是丢失设备必须连接到互联网,以便在设备所有者标记设备为丢失时,能够将其位置报告发送到供应商服务器。近年来,像三星和苹果这样的移动设备制造商已经通过OF功能扩展了其丢失设备跟踪系统,即使设备没有互联网连接,也可以找回丢失的移动设备。苹果和三星的OF功能都共享两个关键元素:使用BLE在供应商设备之间进行短距离数据传输,以及至关重要的(联网)移动设备网络(称之为helper设备),这些设备会将位置信息中继到供应商控制的服务器,将后者称为OF网络。基本想法非常简单:当丢失的设备失去互联网连接时,它会开始通过BLE广播一个唯一的信标,然后由参与OF网络的附近helper设备捕获,然后将信标及其所在位置转发给供应商服务器。这项工作关注三星于2020年引入的FMM离线查找功能,所有者可以通过在三星移动设备(例如手机或平板电脑)上运行的Samsung FMM应用程序来跟踪其设备的位置。

在2021年,三星推出了Galaxy SmartTag,这是一款小型的BLE跟踪器,可以附在各种物品上,用于追踪它们的位置。由于SmartTags无法连接到互联网,因此它们依赖于OF网络进行长距离位置跟踪(超出BLE的范围)。SmartTags的注册和控制是通过SmartThings完成的,SmartThings是一个用于控制和管理各种智能设备和家用电器的综合平台。OF功能也适用于SmartTags,使用与FMM协同工作的“SmartThings Find”附加组件。

在三星的OF网络中,设备可以分为三种角色:所有者设备、帮助者设备和丢失设备。移动设备可以通过FMM应用程序注册到三星的OF网络,而SmartTag可以通过三星SmartThings应用程序注册。每个已注册的设备都与其注册时所属的所有者帐户相关联。当已注册的设备失去互联网连接,或者对于SmartTags,当它超出了与其所有者设备的BLE范围时,它会定期通过BLE广播某些数据。这些数据包括一个循环标识符,称为隐私ID,它是唯一的,理论上只能由三星和所有者设备关联。helper设备包括三星设备(手机和平板电脑)以及一些支持三星OF协议的第三方设备。主动的helper设备会定期扫描附近OF设备的BLE广播并将其位置报告给位置服务器。当所有者查询其位置时,丢失设备的位置报告将被下载到所有者设备上。OF功能的有效性取决于其OF网络的规模,在三星OF的情况下,据估计在2022年有大约2亿活跃的helper设备。在接下来的内容中把参与三星OF网络的终端用户设备,如手机和SmartTags称为OF设备。

ECDH密钥交换和AES分组密码:在OF协议中使用了两种主要的密码构造,即椭圆曲线Diffie-Hellman(ECDH)密钥交换协议和AES分组密码及其相关的加密模式。ECDH建立在Diffie-Hellman密钥交换协议的基础上,其中底层组操作是在椭圆曲线(EC)上定义的。三星的OF实现使用了椭圆曲线Curve25519,该曲线旨在在不损害安全性的前提下实现高速计算。高级加密标准(AES)算法是一种广泛用于数据加密的对称分组密码,也是其他密码学函数的构建基础。三星的FMM和SmartTags使用AES CBC模式密码与PKCS#7填充方案来进行各种与OF相关的数据加密/解密操作。

蓝牙低功耗:SmartTags使用了BLE,这是一种短距离无线通信技术,用于数据传输。BLE的协议栈由各种层和配置文件组成,其中对本文最相关的是通用接入配置文件(GAP)和通用属性配置文件(GATT)。GAP定义了设备发现和连接建立的过程。BLE设备可以在以下一种或多种角色中运行:

• 广播者:发送BLE数据,可供附近的任何支持蓝牙的设备使用。

• 观察者:监听BLE广播数据,并可能处理广播者的数据。

• 中央:在接收到广播者的广播数据后启动连接的设备。

• 外部:接受中央设备的传入连接。

GATT定义了在BLE设备之间连接上的数据组织和交换。GATT使用分层结构来组织数据。一个GATT配置文件可能包含多个服务,每个服务包含一个或多个特征。每个特征是用户数据的容器。一个特征后面可以跟着描述符,这些描述符提供了特征及其值的附加元数据。

BLE有两种传输数据的方式:通过BLE广播和通过连接的数据交换。广播是BLE设备以单向方式发送数据包的过程,而连接上的通信允许外部和中央之间的双向数据传输。数据包通过外部设备的GATT服务器中的特征进行交换。通过其MAC地址,BLE设备被寻址,MAC地址是一个48位的标识符。有四种类型的MAC地址:公共地址、随机静态地址、随机私有不可解析地址和随机私有可解析地址。公共地址已在IEEE注册,不会更改。随机静态地址未注册,在设备运行时保持不变。每个支持蓝牙的设备都有一个标识地址,它可以是公共地址或随机静态地址。两种随机私有地址(不可解析、可解析)用于隐私保护目的。随机私有不可解析地址完全随机生成,而随机私有可解析地址(RPAs)是使用从随机种子值和称为身份解析密钥(IRK)的16字节密钥进行的键散列函数生成的。拥有设备的IRK也将允许用户对其RPAs进行去匿名化。

配对是两个BLE设备交换必要信息的过程,以建立加密连接。BLE有多种配对模式,由配对设备的认证要求和输入/输出(IO)能力决定。作为配对的一部分,IRKs被交换,以便设备可以使用IRKs识别各自的RPAs。BLE支持不同的配对方法来验证配对过程中的参与者。最简单的配对方法称为“Just Works”,不检查参与者的真实性,已被利用来秘密窃取目标设备的IRK。

研究方法:采用了多种调查方法来了解SmartTags和FMM应用程序的OF协议。参与分析的设备包括一台配备BLE 4.2适配器运行Ubuntu 20.04 LTS的研究笔记本电脑,运行Android版本8.0 - 12的多部三星手机,以及具有固件版本1.01.26和1.02.06的SmartTags。研究者使用了应用程序和固件的逆向工程相结合的方法来研究OF网络中涉及的各种协议的内部工作原理,分析由Android系统和应用程序产生的各种日志,以及分析设备与供应商服务器之间的BLE和网络流量。

SmartTags的OF协议涉及与各种供应商服务器的在线交互(通过互联网)和与附近标签和移动设备的离线交互(通过BLE)。在这里讨论了四个重要的子协议,这些子协议在下图中进行了总结。设备与服务器之间的通信通过HTTPS进行,假设它是安全的。涉及到四个主体:所有者设备、标签、供应商服务器和helper设备。子协议如下:

1.注册协议:该协议涉及所有者设备、标签和服务器。所有者通过获取相关的标签数据,如序列号、固件版本等,然后与服务器启动密钥建立协议,以生成用于随后与标签交互的各种对称密钥。

2.连接模式下的标签协议:该协议在注册后立即执行,以及在标签在脱离BLE范围后在所有者设备附近时执行。它包含了对所有者设备和标签进行认证的子协议,一旦认证通过,可以在BLE上交换各种命令和数据。

3.丢失模式下的标签协议:该协议在标签失去与所有者的BLE连接不到24小时后触发。在此状态下,它会广播匿名的循环隐私ID,触发附近的helper设备(定期扫描隐私ID)记录并报告所记录的隐私ID的位置到服务器。

4.超时丢失模式下的标签协议:标签在失去24小时以上后转入超时丢失模式。检测到标签处于超时丢失模式的helper设备将启动反跟踪检测过程。该过程旨在使helper设备能够通过在标签上播放声音来定位(潜在的)跟踪标签。为了播放声音,帮助者需要从服务器获取临时密钥,以便向标签进行身份验证。

image

A. SmartTag注册

SmartTag注册协议需要与未注册的标签和供应商服务器进行交互。对于供应商服务器,实际上涉及多个服务器,提供诸如用户认证、应用程序相关服务(如远程认证)以及与存储和检索位置报告相关的服务。为简单起见,将在以下讨论中统称这些服务器为供应商服务器(或简称“服务器”)。

所有者设备与标签之间的交互通过BLE使用BLE广播和GATT配置文件完成。SmartTag使用两个UUID来在BLE上广播其存在:FD59用于未注册的标签,FD5A用于已注册的标签。SmartTag不支持互联网连接,因此依赖于所有者设备(通常是移动电话)通过BLE连接执行各种设置。这是通过其GATT配置文件完成的,该配置文件定义了标签及其所有者设备用于交换数据和命令的各种服务和特征。在下文中将省略GATT配置文件中每个特征使用的具体UUID,并改用符号名称来引用它。SmartTag的GATT配置文件具有四个主要服务,可以总结如下:

认证服务:认证服务使用三个特征,NONCE、ENONCE和SUPPORTED_-CIPHER,用于在BLE上对连接设备进行认证。

DFU服务:服务UUID FE59是nRF52833无按钮安全DFU服务的一部分,用于通过空中固件更新。它具有可写特征(BUTTONLESS_-DFU),可用于重新启动标签。

Onboarding服务:服务UUID FD59用于设备入网/注册活动。在注册过程中,所有者设备和标签通过此服务下的各种特征交换配置和加密数据。

命令服务:服务UUID FD5A主要用于在所有者设备和标签之间执行更复杂的交互,例如在标签上执行支持的命令(例如,报警,更改铃声)等。

SmartTag注册由运行SmartThings应用程序的所有者设备发起。它涉及与服务器的在线交互,以及与标签的离线交互。与服务器的交互需要有效的用户帐户。在以下讨论中将假设已创建了有效的用户帐户,并建立了所有者设备和服务器之间的已验证会话。注册协议包括五个阶段:密钥建立、所有者-标签认证、确认标签的物理拥有权、标签所有权检查和注册完成。

(1)阶段1:密钥建立

注册协议的第一个阶段实际上是标签和服务器之间的密钥建立协议,由所有者设备中介。由于无法获得服务器代码,对这个阶段的分析基于对SmartTag固件和所有者设备与服务器之间拦截的流量的分析。研究结果表明,标签保留一对私钥-公钥ECDH密钥(a,Apub),该密钥在标签的整个生命周期内保持不变,而服务器至少保留了每个标签的公钥。标签通过其串行号唯一标识,该串行号是其BLE控制器的身份地址的SHA256摘要。标签的公私钥对从标签或服务器中都不会发送出去。共享密钥建立协议总结如下图所示。

image

步骤1. 所有者设备通过标签的广播负载和Onboarding服务获取必要的注册数据。其中包括对标签唯一的散列串行号(hashed_sn),它对应于标签的BLE身份地址的SHA256摘要。

步骤2. 所有者设备生成一个32字节的随机值x,并将x与步骤1获取的注册数据一起发送给服务器。

步骤3和4. 在收到请求后,服务器查找与hashed、_sn关联的标签Apub的公钥。然后,服务器生成临时的私钥-公钥对(b,Bpub),并计算ECDH共享密钥Bkey = bA。最后,将共享密钥与随机数x连接起来形成SHA-256哈希函数的输入,以生成共享秘密:Bsecret = SHA256(Bkey|x)。然后,服务器将Bpub和Bsecret发送给所有者设备。

步骤5. 所有者从服务器接收Bpub和Bsecret,并将Bpub和x转发给标签。

步骤6. 标签从所有者设备接收Bpub和x,并计算Akey = aB和Asecret = SHA256(Akey|x)。

根据ECDH的属性,假设没有被攻击者篡改,到达步骤6的末尾,应该有Asecret = Bsecret。也就是说,所有参与者现在共享相同的Bsecret秘密。这个共享密钥将在接下来用于计算多个在后续协议中使用的AES密钥。

共享密钥Bsecret的前16字节被视为masterSecret。它用于派生用于保护所有者设备和标签之间通信的六个16字节子密钥。请注意,三星OF协议不使用任何默认的BLE配对和认证机制,因此这个共享密钥与通常作为BLE配对协议的一部分交换的BLE长期密钥(LTK)无关。子密钥使用下面给出的密钥派生函数派生,该函数结合了masterSecret和用于区分子密钥的参数:

image

以下四个子密钥由所有者设备、标签和服务器计算。

1.所有者身份验证密钥:所有者使用该密钥与 SmartTag 建立经过身份验证的 BLE 会话。 它的计算方法是:

AKo = kdf(masterSecret, "bleAuthentication")

2.所有者GATT密钥:该密钥用于加密所有者和标签之间的GATT交互中交换的数据。 它依赖于随机数,并且对于与标签交互的单个会话有效。

GKo(nonce) = kdf(masterSecret,nonce)

这里的 nonce 是在每个 BLE 身份验证过程中从智能标签接收到的 16 字节值。

3.隐私密钥:该密钥用于为智能标签生成唯一的隐私 ID。

PIDK = kdf(masterSecret, "privacy")。

4.广播签名密钥:该密钥用于签名和验证 SmartTag 广播的 BLE 数据的完整性:

ASK = kdf(masterSecret, "signing")

两个附加子密钥由智能标签和服务器派生,但不是由所有者设备派生。

非所有者身份验证密钥:非所有者设备使用此密钥对标签进行身份验证。

AKno = kdf(masterSecret, "nonOwner")

非所有者GATT 密钥:该密钥在非所有者和标签之间的 GATT 会话中用于交换命令。 它取决于 GATT 交互期间交换的随机数。

GKno(nonce) = kdf(AKno,nonce)

与所有者 GATT 密钥不同,非所有者 GATT 密钥不是直接从 masterSecret 生成的; 相反,它是从非所有者身份验证密钥派生的。

(2)阶段2:所有者-标签认证

在计算masterSecret和AES密钥之后,所有者设备发起与标签的双向认证,以建立经过身份验证的连接会话。此协议仅通过BLE交互来实现,使用标签的GATT配置文件中的Authentication Service。在以下协议描述中,O代表所有者设备,T代表标签。使用符号Ek(x, y)表示使用密钥k和初始化向量x对明文y进行AES/CBC/PKCS7加密。

image

这里的nO和nT分别指的是由O和T生成的随机数。在第3步中,标签检查接收到的密文是否确实是文本"smartthings"的加密;同样在第4步中,所有者检查接收到的密文是否具有预期的形式。如果这些检查中的任何一个失败,认证将失败;否则认


文章来源: https://www.freebuf.com/vuls/389969.html
如有侵权请联系:admin#unsafe.sh