蓝牙配对机制

为了统一规范,蓝牙在2.1版本引入了安全简单的配对机制,从尔加强了蓝牙通讯安全方面性能。以下总结了蓝牙配对机制:

一、遗留配对(Lagacy pairing){密码配对(PIN Code Pairing)}
仅适用于蓝牙v2.0及之前版本。每个设备必须输入PIN码(Personal identification number),且只有双方输入的PIN码相同时才会配对成功。任何16字节的UTF-8字符串都可以用作PIN码。
缺点是:1:不是所有的蓝牙设备都能输入所有可能的PIN码。
2: 有限的输入蓝牙设备:蓝牙免提耳机(Bluetooth Hands-free headset),通常只有固定的PIN码“0000”or“1234”,它们只能被硬编码到设备中。
3:数字的输入蓝牙设备: 手机(Mobile phones),允许用户输入长度不超过16位的数字值。
4:个人电脑和智能手机(PCs & Smartphones),它们允许用户以PIN码的形式输入完整的UTF-8文本。但如果与能力较弱的设备配对,则用户必须了解其他设备上的输入限制;相对尔言对于有能力的设备,没有可用的机制来确定它应该如何限制用户可能使用的可用输入。
二、安全简易配对(Secure Simple Pairing,SSP)
蓝牙v2.1版本新规范的,尽管蓝牙v2.1以后设备只能使用遗留配对与v2.0或更早的设备进行互操作。后续蓝牙版本高于或等于2.1的蓝牙鼠标就可以使用安全简易配对。安全简单配对其实是使用一种形式的公钥密码学(public key cryptograph)。
SSP具有以下身份验证机制:
1:只工作(Just works):只是工作,不需要用户交互,设备可以提示用户确认配对过程。常用于IO有限的耳机,且比遗留配对的固定PIN码更安全,但这种方法不提供中间人(HITM)保护。
2:数字比较(Numeric comparison):如果两个设备都有显示屏,并且至少有一个设备能接受二进制的yes/no用户输入,那么它们可以使用数字比较。此方法在每个设备上显示6位数字代码。用户应该比较这些数字以确保它们是相同的,如果比较成功,用户应该在能够接受输入的设备上确认配对。这个方法提供了MITM保护,假设用户在两个设备上都确认并正确地执行比较。
3:密钥输入(Passkey entry):此方法可用于具有显示的设备和具有数字键盘输入的设备(如键盘)之间,或用于具有数字键盘输入的两个设备之间。在第一种情况下,显示器向用户显示一个6位数字代码,然后用户在键盘上输入代码。在第二种情况下,每个设备的用户输入相同的6位数。这两种情况都提供了MITM保护。
4:带外数据(Out of band,OOB):该方法使用外部通信手段,如近场通信(NFC)来交换配对过程中使用的一些信息。配对是使用蓝牙无线层完成的,但是需要来自OOB机制的信息。这只提供了OOB机制中存在的MITM保护级别。
优点:
SSP比较简单,原因如下:在大多数情况下,它不需要用户生成密钥。对于不需要MITM保护的用例,可以消除用户交互。对于数值比较,用户可以通过简单的等式比较来实现MITM保护。可以在设备接近时进行配对,而不需要很长的发现过程。

 名词解释:中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,并且当今仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

总结:随着无线通信网技术的不断发展,MITM攻击也越来越多样化。最初,MITM只要将网卡设为混杂模式,伪装成代理服务器监听特定的流量就可以实现,这是因为很多蓝牙通信协议都是以明文来进行传输的,如HTTP、FTP、Telnet等。后来,随着科技发展,简单的嗅探攻击已经不能轻易成功,必须先进行ARP欺骗才行。现在,越来越多的蓝牙无线传输(网上银行,邮箱登陆)开始采用加密通信,SSL(Secure Sockets Layer 安全套接层),HTTPS、FTPS等都是建立在其基础上的。蓝牙配对机制也会越来越完善!

