王毅铭
(广西大学国际学院,广西 南宁 530004)
随着网络的发展,改变了人们日常的工作生活,网络在给人们带来方便的同时,也存在潜在的危险,需要人们注意信息安全。为了保证信息的安全,就可以通过加密的方式构造出安全的密码算法,把其应用在图像、文字等方面,本文就是通过混沌理论来加密构造单向HASH函数。
单向HASH函数是指单向散列函数,就是把任意长的输入消息串变化成固定长的输出串且输出串难以得到输入串的一种函数。HASH函数可以更好地校验和提高数字的有效性,算法是伪随机函数[1]。
该函数在运行过程中不需要保密,因为单向性决定了它的安全性,在输入数据后就可以求出HASH值。在反推的过程中需要依赖于输入,这一算法能够更好地降低概率,保证算法的安全性[2]。常见的单向散列函数有MD5,SHA,MAC,CRC,MD5使用的比较广泛,可以把不同的数据块通过编码的方式变成128位的数值。SHA算法可以把任意长度的数据运算成160位的数值。MAC可以通过系统或用户间的认证来完成加密。CRC可以更好地检验错误,便于人们对于数据进行校验。
目前,很多加密都需要依赖于HASH函数,人们在使用计算机时,就考虑到了建立计算机密码系统,MDS,SHA-1两个HASH算法相对安全。随着科学技术的不断发展,人们开始发现混沌理论更加符合HASH函数的构造要求,开始向混沌的单向HASH函数构造方面进行研究,主要分为Logistic映射、分段线性混沌映射、猫映射、混沌神经网络、耦合映像格子。
和以往的密码学相比,混沌密码学发展时间较晚,在密码技术方面存在一定的不足,主要体现在以下几个方面:(1)缺少相关的安全性理论体系。对于混沌理论的研究还比较少,人们多是通过简单理论对密码进行安全分析。可以通过密钥来进行相关信息的交流,运用传统密码学中的理论来验证混沌密码体制,研究出具有密码特性的混沌映射。(2)有关动力学特性退化的问题。混沌系统下对空间的定义是整个实数域,计算机的精度有限,在设计密码时容易出现这一问题,会影响到系统落不到运行轨道中,导致密码出现死循环影响到算法[3]。在面对这一问题时,可以通过多个混沌系统联合或运用更复杂的混沌系统来增加特性,对影响到系统参数的数值进行干扰,提高系统的准确度。(3)连续系统的离散化和算法复杂。密码设计是通过数字化的方式完成的。随着相关技术的不断发展,人们只能通过系统进行简单的数字运算,当面对大量数据时,密码系统的计算难度就会进一步增大,会影响到它的广泛应用。为了更好地解决这一问题,可以通过选择稳定性能好的映射、时空混沌系统、提高混沌性能、发挥传统密码技术的优点来提高密码的安全性。
虽然存在上述问题,但是它属于一个新的密码设计方法,可以丰富密码学的内容,让人们可以攻克更多密码体制相关的问题,能够促进密码学的研究。
时空混沌HASH编码系统的硬件结构是由外部接口来保证数据的输入和输出,在输入接口是由HASH编码硬件系统和主处理单元的通信接口组成。输入消息数据时通过该硬件系统,得出相应的HASH码,通过传回处理单元的方式对相关消息的安全进行验证,等到认证结束后才能保证消息的可靠性,当收到消息被篡改,就说明这条消息不可靠。
这一系统包括数据标准化、包检查、FFO数据缓存,时空混沌运算模块和HASH编码输出模块。数据标准化是为了保证数据有可以统一的规范,便于对模块的数据处理。标准化可以把慢速的外部数据接口的数据都缓存都本单元内,能够在接到数据后,通过该系统传递给检查模块,当出现数据不统一的情况,需要根据标准化的要求对其进行整齐划一。在检查模块中,需要对相关的数据包进行检查,保证消息的长度,对其进行标注。算法使用的耦合映像格子数量是固定的,所以需要对不足格子长度的数据包进行标注补充数据,达到要求的数据长度,再把符合要求的数据发送到FFO数据缓存器中。数据缓存器是把数据接收后通过相关运算对数据进行处理,保证数据在运算的过程中不会出现丢失的情况,及时出现丢失也可以在数据缓存器中找到需要的数据,这样才能生存正确的HASH编码。
只有完成上述的流程后,才能够保证输入信息的完整性,对于进行及时的检查,发现问题及时解决问题,保证数据的规范性,便于后续模块对数据进行运算。
这一模块是HASH编码硬件系统的核心单元,在输入消息时要把其划分为模块进行运算。这一运算模块是对输入的数据进行相应的判断,把输入的数据作为该系统的初始值,通过数值来启动系统多次的进行迭代运行产生伪随机序列。通过多次的运算后,就可以形成消息模块生成HASH码的数据。对数据进行相应的操作,得出与之对应的HASH码。对多个消息模块的HASH码再进行运算就可以得出相应消息的HASH编码。
在对多个消息模块进行运算时,可以通过并行运算的方法或串行运算的方法。前者的优点在于可以更快地运算出结果,能够同时处理多个模块的数据,在很短的时间内就可以得到结果,缺点是对资源需求比较高,硬件成本相对比较高。后者的运算方式优点是硬件资源需求比较少,通过一个模块运算的方式就可以完成全部信息的运算,缺点就是在多个模块数据在同时运算时,运算的速度会比较慢。为了更好地进行运算,就需要充分考虑到资源和速度的因素,找到一个比较平衡的点,根据不同的需求选择不同的运算方式,满足数据的运行正确生成HASH码。
当出现多消息模块并行运算时,可以在系统处于空闲时,把数据都准备好,把数据同时输入到各个模块中进行相关运算。在完成全部的计算后,就可以把生成的结果做最后一步的运算,得出所需要的HASH码。当系统再次出现空闲的时候,就可以进行下一次的消息输入,循环往复可以在一定程度上节约计算的时间。
在这一模块运算单元中,是为了对消息模块的数据进行运算,使其生产成本模块的HASH码。首先,在这一系统计算过程中,要保证存储空间的需求。在n(循环次数)和i(耦合格子数)很大的情况下,就需要大的存储空间对数据进行缓存。在一般的计算机上,由于存储空间较大,可以完成上面的运算,对于数字逻辑系统来说,本身数据量就大,需要缓存的资源更多,在一定程度上增加了系统的硬件成本,所以减少中间数据可以满足人们对于存储空间的需求。
当时空混沌系统的N和I数值越大时,系统的非线性动力学特性就会变得复杂,这样会更有利于生成HASH码,通过这一方法可以更好地减少中间数据的存储空间,让整个数据量的运算都可以在硬件编程器中进行。
这一单元的运算流程如下:空闲状态—读取输入数据到Line0—时空混沌运算得出Line1—移动到Line0—生成HASH码。把要运算的数据输入其中,通过转移数据的方式在时空混沌系统中进行相关赋值的操作。在读取数据完成后,可以运算到Line1,再通过相关的计算得出数据转移到Line0中,进行下次的运算初始值,周而复始的进行新的一轮计算。直到完成N的运算后,就可以进入到生成HASH码,在运算过程中可以通过十进制小数、二进制整数的方式来对应映射法,还可以通过抽取的方式对数据进行比对,组成HASH码。
通过仿真技术可以对相关的模块进行功能的测试,保证验证的设计结果可以符合相关设计的目标。可以通过检查模块功能,分析输入数据是否符合规范化操作,根据浮点数值得出时空混沌系统的初始值。当出现数据长度与输入消息不对等时,可以通过填充的方式让消息达到长度标准,进一步提高系统的动力学复杂性。
综上所述,随着网络技术的不断发展,为了保证信息的安全性,人们开始采用单向HASH函数下的密钥机密方式,对数据进行校验保证信息的完整性。