不安全物联网的轻量级加密:综述
Abstract
本文综述了针对物联网(IoT)的轻量级加密解决方案。这项综述全面覆盖了从轻量级加密方案到不同类型分组密码的比较等多个方面。同时,还对硬件与软件解决方案之间的比较进行了讨论,并分析了当前最受信赖且研究最深入的分组密码——高级加密标准(AES)——在架构、列混合/Mix-Column和S盒/S-box修改策略,以及物联网安全相关攻击等方面的最新研究方法。研究表明,轻量级AES在资源受限的物联网设备中已经被证明是一种有效的安全解决方案。
Introduction
随着人类对生活便利性的追求,历史表明,需求是推动创新的动力,而现代科学技术的发展也随之加速。如今,随着物联网(IoT)设备数量的爆发性增长,世界变得日益互联。根据Statista 2018的统计数据,到2020年,联网设备的数量将增长到近310亿台。随着这些设备数量的增加,最重要的问题变成了安全性。长久以来,这个庞大网络的安全性问题一直被制造商和消费者所忽视。
我们的技术依赖型生活方式正引导我们走向一个“万物不安全互联”的世界,因此,现在是我们退一步,认真分析这一问题的关键时刻。安全性已成为该领域研究人员的主要关注点。
物联网(IoT)由多个相互连接的设备组成,这些设备之间不断共享信息和数据。为了保护这些信息,我们需要了解物联网设备的基本安全特性:
- 保密性(Confidentiality):需要确保信息仅对授权用户可用。
- 可用性(Availability):多个设备相互连接时,需要确保设备能在需要时获取所需数据。
- 完整性(Integrity):需要确保数据的准确性。
- 认证(Authentication):这是一个重要但从物联网角度看难以实现的特性。在物联网中,连接的实体有不同的用途、目的和层次结构。
- 异构性(Heterogeneity):由于网络中的不同实体具有不同的功能、复杂性,甚至不同的制造商,因此也需要确保网络的异构性。
- 密钥加密(Key Encryption):这是最重要的一步。为了确保安全连接,设备和其他实体需要具备轻量级的密钥管理系统。
随着时间的推移,数据和密钥传输的安全性需求催生了加密学的概念。加密学是一种通过将数据转化为无法识别和无关联的形式,从而保护数据免遭未授权访问的过程。根据物联网(IoT)的需求,专用的加密算法需要在面积、内存占用、功耗和能量消耗方面保持轻量级。
本文对物联网安全解决方案的不同阶段的近期研究工作进行了综述,全面涵盖了从轻量级加密方案到不同类型分组密码的比较等安全措施流程。此外,我们还对硬件与软件解决方案之间的比较以及高级加密标准(AES)在物联网安全领域中的最新研究方法进行了探讨,包括其架构、列混合/Mix-Column与S盒/S-box修改策略以及攻击分析。
文章结构
- 第二节:讨论了轻量级加密,包括加密学的两大主要分支——非对称加密和对称加密。同时,还整理并分析了可能适用于物联网应用的不同类型流密码和分组密码。
- 第三节:探讨了高级加密标准(AES),这一最受信赖且研究最深入的分组密码。我们结合了针对AES在物联网中应用的架构优化、列混合(Mix-Column)和S盒(S-box)修改策略及其面对攻击的研究成果。
Lightweight cryptography
有多种加密解决方案可用于保护我们的重要数据,但不幸的是,并非所有方案都适用于像物联网(IoT)设备这样的资源受限环境。轻量级加密解决方案正在被深入研究,旨在提供高效的面积和功率解决方案。商业和工业物联网设备都容易受到特定于物联网的攻击。如果我们继续使用现有的物联网设备设计流程,未来可能会面临安全灾难。当前的加密原语可以分为两类:
- 非对称密钥加密
- 对称密钥加密
A. 非对称密钥加密
非对称密钥加密也称为公钥加密,因为在这种技术中,需要一对公钥和私钥(如图1所示)。最近,轻量级加密的研究重点逐渐转向非对称密钥加密,但其成果尚未像对称密钥加密那样稳定和有成效。轻量级非对称算法在操作上较为复杂,且效率不高。此外,由于操作数的大小以及攻击模型的不断发展,这些算法也变得更加脆弱[2]。
以下是一些非常重要的非对称算法:
- Rivest-Shamir-Adleman (RSA)
- 逆向过程对攻击者来说非常困难,同时从公钥推导出私钥也极其困难。因此,该方法具有高度的安全性,但密钥生成过程复杂且速度较慢。
(1)RSA 公钥私钥计算
(2)RSA 加密解密过程
- Diffie-Hellman
- 私钥非常短,因此加密过程较快。但由于私钥长度较短,该方法更容易受到攻击,特别是中间人攻击。
- 数字签名算法(DSA)
- 此方法比其他非对称算法更快,且在许多场景中更有优势。然而,数字签名的生命周期较短,且共享过程较为复杂[3]。
- 椭圆曲线加密(ECC)
- 尽管ECC算法更为复杂且难以实现,但它的功耗较低。在多种非对称算法中,ECC最适合在资源受限的设备中实现[2]。
ECC 的研究现状
近年来,ECC在物联网(IoT)领域的研究成为一个重要课题,但大多集中于软件层面。例如:
- 软件实现:
[4] 实现并评估了一种基于开源ECC的方案,运行于物联网操作系统Contiki OS上,其实现以BSD许可证发布。
[5] 应用了ECC方法,并在一个名为Wiselib的开源和通用编程库中提出了零知识协议的实现。 - 硬件实现:
[6] 采用了一种硬件方法,证明ECC计算能够有效地抵御侧信道攻击。他们的方法适用于具有最低安全级别和硬件开销的轻量化实现。 - 对比研究:
[7] 对RSA、Diffie-Hellman以及椭圆曲线加密(包括椭圆曲线Diffie-Hellman, ECDH)进行了比较研究,发现ECDH在功耗和面积方面优于其他算法。
B. 对称密钥密码学
对称密钥密码学也被称为秘密密钥或共享密钥密码学(如图2所示)。在此过程中,发送者和接收者通过秘密通信共享一个共同的密钥,用于加密和解密。对称密码学由于其快速的操作(主要是XOR和置换操作)而更适合物联网(IoT)应用。其处理速度较快,且不会消耗太多资源[3]。表I显示了非对称密钥密码学与对称密钥密码学的直接比较。
对称算法中的一个重要区别是流密码和分组密码。流密码使用与数据大小相同的密钥。在这个过程中,密文是通过对明文的“逐位”操作得到的。常见的轻量级流密码包括Trivium、Chacha、WG-8、Espresso,这些算法具有较高的吞吐量。Grain 128是最受欢迎且适用于受限设备的轻量级密码之一,尽管它的吞吐量较低。Espresso被认为是1500 GE以下最快的轻量级密码[8]。
分组密码具有固定长度的位数,并且其变换过程的不同阶段由对称密钥决定。分组密码非常多用途,这对物联网(IoT)来说非常有帮助。另一个优点是该过程的加密和解密方法几乎是相同的。因此,它可以用更少的资源实现。虽然分组密码的延迟较低,但它们是物联网安全中研究最多、改进最多的解决方案[8]。常见的分组密码包括高级加密标准(AES)、数据加密标准(DES)、3DES、Blowfish、Twofish。研究人员采取了不同的方法,使这些分组密码变得轻量并适合物联网使用。其他一些正在研究的轻量级分组密码包括Curupira、PRESENT、KATAN、TEA、Humming Bird、RECTANGLE、SIMON。表II显示了一些常见分组密码之间的基本比较[8][9][10][11]。
不同的密码学标准化工作既考虑了软件安全性,也考虑了硬件安全性。在[12]中,对几种轻量级分组密码的硬件和软件实现进行了比较。软件和硬件的安全解决方案有不同的衡量标准。软件度量包括周期数、内存、每字节周期数,而硬件度量包括吞吐量、面积、吞吐量-面积比率。要直接比较这两者是很困难的。在[12]中,作者通过使用定制的轻量级可重配置处理器成功地进行了比较,比较了AES、SIMON、SPECK、PRESENT、LED、TWINE的面积、吞吐量/面积比等硬件和软件实现的指标。SPECK、TWINE和PRESENT在硬件和软件中表现良好。表III提供了硬件和软件安全解决方案的基本比较[13]。
需要特别指出的是,在所有分组密码算法中,AES(高级加密标准)是研究得最深入的算法。关于AES的许多研究已经完成,并且仍在继续,旨在使其更加轻量并适合物联网使用。
AES
AES概述与标准化:
- AES的标准化:AES作为加密标准,由美国NIST于2001年标准化。此后,它成为最广泛使用的对称加密算法之一,尤其适用于数据保护和加密应用。它具有强大的安全性和高效性,因此被大量研究与应用。
AES的安全性与适用性:
- 不同设备的需求:不同的设备可能对安全性有不同的需求,并且设备的功耗和处理能力(吞吐量)各异,因此AES支持不同的密钥长度,以适应不同的安全需求。
- AES的优点:AES算法经过充分的安全性验证,已被广泛应用于数据加密和其他安全措施中。与其他对称加密算法相比,AES的复杂度较低,能提供较高的安全级别[14]。
AES的结构与过程:
AES的加密过程被分为四个主要步骤,其中每个步骤包含不同的操作。
-
密钥扩展:
- 通过密钥扩展过程,AES从原始的密钥生成一系列的轮密钥,供后续的加密轮次使用。该过程包括三个子步骤:旋转(Rotate)、S-盒替换(S-Box)和Rcon(一个常数)。
-
初始轮次:
- Add Round Key:在此步骤中,AES的每个字节与轮密钥通过逐位XOR操作结合,完成初步加密。
-
后续轮次:
- Sub Bytes:这一阶段进行非线性字节替换,每个字节用预定的查找表替换,增加加密的复杂性。
- Shift Rows:该步骤对数据进行循环移位,状态的后三行根据指定的步数移动。
- Mix Columns:对状态矩阵的每一列进行混合操作,目的是通过线性变换增加加密的强度。
-
最后轮次:
- 在最后一轮中,除了“列混合”步骤外,其他步骤都将继续执行。最终完成加密。
B. 近期关于AES在物联网中的研究工作:聚焦混合列(Mix Column)和S盒(S-box)
AES算法的硬件实现面临两个主要挑战:混合列(Mix Column)轮次和S盒(S-box)。减少硬件实现AES的面积和延迟是研究人员的主要目标。研究人员一直在努力提出适用于物联网的轻量级AES。至今,关于混合列和S盒的研究仍在继续。
[25]提出了一种新的FPGA实现AES的方法,使用了高性能的混合列(Mix-Column)和逆混合列(inv-Mix Column)方法,利用了二进制计算的特性。他们的结果显示,与原始AES设计相比,面积减少了12%,速度提高了20%。另一篇论文[26]也在混合列方面做了优化,旨在使其更快且低复杂性。其结果显示,相较于其他相关工作,复杂性较低,所需的门数减少。另有研究[27]在混合列方面也做了工作,并在门的尺寸和时钟周期数方面取得了更好的结果。
[28]提出了一种新的方法,设计了一个低面积的GF(2^8)有限域反演器,具有最短的关键路径,用于S盒。[29]使用了从交换链环中获得的S盒。[30]提出了一种新的设计,结合了AES的S盒和逆S盒,他们的设计在研究中表现优于其他最佳设计。S盒和混合列轮次是AES成为轻量级、适合物联网的分组密码的两个主要问题。目前,关于AES的安全性没有争议。脆弱的物联网网络可以通过轻量级AES得到保护。研究人员一直在提出新的架构,致力于混合列和S盒的优化,以实现这一目标。
相关文章:

