深入理解低功耗蓝牙的配对过程- Part 3 LE legacy Pairing Passkey Entry

在前一篇文章深入理解低功耗蓝牙的配对过程- Part 2 Key Generation Methods中,讨论了密钥生成方法,如果配对发起设备和响应设备满足一些IO功能的条件,它们将选择LE legacy Bluetooth配对Passkey Entry方法。

在此文中,我将研究legacy pairing with Passkey Entry的配对以及它是如何工作的。

Figure 1: LE Legacy Pairing, Passkey Entry

临时密钥(TK)和随机数生成

当您使用LE legacy pairing时,该配对双方各自将生成一个临时密钥(TK)。

  • 如果设备的IO功能(无论是配对发起设备还是响应设备)具有显示功能,那么它将显示随机生成的介于“000000”和“999999”之间的密钥值。而另外的设备应该具有类似键盘的输入功能,这样用户就可以通过键盘输入这个TK显示的值。例如手机和手环的配对方式,手环的屏幕可以显示TK值,而手机可通过键盘输入手环上显示的TK值完成配对。
  • 如果配对发起设行和响应设备的IO功能都没有显示功能,但都是“Keyboard Only”,那么用户需要确保发起设备和响应设备之间的临时密钥(TKs)是相同的。这是Passkey Entry的一个特殊情况。

下面是一个名为“Authentication”的设备,它希望与iOS设备配对,并在其输出接口上显示TK。然后iOS设备弹出一个对话框,要求用户输入TK值。

Picture 2: Passkey Entry on iOS Device

  • 当TK值准备好时,配对发起设备和响应设备生成一个128位的随机数: Mrand是发起设备产生的(“主随机”),Srand是由响应设备产生的(“从随机”)。

Mconfirm and Sconfirm

Mconfirm和Sconfirm是128位的确认值,可以使用确认值生成函数c1来计算。这个功能的详细信息可以在这里找到:蓝牙核心规范V4.2, Vol.3, Part H, Section 2.2.3。

c1函数的输入参数包括:

  • TK   Mrand for Mconfirm; or Srand for Sconfirm calculation
  • Pairing Request command
  • Pairing Response command
  • Initiating device address type
  • Initiating device address
  • Responding device address type
  • Responding device address

验证

  • 当Mconfirm和Sconfirm就绪时,配对发起设备将Mconfirm发送给响应设备。当响应设备接收Mconfirm时,它将Sconfirm发送给发起设备。当发起设备接收到Sconfirm时,它将Mrand发送到响应设备。
  • 响应设备通过重复计算发起设备接收到的Mrand值得出的计算结果来验证Mconfirm值。
  • 如果响应设备计算的Mconfirm值与发起设备接收到的Mconfirm值不匹配,则配对过程将中止,响应设备将发送配对失败命令,并给出失改原因代码“Confirm value Failed”。
  • 如果响应设备计算的Mconfirm值与从发起设备接收到的Mconfirm值匹配,则响应设备将Srand传输给发起设备。
  • 发起设备通过重复使用接收到的Srand值执行响应设备的计算来验证接收到的Sconfirm值
  • 如果配对发起设备计算的Sconfirm值与从响应设备接收到的Sconfirm值不匹配,则配对过程将中止,发起设备将发送配对失败命令,并给出其中的失败原因代码为“Confirm value Failed”。
  • 如果发起设备计算的Sconfirm值与从响应设备接收到的Sconfirm值匹配,则发起设备计算短期密钥(STK)并告诉控制器启用加密。

短期密钥产生

您可以查阅蓝牙核心规范V4.2, Vol.3, Part H, Section 2.2.4,此章节中详细介绍的密钥生成函数s1来生成STK。

对于s1函数,输入参数包括:

  • TK
  • Srand
  • Mrand

已配对的设备用STK建立一个加密链接。

以下是Ellisys抓取的空中数据包,从中可以清楚的看到STK产生流程 ,如下:

在接下来的第4部分中,我介绍了LE Secure Connection中的一种新的配对算法: Numeric Comparison.

原文地址:https://www.cnblogs.com/lim11/p/11169109.html

时间: 2024-08-29 11:45:49

深入理解低功耗蓝牙的配对过程- Part 3 LE legacy Pairing Passkey Entry的相关文章

Bluetooth LE(低功耗蓝牙) - 第一部分

