FiRa标准——MAC实现(二)

在IEEE 802.15.4z标准中,最关键的就是引入了STS(加扰时间戳序列),实现了安全测距,大大提高了测距应用的安全性能。在FiRa的实现中,其密钥派生功能是非常重要的一个部分,本文首先对FiRa MAC中加密以及信息相关的内容进行简单的介绍,为后续介绍相关源码的实现打好铺垫。关于FiRa标准中的角色、工作的基本原理,参考前一篇介绍MAC内容:FiRa标准——MAC实现(一)。

1. 关于FiRa MAC STS模式

对于FiRa MAC中加密相关内容的实现,首先需要了解FiRa中STS(Scrambled Timestamp Sequence)生成的两种类型:

  • 静态STS(Static STS)
  • 动态STS(Dynamic STS)

对于静态STS模式下,需要确保:

  • 确保在一个测距轮的每个时隙都生成不同的STS来确保可靠的测距;
  • 允许实现低成本和高性能;
  • 保证立即重新同步。

对于动态STS模式,需要保证:

  • 通过确保不以明文形式传输可识别信息来保护用户隐私;
  • 保护通过UWB传输的数据(时间戳、应用有效载荷)的机密性、完整性和真实性;
  • 确保每个时隙都可以生成不同的STS(初始STS,每个时隙增加1);
  • 确保可以检测到重放攻击;
  • 允许受控对象在单个控制消息上同步;
  • 限制开销以优化链路预算;
  • 限制旁路通道攻击的风险。

从两种模式的定义中,我们可以知道,在静态STS中,对于每个测距轮(Ranging Round)的对应时隙编号的STS是相同的,这就允许接收方能够更加快速的实现与控制器的同步;而对于动态STS而言,安全性更高,对于时隙索引一直递增,也就是说,每个测距时隙的STS都不同,这是与静态STS最大的区别。

由于实现的方式不一样,相应的其加密方式也有所不同。

1.1 动态STS密钥生成

动态STS生成模式从上图中可以看到,在实现中涉及到以下一些方法:

  • KDF(Key derivation function),密钥派生函数,基于相应的输入、key生成计算需要的相关密钥内容,涉及生成的内容包括:secDataProtectionKeysecPrivacyKeysecDerivedPayloadKeysecDerivedAuthenticationKeyphyStsIndecInitsecDerivedAuthenticationIV
  • CSPRNG算法,用于生成STS;
  • ECB算法,对于IEEE 802.15.4的Vendor IE需要使用ECB算法进行加密;
  • CCM*(ccm start)算法,对于IEEE 802.15.4数据帧部分,需要使用CCM*算法进行加密处理。

对于STS模式下,我们可以看到,每个时隙phySTSindex、cryptoStsIndex都会增加,被用作每个时隙生成不同STS的种子、以及Vendor IE、Payload加密的参数。其初始值phyStsIndexInit由config digest通过KDF函数之后生成。

Vendor IE使用ECB算法进行加密,在ECB模式下,对密文位的任何修改都会对每个明文产生雪崩效应,因此,可以用于检测修改。
ECB加密使用特定秘钥secPrivacyKey,对于一个完整的会话来说都是一样的,这样,受控对象可以随时用于同步。

IEEE Std 802.15.4z-2020中使用DRBG用于生成STS。cryptoStsIndex被附加到一个32位计数器上,该计数器将在每个时隙的开始时重置,以确保无论之前时隙STS的大小如何,cryptoStsIndex和当前配置的信息都足够生成STS。

对于数据载荷加密使用CCM*算法,无法对其内容进行假设,因此将使用Authenticated Encryption (身份验证加密,AE)。由于AE是基于计数器模式加密的,因此有必要向AE提供一个随机数(nonce)。这个随机数可以在每个加密数据包的前面传输,这将会增加传输开销。因此,cryptoStsIndex将被用作nonce更改的一部分。

1.2 静态STS密钥生成

静态STS生成模式
与动态STS模式相比,整体进行了较大的简化:
1)Vendor IE部分不再进行加密;
2)生成STS的CSPRNG算法使用了初始化中配置的phyVUpper64;
3)cryptoStsIndex进行了简化,在每个测距轮的第一个时隙都会重置为0。

另外,在动态STS模式下还涉及到key rotation等方式来进一步提高加密的安全性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

减轻关键基础设施网络安全风险的 3 种方法

物理安全和网络安全之间存在相当大的重叠,特别是在保护关键基础设施方面。防止基础设施被篡改需要在物理安全方面进行大量投资,但任何连接到互联网的设备都代表着更广泛网络的潜在攻击点。 缺乏足够保护的设备可能会给这些对手在网络中提供立足点&#…

C#,数值计算——函数计算,Eulsum的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Eulsum { private double[] wksp { get; set; } private int n { get; set; } private int ncv { get; set; } public bool cnvgd { get; set; } pri…

uniapp中在组件中使用被遮挡或层级显示问题