蓝牙配对机制基础知识相关推荐

  1. IPC机制 基础知识

    在前面的博客中我已经写过了怎么在AndroidStudio中进行IPC开发设置 IPC是Intent-Process Communication 的缩写,含义为进程间通讯后者夸进程通讯是指两个进程之间 ...

  2. 经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID

    经典蓝牙和低功耗蓝牙BLE的区别 蓝牙大致被认为是1.0 2.0 3.0 4.0版本,不过现在已经不再用版本号区分蓝牙了,蓝牙1.0~3.0都是经典蓝牙,在塞班系统就已经开始使用了.而蓝牙4.0开始就 ...

  3. 蓝牙BQB测试基础知识(一)

    蓝牙BQB认证的射频测试原理总结如下: PRBS:Pseudo-Random Binary Sequence,中文翻译叫做伪随机二进制序列. PRBS 码的周期长度与其阶数有关,常用的阶数有 7 . ...

  4. 蓝牙基础知识进阶——Physical channel

    蓝牙基础知识进阶--Physical channel 二.物理通道 物理通道是piconet区分的标准,它是蓝牙系统结构层次中的最底层了. Q1:物理通道有哪些类型 物理通道通常可以分为四种类型: 1 ...

  5. 蓝牙模块基础知识介绍

    蓝牙模块基础知识介绍 随着近年来蓝牙技术的不断发展,在功耗不断降低的情形下,蓝牙的传输速率也不断地得到提高,使蓝牙的应用范围更加广泛.但若想设计一套完善的蓝牙系统,就必须充分掌握蓝牙的相关技术知识,如 ...

  6. Nand Flash基础知识与坏块管理机制的研究

    概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...

  7. c# 蓝牙虚拟串口_蓝牙模块——基础知识介绍

    1. 数据透传 蓝牙模块可以通过串口(SPI.IIC)和MCU控制设备进行数据传输. 蓝牙模块可以做为主机和从机.主机就是能够搜索别的蓝牙模块并主动建立连接,从机则不能主动建立连接,只能等别人连接自己 ...

  8. linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多 ...

  9. Windows_Program_Via_C_Translate_Win32编程的背景知识/基础知识_包括基本输入输出机制介绍...

    Some Basic Background Story of The Win32 APIs Win32 API背景故事/背景知识 The Win32 application programming i ...

最新文章

  1. mysql show status
  2. mybatis 代码生成器_spring Boot手把手教学(4): mybatis-plus 代码生成器,自动帮你生成代码
  3. centos6.8_64部署django项目
  4. 递归算法介绍及Java应用实战
  5. 15个Java多线程面试题
  6. 如何起oracle,如何使用Oralce企业管理(Oracle Enterprise Manager)控制台
  7. HDU5144 NPY and shot BestCoder Round #22 1003
  8. 旋转Kubernetes中的秘密
  9. 论文阅读:Domain Information Enhanced Dependency Parser
  10. pom parent 标签
  11. 企业内的ITSM软件/ITIL流程管理系统与OA系统有什么区别和关系?
  12. 微信公众号HTML5接入腾讯云人脸核身
  13. 《深入浅出WPF》系列视频(特辑)——MVVM入门与提高(难度300+)
  14. IPv6地址的无状态自动配置
  15. LeetCode 881 救生艇
  16. 博士在读,在家无法科研的你,在忙些什么?
  17. 无人驾驶感知篇之毫米波雷达
  18. java实现打印机打印
  19. 搭建ngrok服务器,实现内网穿透服务,实现外网到内网的在线访问
  20. 【个人笔记记录】计算机网络常见复试题

热门文章

  1. 爬虫LOL王者信息----Jupyter Notebook
  2. 未来杯选手将应用人工智能的手段,助力水下生态系统的研究和保护
  3. 解决win10 关键错误开始菜单和cortana无法工作 的问题
  4. 用于高通量实验筛选的化合物库 | MedChemExpress
  5. js处理字符串、数组的方法
  6. Arduino使用游戏摇杆joystick
  7. SFTP 指定端口登陆
  8. options请求(跨域预检)
  9. 英特尔® 酷睿™ i9 处理器有助于减少开放世界加载时间
  10. navicat for mysql 1862_navicat出现1862错误怎么办