88、无线传感器网络中使用eSTREAM密码的认证加密

无线传感器网络中使用eSTREAM密码的认证加密

1. 引言

无线传感器网络(WSNs)由大量传感器节点组成,这些节点用于观测环境参数、检测运动,并通过无线媒体将数据传输到汇聚节点或基站。WSNs在民用和军事领域都有广泛应用,但面临着两大问题。一方面,传感器节点的能量、计算和通信能力有限;另一方面,由于它们可能部署在广阔区域或敌对领土,容易受到节点捕获、物理篡改、监控或窃听等攻击。因此,需要确保数据的机密性、认证性和完整性,而资源受限的传感器节点对加密社区和信息安全专家提出了挑战,需要研究出轻量级且强大的安全解决方案。

2. 相关工作

网络安全可以通过不同的网络层安全协议来保障,如IP层的IPSec、WSNs中的链路层安全协议TinySec和SPINS。不过,加密解决方案通常被认为更可靠。在密码学领域,早期的密码机时代之后,分组密码成为焦点,如1974年被选为标准的DES,以及2000年成为高级加密标准(AES)的Rijndael。分组密码经过了广泛测试和应用,具有较高的安全性,但在资源受限的WSNs中,复杂的加密硬件并不适用,高效的软件实现和同等的安全性才是关键。

流密码由于其设计特点,在软件实现方面具有优势。2004年,欧盟发起了eSTREAM密码项目,旨在选择安全和效率与AES相当的流密码。最初有34个提案,经过筛选,最终确定了适合软件实现的Rabbit、Salsa 20、Sosemanuk和HC 128,以及适合硬件实现的Trivium、Grain v1和MICKEY v2。

3. 使用流密码的认证加密

在网络环境中,通常使用哈希算法(如HMAC)来实现认证。分组密码在特定模式下(如CBC)可以提供认证加密,但在资源受限的传感器网络中,其处理成本过高。流密码则更适合对吞吐量要求高、能量和处理资源有限的应用。以下是几种使用流密码进行认证加密的方法及其在传感器网络中的分析:
- 使用流密码生成MAC的方法 :由Woo Hwan KIM和Jung Keun LEE提出。该方法将明文分成K个数据包,用(Kmac异或数据包编号)对每个数据包进行加密,对所有输出进行异或运算,再用Kmac对结果进行加密得到MAC。使用MAC作为IV,用Ke对明文进行加密,将MAC附加到密文后发送给接收方。接收方使用MAC作为IV和密钥Ke进行解密,提取明文后计算MAC并验证接收到的MAC。然而,该方法不适合传感器网络环境,原因如下:
- 处理成本高 :MAC生成需要两次额外的加密,总共三次加密以及其他一些小操作,这对于能量受限的传感器节点来说可能是致命的。
- 先认证后加密 :建议采用先加密后MAC的方法来实现认证加密的最强安全定义。
- DRAGON - MAC :由Shu Yun Lim等人提出,基于先加密后MAC的方法。先对数据进行加密,然后使用从数据包头部提取的数据字段设置状态更新函数,将密文再次输入流密码以计算MAC。使用不同的加密密钥Ke和认证密钥Km。该机制已在Telos系列节点上实现,也可通过仔细选择或添加数据包头部字段在其他类型的节点上实现。
- Tail - MAC :由Bartosz Zoltak提出。该方案基于加密过程中内部状态的转换,其定义假设存在一个生成b位字流的流密码。内部状态由变量T和Xw组成,T是一个(8xd)元素的b位字表,X1, X2, …, Xd是b位变量。F是一个双射函数,iK(m)表示时间m时密码内部状态的一部分。Tail - MAC的主要目标是记录从密文、密钥和IV中提取的足够长的信息,以防止密文被篡改。然而,该方法可能不适用于所有流密码,并且仅适用于基于字的密码,而并非所有可软件实现的eSTREAM密码都是基于字的。
- 其他方法 :一些密码(如Helix和Sober - 128)具有内置的MAC生成功能,但关注的eSTREAM密码没有这种功能。

