NFC物联网智能锁安全测试研究

针对短距离无线通信在物联网智能锁实际运用中的安全机制问题,通过理论分析和实际操作演示潜在的攻击流程,发现其存在的安全漏洞并提出可行的加固方法,并对加固后的通信系统进行CPN建模与安全性分析,对无线通信协议的安全性能提升、NFC物联网智能锁的进一步发展有很大意义。

1短距离无线通信技术

智能锁安全

现有短距离无线通信技术在物联网领域中较为成熟应用较广的主要是NFC技术(近场通信技术)Zigbee技术和BLE技术。

NFC技术是一种短距高频的无线电技术,是最近兴起的全新设备信息交互技术,工频率为13.56MHz,工作距离限制在20cm内。通过卡、读卡器和点对点三种业务模式进行数据读取与交换,由于传输速率和距离都较低,主要应用于设备直接接触的场景,如移动支付或者身份认证。NFC 通过面对面设备交互取代了人与人的复杂交互,非常适用于传递较短的配置信息。并且其带宽能耗比较高,因此受到了能源受限终端的青睐,在注重续航和体积的设备如智能手机以及物联网设备中普及率较高。

Zigbee技术主要工作在868-868.6MHz、902~928MHz和2.42.4835 GHz 3个频段,特点为采取自组网的方式进行通信,若某条链路出现问题则迅速寻找其他信道传输数据,从而保证数据的可靠交付,目前主要应用领域为智能家居和工业自动化测控等。蓝牙技术联盟在2010年发布了针对低功设备设计的BLE4技术,BLE技术在设计之初即针对性地考虑了物联网设备的应用场景,BLE技术凭借其低功耗、覆盖范围远、价格低廉等特性迅速成为数以亿计的物联网设备及其传感器之间的首选连接标准,因此,本文重点关注BLE技术在物联网领域应用的安全问题。

1.1BLE技术

BLE是蓝牙4.x核心规范的延展,多用于物联网技术。与传统蓝牙相比,其物理层几乎全新,仅有部分派生于传统蓝牙中的基本传输速率(Basic Rateradio,BR)。

BLE采取全新广播机制,便于设发现并建立连接。BLE延迟低、速度快,从开始建立连接到连接建立完成仅需3ms。新的通用属性配置文件则简化了硬件设备和应用程序,提升了用户体验。BLE仅需纽扣电池供能,其峰值电流低、功小、作短,非常适用于物联网应用场景。

1.2BLE协议栈

BLE核心协议由物理层、链路层(Link LayerLL)逻辑链路控制层、适配协议层、通用属性层、应用层等组成。最底两层归为一子系统控制器(Controller )除应用层外的其他层则统称为主机(Host通过主机控制器接口( Host to Controller Interface,HCI)实现在控制器和主机之间实现通信。

其中主要的关键层级作用分别为:链路层用于规定设备所处的状态,即处于广播、扫描和建立/保持连接几种状态中的一种;安全管理层( Security Manager,SM)实现BLE设备通信过程中配对和密钥分发功能,并保证其他层的安全连接属性协议层(Attribute Protocol,ATT)许Client和Server通过属性的形式共享信息,用于数据传输;通用访问配置文件层(Generic Access Profile,GAP)与应用层直接连接,负责处理设备的接入方式和过程,控制设备连接与广播,确定设备间的扫描、连接、配对等过程的安全;通用属性协议(Generic Attribute ProfileGATT)建立在套的协议( Profle)特征( Characteristic服务(Service)之上,负责设备之间数据交互。每个Service和Characteristic拥有独特的UUID标识。

1.3 BLE 安全机制

BLE在LL层和GAP层均有安全机制来保证通信的可靠性间。

在LL层安全机制中,BLE设备处于连接状态时,LL层可对其负载进行加密,确保传输数据无法被攻击者破解。经过加密的报文会包含消息完整性检查,可验证发件人身份的有效性,以防重放攻击。BLE链路层使用ABS-128分组密码和密码块链接消息认证码加密。GAP层安全机制:通过GAP层定义安全链路建立和实施的模式和过程,均基于SM层中定义的规则和算法实现。

根据BLE设备双方输人输出能力的不同,BLE的鉴权方式包含4种情况:JUST Wrks,数据包基于纯文本交换,该方法用于一端设备完全没有输人输出能力的场景,如物联网设备;Passkey Entry,设备中一端显示一个6位随机数,并要求另一端输入该数字,在没有显示的情况下可能会要求两端都输入这个密码作为passkey,根据加密运算的中间值来判断输入的密码是否与显示的密码相同;Out of Band(OOB),通过BLE以外的方式传输额外的数据,如NFC,传输数据通道的安全性决定了配对过程的安全性,这种方法也可防止中间人攻击;Numeric Comparison,在两端设备分别显示一串数字,用户比较数字是否相同并确认实现认证,该模式仅需两个按键设备即可完成配对,易于小型化推广。

2智能锁通信协议研究

NFC物联网

从通信协议的角度分析智能锁安全需求。为了抵抗截取、重放、篡改、加密和解密等攻击方法物联网智能锁使用的通信数据协议应具有以下4个特点。

1)认证性

抵抗伪造报文,确认通信双方身份。认证性的实现方式包括使用共享密钥、数字签名等,只有密钥或签名一致,通信才可继续。

2)秘密性

