前言:我们精心挑选了数篇优质加密技术论文文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。
一:数据加密方法
在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip,它既压缩数据又加密数据。又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。
幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86cpu系列就有一个指令‘xlat’在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表”就可以了。这种方法在计算机出现之前就已经被广泛的使用。
对这种“置换表”方式的一个改进就是使用2个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几次变换。通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比如,我们可以对所有的偶数位置的数据使用a表,对所有的奇数位置使用b表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。
与使用“置换表”相类似,“变换数据位置”也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer中,再在buffer中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序还原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient可以变为listen,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。
但是,还有一种更好的加密算法,只有计算机可以做,就是字/字节循环移位和xor操作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移),就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难!而且,更进一步的是,如果再使用xor操作,按位做异或操作,就就使破译密码更加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci数列。对数列所产生的数做模运算(例如模3),得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能!但是,使用fibbonaci数列这种伪随机的方式所产生的密码对我们的解密程序来讲是非常容易的。
在一些情况下,我们想能够知道数据是否已经被篡改了或被破坏了,这时就需要产生一些校验码,并且把这些校验码插入到数据流中。这样做对数据的防伪与程序本身都是有好处的。但是感染计算机程序的病毒才不会在意这些数据或程序是否加过密,是否有数字签名。所以,加密程序在每次load到内存要开始执行时,都要检查一下本身是否被病毒感染,对与需要加、解密的文件都要做这种检查!很自然,这样一种方法体制应该保密的,因为病毒程序的编写者将会利用这些来破坏别人的程序或数据。因此,在一些反病毒或杀病毒软件中一定要使用加密技术。
循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor操作来产生一个16位或32位的校验和,这使得丢失一位或两个位的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,例如xmodem-crc。这是方法已经成为标准,而且有详细的文档。但是,基于标准crc算法的一种修改算法对于发现加密数据块中的错误和文件是否被病毒感染是很有效的。
二.基于公钥的加密算法
一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都使用相同的密钥,非对称密钥算法就是加密解密使用不同的密钥。非常著名的pgp公钥加密以及rsa加密方法都是非对称加密算法。加密密钥,即公钥,与解密密钥,即私钥,是非常的不同的。从数学理论上讲,几乎没有真正不可逆的算法存在。例如,对于一个输入‘a’执行一个操作得到结果‘b’,那么我们可以基于‘b’,做一个相对应的操作,导出输入‘a’。在一些情况下,对于每一种操作,我们可以得到一个确定的值,或者该操作没有定义(比如,除数为0)。对于一个没有定义的操作来讲,基于加密算法,可以成功地防止把一个公钥变换成为私钥。因此,要想破译非对称加密算法,找到那个唯一的密钥,唯一的方法只能是反复的试验,而这需要大量的处理时间。
rsa加密算法使用了两个非常大的素数来产生公钥和私钥。即使从一个公钥中通过因数分解可以得到私钥,但这个运算所包含的计算量是非常巨大的,以至于在现实上是不可行的。加密算法本身也是很慢的,这使得使用rsa算法加密大量的数据变的有些不可行。这就使得一些现实中加密算法都基于rsa加密算法。pgp算法(以及大多数基于rsa算法的加密方法)使用公钥来加密一个对称加密算法的密钥,然后再利用一个快速的对称加密算法来加密数据。这个对称算法的密钥是随机产生的,是保密的,因此,得到这个密钥的唯一方法就是使用私钥来解密。
我们举一个例子:假定现在要加密一些数据使用密钥‘12345’。利用rsa公钥,使用rsa算法加密这个密钥‘12345’,并把它放在要加密的数据的前面(可能后面跟着一个分割符或文件长度,以区分数据和密钥),然后,使用对称加密算法加密正文,使用的密钥就是‘12345’。当对方收到时,解密程序找到加密过的密钥,并利用rsa私钥解密出来,然后再确定出数据的开始位置,利用密钥‘12345’来解密数据。这样就使得一个可靠的经过高效加密的数据安全地传输和解密。
一些简单的基于rsa算法的加密算法可在下面的站点找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一个崭新的多步加密算法
现在又出现了一种新的加密算法,据说是几乎不可能被破译的。这个算法在1998年6月1日才正式公布的。下面详细的介绍这个算法:
使用一系列的数字(比如说128位密钥),来产生一个可重复的但高度随机化的伪随机的数字的序列。一次使用256个表项,使用随机数序列来产生密码转表,如下所示:
把256个随机数放在一个距阵中,然后对他们进行排序,使用这样一种方式(我们要记住最初的位置)使用最初的位置来产生一个表,随意排序的表,表中的数字在0到255之间。如果不是很明白如何来做,就可以不管它。但是,下面也提供了一些原码(在下面)是我们明白是如何来做的。现在,产生了一个具体的256字节的表。让这个随机数产生器接着来产生这个表中的其余的数,以至于每个表是不同的。下一步,使用"shotguntechnique"技术来产生解码表。基本上说,如果a映射到b,那么b一定可以映射到a,所以b[a[n]]=n.(n是一个在0到255之间的数)。在一个循环中赋值,使用一个256字节的解码表它对应于我们刚才在上一步产生的256字节的加密表。
使用这个方法,已经可以产生这样的一个表,表的顺序是随机,所以产生这256个字节的随机数使用的是二次伪随机,使用了两个额外的16位的密码.现在,已经有了两张转换表,基本的加密解密是如下这样工作的。前一个字节密文是这个256字节的表的索引。或者,为了提高加密效果,可以使用多余8位的值,甚至使用校验和或者crc算法来产生索引字节。假定这个表是256*256的数组,将会是下面的样子:
crypto1=a[crypto0][value]
变量''''crypto1''''是加密后的数据,''''crypto0''''是前一个加密数据(或着是前面几个加密数据的一个函数值)。很自然的,第一个数据需要一个“种子”,这个“种子”是我们必须记住的。如果使用256*256的表,这样做将会增加密文的长度。或者,可以使用你产生出随机数序列所用的密码,也可能是它的crc校验和。顺便提及的是曾作过这样一个测试:使用16个字节来产生表的索引,以128位的密钥作为这16个字节的初始的"种子"。然后,在产生出这些随机数的表之后,就可以用来加密数据,速度达到每秒钟100k个字节。一定要保证在加密与解密时都使用加密的值作为表的索引,而且这两次一定要匹配。
加密时所产生的伪随机序列是很随意的,可以设计成想要的任何序列。没有关于这个随机序列的详细的信息,解密密文是不现实的。例如:一些ascii码的序列,如“eeeeeeee"可能被转化成一些随机的没有任何意义的乱码,每一个字节都依赖于其前一个字节的密文,而不是实际的值。对于任一个单个的字符的这种变换来说,隐藏了加密数据的有效的真正的长度。
如果确实不理解如何来产生一个随机数序列,就考虑fibbonacci数列,使用2个双字(64位)的数作为产生随机数的种子,再加上第三个双字来做xor操作。这个算法产生了一系列的随机数。算法如下:
unsignedlongdw1,dw2,dw3,dwmask;
inti1;
unsignedlongarandom[256];
dw1={seed#1};
dw2={seed#2};
dwmask={seed#3};
//thisgivesyou332-bit"seeds",or96bitstotal
for(i1=0;i1<256;i1++)
{
dw3=(dw1+dw2)^dwmask;
arandom[i1]=dw3;
dw1=dw2;
dw2=dw3;
}
如果想产生一系列的随机数字,比如说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:
int__cdeclmysortproc(void*p1,void*p2)
{
unsignedlong**pp1=(unsignedlong**)p1;
unsignedlong**pp2=(unsignedlong**)p2;
if(**pp1<**pp2)
return(-1);
elseif(**pp1>*pp2)
return(1);
return(0);
}
...
inti1;
unsignedlong*aprandom[256];
unsignedlongarandom[256];//samearrayasbefore,inthiscase
intaresult[256];//resultsgohere
for(i1=0;i1<256;i1++)
{
aprandom[i1]=arandom+i1;
}
//nowsortit
qsort(aprandom,256,sizeof(*aprandom),mysortproc);
//finalstep-offsetsforpointersareplacedintooutputarray
for(i1=0;i1<256;i1++)
{
aresult[i1]=(int)(aprandom[i1]-arandom);
}
...
变量''''aresult''''中的值应该是一个排过序的唯一的一系列的整数的数组,整数的值的范围均在0到255之间。这样一个数组是非常有用的,例如:对一个字节对字节的转换表,就可以很容易并且非常可靠的来产生一个短的密钥(经常作为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并没有构成一个加密算法,只是加密算法一个组成部分。
作为一个测试,开发了一个应用程序来测试上面所描述的加密算法。程序本身都经过了几次的优化和修改,来提高随机数的真正的随机性和防止会产生一些短的可重复的用于加密的随机数。用这个程序来加密一个文件,破解这个文件可能会需要非常巨大的时间以至于在现实上是不可能的。
四.结论:
由于在现实生活中,我们要确保一些敏感的数据只能被有相应权限的人看到,要确保信息在传输的过程中不会被篡改,截取,这就需要很多的安全系统大量的应用于政府、大公司以及个人系统。数据加密是肯定可以被破解的,但我们所想要的是一个特定时期的安全,也就是说,密文的破解应该是足够的困难,在现实上是不可能的,尤其是短时间内。
参考文献:
1.pgp!/
cyberknights(newlink)/cyberkt/
(oldlink:/~merlin/knights/)
2.cryptochamberjyu.fi/~paasivir/crypt/
3.sshcryptographa-z(includesinfoonsslandhttps)ssh.fi/tech/crypto/
4.funet''''cryptologyftp(yetanotherfinlandresource)ftp://ftp.funet.fi/pub/crypt/
agreatenigmaarticle,howthecodewasbrokenbypolishscientists
/nbrass/1enigma.htm
5.ftpsiteinukftp://sable.ox.ac.uk/pub/crypto/
6.australianftpsiteftp://ftp.psy.uq.oz.au/pub/
7.replayassociatesftparchiveftp://utopia.hacktic.nl/pub/replay/pub/crypto/
8.rsadatasecurity(whynotincludethemtoo!)/
计算机网络安全的威胁的形式多种多样,主要包括:①来源威胁。现在的计算机操作系统、网络系统几乎都是从国外引进的,具有一定的安全威胁。②环境威胁。我国关于网络治安的法律还不完善,网络技术本身也有很多不完善的地方。③病毒威胁。计算机病毒具有很强的破坏性,对计算机网络安全来说是一个很大的威胁。④网络人员威胁。网络管理员是离网络机密最近的人,他们的素质和人品对计算机网络安全有很大的影响。⑤设备故障威胁。设备故障通信就会中断,这对网络系统的安全也会产生很大的影响⑥传输渠道威胁。网络信息在传输过程中有被窃取、篡改、伪造的危险。计算机网络安全中主要存在三种隐患:①电子邮件隐患。电子邮件在我们的生活中应用非常广泛,但是,其中隐藏着非常大的隐患。网络黑客们很可能会通过发垃圾邮件的方式,使用户的邮箱爆满,影响用户邮箱的正常使用。②口令入侵隐患。口令入侵隐患是指网络黑客们通过非法途径入侵用户的口令,对用户的电脑实行攻击。③网址欺骗隐患。网络欺骗隐患是指网络黑客们通过篡改网页和网址的信息,使用户访问网站的时候出现网络安全漏洞,然后,网络黑客们就会利用这些网络安全漏洞对用户的电脑实行攻击。
2计算机网络安全技术的分析
2.1加密技术
加密技术是计算机网络安全技术的重要组成部分,一般分为对称加密技术、非对称加密技术和RSA算法三种。对称加密技术中信息的加密和解密使用的钥匙是相同的,一般称为“SessionKey”。只要在交换阶段不泄露自己的私有密匙,就可以保证计算机系统的机密性。但是,这种加密技术也存在着不足之处,交换双方共有使用一把私有密匙,所有的信息都是通过这把私有密匙传递的,不是很安全。在飞对称加密技术中,密匙分为公开密匙和私有密匙两个,公开密匙用来加密,私有密匙用来解密。公开密匙可以公布,私有密匙只有交换双方知道,安全性更有保证。RSA算法是Rivest、Shamir和Adleman提出出的第一个完整的公钥密码体制,至今为止,还没人找到一个有效的算法来分解两大素数之积,安全性有保障。
2.2防病毒技术
计算机病毒是网络系统中最大的攻击者,具有很强的传染性和破坏力。而且,一旦计算机病毒发动攻击,就会造成很大的影响。防病毒技术主要包括三种:预防技术、检测技术和消除技术。预防技术主要是指在利用一定的安全技术手段防御病毒破坏计算机系统,包括对未知病毒和已知病毒的预防,主要包括读写控制技术、系统监控技术、加密可执行程序等等。检测技术主要是指利用计算机安全技术检测计算机技术的一种技术,主要包括检测计算机病毒特征的检测技术和检测文件自身的技术两种计算机检测技术。消除技术主要是指通过分析计算机病毒,开发出消除计算机病毒并恢复原文件的一种技术。
2.3PKI技术
PKI技术是PublieKeyInfrastueture,即公钥基础设施的意思。PKI技术主要是指使用数字证书和公开密匙两种方式对网络系统安全进行双重保护,而且还会对数字证书持有者进行验证的一种技术。。PKI技术会提供认证、加密、完整、安全通信、特权管理、密钥管理等服务。PKI技术是计算机网络安全技术的核心,在电子商务中也得到广泛的应用。
2.4防火墙技术
防火墙主要是指设置在不懂网络安全区域之间的唯一出入口,防火墙本身具有很强的抗攻击能力,为计算机系统提供信息安全服务,抗御网络黑客们的入侵。防火墙的形式各种各样,但是,防火墙主要可以分为两大类:“包过滤型”和“应用型”。“包过滤型”是对数据包的包头源地址、目的地址、端口号和协议类型等进行过滤,通过的就转发到与之相对应的目的地,未通过的就丢弃“。应用型”是先对网络信息流进行阻断,然后利用专用的程序对网络信息流进行监视和控制。
2.5安全隔离技术
安全隔离技术主要是指将计算机网络中的有害攻击阻隔在可信的网络区域之外,在确信计算机网络可信区域内部的信息不泄露的情况下,进行计算机网络之间的信息交换的技术。安全隔离技术发展到现在,一共经历五个阶段:完全的隔离、硬件卡隔离、数据转播隔离、空气开关隔离、安全通道隔离。其中安全通道隔离是现代安全隔离技术发展的主要方向。
3结束语
首先是对称加密技术。对称加密技术是用相同的钥匙对信息进行加密和解锁,换言之就是一把钥匙开一把锁。这种加密方法使加密过程得到了简化,交换信息的双方不需要互相交换和研究专用的加密方法。在交换阶段一定要确保私有钥匙没有被泄漏,才可以保证报文的机密性和完整性。但是这种技术还是存在一些不足,如假设交换的一方对应的是多个交换对象,那么他就一定要维护多把钥匙。其次是非对称加密技术。密钥在非对称加密中被分解成私有密钥和公开密钥。这种技术当前被广泛的应用在了身份确认和数据签名等领域。
2网络安全技术发展呈现出的现状
2.1我国不具备自主研发的软件核心技术
数据库、操作系统以及CPU是网络安全核心其中最为主要的三个部分。现阶段,虽然大多数企业都已经在建设和维护网络安全方面消耗了大量的资金,但是,由于大部分的网络设备及软件都不是我国自主研发的,而是从国外进口的,这就导致我国的网络安全技术难以跟上时展的脚步,在处于这种竞争劣势下,就极易成为别国窃听和打击的对象。除此之外,国外一些杀毒系统和操作系统的开发商几乎已经在将中国的软件市场垄断。基于上述这些情况,我国一定要进一步加快研发软件核心技术的速度,根据我国发展的实际情况,将能够确保我国网络安全运营的软件技术有效地开发出来。
2.2安全技术不具备较高的防护能力
我国的各个企事业单位在现阶段都几乎已经建立起了专属网站,并且,电子商务也正处在快速发展的状态之中。但是,所应用的系统大部分都处在没有设防的状态中,所以很有可能会埋下各种各样的安全隐患。并且在进行网络假设的过程中,大多数企业没有及时采取各种技术防范措施来确保网络的安全。
2.3高素质的技术人才比较欠缺
由于互联网通信成本相对较低,因此,服务器和配置器的种类变得越来越多,功能也变得更加完善,性能也变得更好。但是,不管是人才数量方面或者是专业水平方面,其专业技术人员都难以对当今的网络安全需要形成更好的适应性。此外,网络管理人员不具备较强的安全管理导向能力,如,当计算机系统出现崩溃的情况时,网络管理人员难以及时有效地提出有效的解决对策。
3网络安全技术的发展趋势
3.1深度分析计算机网络安全内容
各种类型不同的网络安全威胁因素随着互联网络技术的不断发展而出现。相应地网络安全技术也一定要不断获得提升和发展。加强识别网络安全技术的方法主要包括以下几点:第一,要以安全防护的相关内容为出发点,加强分析网络安全技术深度防护的力度,主要是对网络安全行为的内容和网络安全防护的匹配这两个方面进行分析。基于特征库签名的深度报文的特征匹配是当前比较常用的一种安全防护分析方法,即根据报文的深度内容展开有针对性的分析,利用这种途径来获取网络安全攻击的特征,并利用特征库对匹配的网络攻击内容进行搜索,同时还要及时采取相应的防御措施。还有,基于安全防护的职能分析以及基于网络行为的模型学习也同样是一种较好的网络安全技术手段,即通过模拟具有特征性的网络行为以及分析网络行为的特征获取网络攻击行为的提前预警,这样就可以为保护计算机网络系统有力的条件。
3.2把网络安全产业链转变成生态环境
产业价值链在近几年时间里随着不断发展的计算机技术及行业也相应的发生了巨大的变化,它的价值链变得越来越复杂。此外,生态环境的变化速度已经在很大程度上超过了预期环境的变化速度,按照这种趋势发展下去,在未来网络技术发展的过程中,各个参与方一定要加强自身对市场要求的适应能力。
3.3网络安全技术将会朝着自动化和智能化的方向发展
我国现阶段的网络安全技术要得到优化需要经历一个长期的过程,它贯穿于网络发展的始终。此外,智能化的网络优化手段已经开始逐步取代人工化的网络优化手段。同时,还可以将网络优化知识库建立起来,进而针对一些存在于网络运行中的质量问题,将更多切实可行的解决措施提供给网络管理者。所以,国内网络安全技术在未来几年时间里会在IMS的基础上将固定的NGN技术研制出来。这项技术的成功研制能够给企事业的发展提供更丰富的业务支持。
3.4朝着网络大容量的方向发展
国内互联网的业务量在近几年时间里呈现出迅猛增长的态势,尤其是针对那些IP为主的数据业务而言,对交换机以及路由器的处理能力均提出了较高的要求。因为想要对语音、图像等业务需求形成更好的满足,因此,要求IP网络一定要具备较强的包转发和处理能力,那么,未来的网络在不出意外的情况下一定会朝着大容量的方向发展。国内网络在今后发展的过程中,一定要广泛应用硬件交换、分组转发引擎,促使网络系统的整体性能得到切实提升。
4结语