zigbee加密技术

2023-10-31

  ZigBee安全和加密 

作者:wxl  发布时间:2009-05-22  已阅读:283次

 
在ZigBee技术中,采用对称密钥的安全机制,密钥由网络层和应用层根据实际应用需要生成,并对其进行管理、存储、传送和更新等。 
 

安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 
 

每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用途。信任中心是在网络中分配安全钥匙的一种令人信任的设备。 
 

大部分ZigBee解决方案将需要某种级别的安全性。ZigBee提供了一套基于128位AES算法的安全类和软件,并集成了802.15.4的安全元素。ZigBee协议栈类为MAC、网络和应用层定义了安全性。它的安全服务包括针对关键进程建立和传输、设备管理和框架保护的方法。 
 

如果开发人员选择使用一个公共的ZigBee类,那么就已经为其应用做出了安全决策,因为在该类中已经对安全性进行了预定义。即使开发人员打算创建一个专有类的应用,他仍可以在若干个ZigBee预定义的栈类中挑选一种安全模式。 
 

在这个层上,开发人员需要决定这样一些问题:是否需要对数据帧的载荷进行加密,以及附着在数据帧末尾的认证码长度(8、16或64位,等等)。基本的应用也许不需要认证,因而可以受益于一个较小的数据包载荷。这些数据完整性方面的选项使得开发人员可以在消息保护和额外开销之间进行权衡。 
 

开发人员还必须决定在哪个层上施加安全机制:在MAC层、网络层还是应用层。如果应用需要尽可能强大的安全保护,那么就在应用层保护它。此处实施的安全措施采用了一个会话密钥,它只能被另一个拥有该钥匙的设备所认证和解密。这种方法既能防止内部攻击也能防止外部攻击,但需要更多的存储器来实现它。 
 

在MAC层和网络层的安全性实质上服务于相同的目的:确保单跳传输的安全。MAC层仲裁对共享媒介的访问并控制相邻设备之间的单跳传输。ZigBee联盟添加了一个网络层安全选项以便加入在MAC层无法实现的功能,包括拒绝不能被验证的数据帧的能力。这两个安全层采用的是该网络上所有ZigBee设备都共享的全局密钥。MAC层和网络层的安全性适合需要防止对特定基础设施攻击的应用,例如防止一个非法设备恶意侵入网络。如果开发人员需要在两个设备之间建立路由,而该网络层的框架又是不安全的,那么非法设备可能会截取数据包。 
 

设备在ZigBee安全模式下工作时,可能使用安全方案。安全方案由一组在MAC层的帧上所执行的操作组成,以提供安全服务。安全方案的名称表明对称加密算法、模式和完整性码的长度。对于ZigBee技术标准中的所有安全方案,将使用的是高级加密标准(AES)算法。每一个实现安全的设备都将支持AES-CCM-64安全方案,并且可附加或者不附加其它安全方案,第一个安全方案都由一个字节表示。 
 

ZigBee技术规定的安全方案将使用以下几种方法: 
 

位顺序、串接、整数编码和计时器增加、计数模式(CTR)加密、密码链块-信息鉴权码(CBC-MAC)验证、计数模式和密码链块-信息鉴权码(CCM)的加密和验证、高级加密标准(AES)加密、个域网信息库(PIB)的安全要素。 
 

下面我们来看看什么是AES高级加密标准。 
 

AES的全称是Advanced Encryption Standard,即高级加密标准。该项目由美国国家标准技术研究所(NIST)于1997年开始启动并征集算法,在2000年确定采用Rijndael作为其最终算法,并于2001年被美国商务部部长批准为新的联邦信息加密标准(FIPS PUB 197)。
FIPS PUB 197中说明该标准的正式生效日期是2002年5月26日。该标准将被NIST每5年重新评估一次。 
 

AES采用的Rijndael算法的设计者是Joan Daemen(Proton World Int.l)和Vincent Rijmen(Katholieke Universiteit Leuven, ESAT-COSIC),算法的名字来自两人名字中字母的组合。Rijndael是一个对称的分组加密算法,分组长度和密钥长度都可变,可分别单独指定为128比特,192比特和256比特。但AES中的数据分组长度只采用了Rijndael中的128比特,而不使用192和256比特,密钥长度和Rijndael的一致,也分别为128比特,192比特和256比特,并分别被称为AES-128,AES-192,AES-256。 
 

AES和传统的分组密码算法不同的是它不采用Feistel结构(比如DES中采用的),而是采用了三个不同的可逆一致变换层:线性混合层、非线性层、密钥加层。 
 