确保消息不被窃听,或者报文被攻击者窃听到其真实意义也无法被提炼。实现秘密性的方法主要是对明文进行加密处理。

3)完整性

保证消息或报文不被算改。常用的实现方法如封装和签名。

4)不可否认性

可为通信一方提供另一方参与到协议交换过程中的证据,保证双方合法利益不受侵害,可通过数字签名实现。

2.1 解锁过程

配备BLE模块的智能锁与用户智能手机连接过程可分以下几个步骤。

1)智能锁发送广播报文

智能锁的BLE模块通过特定时间间隔和发送功率向外广播ADV IND数据包,数据包中含有BLE版本智能锁BLE的MAC地址、制造商识别编号、设备名称等智能锁基本信息,对处于监听模式下设备可见。

2)手机扫码广告报文

用户手机通过云服务器鉴权后获得该智能锁开锁密钥,扫描广播报文,并匹配智能锁BLE设备对应MAC地址,发送SCAN REQ扫描请求数据包,智能锁收到此数据包后返回SCAN RSP数据作为广播包的补充,SCAN RSP中包括了UUID等更多信息。手机收到SCAN REQ后,发出CONNECT REQ连接请求,交换包括设备支持BLE版本与链路层控制信息LLControl PDU、最大传输单元MTU等数据。

3)手机读取智能锁相关数据

手机BLE模块与智能锁的BLE模块通过GATT协议交换包括特征、服务和协议的数据,通过对写入句柄handle值进行遍历查询,获取所有可用句柄对应的属性值Attribute Valuc,将数据进行存储和归类,并设置客户端特征项配置描述符,使该特征值能够发送通知和指示。

4)手机传输开锁密钥

手机BLE模块使用GATT协议中读、写、通知等动作与智能锁中的BLE模块传输开锁指令实现开锁。每个characteristic都有关联属性来定义其可能进行的操作,这些操作可单独或同时使用,如读取和写入、写人和通知、读取写入和通知。每个动作均可能需要身份验证,即为连接的加密,此情况下读写请求可能会收到来自设备的无授权回应,授权成功则可以进行下一步的操作。手机通过向智能锁BLE模块传输开锁指令获得授权,验证通过后可写人开锁指令等操作,否则,几秒钟后智能锁将断开连接。

出处 信息网络安全

原标题 基于短距离无线通信的物联网智能锁安全机制研究

作者 金志刚 吴桐 李根

参考资料

https://www.hooketech.com/intelligent-security-lock.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/275655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

哥斯拉木马解析 + bypass 免杀代码分析+回调webshell

目录 抓包分析 测试连接 第一个包 第二个包 第三个包 进入控制台 第三个包 请求 返回 木马的解析 第一次链接 第二次链接 payload集合 run reDefSystemFunc() 自写免杀 通过文件名 构造字符 通过请求头实现 php7.3 php5.2 PHP5.3 PHP 7.0.0 这里也是跟着大…

ctf_show(web入门笔记)持续更新中