以下是几种方法的对比表格:
| 方法 | 优点 | 缺点 | 适用场景 |
| — | — | — | — |
| 使用流密码生成MAC的方法 | 有完整的加密和认证流程 | 处理成本高,先认证后加密安全性不佳 | 不适合资源受限的传感器网络 |
| DRAGON - MAC | 基于先加密后MAC,可在多种节点实现 | 需仔细选择头部字段 | 资源受限的传感器网络 |
| Tail - MAC | 记录信息防止密文篡改 | 不适用于所有流密码,仅适用于字基密码 | 特定的流密码场景 |
| 其他方法(Helix、Sober - 128) | 内置MAC生成功能 | eSTREAM密码无此功能 | 特定密码适用场景 |

mermaid流程图展示DRAGON - MAC的加密解密过程:

graph LR
    A[明文] --> B[加密(Ke)]
    B --> C[密文]
    D[数据包头部字段] --> E[状态更新函数]
    C --> E
    E --> F[计算MAC(Km)]
    C --> G[附加MAC]
    F --> G
    G --> H[发送]
    H --> I[接收]
    I --> J[提取头部字段]
    J --> K[设置状态更新]
    I --> L[提取密文]
    L --> K
    K --> M[计算MAC(Km)]
    M --> N[比较MAC]
    N -->|匹配| O[解密(Ke)]
    N -->|不匹配| P[丢弃数据包]
4. 使用eSTREAM密码的认证加密方案

考虑到可软件实现的eSTREAM密码和WSNs的资源限制,经过修改的Dragon - MAC方案是最适合实现的。以下是几种具体的实现方案:
- SOSEMANUK - MAC :Sosemanuk密码结合了SNOW 2.0的基本设计原则和SERPENT的一些变换。其密钥长度可变,为128 - 256位,需要128位的IV。Sosemanuk适合资源受限的传感器网络,原因如下:
- 设计减少了SNOW 2.0的内部状态大小,提高了数据在处理器寄存器上的映射效率。
- 所需的静态数据量减少,降低了数据缓存压力,提高了性能。
- 密钥设置过程基于简化版的SERPENT,提高了初始化过程的安全性和效率。

在基于Dragon - MAC的方案中,首先使用Ke对明文进行加密,然后将数据包头部的选定字段注入到R1和R2寄存器中。初始加密的密文输出作为IV,再次运行Sosemanuk生成32位的MAC。将MAC附加到密文后发送给接收方。接收方首先进行认证,将相同的头部字段注入到R1和R2状态中,使用接收到的密文作为IV计算MAC并与接收到的MAC进行比较。如果认证通过,则使用Ke对密文进行解密。

  • HC 128 - MAC :HC 128流密码由Honjun Wu设计,接受128位的密钥,每次输出32位的字。其主要部分由两个包含512个32位条目的秘密表组成,通过非线性反馈函数更新内部状态,通过非线性滤波函数生成32位输出。

在加密过程中,使用Ke作为加密密钥,运行一次加密循环得到密文Ct。将选定的头部字段输入状态更新函数更新两个秘密表,使用Ct作为输入,Km作为密钥再次运行密码生成32位的MAC。将MAC附加到Ct后发送给接收方。接收方使用相同的头部字段更新状态,使用Km对Ct进行加密生成MAC。如果生成的MAC与接收到的MAC相等,则使用Ke对Ct进行解密;否则,丢弃数据包。

  • Rabbit - MAC :Rabbit流密码由Martin Boesgaard等人提出,接受128位的密钥和64位的IV,每次迭代生成128位的伪随机比特。加密和解密通过将伪随机数据与明文或密文进行异或运算来实现。

基于Dragon MAC的Rabbit - MAC方案由Ruhma Tahir提出,使用下一个状态函数计算MAC。发送方使用Km计算加密数据包的MAC,并将其附加到加密数据包上进行认证。IV从数据包头部计算得到。