uniapp中在组件中使用或croll-view标签内使用uni-popup在真机环境下会被scroll-view兄弟元素遮挡,在开发环境下和安卓系统中可以正常显示,但在ios中出现了问题 看了许多文章都没有找到问题的原因,最后看到这一个文章http://t.csdnimg.cn/pvQ…

服务日志性能调优,由log引出一系列的事故

只有被线上服务问题毒打过的人才明白日志有多重要! 谁赞成,谁反对?如果你深有同感,那恭喜你是个社会人了:) 日志对程序的重要性不言而喻,轻巧、简单、无需费脑,程序代码中随处可见…

uni.getLocation() 微信小程序 线上获取失败

开发版,体验版,用此方法都可以正确获取定位,但是在小程序的线上,总是获取失败 参考:uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权-CSDN博客 uniapp 中的 uni.…

关于卷积神经网络的池化层(pooling)

了解池化层 池化层又称“下采样层”或“子采样层”,池化层可以大大降低特征的维度,减少计算量,同时可以避免过拟合问题。 顾名思义,最大池化层就是从输入的矩阵中某一范围内,选择最大的元素进行保留;平均池…

VScode配置C/C++环境

文章目录 一、下载MinGW二、配置环境变量三、VScode配置四、验证 一、下载MinGW MinGW官网 划到最下面找 二、配置环境变量 解压后放到自己想放的目录下 右键 此电脑–>属性–>高级系统设置—>环境变量–> 在cmd命令行检测,出现如下界面:…

基于Kinect 动捕XR直播解决方案 - 硬件篇

Kinect-V2 硬件设备 一、Kinect介绍 1、Kinect for Windows 的开发配置 Kinect V2 操作系统:Windows 10(必须) Windows Surface Windows Surface 2 开发环境:Visual Studio 2017 .NET Framework 4.5 (.NET Framework 4.5) 硬…

xlua游戏热更新(C#访问lua)

xlua作为Unity资源热更新的重要解决方案api,在Tecent重多游戏中被采用,本文通过案例去讲解xlua代码结构层次。 /** Tencent is pleased to support the open source community by making xLua available.* Copyright (C) 2016 THL A29 Limited, a Tence…

微服务-开篇-个人对微服务的理解

从吃饭说起 个人理解新事物的时候喜欢将天上飞的理念转换成平常生活中的实践,对比理解这些高大上的名词,才能让我们减少恐慌的同时加深理解。废话不多说,我们从吃饭开始说起,逐渐类比出微服务的思想。 (个人见解&…

计算机毕业设计 基于Springboot的影院购票管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

考研分享第1期 | 末9生物跨专业考研北京大学电子信息404分经验分享

全文概览 一、个人信息 二、关于考研的经验分享 三、最后的小Tips 一、个人信息 姓名:Jackson 本科院校:某末流985生物专业 报考院校:北京大学电子信息专业 择校意向:北航计算机、人大高瓴、复旦软院、清华大学深研院、北…

HuggingFace模型头的自定义

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 在本文中我们将介绍如何使HuggingFace的模型适应你的任务,在Pytorch中建立自定义模型头并将其连接到HF模型的主体&#…

大数据Doris(二十一):数据导入演示

文章目录 数据导入演示 一、启动zookeeper集群(三台节点都启动) 二、启动hdfs集群

【Linux】语言层面缓冲区的刷新问题以及简易模拟实现

文章目录 前言一、缓冲区刷新方法分类a.无缓冲--直接刷新b.行缓冲--不刷新,直到碰到\n才刷新c.全缓冲--缓冲区满了才刷新 二、 缓冲区的常见刷新问题1.问题2.刷新本质 三、模拟实现1.Mystdio.h2.Mystdio.c3.main.c 前言 我们接下来要谈论的是我们语言层面的缓冲区&…

Spark的转换算子和操作算子

1 Transformation转换算子 1.1 Value类型 1)创建包名:com.shangjack.value 1.1.1 map()映射 参数f是一个函数可以写作匿名子类,它可以接收一个参数。当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用f函…

idea 一直卡在maven正在解析maven依赖

修改maven Importing的jvm参数 -Xms1024m -Xmx2048m

srs webrtc推拉流环境搭建

官方代码https://github.com/ossrs/srs 拉取代码: git clone https://github.com/ossrs/srs.gitcd ./configure make ./objs/srs -c conf/rtc.confconf/rtc.conf中,当推拉流浏览器在本地时,如果srs也在本地,那么可以使用官网默认…

VUE页面导出PDF方案

1,技术方案为:html2canvas把页面生成canvas图片,再通过jspdf生成PDF文件; 2,安装依赖: npm i html2canvas -S npm i jspdf -S 3,封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //titl…

STM32基础--NVIC中断控制器

一、NVIC是什么? NVIC是一种中断控制器。当一个中断正在处理时,另一个更高优先级的中断可以打断当前中断的执行,并立即得到处理。这种机制使得处理器在高速运行的同时,能够及时响应不同优先级的中断请求。 二、有哪些优先级&…