信息收集 1-2:查看源代码 3:bp抓包 4:robots.txt(这个文件里会写有网站管理者不想让爬虫的页面或其他) 5:网站源代码泄露index.phps 6:同样也是源码泄露,(拿到以后还…

JMeter4.0接口测试之案例实战

在前面的知识体系中介绍了Jmeter的基本应用,下来通过具体的案例来看Jmeter在接口测试中的具体案例实战部分。 HTTP是基于应用层的协议,底层的网络传输层它不需要去关心,同时它是一个无状态的协议,它的请求流程具体可以总结为&…

【基础篇】一、认识JVM

文章目录 1、虚拟机2、Java虚拟机3、JVM的整体结构4、Java代码的执行流程5、JVM的三大功能6、JVM的分类7、JVM的生命周期 1、虚拟机 虚拟机,Virtual Machine,一台虚拟的计算机,用来执行虚拟计算机指令。分为: 系统虚拟机&#x…

Visual Studio使用——自定义代码片段 像使用IDEA一样能快捷输入

目录 引出Visual Studio使用自定义代码片段 Idea安装和使用0.Java下载 和 IDEA工具1.首次新建项目2.隐藏文件不必要显示文件3.目录层级设置4.Settings设置选择idea的场景提示代码不区分大小写 取消git的代码作者显示 总结 引出 Visual Studio使用——自定义代码片段 & 像使…

字节跳动 MapReduce - Spark 平滑迁移实践

摘要:本文整理自字节跳动基础架构工程师魏中佳在本次 CommunityOverCode Asia 2023 中的《字节跳动 MapReduce - Spark 平滑迁移实践》主题演讲。 随着字节业务的发展,公司内部每天线上约运行 100万 Spark 作业,与之相对比的是,线…

Python可视化之Matplotlib

文章目录 Matplotlib与可视化分析简单图形的绘制pylot的高级功能添加图例与注释 Matplotlib与可视化分析 我们之前对数据的处理与分析,其实最终还是要利用可视化工具进行更加直观的输出 我们开业通过 pip install matplotlib命令来安装对应的模块 简单图形的绘制…

带你从数据手册了解CAN 电平参数

CAN终端电阻功率应该选多大? can的中断电阻大家都知道是120R; 这个电阻功率应该选多大呢? 晚上有说0603 封装的,有说0805封装的,有说1206封装的。。。。 那到底该选多少? P U*U/R; 只要知…

C++ DAY1 作业

1.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符串&#xff0c;并实现求字符串长度 #include <iostream>using namespace std; namespace myspace {string str;int length_fun(){getline(cin,str);int i 0;while(str[i] ! \0){i;}return i;}} using…

Mathematica中的有理数与浮点数

在Mathematica中如果使用了小数&#xff0c;软件会按照浮点数计算&#xff0c;从而导致不准确的结果。 例如下面的例子&#xff0c;计算下面两个相同式子的拉氏反变换得到的结果会不同&#xff1a; 代码如下 InverseLaplaceTransform[323/(56182 p 323 p^2 1000 p^3), p, t…

基于DS1302的日历时钟

#include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 /*********************************************************************** 以下是DS1302芯片的操作程序 *******************************************…

记录使用minikube部署web程序,并灰度发布不同版本

1. 安装软件 1.1安装docker desktop 下载地址 重点&#xff1a;配置镜像加速 1.2 安装k8s&minikube 这里参考阿里社区的配置 minikube1.24.0版本下载地址 重点&#xff1a;安装版本问题【因为后面要用阿里云的服务来获取所需Docker镜像&#xff0c;一直不成功使用的高版…

牛客网SQL训练5—SQL大厂真题面试

文章目录 一、某音短视频1.各个视频的平均完播率2.平均播放进度大于60%的视频类别3.每类视频近一个月的转发量/率4.每个创作者每月的涨粉率及截止当前的总粉丝量5.国庆期间每类视频点赞量和转发量6.近一个月发布的视频中热度最高的top3视频 二、用户增长场景&#xff08;某度信…

mysql原理--MySQL基于规则的优化

设计 MySQL 的大叔依据一些规则&#xff0c;竭尽全力的把一些很糟糕的语句转换成某种可以比较高效执行的形式&#xff0c;这个过程也可以被称作 查询重写 &#xff08;就是人家觉得你写的语句不好&#xff0c;自己再重写一遍&#xff09;。 1.条件化简 我们编写的查询语句的搜…

子类能继承父类的那些内容

子类能继承父类的那些内容 子类不能继承父类的构造方法。 package oop.Extends.a02oopextendsdemo02; public class Test {public static void main(String[] args) {}class Fu{String name;int age;public Fu() {}public Fu(String name, int age) {this.name name;this.ag…

C语言之字符串处理

目录 字符串长度 显示字符串 数字字符的出现次数 大小写字符转换 字符串数组的参数传递 非字符串的字符数组 目前我们所学习到的是围绕字符串的处理&#xff0c;仅仅是生成字符串、读取并显示字符串&#xff0c;下面我学习更加灵活处理字符串的方式。 字符串长度 我们来看…

基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现

基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现前言介绍&#xff1a;系统设计&#xff1a;系统开发流程用户登录流程系统操作流程 功能…

jenkins+mvn使用自定义jdk

jenkins2.357开始已经全面放弃jdk1.8从而使用openjdk11,但是项目一般都是用的比较老的java环境打包构建 一. 配置java环境(此方式测试有问题) 1.1 新增不同jdk配置和路径 1.2 新增后项目选择对应java8 1.3 构建命令 1.4 打包构建失败 原因在build阶段多了 mvn命令导致去掉就…

掌握激活函数(一):深度学习的成功之源

文章目录 引言基本概念常用激活函数举例Sigmoid激活函数公式Sigmoid函数的数学特性示例基于NumPy和PyTorch实现Sigmoid函数将Sigmoid函数应用于二分类任务 Sigmoid激活函数的局限性举例 ReLU激活函数公式ReLU函数的数学特性ReLU函数的特点示例基于NumPy和PyTorch实现ReLU函数搭…

C语言——数据在内存中的存储【整型数据在内存中的储存,大小端字节序储存,浮点型数据在内存中的储存】

&#x1f4dd;前言&#xff1a; 在前面的三篇文章中我们已经完成了对字符函数和字符串函数的学习&#xff0c;现在就让我们探索新领域&#xff0c;更加深入的理解**数据在内存中的存储方式**&#xff1a; 1&#xff0c;整数在内存中的存储 2&#xff0c;⼤⼩端字节序存储 3&…