网络数据加密的网络数据加密

作者&投稿:天炊 (若有异议请与网页底部的电邮联系)
网络数据加密毕业论文~

数据加密技术

-------------------------------------------------------------------------------



我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。在竞争激烈的大公司中,工业间谍经常会获取对方的情报。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。数据加密与解密从宏观上讲是非常简单的,很容易理解。加密与解密的一些方法是非常直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。




一:数据加密方法

在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip,它既压缩数据又加密数据。又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。



幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86 cpu系列就有一个指令‘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字节的表。让这个随机数产生器接着来产生这个表中的其余的数,以至于每个表是不同的。下一步,使用"shotgun technique"技术来产生解码表。基本上说,如果 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操作。 这个算法产生了一系列的随机数。算法如下:



unsigned long dw1, dw2, dw3, dwmask;

int i1;

unsigned long arandom[256];



dw1 = {seed #1};

dw2 = {seed #2};

dwmask = {seed #3};

// this gives you 3 32-bit "seeds", or 96 bits total

for(i1=0; i1 < 256; i1++)

{

dw3 = (dw1 + dw2) ^ dwmask;

arandom[i1] = dw3;

dw1 = dw2;

dw2 = dw3;

}



如果想产生一系列的随机数字,比如说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:



int __cdecl mysortproc(void *p1, void *p2)

{

unsigned long **pp1 = (unsigned long **)p1;

unsigned long **pp2 = (unsigned long **)p2;

if(**pp1 < **pp2)

return(-1);

else if(**pp1 > *pp2)

return(1);

return(0);

}



...

int i1;

unsigned long *aprandom[256];

unsigned long arandom[256]; // same array as before, in this case

int aresult[256]; // results go here



for(i1=0; i1 < 256; i1++)

{

aprandom[i1] = arandom + i1;

}



// now sort it

qsort(aprandom, 256, sizeof(*aprandom), mysortproc);



// final step - offsets for pointers are placed into output array

for(i1=0; i1 < 256; i1++)

{

aresult[i1] = (int)(aprandom[i1] - arandom);

}

...



变量'aresult'中的值应该是一个排过序的唯一的一系列的整数的数组,整数的值的范围均在0到255之间。这样一个数组是非常有用的,例如:对一个字节对字节的转换表,就可以很容易并且非常可靠的来产生一个短的密钥(经常作为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并没有构成一个加密算法,只是加密算法一个组成部分。



作为一个测试,开发了一个应用程序来测试上面所描述的加密算法。程序本身都经过了几次的优化和修改,来提高随机数的真正的随机性和防止会产生一些短的可重复的用于加密的随机数。用这个程序来加密一个文件,破解这个文件可能会需要非常巨大的时间以至于在现实上是不可能的。



四.结论:

由于在现实生活中,我们要确保一些敏感的数据只能被有相应权限的人看到,要确保信息在传输的过程中不会被篡改,截取,这就需要很多的安全系统大量的应用于政府、大公司以及个人系统。数据加密是肯定可以被破解的,但我们所想要的是一个特定时期的安全,也就是说,密文的破解应该是足够的困难,在现实上是不可能的,尤其是短时间内。







参考文献:



1 . pgp! http://www.pgpi.com/

cyber knights(new link) http://members.tripod.com/cyberkt/

(old link: http://netnet.net/~merlin/knights/ )

2 . crypto chamber http://www.jyu.fi/~paasivir/crypt/



3 . ssh cryptograph a-z (includes info on ssl and https) http://www.ssh.fi/tech/crypto/



4 . funet' cryptology ftp (yet another finland resource) ftp://ftp.funet.fi/pub/crypt/

a great enigma article, how the code was broken by polish scientists

http://members.aol.com/nbrass/1enigma.htm



5 . ftp site in uk ftp://sable.ox.ac.uk/pub/crypto/



6 . australian ftp site ftp://ftp.psy.uq.oz.au/pub/



7 . replay associates ftp archive ftp://utopia.hacktic.nl/pub/replay/pub/crypto/



8 . rsa data security (why not include them too!) http://www.rsa.com/

netscape's whitepaper on ssl

进入宽带路由器,里面都有相应的数据加密方法和入网密码。看看说明书或上相对应的网站下载电子说明书就可以办到。而且可以在路由器里看到有多少电脑和相应的ip地址链接了你的路由器。

在常规密码中,收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。比较著名的常规密码算法有:美国的DES及其各种变形,比如Triple DES、GDES、New DES和DES的前身Lucifer;欧洲的IDEA;日本的FEAL?N、LOKI?91、Skipjack、RC4、RC5以及以代换密码和转轮密码为代表的古典密码等。在众多的常规密码中影响最大的是DES密码。
常规密码的优点是有很强的保密强度,且经受住时间的检验和攻击,但其密钥必须通过安全的途径传送。因此,其密钥管理成为系统安全的重要因素。
在公钥密码中,收信方和发信方使用的密钥互不相同,而且几乎不可能从加密密钥推导解密密钥。比较著名的公钥密码算法有:RSA、背包密码、McEliece密码、Diffe?Hellman、Rabin、Ong?Fiat?Shamir、零知识证明的算法、椭圆曲线、EIGamal算法等等。最有影响的公钥密码算法是RSA,它能抵抗到目前为止已知的所有密码攻击。
公钥密码的优点是可以适应网络的开放性要求,且密钥管理问题也较为简单,尤其可方便的实现数字签名和验证。但其算法复杂,加密数据的速率较低。尽管如此,随着现代电子技术和密码技术的发展,公钥密码算法将是一种很有前途的网络安全加密体制。
当然在实际应用中人们通常将常规密码和公钥密码结合在一起使用,比如:利用DES或者IDEA来加密信息,而采用RSA来传递会话密钥。如果按照每次加密所处理的比特来分类,可以将加密算法分为序列密码和分组密码。前者每次只加密一个比特而后者则先将信息序列分组,每次处理一个组。
密码技术是网络安全最有效的技术之一。一个加密网络,不但可以防止非授权用户的搭线窃听和入网,而且也是对付恶意软件的有效方法之一。
一般的数据加密可以在通信的三个层次来实现链路加密、节点加密和端到端加密。




手机网络安全常识教育
计算机病毒防治,数据加密等。 3、信息传播安全 网络上信息传播安全,即信息传播后果的安全,包括信息过滤等。它侧重于防止和控制由非法、有害的信息进行传播所产生的后果,避免公用网络上大云自由传翰的信息失控。 4、信息内容安全 网络上信息内容的安全。它侧重于保护信息的保密性、真实性和完整性。避免攻击者利用系统...

ssl协议的基本概念
ssl协议的基本概念如下:1、SSL(Secure Sockets Layer 安全套接层)协议,及其继任者TLS(Transport Layer Security传输层安全)协议,是为网络通信提供安全及数据完整性的一种安全协议。2、TLS与SSL在传输层对网络连接进行加密,用于保障网络数据传输安全,利用数据加密技术,确保数据在网络传输过程中不会被...

现在的网络环境存在怎样的安全问题
主要涉及到信息传输的安全、信息存储的安全以及对网络传输信息内容的审计三方面,具体包括数据加密、数据完整性鉴别、防抵赖、信息存储安全、数据库安全、终端安全、信息的防泄密、信息内容审计、用户授权。面对网络安全的脆弱性,除了在网络设计上增加安全服务功能,完善系统的安全保密措施外,还必须花大力气加强网络的安全...

SSL提供什么安全服务?
SSL证书提供了以下安全服务:1.数据加密:SSL证书通过加密用户和服务器之间的通信,将传输的数据转换成不可读的密文。这样,即使黑客截获了加密的数据,也无法解读其中的内容。通过SSL证书提供的数据加密服务,可以确保用户的个人信息和交易数据在传输过程中的保密性。2.身份验证:SSL证书还提供了对服务器身份...

面向网络服务的加密技术通常工作在哪里
网络层或传输层。面向网络服务的加密技术通常工作在网络层或传输层,使用经过加密的数据包传送,认证网络路由及其其他网络协议所需的信息,从而保证网络的连通性和可用性不受侵害。在网络层上实现的加密技术对于网络应用层的用户通常是透明的。

vpn是什么意思啊?
VPN技术可以用不安全的网络来发送可靠、安全的消息,可通过服务器、硬件、软件等多种方式实现。 【简介】 VPN全名虚拟专用网络,它是通过在公用网络的基础上加密建立起来的专用私有网络(内网)。vpn在企业和公司应用很广。VPN的远程访问主要通过网关对数据包进行加密和通过数据转换来实现的,并且vpn的分类也有很多种,但大...

网络安全防范知识
11、使用加密连接:不要随意打开未知来源的链接,特别是电子邮件中的链接,因为它们可能是欺诈性的或包含恶意软件,使用 HTTPS 加密连接,在网络传输过程中保护数据不被窃听。 12、注意公共Wi-Fi网络:在使用公共Wi-Fi网络时,避免使用敏感账户或进行敏感操作,因为这些网络可能不够安全,使您的账户信息容易被盗。 13、保护个...

电脑怎样通过互联网传输数据
网络中数据传输过程 我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢? 我们知道现在的互联网中使用的TCP\/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为 应用层 表示层 会话层 传输层 网络层 数据链路层和物理层。其中数据链路层...

如何提升医院计算机网络安全
在医院计算机网络中应用数据加密技术,防止非法入侵者篡改和查看医院计算机网络中的重要信息和文件,主动抵御医院计算机网络可能存在的安全隐患,提高医院计算机网络的安全性。数据加密技术可以将医院计算机网络中的数据信息进行置换或者移位变换,由网络密钥来控制数据信息的解密。通常情况下,数据加密技术拥有公开密钥和私用密钥两种...

浏览器防火墙怎么关
防火墙可以检测和阻止传输包含病毒和恶意软件的数据包,保护网络免受病毒和其他恶意软件的攻击。4. 监控网络 防火墙可以监控网络流量,记录网络活动,从而及时发现和防止网络攻击。5. 加密网络数据 防火墙可以对网络数据进行加密,保护网络数据的机密性和完整性,防止数据被窃取或篡改。综上所述,防火墙的作用...

襄樊市19410635502: 从通信网络的传输方面,数据加密技术可分为哪三类?
英蔡麝香: (1)链路加密方式:一般网络通信安全主要采用的方式; (2)结点到结点方式:为了解决在结点中数据是明文的缺点,在中间结点里装有加、解密的保护装置,由这个装置来完成一个密钥向另一个密钥的变换; (3)端到端方式:由发送方加密的数据在没有到达最终目的结点之前是不被解密的,力口、解密是在源、宿结点进行.

襄樊市19410635502: 当前比较好的网络版数据加密软件有哪些? -
英蔡麝香: 数据加密软件有很多,不建议使用网络版的,你需要注意的三点在于:1:当下的加密技术基本都不成熟(IT技术发展,加密技术也需要适时跟进).2:加密技术本省可能就会对文件有破坏(比亚迪和大族激光是前车之鉴).3:你需要关注的是风险(数据损坏的不可修复性),这才是重中之重,假如说那家吹嘘自己的技术多么牛逼,而不是一个务实的态度来做这件事情,还是别碰这样的公司.

襄樊市19410635502: 网络常识中什么是数据加密技术?
英蔡麝香: 数据加密技术:数据加密技术其实质是对信息进行重新编码,从而达到隐藏信息内容,使非法用户无法获取真实信息的一种技术手段,确保数据的保密性.

襄樊市19410635502: 有哪些无线网络加密技术?有哪些无线网络加密技术?
英蔡麝香: 无线网络加密技术是我们了解无线网络的一个要点.那么都有哪些技术呢?这些技术的特点和区别都有哪些呢?下面就让我们来详细看看具体的内容吧.希望对大家有所帮...

襄樊市19410635502: 网络现代加密技术分几种 -
英蔡麝香: 1 数据加密原理1.1数据加密 在计算机上实现的数据加密,其加密或解密变换是由密钥控制实现的.密钥(Keyword)是用户按照一种密码体制随机选取,它通常是一随机字符串,是控制明文和密文变换的唯一参数. 例:明文为字符串: AS...

襄樊市19410635502: 哪们高手说下wi - fi网络安全加密技术??,小问一下
英蔡麝香: WLAN的数据加密技术 WEP有线等效保密:是1个为了保证数据能安全地通过无线网络传输而制定的加密标准,用了共享秘钥RC4加密算法,仅有在用户的加密密钥与AP...

襄樊市19410635502: 怎么给无线网络加密 -
英蔡麝香: 你肯定不会设计一个没有防火墙的互联网接入的网络.因此,你怎么会架设一个没有加密的无线网络?理解无线加密对于部署一个安全的无线网络是非常重要的. 无线传输的安全类似于一个书面信息.有各种各样的方法来发送一个书面信息....

襄樊市19410635502: 网络中有什么地方需要用到数据加密技术 -
英蔡麝香: 数据加密技术所谓数据加密(Data Encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(Decryption key...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网