第一范文网 - 专业文章范例文档资料分享平台

HW-F加密算法

来源:用户分享 时间:2025/5/28 9:53:54 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

本文来源于夏冰软件加密技术博客

HW-F加密算法

针对现有加密方法实现复杂、资源消耗大、仅适用于特定场合的弊端,一种适合于实时数据传输、易实现、安全系数较大、能在非高安全度环境下使用的轻量级的加密算法——HW-F加密算法应运而生,接下来,我就来给大家简单介绍一下这种加密算法。

一、HW-F加密算法的核心思想

HW-F加密算法的核心思想是“一次一密”,改变了以往的加密算法以算法复杂度提供安全性和算法固定的特点。

该加密算法以数据包为单位,加密每个数据包时算法都变化一次,以算法的不断变化提供的“一次一密”特性来代替加密算法的复杂度提供的安全性,这对VoIP音频数据包的传输尤其有意义。因为根据RFC1889中关于RTP协议的介绍(RTP是基于UDP或TCP的VoIP传输的基本传输协议,目前几乎所有运营商所用的VoIP传输协议都是RTP协议或它的修改),在每个VoIP数据包中都有协议部分,包含有重要的PT、SEQ、TimeStamp以及SSRC等

本文来源于夏冰软件加密技术博客

关键字(在标准协议中总共是12字节,各字段的详细含义请参照文献[2-4]),给这些数据文件加密是抵御黑客插音、干扰、重放攻击等影响VoIP运营的关键所在。

二、HW-F加密算法的特点

HW-F加密算法在每个数据包中都包含了变化算法的完整参数,且这些参数没有前后关联性,因而非常适合VoIP这种丢包率较大的应用场合(目前最好的VoIP音频编码算法甚至能容忍30%的丢包率),而在该场合中,有些序列密码是不适用的,很多序列密码需要收发双方的严格同步。

HW-F加密算法本质上也是一种数轮迭代算法,但不同的是每轮的算法都是不固定的。该算法在每轮预置的包含n种小算法的算法库中临时选择一种小算法,总的算法就是每轮选择的小算法之和。根据排列组合的原理,经过m轮之后,所有各轮算法之和即总的算法就可能有nm种。配以适当的策略,可以使这种组合的数量进一步大幅增长,并且对每一个数据包的加密都能从这些算法的组合中选择一种,从而达到近似“一次一密”的能力。另外,因为每一轮算法都仅仅是一种小算法,所以可以大大提高算法的加解密速度。

HW-F加密算法在上述特点的基础上,不需要密钥的协商、分配和安全传送部分,大大降低了实现的难度,简化了算法的实现复杂度,节约了实现、维护的成本,可充分满足商业实现的各项要求。

三、HW-F加密算法的加密过程

因为目前在我国的VoIP实际运营中,都是通过专门的媒体网关实现互联互通,可以不考虑运营商之间的算法兼容性问题。加密算法每一轮由如下元素构成:

式中 _Ej表示算法的第 j 轮的算法库;算法库的大小n可以按照具体的算法进行取值;Pjd

本文来源于夏冰软件加密技术博客

表示一个指针,指针指到的算法才是该轮采用的算法;Dj表示指针的偏移距离,在加密一条流之前,Dj与该轮的密钥Kj(1≤j≤m,m表示轮数)进行有限域n内的加运算。总的算法结构如图所示:

图中,明文数据M共经历了m轮运算,每轮运算的计算过程为该轮的指针初始偏移距离Dj与该轮的密钥Kj 在有限域n内相加,得出偏移距离jD,指针Pj根据jD指示的数值在算法库中找到算法fi(i=Di),然后采用该算法与明文M进行计算,该轮的偏移距离Dj被永久地更改为iD,经过m轮之后,得出最后的密文Mm,并且所有轮的偏移距离都被更新;Kci是一个随机数,其用途是作为次密钥,每个数据包都传递次值,每个数据包都不同。

需要指出的是,偏移距离D本质上就是密钥,称为密钥D。密钥D与密钥K相加得出某一轮要选择的算法,并用该相加值对D进行更新,密钥K在会话过程中传递而D不传递;密钥D有一个初始值,该初始值应固化在软件或硬件中,或伴随软件硬件的售出而分发,不同的客户端初始值不同,决定了对于不同的客户端,即便采用相同的密钥K,最终选择的算法不一样,加密结果也不一样。客户端和服务器端需要同时存储初始密钥D和不断被更新的密钥D′,一旦出现密钥D′不同步的情况,需要利用初始密钥D重置。

由上可以看出,每次用来选择算法的密钥其实是初始密钥D和之前所有传送过的密钥K在有限域n上的总和,因此攻击者即便截获了当前的密钥K,因为难以获知初始密钥D和之前所有传送过的密钥K,因而也无法解析密文,从而免去了保障密钥安全传送的考虑。

本文来源于夏冰软件加密技术博客

因为密钥K比较大,所以在每次会话中只在会话建立阶段传递一次,即在会话开始时从每个算法库中采用何种算法就已确定。为了保证在每个数据包中都采用不同的算法,还可以在每个数据包的负载中设置一个次密钥Kc,该密钥用来决定在已经确定的算法组合中,那一轮真正参与加密当前数据包的运算。例如在8轮的算法中,数据包包含的次密钥Kc如果为00101101(二进制),则表示经过密钥K和D的选择之后,真正参与当前数据包加密的只有第3、5、6、8轮算法,从而保证了每个数据包的算法都不一致。当然,在实际应用中,轮数应该足够多,以避免选择重复的情况出现。 对算法轮数的选择要求如下:

(1) 为保证算法的随机性,轮数要足够多;

(2) 因为每8轮用一个字节表示取舍,所以轮数应是8的整数倍;

(3) 因为每个数据包都要传送属于自己的Kc,因此Kc不宜过长,以避免增加额外的带宽;

(4) Kc应是随机的。

最后,算法库中的算法可以是任意简单的小算法,甚至可以仅仅是与某个数异或的算法。但算法的分组长度应至少为4字节,从而能够覆盖RTP协议中4字节长度的标志位。

四、HW-F加密算法性能分析

下面我们以采用64 bit分组、32轮的HW-F加密算法为例来说明其性能。假设每轮算法库中都有259个小算法,每个小算法都与某个数进行异或(每个数都是0~264数中的随机一个,且不重复,正好平均地分布在32轮算法中)。

1、HW-F加密算法的安全性分析

搜索更多关于: HW-F加密算法 的文档
HW-F加密算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c199eb3myou7px008u2ij_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top