以下是三种方案的对比列表:
- SOSEMANUK - MAC
- 优点:设计高效,减少内部状态大小和静态数据量,密钥设置安全。
- 操作步骤:
1. 用Ke加密明文。
2. 注入头部字段到R1和R2。
3. 用初始密文作为IV生成MAC。
4. 发送附加MAC的密文。
5. 接收方认证并解密。
- HC 128 - MAC
- 优点:代码大小增加少,利用TinyOS功能。
- 操作步骤:
1. 用Ke加密得到Ct。
2. 用头部字段更新状态。
3. 用Ct和Km生成MAC。
4. 发送附加MAC的Ct。
5. 接收方认证并解密。
- Rabbit - MAC
- 优点:基于成熟的Rabbit密码。
- 操作步骤:
1. 加密数据包。
2. 用Km计算MAC。
3. 附加MAC进行认证。
4. 接收方认证并解密。

mermaid流程图展示HC 128 - MAC的加密过程:

graph LR
    A[明文] --> B[加密(Ke)]
    B --> C[密文Ct]
    D[数据包头部字段] --> E[状态更新函数]
    E --> F[更新秘密表]
    C --> F
    F --> G[计算MAC(Km)]
    C --> H[附加MAC]
    G --> H
    H --> I[发送]

无线传感器网络中使用eSTREAM密码的认证加密

5. 未来工作

未来,将借助TinyOS的功能,结合NesC语言,在Telos系列Tmotes上实现所提出的方案。选择这个平台是因为它能够在真实的传感器网络测试床上进行测试,并在传感器节点上进行实时演示。

具体操作步骤如下:
1. 环境搭建 :在开发环境中安装TinyOS和NesC开发工具。
2. 代码实现 :根据上述SOSEMANUK - MAC、HC 128 - MAC和Rabbit - MAC的方案,使用NesC语言编写相应的代码。
3. 测试部署 :将代码部署到Telos系列Tmotes上,在真实的传感器网络测试床上进行测试。
4. 数据收集 :收集测试过程中的数据,包括代码大小、内存消耗、所需处理能力和处理时间等。
5. 分析比较 :对收集到的数据进行分析,比较上述eSTREAM密码在认证加密模式下的效率和资源节省情况。

以下是一个简单的表格,展示了需要收集和分析的参数:
| 参数 | 描述 |
| — | — |
| 代码大小 | 实现认证加密方案所需的代码字节数 |
| 内存消耗 | 运行认证加密方案时占用的内存大小 |
| 处理能力 | 执行认证加密操作所需的处理器资源 |
| 处理时间 | 完成一次认证加密操作所需的时间 |

mermaid流程图展示未来工作的流程:

graph LR
    A[环境搭建] --> B[代码实现]
    B --> C[测试部署]
    C --> D[数据收集]
    D --> E[分析比较]
6. 结论

eSTREAM密码已被证明在效率和安全性方面与AES相当。在资源受限的WSNs中使用这些密码进行认证加密,能够满足数据安全需求,抵御节点捕获、物理篡改、监控或窃听等攻击。

通过修改现有密码以提供内置的认证功能来设计流密码,似乎是一个更好的解决方案。但这可能会对密码的安全性和效率产生影响。在WSNs环境中所做的工作,同样适用于类似的资源受限无线通信设备网络,特别是在军事应用的敌对环境中,这种适用性将更加明显和有用。

总结上述几种认证加密方案的特点如下:
| 方案 | 特点 |
| — | — |
| SOSEMANUK - MAC | 设计高效,减少内部状态和静态数据,密钥设置安全,适合资源受限环境 |
| HC 128 - MAC | 代码大小增加少,利用TinyOS功能,便于实现 |
| Rabbit - MAC | 基于成熟的Rabbit密码,有可靠的加密基础 |

总体而言,选择合适的认证加密方案需要综合考虑WSNs的具体需求、资源限制以及安全性要求等因素。通过未来的测试和比较分析,能够更准确地评估这些方案的性能,为实际应用提供更有力的支持。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值