基于区块链的物联网混合认证模型解析
1. 相关研究背景
区块链具有分布式设计、不可变性、不可破坏性和容错性等本质特性,这使得基于区块链的认证为物联网网络认证提供了一种新颖且合适的方法。传统的物联网网络认证由第三方中介进行,该中介保留所有信息并完全控制用户的认证过程。
现有的物联网网络需要对用户和设备进行认证。用户认证旨在确定合法用户是否在授权访问范围内访问资源,防止用户篡改对敏感信息的访问。设备认证的主要目的是确定哪些设备是真实的,哪些是恶意的。由于物联网设备的处理能力和存储容量有限,适当的认证机制有助于保护设备免受攻击者或恶意设备的未经授权访问。
已有一些研究探索利用区块链技术为物联网设备和用户提供透明的身份识别,以下是一些值得关注的研究:
-
基于区块链构建安全账本
:有研究建议使用区块链为物联网设备构建安全、防篡改的账本。每个设备的唯一ID存储在区块链上,使设备无需中央权威即可相互验证。新设备必须在区块链网络上注册才能连接,授权后可加入物联网网络并与其他设备共享点对点(P2P)数据。但如果设备无法自我保护,可能会对物联网网络和P2P设备造成损害,且该架构仅认证网络设备,未涉及使用设备的用户。
-
利用雾节点的认证模型
:引入了一种利用雾节点的认证模型,雾节点可降低网络设备的处理能力。随着设备数量的增加,设备认证变得更加复杂,网络扩展也更加困难。智能合约提供设备与雾节点之间的映射以及用户认证列表。设备仅与一个雾节点连接,而一个雾节点可连接多个设备。用户访问特定物联网设备时,需先向智能合约发送授权请求,获得授权后再向雾节点发送访问请求。
-
基于网关的认证机制
:提出了一种基于网关的区块链设备和用户认证机制。用户从网关请求区块链智能合约地址以访问用户和隐私政策信息,请求被接受后,用户向网关发送另一个请求,网关将用户和设备数据记录在区块链上。除用户认证外,物联网设备还需由管理员或其他设备管理器进行认证。该模型包括物联网设备、用户和与区块链连接的网关,设备在设备策略(智能合约)下与其他用户和设备共享信息或资源,网关会检查用户访问设备信息和资源的资格。
-
分配唯一标识符的系统
:提出了一个为每个设备分配唯一标识符的系统。使用智能合约的每个设备的数据交易记录存储在基于开源项目BigChainDB的区块链中。该系统由物联网设备、云服务器和区块链网络组成,物联网设备可相互连接并配有智能合约,云存储并加密这些设备的数据。区块链智能合约管理其他物联网设备或用户对设备的每次访问,并应用了实用拜占庭容错(pBFT)共识机制以提高系统的安全性和可靠性,但未给出系统的性能结果。
-
基于模块化平方根的认证策略
:建议采用基于区块链的物联网系统认证策略,该系统包括设备制造商、物联网设备、数据中心服务器和区块链。特别是采用模块化平方根(MSR)方法确保认证过程的安全性和效率,利用区块链技术提高系统的安全性和可扩展性。通过智能合约,系统可确保只有注册的设备或用户才能获得所订阅的服务。该模型包括系统初始化、注册、认证以及更新和撤销四个阶段,但未考虑用户的认证机制,这对系统的安全性有重大影响。
-
基于Hyperledger Fabric的认证解决方案
:提出了一种使用Hyperledger Fabric区块链平台的物联网链安全认证解决方案。系统内有三种链码:访问代码、设备代码和策略代码。访问代码是实现用户安全认证程序的主要软件,设备代码提供存储设备提供的资源数据URL的查询技术,策略代码指示管理员用户的访问控制策略。实验表明,物联网链可在分布式系统中维持高吞吐量并有效达成共识,该研究提出了针对物联网设备和用户的认证机制,但使用私有区块链难以确保与公共区块链相同的安全性和透明度,且未提及数据访问率,物联网链的操作图也不清晰。
2. 提出的认证模型
提出的模型使用了带有智能合约的Ganache区块链网络、由NodeJS服务器模拟的雾计算、云、物联网设备和Web服务器。物联网设备通过其MAC地址进行模拟,并在请求时交换信息。
在该模型中,假设存在同一用户拥有的本地设备(如绿色表示的设备1和设备2),它们可以轻松交换信息并获取彼此的数据。还有其他用户的私有设备(如红色表示的设备3),这些设备不共享信息。另外,有公共设备(如蓝色表示的设备4),任何用户都可以访问并获取其信息。
2.1 智能合约的作用
智能合约充当认证中心,存储用户、设备以及用户与设备之间关系的信息。在本模型中,智能合约使用Solidity构建,通过Truffle进行编译和迁移。编译过程将Solidity代码转换为字节码和应用二进制接口(ABI),字节码用于部署到以太坊网络,ABI确定调用智能合约中的哪个函数并以预期格式返回数据。迁移过程将编译后的数据转换到区块链网络,对于Truffle,该过程将编译后的字节码部署到私有区块链网络(具体为Ganache)。每个智能合约对应一个以0x开头的长字符串地址,该地址关联四个不同的字段:
| 字段 | 描述 |
| ---- | ---- |
| Nonce | 每次该地址发送任何交易时递增的整数 |
| Balance | 智能合约的余额,用户向该地址进行交易时余额增加,向其他地址发送交易时余额减少 |
| Code | 智能合约的源代码 |
| Data | 智能合约所有存储变量的存储位置,内存变量不能存储在区块链中 |
2.2 雾计算的作用
提出将雾计算作为用户和设备之间的桥梁。雾计算支持存储设备数据,并执行特定的(预配置)计算功能,以减轻设备的计算压力。像MAC地址这样的数据在保存到云之前会进行加密。每次设备或用户想要访问另一个设备时,会向智能合约发送请求以检索该设备的信息,然后将其与用户/设备提交的信息进行比较以确认验证。
2.3 模拟模型
该模型的运行原理通过模拟模型展示,构建该模型有以下假设:
- 云与雾计算将在同一服务器上模拟,该服务器可接收和处理用户与设备的请求。
- 设备通过网站服务平台进行模拟,可接收和请求数据,默认设置会存储并与服务器交换。
- 设备上基本参数的配置作为输入值保存。
使用ReactJs技术支持用户和设备的功能,主要功能如下:
-
个人信息管理
:
getUsername
、
addInformation
用于获取和编辑包括用户名和密码在内的个人信息。
-
设备管理
:
addDevice
、
removeDevice
用于添加和移除设备;
getDeviceList
用于获取当前用户拥有的所有设备列表;
switchDeviceStatus
用于将设备状态在私有和公共之间切换。
-
数据操作
:
getDeviceData
用于检索从其他设备收集的数据;
saveDataToCloud
用于将收集的信息保存到云。
认证模型基于非对称加密,使用生成的公私钥对作为用户的钱包地址。用户可以通过Metamask钱包在模拟模型中登录,需要存储助记词以便未来恢复账户,密码也用于验证拥有该钱包的用户。对于从未使用过该钱包地址的浏览器,用户需要输入助记词登录钱包。
以下是几种主要操作的流程:
-
添加新设备
:智能合约要求用户输入设备的名称和MAC地址,并将其作为哈希发送。如果该MAC地址是新的,智能合约将检查其唯一性并将设备添加到与用户钱包地址关联的列表中。
graph LR
A[用户] -->|输入设备名称和MAC地址| B[智能合约]
B -->|检查MAC地址唯一性| C{是否唯一}
C -- 是 --> D[添加设备到列表]
C -- 否 --> E[提示重复]
- 设备存储数据 :设备将收集的数据连同其钱包地址和MAC地址发送到雾计算。雾计算对设备的MAC地址进行哈希处理,获取存储在区块链上的相应钱包地址,并检查设备所有者的钱包地址与区块链上存储的钱包地址是否匹配。如果匹配,雾计算将设备的数据保存到云。
graph LR
A[设备] -->|发送数据、钱包地址和MAC地址| B[雾计算]
B -->|哈希MAC地址| C[获取区块链上的钱包地址]
B -->|检查钱包地址匹配| D{是否匹配}
D -- 是 --> E[保存数据到云]
D -- 否 --> F[拒绝保存]
- 用户访问设备数据 :用户必须同时向雾计算发送设备的钱包地址和MAC地址以检索该设备的数据。雾计算获取与钱包地址对应的MAC地址列表并进行匹配,如果MAC地址存在于列表中,雾计算将从云中获取数据并返回给用户。
graph LR
A[用户] -->|发送设备钱包地址和MAC地址| B[雾计算]
B -->|获取对应MAC地址列表| C[匹配MAC地址]
C --> D{是否存在}
D -- 是 --> E[从云获取数据并返回给用户]
D -- 否 --> F[提示无数据]
- 设备获取其他设备数据 :雾计算将检查要获取数据的设备是公共设备还是与当前设备具有相同的钱包地址。如果有效,将从云中返回数据;如果该设备是私有设备或由其他用户拥有,则无法获取数据。
graph LR
A[设备] -->|请求获取其他设备数据| B[雾计算]
B -->|检查设备性质| C{是否公共或同钱包地址}
C -- 是 --> D[从云返回数据]
C -- 否 --> E[拒绝获取]
3. 评估与结果
在这部分,展示了所提出模型的测试结果。使用Truffle部署智能合约,以下是相关信息说明:
| 名称 | 描述 |
| ---- | ---- |
| CREATION TX | 交易的ID |
| STORAGE | 存储值变量的智能合约内存 |
| TRANSACTION | 与智能合约执行的交易详情 |
下面通过具体场景来展示模型的运行情况:
-
添加新设备
:添加一个MAC地址为54:52:00:61:34:77的新设备,该交易得到确认并成功添加。
- 操作步骤:用户在系统中输入设备的MAC地址等信息,系统将请求发送给智能合约,智能合约检查MAC地址唯一性后添加设备到列表。
-
数据存储与检索
:
-
存储数据
:设置设备所有者的钱包地址(如用户dang_quoc_khanh),并将设备的手动数据存储到云。
-
检索数据
:用户可以检索存储在云中的数据。
-
设备状态设置与数据访问
:
-
设置设备为公共
:可以将设备(MAC: 54:52:00:61:34:77)设置为公共,这样其他用户或设备就可以访问该设备的数据。例如,MAC地址为54:52:00:e3:75:79的设备可以从这个公共设备获取数据。
-
防止访问私有设备数据
:设置一个新用户user_guest,该用户可以获取公共设备(MAC: 54:52:00:61:34:77)的数据,但无法获取用户dang_quoc_khanh的私有设备(MAC: 54:52:00:b1:c9:97)的数据,其他设备(MAC: 54:52:00:e3:75:79)也不能访问该私有设备的数据。
4. 总结
提出了一种基于区块链的物联网混合认证模型,该模型在现有模型的基础上进行了改进,支持用户认证和设备认证。通过实现一个小型系统进行模拟和测试,该系统应用了带有智能合约的Ganache区块链网络、由NodeJS服务器模拟的雾计算、云、物联网设备和Web服务器,物联网设备通过其MAC地址进行模拟并在请求时交换信息。
通过序列图展示了物联网设备和用户的认证阶段,并模拟了所提出模型中每个角色和功能的验证过程。此外,还考虑了将一个用户拥有的设备转移给另一个用户的情况,且操作简便。由此得出结论,具有设备和用户认证的系统优于单一的用户或设备认证系统。
以下是该模型主要组件及功能的总结列表:
-
智能合约
:作为认证中心,存储用户、设备及关系信息,使用Solidity构建,通过Truffle编译和迁移。
-
雾计算
:作为用户和设备的桥梁,支持设备数据存储和特定计算功能,减轻设备计算压力。
-
模拟模型
:使用ReactJs技术支持用户和设备功能,包括个人信息管理、设备管理和数据操作等。
-
认证机制
:基于非对称加密,使用公私钥对作为用户钱包地址,通过Metamask钱包登录。
该模型的整体流程可以用以下mermaid流程图表示:
graph LR
A[用户/设备] -->|请求| B[智能合约]
B -->|验证| C{是否通过}
C -- 是 --> D[雾计算]
D -->|处理| E[云]
E -->|数据交互| A
C -- 否 --> F[拒绝请求]
该模型在物联网认证方面具有创新性和实用性,能够有效提高物联网系统的安全性和可靠性。
超级会员免费看
16

被折叠的 条评论
为什么被折叠?