不安全物联网的轻量级加密:综述
Abstract 本文综述了针对物联网(IoT)的轻量级加密解决方案。这项综述全面覆盖了从轻量级加密方案到不同类型分组密码的比较等多个方面。同时,还对硬件与软件解决方案之间的比较进行了讨论,并分析了当前最受信赖且研究最深入的分组…...
mysql_init的概念和使用案例
mysql_init 是 MySQL C API 中的一个函数,用于初始化一个 MYSQL 结构,这个结构在后续的 MySQL 数据库操作中会被频繁使用。mysql_init 的调用是建立与 MySQL 数据库连接的第一步。 函数原型: MYSQL *mysql_init(MYSQL *mysql);参数说明&…...

3GPP R18 MT-SDT
Rel-17 指定MO-SDT允许针对UL方向的数据包进行小数据包传输。对于DL,MT-SDT(即DL触发的小数据)可带来类似的好处,即 通过不转换到 RRC_CONNECTED来减少信令开销和UE功耗,并通过允许快速传输(小而少见的)数据包(例如用于定位)来减少延迟。 在R17中,NR_SmallData_INACTIVE的工…...

时频转换 | Matlab暂态提取变换transient-extracting transform一维数据转二维图像方法
目录 基本介绍程序设计参考资料获取方式 基本介绍 时频转换 | Matlab暂态提取变换transient-extracting transform一维数据转二维图像方法 程序设计 clear clc % close all load x.mat % 导入数据 x x(1:5120); % 本数据只选择5120个点进行分析 fs 6400 ; % 数据采样频…...
.NET Framework 逐渐过时,.NET 8和 .NET 9引领未来
随着科技的不断进步,软件开发的工具和技术也在不断更新换代。.NET Framework,曾是微软的旗舰开发平台,曾经在软件开发领域占据了主导地位。然而,随着技术的演变和开发需求的变化,.NET Framework逐渐显得力不从心&#…...

