时间:2023-04-26 16:03:13
序论:在您撰写数据加密技术论文时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
一:数据加密方法
在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的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!)/
一:数据加密方法
在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的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!)/
一:数据加密方法
在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的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!)/
【关键词】数据库加密、加密算法、加密技术特性、加密字典、加解密引擎。
随着电子商务逐渐越来越多的应用,数据的安全问题越来越受到重视。一是企业本身需要对自己的关键数据进行有效的保护;二是企业从应用服务提供商(ApplicationServiceProvider,ASP)处获得应用支持和服务,在这种情况下,企业的业务数据存放在ASP处,其安全性无法得到有效的保障。因为传统的数据库保护方式是通过设定口令字和访问权限等方法实现的,数据库管理员可以不加限制地访问和更改数据库中的所有数据。解决这一问题的关键是要对数据本身加密,即使数据不幸泄露或丢失,也难以被人破译,关于这一点现基本数据库产品都支持对数据库中的所有数据加密存储。
-对数据进行加密,主要有三种方式:系统中加密、客户端(DBMS外层)加密、服务器端(DBMS内核层)加密。客户端加密的好处是不会加重数据库服务器的负载,并且可实现网上的传输加密,这种加密方式通常利用数据库外层工具实现。而服务器端的加密需要对数据库管理系统本身进行操作,属核心层加密,如果没有数据库开发商的配合,其实现难度相对较大。此外,对那些希望通过ASP获得服务的企业来说,只有在客户端实现加解密,才能保证其数据的安全可靠。
1.常用数据库加密技术
信息安全主要指三个方面。一是数据安全,二是系统安全,三是电子商务的安全。核心是数据库的安全,将数据库的数据加密就抓住了信息安全的核心问题。
对数据库中数据加密是为增强普通关系数据库管理系统的安全性,提供一个安全适用的数据库加密平台,对数据库存储的内容实施有效保护。它通过数据库存储加密等安全方法实现了数据库数据存储保密和完整性要求,使得数据库以密文方式存储并在密态方式下工作,确保了数据安全。
1.1数据库加密技术的功能和特性
经过近几年的研究,我国数据库加密技术已经比较成熟。
一般而言,一个行之有效的数据库加密技术主要有以下6个方面的功能和特性。
(1)身份认证:
用户除提供用户名、口令外,还必须按照系统安全要求提供其它相关安全凭证。如使用终端密钥。
(2)通信加密与完整性保护:
有关数据库的访问在网络传输中都被加密,通信一次一密的意义在于防重放、防篡改。
(3)数据库数据存储加密与完整性保护:
数据库系统采用数据项级存储加密,即数据库中不同的记录、每条记录的不同字段都采用不同的密钥加密,辅以校验措施来保证数据库数据存储的保密性和完整性,防止数据的非授权访问和修改。
(4)数据库加密设置:
系统中可以选择需要加密的数据库列,以便于用户选择那些敏感信息进行加密而不是全部数据都加密。只对用户的敏感数据加密可以提高数据库访问速度。这样有利于用户在效率与安全性之间进行自主选择。
(5)多级密钥管理模式:
主密钥和主密钥变量保存在安全区域,二级密钥受主密钥变量加密保护,数据加密的密钥存储或传输时利用二级密钥加密保护,使用时受主密钥保护。
(6)安全备份:
系统提供数据库明文备份功能和密钥备份功能。
1.2对数据库加密系统基本要求
(1)字段加密;
(2)密钥动态管理;
(3)合理处理数据;
(4)不影响合法用户的操作;
(5)防止非法拷贝;
1.3数据加密的算法
加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。
数据加密的基本过程包括对明文(即可读信息)进行翻译,译成密文或密码的代码形式。该过程的逆过程为解密,即将该编码信息转化为其原来的形式的过程。
DES算法,DES(DataEncryptionStandard)是由IBM公司在1970年以后发展起来的,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(AmericanNationalStandardInstitute,ANSI)承认,DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,DES算法中只用到64位密钥中的其中56位。
三重DES,DES的密码学缺点是密钥长度相对比较短,因此,人们又想出了一个解决其长度的方法,即采用三重DES,三重DES是DES的一种变形。这种方法使用两个独立的56位密钥对交换的信息(如EDI数据)进行3次加密,从而使其有效密钥长度达到112位或168位,对安全性有特殊要求时则要采用它。
RSA算法它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字就是发明者的名字:RonRivest,AdiShamir和LeonardAdleman,但RSA的安全性一直未能得到理论上的证明,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
AES是美国高级加密标准算法,将在未来几十年里代替DES在各个领域中得到广泛应用,尽管人们对AES还有不同的看法,但总体来说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍。AES算法主要包括三个方面:轮变化、圈数和密钥扩展。在理论上,此加密方法需要国家军事量级的破解设备运算10年以上时间才可能破译。
1.4数据库数据加密的实现
使用数据库安全保密中间件对数据库进行加密是最简便直接的方法。主要是通过系统中加密、DBMS内核层(服务器端)加密和DBMS外层(客户端)加密。
在系统中加密,在系统中无法辨认数据库文件中的数据关系,将数据先在内存中进行加密,然后文件系统把每次加密后的内存数据写入到数据库文件中去,读入时再逆方面进行解密就,这种加密方法相对简单,只要妥善管理密钥就可以了。缺点对数据库的读写都比较麻烦,每次都要进行加解密的工作,对程序的编写和读写数据库的速度都会有影响。
在DBMS内核层实现加密需要对数据库管理系统本身进行操作。这种加密是指数据在物理存取之前完成加解密工作。这种加密方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与数据库管理系统之间的无缝耦合。其缺点是加密运算在服务器端进行,加重了服务器的负载,而且DBMS和加密器之间的接口需要DBMS开发商的支持。
在DBMS外层实现加密的好处是不会加重数据库服务器的负载,并且可实现网上的传输,加密比较实际的做法是将数据库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对数据库数据的加解密处理。
采用这种加密方式进行加密,加解密运算可在客户端进行,它的优点是不会加重数据库服务器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。
数据库加密系统分成两个功能独立的主要部件:一个是加密字典管理程序,另一个是数据库加解密引擎。数据库加密系统将用户对数据库信息具体的加密要求以及基础信息保存在加密字典中,通过调用数据加解密引擎实现对数据库表的加密、解密及数据转换等功能。数据库信息的加解密处理是在后成的,对数据库服务器是透明的。
按以上方式实现的数据库加密系统具有很多优点:首先,系统对数据库的最终用户是完全透明的,管理员可以根据需要进行明文和密文的转换工作;其次,加密系统完全独立于数据库应用系统,无须改动数据库应用系统就能实现数据加密功能;第三,加解密处理在客户端进行,不会影响数据库服务器的效率。
数据库加解密引擎是数据库加密系统的核心部件,它位于应用程序与数据库服务器之间,负责在后成数据库信息的加解密处理,对应用开发人员和操作人员来说是透明的。数据加解密引擎没有操作界面,在需要时由操作系统自动加载并驻留在内存中,通过内部接口与加密字典管理程序和用户应用程序通讯。数据库加解密引擎由三大模块组成:加解密处理模块、用户接口模块和数据库接口模块。
2.结束语
上面的论述还远远没达到数据库安全需要,比如现在的数据库基本都给与网络架构,网际的安全传输等,也是要重点考虑的方面,等等。一个好的安全系统必须综合考虑核运用这些技术,以保证数据的安全,通过一上论述希望对大家有所帮助,同时也和大家一起讨论一起学习,共同进步。
参考文献:
[1]现代数据库管理(美)JeffreyA.Hoffer,MaryB.Prescott,FredR.McFadden著
1.1计算机系统存在漏洞
当前,大部分计算机的系统为Windows系统,只有少数计算机的系统为Linux系统。Windows系统受众面广,受网络攻击的可能性更大,再加上系统本身存在很多漏洞,严重影响了计算机数据信息的安全性。如果黑客攻击系统所存在的漏洞,就会导致病毒通过漏洞感染计算机。计算机操作系统建设所用的代码会涉及到汇编、反汇编等底层代码,并且所有代码的编写需要整个团队来完成,这样往往在代码编写过程中就会出现漏洞,需要用专门的补丁来修复。系统漏洞的存在给计算机的安全使用带来了极大的威胁,导致银行账号、密码,游戏账号、密码等泄露,从而对计算机使用者造成一定的损失。
1.2计算机病毒
计算机病毒具有感染性强、蔓延范围广、传播速度快等特点,是威胁计算机数据安全的重要因素。在病毒进入到计算机程序后,如果将带有病毒的数据文件应用于计算机网络传输或共享,那么其他计算机在浏览或打开此数据文件时也会被感染,出现连锁式病毒传播。另外,如果计算机病毒过多,会对计算机操作系统造成十分严重的影响,出现死机或者数据丢失等事故。
1.3非正常入侵
计算机网络具有开放性特点,在互联网背景下,很多不法分子利用系统本身存在的漏洞非法入侵用户计算机。非法入侵者一般采取窃听、监视等手段,获取计算机网络用户的口令、IP包和用户信息等,然后利用各种信息进入计算机局域网内,并采用冒充系统客户或者用合法用户的IP地址代替自己的IP地址等方式,篡改或窃取计算机网络内的数据信息。
2数据加密技术的应用
2.1密钥保护
密钥保护是数据加密中一种常用的加密技术。改变密钥的表达方式,可提高密文书写的多变性,体现多层次的加密方式。密钥保护可分为公钥保护和私钥保护两种方式。通常这两种方式相互配合,对提高计算机数据信息的安全性具有重要意义。私钥保护具有一定的局限性,在使用时必须借助公钥保护来完成整个保护动作。密钥保护的原理是:当计算机进行数据传输时,选用公钥对需要传输的信息进行加密,在用户接收数据后,需要通过私钥来完成解密动作,以此来确保传输数据的安全性,避免攻击者非法窃取传输过程中的数据。当前,秘钥保护方式一般用于管理系统和金融系统中,可以完成对私人信息、用户登录和访问过程等方面的保护。
2.2USBkey保护
USBkey是数据加密技术的典型代表,一般用于银行交易系统中,保证网络交易环境的安全性。USBkey服务于客户端到银行系统,对每项数据信息的传输都需要加密处理,避免数据在传输过程中受到恶意攻击。就现状来看,银行系统通过计算机网络来完成工作的概率逐渐上升。USBkey可以保护银行系统能够在相对安全的环境中完成交易。在用户利用计算机网络进行银行交易时,USBkey中的加密技术会自动匹配用户信息,即便用户行为被跟踪,攻击者也无法破译USBkey中的加密技术,通过加强用户登录身份的验证,保证用户财务安全。
2.3数字签名保护
数字签名保护是比较常用的一种数据加密技术,具有很好的保护效果。数字签名保护的原理是利用加密、解密过程,识别用户身份,从而保证数据信息的安全性。数字签名保护也分为公钥保护和私钥保护两种,如果只使用其中的一种保护方式,会在本质上降低安全保护的效果。因此,通常情况下,常在私钥签名处外加一层公钥保护,提高数字签名保护的效果。
3结束语
计算机网络安全主要包括资源共享、组网硬件、网络服务以及网络软件等方面的内容,因此计算机网络安全涉及到计算机网络的所有内容。以计算机网络特征为依据,对计算机网络软件、数据资源、硬件以及操作系统进行有效的保护,能够有效防止计算机相关数据遭到泄露、破坏及更改,保证计算机网络运行的安全性及可靠性。在实际运用过程中,计算机网络安全还存在诸多隐患,而人为因素则是计算机网络安全的最大隐患。一般情况下,计算机网络安全隐患主要包括:首先,网络漏洞。其在计算机操作系统中较为常见,由于操作系统会有许多用户同时进行系统运行及信息传输,因而在信息传输过程中出现安全隐患的几率就进一步增加。其次,病毒。计算机的病毒主要分为文件病毒以及网络病毒、引导型的病毒等。文件病毒主要是感染相关计算机中存有的各个文件。网络病毒通常是利用计算机来感染、传播计算机网络的可执行性文件。引导型的病毒主要是感染计算机系统的启动扇区及引导扇区。再次,非法入侵。非法入侵是威胁计算机网络安全的主要人为因素。由于社会竞争越来越激烈,许多人会通过计算机来非法获取他人信息来达到自己的目的,因而非法入侵也就成为计算机网络安全的重要危险因素。此外,黑客破坏、网络及系统不稳定也是威胁计算机网络安全的重要因素,因而采取有效方法来保障计算机网络安全,以提高信息数据的安全性就势在必行。
2计算机网络安全中数据加密技术的有效应用
当前,数据加密技术是一项确保计算机网络安全的应用最广泛的技术,且随着社会及科技的发展而不断发展。数据加密技术的广泛应用为计算机网络安全提供良好的环境,同时较好的保护了人们运用互联网的安全。密钥及其算法是数据加密技术的两个主要元素。密钥是一种对计算机数据进行有效编码、解码的算法。在计算机网络安全的保密过程中,可通过科学、适当的管理机制以及密钥技术来提高信息数据传输的可靠性及安全性。算法就是把普通信息和密钥进行有机结合,从而产生其他人难以理解的一种密文步骤。要提高数据加密技术的实用性及安全性,就要对这两个因素给予高度重视。
2.1链路数据加密技术在计算机网络安全中的应用
一般情况下,多区段计算机计算机采用的就是链路数据加密技术,其能够对信息、数据的相关传输路线进行有效划分,并以传输路径以及传输区域的不同对数据信息进行针对性的加密。数据在各个路段传输的过程中会受到不同方式的加密,所以数据接收者在接收数据时,接收到的信息数据都是密文形式的,在这种情况下,即便数据传输过程被病毒所获取,数据具有的模糊性也能对数据信息起到的一定程度的保护作用。此外,链路数据加密技术还能够对传送中的信息数据实行相应的数据信息填充,使得数据在不同区段传输的时候会存在较大的差异,从而扰乱窃取者数据判断的能力,最终达到保证数据安全的目的。
2.2端端数据加密技术在计算机网络安全中的应用
相比链路数据加密技术,端端数据加密技术实现的过程相对来说较为容易。端端数据加密技术主要是借助密文形式完成信息数据的传输,所以数据信息传输途中不需要进行信息数据的加密、解密,这就较好的保障了信息安全,并且该种技术无需大量的维护投入及运行投入,由于端端数据加密技术的数据包传输的路线是独立的,因而即使某个数据包出现错误,也不会干扰到其它数据包,这一定程度上保证了数据传输的有效性及完整性。此外,在应用端端数据加密技术传输数据的过程中,会撤销原有信息数据接收者位置的解密权,除了信息数据的原有接收者,其他接收者都不能解密这些数据信息,这极大的减少了第三方接收数据信息的几率,大大提高了数据的安全性。
2.3数字签名信息认证技术在计算机网络安全中的有效应用
随着计算机相关技术的快速发展,数字签名信息认证技术在提高计算机网络安全中的重要作用日渐突出。数字签名信息认证技术是保障网络安全的主要技术之一,主要是通过对用户的身份信息给予有效的确认与鉴别,从而较好的保证用户信息的安全。目前,数字签名信息认证的方式主要有数字认证以及口令认证两种。数字认证是在加密信息的基础上完成数据信息密钥计算方法的有效核实,进一步增强了数据信息的有效性、安全性。相较于数字认证而言,口令认证的认证操作更为快捷、简便,使用费用也相对较低,因而使用范围更广。
2.4节点数据加密技术在计算机网络安全中的有效应用
节点数据加密技术和链路数据加密技术具有许多相似之处,都是采取加密数据传送线路的方法来进行信息安全的保护。不同之处则是节点数据加密技术在传输数据信息前就对信息进行加密,在信息传输过程中,数据信息不以明文形式呈现,且加密后的各项数据信息在进入传送区段之后很难被其他人识别出来,以此来达到保护信息安全的目的。但是实际上,节点数据加密技术也存在一定弊端,由于其要求信息发送者和接收方都必须应用明文形式来进行信息加密,因而在此过程中,相关信息一旦遭到外界干扰,就会降低信息安全。
2.5密码密钥数据技术在计算机网络安全中的有效应用
保护数据信息的安全是应用数据加密技术的最终目的,数据加密是保护数据信息安全的主动性防治措施。密钥一般有私用密钥及公用密钥两种类型。私用密钥即信息传送双方已经事先达成了密钥共识,并应用相同密钥实现信息加密、解密,以此来提高信息的安全性。而公用密钥的安全性则比较高,其在发送文件发送前就已经对文件进行加密,能有效避免信息的泄露,同时公用密钥还能够与私用密钥互补,对私用密钥存在的缺陷进行弥补。
3数据加密技术应用在计算机网络安全中的有效对策
网络通信有一定的风险性,对数据加密技术的需求比较大,结合网络通信的实践应用,通过例举网络通信中的风险表现,分析其对数据加密技术的需求。网络通信的安全风险有:①网络通信的过程中,面临着攻击者的监听、窃取破坏,很容易丢失传输中的数据信息;②攻击者随意更改网络通信中的信息,冒充管理者截取传输信息,导致网络通信的数据丢失;③网络通信中的数据信息被恶意复制,引起了系统瘫痪、信息不准确的问题。由此可见:网络通信中,必须强化数据加密技术的应用,采取数据加密技术,保护网络通信的整个过程,预防攻击行为,提高网络通信的安全水平,避免出现恶意攻击的现象,保障网络通信的安全性和积极性,表明数据加密技术的重要性,进而完善网络通信的环境。
2数据加密技术在网络通信中的应用
数据加密技术提升了网络通信的安全性,规范了网络通信的运营环境,规避了潜在的风险因素。网络通信中的数据加密,主要分为方法和技术两部分,对其做如下分析:
2.1网络通信中的数据加密方法
2.1.1对称加密
对称加密方法在网络通信中比较常用,利用相同的密钥,完成通信数据加密到解密的过程,降低了数据加密的难度。对称加密中,比较有代表性的方法是DES加密,属于标准对称加密的方法。例如:DES在网络通信中的应用,使用了固定的加密框架,DES通过密钥,迭代子密钥,将56bit密钥分解成16组48bit,迭代的过程中进行加密,而解密的过程与加密流程相似,使用的密钥也完全相同,加密与解密密钥的使用正好相反,根据网络通信的数据类型,完成对称加密。
2.1.2非对称加密
非对称加密方法的难度稍高,加密与解密的过程,采用了不同的密钥,以公钥、私钥的方式,对网络通信实行非对称加密。公钥和私钥配对后,才能打开非对称加密的网络通信数据,其私钥由网络通信的管理者保管,不能公开使用。非对称加密方法在网络通信中的应用,解密时仅需要管理者主动输入密钥的数据即可,操作方法非常简单,而且具有较高的安全水平,提高了加密解密的时间效率。
2.2网络通信中的数据加密技术
2.2.1链路加密
网络通信中的链路加密,实际是一种在线加密技术,按照网络通信的链路分配,提供可行的加密方法。网络通信的数据信息在传输前,已经进入了加密的状态,链路节点先进行解密,在下一链路环境中,重新进入加密状态,整个网络通信链路传输的过程中,都是按照先解密在加密的方式进行,链路上的数据信息,均处于密文保护状态,隐藏了数据信息的各项属性,避免数据信息被攻击窃取。
2.2.2节点加密
节点加密技术确保了网络通信节点位置数据信息的安全性,通过节点处的数据信息,都不会是明文形式,均表现为密文,促使节点加密成为具有安全保护功能的模块,安全的连接了网络通信中的信息。加点加密技术在网络通信中的应用,依赖于密码装置,用于完成节点信息的加密、解密,但是此类应用也存在一个明显的缺陷,即:报头、路由信息为明文方式,由此增加了节点加密的难度,很容易为攻击者提供窃取条件,是节点加密技术应用中需要重点考虑的问题。
2.2.3端到端加密
网络通信的端到端加密,是指出发点到接收点,整个过程不能出现明文状态的数据信息。端到端加密的过程中,不会出现解密行为,数据信息进入到接收点后,接收人借助密钥加密信息,提高网络通信的安全性,即使网络通信的节点发生安全破坏,也不会造成数据信息的攻击丢失,起到优质的加密作用。端到端加密时,应该做好出发点、接收点位置的网络通信加密,以便确保整个网络通信过程的安全性。
3结束语