蓝牙安全简单配对的解释

Secure Simple Pairing Explained原文

介绍

基于PIN码的蓝牙配对的第一个版本没有提供任何真正的安全防范嗅探。像Ellisys蓝牙浏览器400这样的嗅探器能够通过被动地嗅探配对过程来自动立即确定PIN码并推出链路密钥(Link Key)。

随着蓝牙越来越广泛,安全配对方法成为确保技术长期成功的难点。在蓝牙2.1规范中引入,安全简单配对(SSP)修复了以前配对方法的所有问题,并使蓝牙设备配对比以往任何时候都更简单。

更强大的安全性也意味着蓝牙工程师面临新的挑战。在现场调试现成的设备变得难以实现。

事情并没有像他们看起来那样糟糕。本文旨在介绍SSP的基础知识,并清除蓝牙社区中常见的一些误解。

配对过程

配对设备的过程旨在在两个蓝牙设备之间创建共享密钥:链路密钥(Link Key)。然后,该链路密钥(Link Key)用于彼此认证设备并加密交换的数据。数据实际上并没有使用链路密钥(Link Key)直接加密;临时加密密钥(Encryption Key)从链路密钥(Link Key)和在加密通信流开始之前不久交换的随机数导出。然后,该加密密钥(Encryption Key)用于在两个方向上加密数据。可以在连接处于活动状态的任何时候更改它,一旦连接关闭,或者如果加密停止,将被丢弃。

蓝牙规范定义了两种标准配对过程,LMP配对(也称为基于PIN码)和SSP。非标准配对方法也是可能的,但是要求两个设备来自同一制造商。任何配对方法的结果都是一样的:创建共享的链路密钥(Link Key)。

一旦两个设备拥有相同的链路密钥(Link Key),该共享密钥可以用于在稍后的时间将两个设备重新认证。当重新连接时,设备通过交换从其派生的数字来快速验证它们都具有相同的链路密钥(Link Key)。如果链路密钥(Link Key)匹配,则可以继续创建会话密钥(Session Key)。否则,配对过程(LMP配对或SSP)必须从一开始重新启动,从而创建一个全新的链路密钥(Link Key)。

LMP配对(又名PIN码)

用于创建LMP配对的链路密钥(Link Key)的算法的输入如下:

  • 两台设备的BD_ADDR
  • 由发起者创建的16字节随机数
  • 用户在两台设备上输入的PIN码(用户无法更改PIN码的“固定PIN码”除外)

这些数字用于首先创建临时共享初始化密钥( temporary shared initialization key),然后使用LMP配对密钥生成过程将其转换为链路密钥(Link Key)。

由于唯一未公开的信息是PIN码,可能的秘密链路密钥(Link Key)的数量受可能的PIN码的数量的限制。如果设备使用4位PIN码,则攻击者只需要在能够解密通信流之前最多尝试10,000个不同的链路密钥(Link Key)。这是LMP配对的弱点所在。

LMP配对过程由以下图表描述:

PIN码不是通过空中传送的唯一信息。这是Ellisys嗅探器捕获的相同通信流:

基于此捕获的信息,Ellisys软件能够自动确定PIN码并计算链路密钥(Link Key),而无需任何用户交互。Ellisys软件的结果如下:

之后,Ellisys软件将自动解密任何后续安全连接的数据。此过程在下面的“已认证连接”一章中描述。

确保简单配对

SSP使用一种更加精细的机制,称为椭圆曲线密码术,避免使用PIN码作为链路密钥(Link Key)计算过程的一部分(PIN码或其他用户码仍然可以用作认证过程的一部分),而是使用极大的随机数来给Link Key计算做种子。因此,可能的链路密钥(Link Key)的数量不再限于小于2^128的可能性,这远远超出了任何现实的攻击者能力。

为了实现这一点,SSP过程开始于在两个设备之间建立不同种类的共享秘密。这个共享秘密被称为Diffie-Hellman密钥(DHKey),是一个192位随机数。作为先决条件,两个设备每个都具有私钥和公钥。公共密钥是通过空中传播的,任何人都可以知道,但私钥永远不会被披露。我们将这两个Key称为SSP公钥/私钥对,但这些也称为Diffie-Hellman公钥/私钥对(Diffie和Hellman是开发该算法的两个人)。

用于创建SSP密钥对的精心选择的数学空间和算法使得:

  • 非常困难(即不可能使用当前最先进的计算机)使用公钥计算私钥(但是很容易根据私钥计算公钥)

  • 给定两个SSP密钥对A和B,存在一个众所周知的函数F,使得F(PublicA,PrivateB)= F(PublicB,PrivateA)。这个函数的结果是DHKey。只有拥有A和B的两个设备能够计算出相同的DHKey。

这是SSP的神奇之处:两台设备将能够进行配对,而无需通过空中传输任何关键信息,且无需通过带外机制(例如键入它)在键盘上共享该信息)。DHKey将用作计算链路密钥(Link Key)的种子。配对过程的其余部分与LMP配对相似。

SSP配对过程由以下图表描述:

这是Ellisys嗅探器捕获的同一通信流:

嗅探器不知道的唯一信息(为了从通过空中传输的通信流计算链路密钥(Link Key))是SSP私钥。实际上,只需要两个SSP私钥中的一个来确定DHKey,因此需要链路密钥(Link Key)。如果用户将其设备的SSP私钥提供给Ellisys分析软件,则将自动推断从本设备与任何其他设备配对的链路密钥(Link Key)。

另一种方法是使用SSP调试模式。我们现在了解SSP的基础知识,了解SSP调试模式很简单。置于SSP调试模式的设备将不会使用其通常的SSP私钥/公钥对,而会使用SSP调试模式私钥/公钥对。如果两个设备中的任一个置于SSP调试模式下,Ellisys嗅探器将能够通过识别通过空中发送的调试模式公钥并使用相应的公钥来自动推导出配对产生的链路密钥(Link Key)。使用SSP调试模式或提供两个SSP私钥之一是完全相同的。

以下屏幕截图显示了当使用SSP调试模式时Ellisys软件发现的Link Key:

认证连接

配对后,两台设备共享相同的链路密钥(Link Key)。然后,这些设备可以使用链路密钥(Link Key)进行身份验证(以确保其他设备确实是其所说的),并导出加密密钥(Encryption Key)(以保护由两个设备交换的数据)。

数据在LMP_start_encryption请求之后被加密。完整的启动加密过程如下图所示:

Ellisys软件中显示的同一通信流:

有趣的是,数据包将在LMP_start_encryption请求之后被加密,所以即使LMP_accepted的握手也将被加密。以下屏幕截图显示哪些数据包已加密。当锁图标为蓝色时,这意味着数据包是纯文本(未加密的)。当锁图标为绿色时,表示数据包已成功解密。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容