70年代的数据加密标准(DES)加密。在安全领域,一个协议的生命周期这样长一般来说是件好事。但是,在数据加密标准的案例中,由于其瑕疵将多次重复地显示出来,这样长的生命期并不是件好事。 
 

它的后续标准来得太晚了。这些瑕疵是各种类型的攻击利用的基本的安全漏洞,其较短的密码长度意味着蛮力攻击可以在很短的时间内奏效。 
 

高级加密标准算法从很多方面解决了这些令人担忧的问题。实际上,攻击数据加密标准的那些手段对于高级加密标准算法本身并没有效果。如果采用真正的128位加密技术甚至256位加密技术,蛮力攻击要取得成功需要耗费相当长的时间。 
 

虽然高级加密标准也有不足的一面,但是,它仍是一个相对新的协议。因此,安全研究人员还没有那么多的时间对这种加密方法进行破解试验。我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至少在理论上存在这种可能性。 
 

当你考虑性能需求的时候,高级加密标准具有理论上的优势,因为这种算法效率更高,特别是与3DES加密标准相比更是如此。然而,需要指出的是,在这种协议应用的早期阶段,在硬件中对这种加密算法的支持还没有像硬件支持老式的3DES算法那样成熟。因此,你可能会发现在某些平台上,3DES在数据吞吐量方面仍比AES-256速度快。在有些平台上,AES-256的速度快一些。正如你怀疑的那样,AES-128总是比AES-256速度快一些。在对各类厂商的市场营销材料进行了快速调查之后发现,数据吞吐量的差别通常在10%至30%之间。 
 

所以同以往一样,各个机构采用这个新标准的合适的时间都是不同的。一些机构认为,额外的安全功能值得牺牲一点性能。有些机构需要做好预算才能购买新的支持高级加密标准的硬件产品。要记住,升级将会提高性能。在任何情况下,你在选择一个产品之前都要做好充分的准备。 

===========================================

===============================================

 

文章发表于:2008-09-09 09:33

 

Zigbee2006的加密算法实现

作者:hxl

关键字:无线龙c51RF-3-pk,AES,z-stack,zigbee2006

软硬件准备:

1.         无线龙Zigbee开发工具               C51RF-3-PK

2.         IAR集成开发工具                    IAR-EW51-7.20H 或IAR-EW51-7.30B

3.         zigbee2006协议栈(无线龙验证版)    Z-stack1.4.2或1.4.3(TI网站下载)

 

Z-stack对Zigbee2006提供了全面的支持,功能之强大,性能稳定、安全性高,说到安全性是我们今天的主题。CC2430硬件支持128bit的AES加密算法,在协议栈中为了避开相同设备的干扰,和防止被其他设备监听,我们就采用这个技术将数据加密来提高数据的安全性。

AESThe Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128192  256 位密钥,并且用128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。要了解更多请参阅http://blog.csdn.net/guo2777/archive/2007/09/19/1791399.aspx 该博主使用C#完成了加密的模拟而且有很详细的阐述。

在Z-stack中采用的是128bit的加密,首先需要一个128bit的key,这个KEY不同,加密出来的内容也不同在Z-stack中是通过DEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}"这种方式来定义的。

在Z-stack中已经在协议栈中实现了这个加密算法,如果需要使用直接开启这个服务就可以了,下面我们主要将Z-stack的加密算法的开启。

我使用的z-stack的版本是1.4.3,这个版本功能更完善,而且编程的方式已经和以前的版本有很大的不同,他的风格更加接近于Zigbee pro。

Z-stack1.4.3加密算法的功能开启方法:

1.将f8wConfig.cfg文件中设置为-DSECURE=1,这句话的意思是SECURE=1,这个变量在协议栈中作为if语句的条件使用,条件为真的语句中就是开启加密算法的函数。所以要使用第一步是要将这个参数设置为1。

2.将ZGlobals.c中的uint8 zgPreConfigKeys = FLASE;修改为uint8 zgPreConfigKeys = TRUE;

3.准备一个key,这个可以在函数nwk_global.c中修改:

CONST byte defaultKey[SEC_KEY_LEN] =

{

#if defined ( APP_TP ) || defined ( APP_TP2 )

  // Key for ZigBee Conformance Testing

  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

  0x89, 0x67, 0x45, 0x23, 0x01, 0xEF, 0xCD, 0xAB

#else

  // Key for In-House Testing

  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,

  0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F

#endif

};