从虚拟到现实:AI与AR/VR技术如何改变体验经济?
引言:体验经济的崛起 在当今消费环境中,产品与服务早已不再是市场竞争的唯一焦点,能够提供深刻感知和独特体验的品牌,往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为,而是通…...
在K8S中,Ingress该如何使用?
在Kubernetes中,Ingress是一种API对象,它提供了对外部请求进入集群内部服务的一种统一入口和路由机制。Ingress控制器是一个运行在集群中的守护进程,它监听Ingress对象的变化并配置相应的负载均衡器或代理服务,以便根据定义的规则…...

Ubuntu24.04安装NVIDIA驱动及工具包
Ubuntu24.04安装NVIDIA驱动及工具包 安装nvidia显卡驱动安装cuda驱动安装cuDNN安装Anaconda 安装nvidia显卡驱动 NVIDIA 驱动程序(NVIDIA Driver)是专为 NVIDIA 图形处理单元(GPU)设计的软件,它充当操作系统与硬件之间…...
【每日学点鸿蒙知识】组件封装通用方法、callback和await性能对比、Web组件下拉刷新、hsp包报错、WebView圆角
1、HarmonyOS 自定义的组件如何封装一些通用的属性和方法,例如 Java 中的继承? export class Animal{name:stringage:stringconstructor(name:string,age:string) {this.name namethis.age age} }export class Person extends Animal{reading:stri…...

Excel批量设置行高,Excel表格设置自动换行后打印显示不全,Excel表格设置最合适的行高后打印显示不全,完美解决方案!!!
文章目录 说个问题(很严重!!!)写个方案会Python看这里Python环境搭建不存在多行合并存在多行合并 不会Python看这里 说个问题(很严重!!!) 平时处理Excel表格…...

Web Bluetooth API 开发记录
搞了一天的蓝牙串口协议被几个软件和AI带沟里面去了。 1.00001101-0000-1000-8000-00805f9b34fb 是spp协议。但是我用的称是使用的49535343-fe7d-4ae5-8fa9-9fafd205e455蓝牙低功耗spp协议 2.推荐一款软件Android-nRF-Connect github地址:https://github.com/Nor…...

python基础知识(二)
元组 元组与列表类似,不同之处在于,元组的元素不能修改,元组使用()。 集合 集合是一个无序且不重复的元素列表。 基本功能是 进行成员关系测试和删除重复元素。 创建集合使用大括号或者set()函数。 例子: 注意:创建一…...
【每日学点鸿蒙知识】初始化BigInt、包体积瘦身、Tabs嵌套Grid、老年化适配、Release打包失败
1、HarmonyOS 在一个类中,怎么初始化一个BigInt类型的属性? 可以通过BigInt关键字来初始化,如: let a BigInt(1); let b BigInt("2"); 关于Uint8Array与string互转,示例: // string 转Uint8…...
Android service framework笔记
1. 网络摘录如何添加一个Application Framework Service(一)(without native code) 如何添加一个Application Framework Service(二)(with native code) 2.书籍摘录...
安全攻防:中间人攻击
1. 中间人攻击定义 中间人攻击(简称MITM)是攻击者在进行网络通信的双方中间,分别与两端建立独立的联系,并进行数据嗅探甚至篡改,而通信的双方却对中间人毫不知情,认为自己是直接在与对端通信。2. 常见中间人…...
【Rust自学】7.3. use关键字 Pt.1:use的使用与as关键字
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.3.1. use的作用 use的作用是将路径导入到当前作用域内。而引入的内容仍然是遵守私有性原则,也就是只有公共的部分引入进来才…...
变长的时间戳(第4版)
以32位为单位,一个时间戳可以是32位、64位、96位。 122932 113032 A类:(40036597)1000146097000≤229 B类:246060100086400000≤229 C类:1000100010001000000000≤230 每400年有40036597146097天,A类时间戳能表达1000…...

Intent--组件通信
组件通信1 获取子活动的返回值 创建Activity时实现自动注册!【Activity必须要注册才能使用】 默认 LinearLayout 布局,注意 xml 中约束布局的使用; 若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可,记得 设置线性布局…...
Android14 OTA升级速度过慢问题解决方案
软件版本:Android14 硬件平台:QCS6115 问题:OTA整包升级接近20min,太长无法忍受。 该问题为Android高版本的虚拟AB分区压缩技术所致,其实就是时间换空间,个人推测AB分区压缩会节约硬件存储空间࿰…...

仓颉语言实战——1. 类型
仓颉语言实战——1. 类型 仓颉语言(Cangjie Language)是一个现代化的、简洁而强大的编程语言,它的类型系统为高效开发提供了极大的支持。本篇文章将围绕仓颉语言中的类型系统展开,结合实战代码,帮助开发者快速掌握这一…...

无人机避障——感知部分(Ubuntu 20.04 复现Vins Fusion跑数据集)胎教级教程
硬件环境:NVIDIA Jeston Orin nx 系统:Ubuntu 20.04 任务:跑通 EuRoC MAV Dataset 数据集 展示结果: 编译Vins Fusion 创建工作空间vins_ws # 创建目录结构 mkdir -p ~/vins_ws/srccd ~/vins_ws/src# 初始化工作空间…...

Fractal Generative Models论文阅读笔记与代码分析
何恺明分型模型这篇文章在二月底上传到arXiv预出版网站到现在已经过了三个月,当时我也听说这篇文章时感觉是大有可为,但是几个月不知道忙啥了,可能错过很多机会,但是亡羊补牢嘛,而且截至目前,该文章应该也还…...

MATLAB生成大规模无线通信网络拓扑(任意节点数量)
功能: 生成任意节点数量的网络拓扑,符合现实世界节点空间分布和连接规律 效果: 30节点: 100节点: 500节点: 程序: %创建时间:2025年6月8日 %zhouzhichao %自然生长出n节点的网络% …...

【Ragflow】27.RagflowPlus(v0.4.1):小版本迭代,问题修复与功能优化
概述 RagflowPlus v0.4.0 在发布后,收到了积极的反馈,同时也包含一些问题。 本次进行一轮小版本更新,发布 v0.4.1 版本,对已知问题进行修复,并对部分功能进行进一步优化。 开源地址:https://github.com/…...

线性规划饮食问题求解:FastAPI作为服务端+libhv作为客户端实现
之前在 Pyomo介绍-CSDN博客 中介绍过通过Pyomo求解线性规划问题,这里使用FastAPI作为服务端,开源网络库libhv作为客户端,求解饮食成本最小化问题。 服务端测试代码test_fastapi_pyomo_server.py如下: from fastapi import FastAP…...

基于fpga的疲劳驾驶检测
基于fpga的疲劳驾驶检测 前言一、系统硬件设计二、系统软件设计系统上板实验测试 前言 代码基于网络大佬代码进行修改的。限制性比较大,不太灵活,当个本科毕业设计还是够的。 基于FPGA的疲劳检测模块硬件设计以FPGA核心控制模块为中心,通过…...

virtualbox 如何虚拟机ip固定
1、在网络管理里新建 2、配置网络 3、 进入linux系统,查看 查看 网卡是enp0s8, ifconfig 4、进入网卡配置文件 cd /etc/sysconfig/network-scripts如果没有enp0s8 ,则使用mv ifcfg-enp0s3 ifcfg-enp0s8命令 配置项如下 TYPEEthernet PROXY_METHODn…...

JS 事件流机制详解:冒泡、捕获与完整事件流
JS 事件流机制详解:冒泡、捕获与完整事件流 文章目录 JS 事件流机制详解:冒泡、捕获与完整事件流一、DOM 事件流基本概念二、事件捕获 (Event Capturing)特点代码示例 三、事件冒泡 (Event Bubbling)特点代码示例 四、完整事件流示例HTML 结构JavaScript…...
【生活】程序员防猝si指南
note 一、定期体检二、均衡饮食,多食用对心脏有保护作用的食物三、每周运动四、减压五、保证睡眠六、戒烟限酒7、控制血压8、警惕流感攻击心脏9、关注牙齿健康10、不要抵触吃药 文章目录 note一、定期体检二、均衡饮食,多食用对心脏有保护作用的食物三、…...

AI架构师修炼之道
1 AI时代的架构革命 与传统软件开发和软件架构师相比,AI架构师面临着三重范式转换: 1.1 技术维度,需处理异构算力调度与模型生命周期管理的复杂性; 1.2 系统维度,需平衡实时性与资源约束的矛盾; 1.3 价…...