前言 在写这篇文章的时候,谷歌刚刚发布了Android Wear ,摩托罗拉也发布了 Moto 360 智能手表.Android Wear的API还是相当基本的,是很好的文档材料,而且还会不断的更新,所以我不打算写一个关于他们的教程(至少现在还没有).有趣的是 Moto 360 支持 Android 4.3及之后的版本.这明显是Bluetooth LE只有在Android 4.3及以后才被支持的原因,这也意味着 Moto 360 支持Bluetooth LE.Bluetooth LE 将不仅是可

低功耗蓝牙BLE之连接事件、连接参数和更新方法

转自:http://blog.csdn.net/zzfenglin/article/details/51304084 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包.一个连接事件是指主设备和从设备之间相互发送数据包的过程.连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待 150μs 再发送. 连接间隔决定了主设备与从设备的交互间隔:它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为 1.25ms 的整数倍.要确定从设

Android Bluetooth Low Energy(Android低功耗蓝牙)

Android 4.3(API Level 18)开始引入Bluetooth Low Energy(BLE,低功耗蓝牙)的核心功能并提供了相应的API,应用程序通过这些api可以扫描设备.查询services,读写设备的characteristics(属性特征).对比传统的蓝牙,BLE的设计能够显著减低功耗.这让Android应用程序与BLE设备之间的低功耗通讯成为可能,例如距离传感器.心率监视器.健身设备等等. 1.关键术语和概念 1.1 下面是一些BLE关键术语和概念的摘要: * Gener

深入浅出低功耗蓝牙(BLE)协议栈

BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提.在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构. 如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己

Android低功耗蓝牙(蓝牙4.0)——BLE开发(上)

段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝牙技术联盟在2010年6月30号公布了蓝牙4.0标准,4.0标准在蓝牙3.0+HS标准的基础上增加了对低功耗蓝牙(BLE)的支持.相比原有的普通蓝牙和高速蓝牙,BLE最大的特点就是低功耗,低延时,快速的搜索和连接速度,但数据传输速度相比传统蓝牙低.接下去将从BLE的概念以及代码两个方面介绍Android下的BLE. 先来说说基本概念: 1.BLE相关概念 1.1 GATT.

蓝牙简单配对(Simple Pairing)协议及代码流程简述

kangear注: 文章转自:http://blog.csdn.net/myxmu/article/details/12217135 原文把图给搞丢了,但是文章太好了,这个时候我就发挥多年的Google和人脉关系根据链接找到了,补上图(这个图是MTK内部用图). [DESCRIPTION] 在BT2.1及之后版本,蓝牙协议有在传统的密码配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式.这种新的配对方式操作更为简单.安全性也更强.目前市面上大部分

nRF52系列来袭,Nordic的低功耗蓝牙方案大有可为

坐落在北欧的挪威不像他的邻居芬兰那样,可以先后依靠NOKIA和愤怒的小鸟在世界科技界享有盛名.在一般人看来,挪威除了一个逐渐式微的Opera浏览器以外,并没有更多拿得出手的科技企业.而事实证明这只是你一厢情愿的想法. 在物联网热潮席卷全球的最近几年,有一家挪威公司凭借着在低功耗无线领域的数十年深厚积累,在物联网应用领域攻城拔寨,且获取了客户的一致好评.这家公司叫做Nordic半导体,而他们的主要产品就是物联网必不可少的低功耗无线方案. Nordic技术营销经理Pål Kastnes(左).Nor

Windows 8.1 低功耗蓝牙开发

1. 概述 在蓝牙4.0发布以前,给大家的直观印象就是蓝牙耳机,它就是用来满足短距离内中等带宽的音频通信需求.然而蓝牙4.0发布之后,用途就大不一样了,特别是现在物联网和可穿戴之风盛行的年代,很多小玩意都使用了它,如心率计.手环.钥匙扣等等物件,最终它能够和用户的手机.Pad以及PC等设备连接,实现五花八门的功能.为什么蓝牙4.0的用途广泛了呢?首先归功于低功耗,运行Bluetooth Low Energy的设备,一节纽扣电池可以支持其半年的时间:其次是低成本,如TI公司的CC2540蓝牙SoC

Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便写下这篇博客心得 Google API:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html#terms 其实大家要学习Android的技术,Google的API就是最详细的指导书了,而且通俗易懂,就算看不懂