到这里整个加密过程已经结束了,值得注意的是,如果使用了加密算法后,网络中所有的设备都需要开启这个算法,而且各个设备中的key必须相同。否则后果是很严重的,这会导致你的网络不能正常通讯,因为没有加密的数据或者相同key加密,这些数据网络是不认识的,根本就不会传到网络层。

加密算法开启以后,如果你需要修改代码,就必须改变你的key,或者是擦除一次你的flash,否则会出现不可逾期的错误,而且没有规律。通常的做法是擦除flash一次,这样可以保证和整个网络的key相同。

好了,做个测试吧,分别对一个协调器和一个路由器加密,并构成网络,并使用协调器广播数据,如果顺利的话,他们可以正常通讯了,然后你改变一下key,然后在写一个路由器,会出现什么结果呢?你会发现,key不同的路由器根本接收不到协调器广播的数据,路由器发送的数据网络也无法接收。然后再用协议分析仪查看一下,发现监听的数据和发送的数据根本就不同,因为我们加了密。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zigbee加密技术 的相关文章

  • 485无线通信/数传模块_zigbee模块_RS485转ZigBee_顺舟智能

    一 概述 顺舟智能 SZ02系列 ZigBee无线串口通信设备 xff08 485无线通信 数传设备 xff09 xff0c 采用了加强型的ZigBee无线技术 xff0c 集成了符合 ZIGBEE协议的射频收发器和微处理器 xff0c 符
  • 基于ZigBee的智能家居系统

    本项目基于C 编写智能家居系统PC客户端 同时编写安卓客户端 代码下载链接https download csdn net download hzqgangtiexia 10435931 1 硬件选型及数据采集 节点板子以CC2530芯片为核
  • CC2530学习(一)环境配置

    CC2530F256是一款将各种丰富的功能系统地集成到一片LSI Large Scale Integrated circuit 大规模集成电路 的片上系统 System on Chip 简称SoC 内嵌增强型51内核的单片机 芯片后缀256
  • Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once)

    今天在用IAR软件 给Zigbee程序写注释时 出现了这么一个警告 Warning Pa050 non native end of line sequence detected this diagnostic is only issued
  • zigbee加密技术

    ZigBee安全和加密 作者 wxl 发布时间 2009 05 22 已阅读 283次 在ZigBee技术中 采用对称密钥的安全机制 密钥由网络层和应用层根据实际应用需要生成 并对其进行管理 存储 传送和更新等 安全机制由安全服务提供层提供
  • 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢

    协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 字号 订阅 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 猜想如下 终端上电后稳定后就开始寻找周围是否存在网络 向周围发射广播 该广播内容包含自己的身份信息 即M
  • 8086CPU外部引脚图

    8086CPU外部引脚图 在最小模式中引脚定义 AD15 AD0 Address Data Bus 16位地址 数据总线 分时复用 传输地址时三态输出 传输数据时三态双向输入 输出 在总线周期T1状态 CPU在这些引脚上输出存储器或I O端
  • 协议栈中绑定流程的一点认识

    2011年4月27日 初学者关于协议栈中绑定流程的一点认识 本人刚接触zigbee不久 在学习中将不断记录每天的进步 期待大家的指导 在这里指出我还是参考了ZStack CC2530 2 3 1 1 4 0 Projects zstack
  • ZigBee协议

    1 1 IEEE802 15 4标准 随着通信技术的迅速发展 人们提出了在自身附近几米范围内通信的要求 这样就出现了个人区域网络PAN Personal Area Network 和无线个人区域网络WPAN Wireless Persona
  • ZIGBEE抓包工具Ubiqua使用介绍

    一 软件安装 Ubiqua 软件下载链接 https download csdn net download m pfly fish 12050973 二 安装CC2531抓包驱动 驱动软件下载链接 https download csdn n
  • 基于Zigbee的SHT10温湿度数据采集系统(已实现控制12个终端节点)——Zigbee协调器主要代码解析

    之前实现了基于Zigbee的SHT10温湿度数据采集系统 这里来重新复盘一些主要的知识和代码 写在前面 1 功能介绍 使用Zigbee终端节点采集环境的温度和湿度数据 然后将数据无线发送的Zigbee协调器 最后在电脑端显示获得到的数据 2
  • ZIGBEE: Error[Pa045]: function "" has no prototype问题解决方法

    IAR CC2530的2个程序整合后 报错 而全部错误都是一个性质 Error Pa045 function has no prototype 去掉 Require prototype选项 重新编译即可 应该是一个编译顺序问题
  • Z-Statk协调器 路由器 终端的确定---Simple例程(一)

    Z Statk协调器 路由器 终端的确定 Simple例程 一 2010 12 24 09 42 10 分类 嵌入式 当我们选择了终端 路由器 或者协调器的时候 来看一下程序中是怎么判断的 也就是如何作为其中的各个角色进行启动 是加入网络
  • 物联网实训总结——简易的智能农场

    物联网实训总结 简易的智能农场 一 场景需求 1 农场环境监测 对农场的环境实现智能感知 对温度 湿度 光照值实时显示 同时检测农场烟雾状态 判断火情 实时监控农场人员出现情况 2 控制管理 智能农场控制部分分为 通风系统和补光系统 实现对
  • [ Z-Stack协议分析(一)] ZMain.c函数

    Z Stack协议分析 一 main函数解析 1 Z stack的简单介绍 Z stack是一个协议栈 是由美国TI公司德州仪器公司设计的 Z Stack协议可在官网下载 我用的还是老版本 ZStack CC2530 2 3 0 1 4 0
  • SiliconLab GSDK 4.2.2 创建 Z3Gateway 工程

    如题 在SSv5的My Product选项下 需要添加Linux 32 Bit 否则在Example Projects Demos中无法查找到zigbeegateway相关的demo My Product 中的内容添加成功后 再次搜索Exa
  • Fatal Error[Cp001]: Copy protection check, No valid license found for this product [24]

    解决方法 1 卸载IAR 2 以管理员身份打开IAR安装包 3 以管理员身份打开IAR注册机 4 正常安装即可 5 安装完成后以管理员身份打开IAR 编译程序就会正常
  • 在双精度和字节数组之间进行转换,以便通过 ZigBee API 传输?

    我正在尝试获取两个双精度数 GPS 坐标 并通过 ZigBee API 将它们发送到另一个 ZigBee 接收器单元 但我不知道如何将双精度数分解为字节数组 然后将它们重新组合回原始形式一旦他们被转移 基本上 我需要将每个双精度数转换为八个
  • MacOS 10.8 的 rxtxSerial.dll

    我目前正在开发一个 ZigBee 项目 并在装有 Mountain Lion 10 8 的 Mac 上并使用 Eclipse IDE 进行编程 要通过 USB 使用我的 Zigbee 模块进行串行通信 我需要这个 rxtxSerial dl
  • XBee3 协调器在网络发现期间找不到 End_Device

    目前 我正在运行 XBee3 International Mesh Kit 并尝试按照文档中给定的示例进行操作 我尝试使用 Micropython REPL 为三个设备实现网络发现 以下是我的 3 个 XBee 设备的配置 3 个 XBee

