深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
输出: str= WHILE(X>0)
str=(char)(X-48)+str RETURN str [5] 4.4 RSA探索
RSA算法中的加密解密操作,都是大整数的算术运算,在硬件实现上需要长的(千位以上的)运算结构。目前,在集成电路中进行大整数算术运算的结构设计,需要做全局数据广播,不仅扇出大、延时长,而且需要的连线资源很大。全局信号的广播问题,在现有关于RSA硬件实现的文献资料中很少提及。实际上,对于任何在深亚微米工艺条件下实现的集成电路,全局信号的广播都是需要认真解决的问题。对于RSA模乘幂运算器这样一个数据宽度特别大的结构,这个问题尤其重要,直接影响到设计的性能。 在基于冗余阵列的设计中,针对现有结构中存在的问题,我们对蒙哥马利算法进行优化,并采用将信号广播流水化的方法,解决长整数运算结构中关键信号广播带来的负载问题。我们采用在信号广播中插入中间寄存器的方法,设计者在RTL的层次控制扇出节点的数量,从而减少扇出,降低关键路径的延迟,提高时钟频率。相对于未优化的结构,新设计的时钟频率提高100~154%,模乘幂运算速度提高99~153%,而面积的增加仅有5~28%。 在基于脉动阵列的设计中,尽管脉动阵列的结构可以解决进位链的传递问题,但是,仍然有一部分全局信号需要从控制部件广播到乘法器的特定位置。我们在新的RSA模乘幂运算器的设计中提出一种被称作“分布式模块簇”(DMC:DistributedModuleCluster)的结构,以提高长整数运算结构的可扩展性,减少全局信号的扇出。该策略使得除了时钟之外的其它信号的传播都限定在一个模块内部或者相邻两个模块之间,为解决长整数的运算结构在深亚微米工艺实现时所遇到的全局信号广播问题提供了可行的解决方案。针对基于脉动阵列结构的模乘法器,我们提出一种冗余策略用以完成模乘法器的动态分割,但是关键路径的延迟不受影响。这种冗余策略可以支持中国剩余定理的应用。基于DMC的设计与基于冗余结构的优化设计相比,虽然在运算速度方面各有优势,但是DMC结构不象冗余结构一样需要针对不同的结构长度进行细致的调整,因而DMC结构具有更好的可扩展性。与基于冗余结构的优化设计相比,基于DMC结构的设计主频提高43~65%,公钥运算速度降低15~26%,而由于在硬件上直接支持CRT,私钥运
22
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
算速度提高52~76%。 在针对DMC结构进行的设计空间的探索中,我们详细探讨了采用部分并行的脉动阵列结构实现蒙哥马利算法的问题,实现了一系列不同长度和不同结构的运算单元,从中选择具有比较高的运算性能和性价比的结构。实验结果表明,如果以关键路径延迟×单元面积作为时间-面积代价指标,那么全部串行的脉动阵列结构,即每个运算单元处理一位数据的设计,与同类结构相比具有比较高的运算性能和性价比。 在基于脉动阵列的设计中,相邻的运算单元存在数据依赖关系,因而每隔一个周期就会有一个周期的空闲。从算法的层次上看,这种数据依赖关系是无法消除的。但是,我们的实验发现,在部分并行的脉动阵列中,如果不采用交替执行的结构,而是两个模乘法分别采用一套运算模块并发执行,并且适当调整一些关键信号的时序,可以消除因为数据依赖关系而引起的空隙。通过对逻辑综合和物理实现的结果进行分析发现,相对于基于交叉执
行
结
构
的
DMC
而
言
,
新
的
并
发
执
行
结
构
CE-DMC(ConcurrentExecutionDistributedModuleCluster)主频降低10~29%,但是完成RSA模乘幂运算需要的时钟周期数仅仅是前者的50%,所以运算速度提高42~98%。 另外,在RSA模乘幂运算的设计中,控制单元中有若干个1000位以上的寄存器。对长寄存器的快速存取,控制电路的扇出很大,从而使得时钟周期比较长。我们提出并采用“两阶段访问”(TSA:Two-StageAccess)方法和在信号广播中插入中间寄存器的方法,以减少扇出,降低关键路径的延迟。RSA加密算法是一种非对称加密算法。在公钥加密标准和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算技术和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。
23
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
24
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
5 其他加密技术
本章主要介绍其他的一些加密技术及其应用,例如数据指印MD5码、椭圆曲线密码体制ECC、伪随机数加密技术、可变长密钥块Blowfish加密技术等。
5.1 MD5
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。
MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。 当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。
将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。
主循环有四轮(MD4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向左环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。
典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:
25
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461 这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:
大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。
常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。
5.2 可变长密钥块Blowfish加密技术
随着近些年互联网技术的广泛应用,如何在开放的传输环境下保护私人信息、如何在公共设施上保护个人隐私成了人们关心的问题。近些年科学家利用DES、RSA加密法发展起来了网上数字签证系统、WINDOWS NT和UNIX的密码系统。DES加密法还被用于文件加密系统。但这两种加密系统都或多或少的存在缺陷。DES加密法的速度很慢且64位的DES已不再安全。RSA加密法则更慢且大素数很难找。
BLOWFISH加密法是近些年(1994)发展起来的。它是可变长密钥块加密系统,适用于不经常更换密码的系统。在奔腾级和PowerPC等32位微机上其加密速度大大高于DES法。另外其安全性很高到现在还没有被破解。 算法描述:
BLOWFISH-64(以下简记为BLOWFISH)是可变长密钥64位块加密系统。算法可分为两部分(密钥扩展部分和数据加(解)密部分):
密钥扩展部分把密钥(最多位448位)转换为一些字密钥序列(共4168位)。
数据加(解)密部分包括16轮位操作,每一轮由密钥变换和数据变换组成。所有的操作都为32位与运算。每轮唯一的附加操作是四次数据查询。 (1)字密钥
26