随机推荐

  • 低频能不能采到高频?采样定理指导硬件设计

    原文来自公众号 工程师看海 香浓采样定理或者说奈奎斯特采样定理告诉我们 要以信号频率2倍以上的采样率对该信号进行采样 否则会出现频率混叠 比如对1Khz信号进行采样的话 采样率要高于2Ksps 采样定理与傅里叶变换的具体原理请见往期文章 h
  • Could not create task ‘:app:minifyReleaseWithR8‘. Cannot query the value of this provider because it

    重新部署AndroidStudio发现项目报错 Could not create task app minifyReleaseWithR8 Cannot query the value of this provider because it
  • 性能测试工具LoadRunner —— 性能测试流程及结果分析

    性能测试目的 1 什么是性能测试 性能测试是通过性能的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 负载测试和压力测试都属于性能测试 两者可以结合进行 通过负载测试 确定在各种工作负载下系统的性能 目标是测试当负
  • mac环境下Maven实现ProtoBuf编译

    mac环境下Maven实现protobuf编译 1 Maven项目创建 File gt new gt Project gt 输入项目名称 gt finish 2 在项目中创建proto目录 该目录用来保存 proto文件 此处将proto目
  • cpp: Memento Pattern

    file ActorMemento h brief 备忘录模式 Memento Pattern亦称 快照 Snapshot Memento C 14 2023年6月6日 涂聚文 Geovin Du Visual Studio 2022 ed
  • 浅析Kubelet如何上报状态

    浅析Kubelet如何上报状态 1 kubelet上报节点状态 在K8S集群中 由运行在每个节点的Kubelet定期上报心跳到ApiServer 以此来判断Node是否存活 若Node超过一定时间没有上报心跳 则该节点的状态会被设置为Not
  • 我的世界服务器显示outofmemory,我的世界内存溢出怎么办 我的世界游戏优化教程-游侠网...

    很多新手玩家第一次进入我的世界的游戏会遇见各种各样的问题 最常见的莫过于内存溢出不足游戏闪退以及CPU使用率的问题了 所以今天小编为大家带来的便是玩家 o正义之身o 整理分享的游戏优化教程 游戏启动运行上面有问题的玩家不妨点击进来看看吧 游
  • Python编程从入门到实践(五)-字典

    1 一个简单的字典 来看一个游戏 其中包含一些外星人 这些外星人的颜色和点数各不相同 下面是一个简单的字典 存储了有关特定外星人的信息 alien py alien 0 color green points 5 print alien 0
  • Flink学习26:触发器

    触发器 作用 决定何时 触发窗口计算函数 开始计算 每个窗口都有一个默认触发器 也可以自定义触发器 自定义触发器 示例1 当流中元素达到5个以后 触发窗口计算 import org apache flink api common funct
  • Qt 信号和槽连接的 connect 第五个参数

    connect用于连接qt的信号和槽 在qt编程过程中不可或缺 它其实有第五个参数 只是一般使用默认值 在满足某些特殊需求的时候可能需要手动设置 1 Qt AutoConnection 默认值 使用这个值则连接类型会在信号发送时决定 如果接
  • 计算机专业要考什么证书?

    大家好 我是良许 从去年 12 月开始 我已经在视频号 抖音等主流视频平台上连续更新视频到现在 并得到了不错的评价 视频 100 原创录制 绝非垃圾搬运号 每个视频都花了很多时间精力用心制作 欢迎大家关注哦 考虑到有些小伙伴没有看过我的视频
  • 全国首个元宇宙高校院系都已成立,你还在选择就业方向吗?

    近日 元宇宙行业发生的一则新闻引起热议 南京信息工程大学人工智能学院 未来技术学院 信息工程系更名为元宇宙工程系 这是国内高校设立的首个元宇宙院系 事实上 自从去年 元宇宙 这个词引起轰动之后 很多著名大学都开始涉足元宇宙 建立了元宇宙研究
  • R语言(6) 双坐标图

    双坐标图 library readxl stock lt read excel stock xlsx par mar c 5 4 4 4 par mar 选项的作用是调整绘图区域距离外围框线的距离 plot stock date stock
  • win11任务栏某些情况下不能自动隐藏问题初探

    2023 2 20更新 最新版本的win11似乎已经解决了因为下述原因导致的状态栏不能自动隐藏的问题 win11专业版 win版本 22H2 操作系统版本 22624 1391 如果你的设备不是上述版本 那么不能自动隐藏任务栏的原因可能如下
  • TypeScript详解十六:类型声明(declare)

    目录 前言 一 类型声明的作用 1 1 declare 关键字 1 2 示例 二 常见的几种类型声明 2 1 普通类型声明 2 2 外部枚举 2 3 命名空间 三 类型声明文件 3 1 模拟类型声明文件 以 jquery 为例 3 2 使用
  • 机器学习(上)-回归模型

    1 sklearn构建完整的机器学习项目流程详解 一般来说 一个完整的机器学习项目分为以下步骤 第一步 明确项目任务 回归 分类 第二步 收集数据集并选择合适的特征 第三步 选择度量模型性能的指标 第四步 选择具体的模型并进行训练以优化模型
  • wordpress修改文件上传大小

    找到文件 在网页根目录下 find name htaccess 在文件末尾添加内容 重启服务器 php value upload max filesize 64M php value post max size 64M php value
  • python是一门面向对象的编程语言_面向对象的编程语言和面向过程的编程语言是啥?...

    例如 python是一门面向对象的编程语言 面向对象的编程语言 语言中的所有操作都是通过对象来进行的 面向对象的编程语言 关注的是对象 而不关注过程 对于面向对象的语言来说 一切都是对象 例子 1 孩他妈起床叫孩子上学 面向对象的编程思想
  • 【Qt 开源音视频框架模块QtAV】01:介绍、编译以及简单使用

    介绍 QtAV 是一个基于 Qt 和 FFmpeg 的跨平台 高性能多媒体播放框架 能够帮助你轻而易举地编写出一个播放器 为什么选择 QtAV 而非 QtMultimedia QtMultimedia 无法支持 Qt4 QtAV 同时支持
  • zigbee加密技术

    ZigBee安全和加密 作者 wxl 发布时间 2009 05 22 已阅读 283次 在ZigBee技术中 采用对称密钥的安全机制 密钥由网络层和应用层根据实际应用需要生成 并对其进行管理 存储 传送和更新等 安全机制由安全服务提供层提供