相关热词搜索:
数据加密技术论文
数据加密技术论文 数据加密技术论文篇一 数据加密技术 我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心 的人所看到或者破坏。在信息时代,信息可以帮助团体或个人,使他们受益,同 样,信息也可以用来对他们构成威胁,造成破坏。在竞争激烈的大公司中,工业 间谍经常会获取对方的情报。因此,在客观上就需要一种强有力的安全措施来保 护机密数据不被窃取或篡改。数据加密与解密从宏观上讲是非常简单的,很容易 理解。加密与解密的一些方法是非常直接的,很容易掌握,可以很方便的对机密 数据进行加密和解密。一:数据加密方法 在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软 件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的 (当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。
最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例 如,大家都知道的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算法的加密算法可在下面的站点找到:三.一个崭新的多步加密算法 现在又出现了一种新的加密算法,据说是几乎不可能被破译的。这个 算法在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之间。这样一个数组是非常有用的,例如:对一个字 节对字节的转换表,就可以很容易并且非常可靠的来产生一个短的密钥(经常作 为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机 的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并 没有构成一个加密算法,只是加密算法一个组成部分。
作为一个测试,开发了一个应用程序来测试上面所描述的加密算法。
程序本身都经过了几次的优化和修改,来提高随机数的真正的随机性和防止会产 生一些短的可重复的用于加密的随机数。用这个程序来加密一个文件,破解这个 文件可能会需要非常巨大的时间以至于在现实上是不可能的。
四.结论:
由于在现实生活中,我们要确保一些敏感的数据只能被有相应权限的 人看到,要确保信息在传输的过程中不会被篡改,截取,这就需要很多的安全系 统大量的应用于政府、大公司以及个人系统。数据加密是肯定可以被破解的,但 我们所想要的是一个特定时期的安全,也就是说,密文的破解应该是足够的困难, 在现实上是不可能的,尤其是短时间内。
数据加密技术论文篇二 数据库加密技术研究 摘要:文章结合笔者多年工作的实践经验,就数据库加密层次的选择、 加密算法的选择以及数据库加密与外部系统之间的关系进行了分析与阐述。
关键词:数据库加密;加密算法;加密粒度 随着计算机在社会各个领域的广泛应用,人们对信息系统的依赖程度 越来越高,数据库在计算机和软件开发领域的作用是至关重要。数据库系统负担 着客户端对数据信息的访问控制和存储管理的任务,数据库中的数据(包括一些 机密数据)一般以明文的形式保存。关键数据以明文的形式在数据库中存储使数 据库的安全性降低,通过对数据库中关键字段的加密可以提高其安全性。一、加密层次的选择 可以考虑在3个不同层次实现对数据库数据的加密,这3个层次分别是 OS、DBMS内核层和DBMS外层。
第一,从操作系统的角度来看OS层位于DBMS层之下,所以无法辨认 数据库文件中的数据关系,也就无法合理地产生、管理和使用密钥。因此,在 OS层对数据库文件进行加密,对于大型数据库来说,目前还难以实现。
第二,DBMS内核层加密是指数据在物理存取之前完成加解密工作。
这种方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能;缺点是 在服务器端进行加解密运算,加重了数据库服务器的负载,并且因为加解密是在 DBMS内核中完成,就势必需要数据库供应商对其进行技术支持,这一点不容易 实现。
第三,DBMS外层实现加密的优点是可扩充性强,数据库的加解密系 统可以做成一个独立于DBMS的平台,不需要数据库供应商进行技术支持,并且 可以将加密密文直接在网上传输;缺点是数据库的功能和查询效率会受一些限制。
根据以上理论得出,应用程序的数据通过数据库加密接口转换成相应 的密文保存在数据源中;当应用程序需要调用数据源时,通过数据解密模块将相 应的密文转换成原本的数据。这样,即使其他非法用户窃取数据库文件他们也只 能得到密文无法得到有意义的明文,从而提高数据库的安全性。
数据库加密系统分成两个功能独立的主要部件:一个是加密字典管理 程序,另一个是数据库加解密引擎。按以上方式实现的数据库加密系统具有很多 优点:首先,系统对数据库的最终用户是完全透明的,管理员可以根据需要进行 明文和密文的转换工作;其次,加密系统完全独立于数据库应用系统,无须改动 数据库应用系统就能实现数据加密功能;再次,加解密处理在客户端进行,不会 影响数据库服务器的效率。
二、加密算法 数据库加密技术的安全很大程度上取决于加密算法的强度,加密算法 直接影响到数据库加密的安全和性能。因此,加密算法的选择在数据库加密方案 中也显得举足轻重。选择算法主要指标是安全和便于使用。安全的算法是可靠的算法。一个算法要可靠应该至少满足这样一些条 件:首先,核心加密必须公认可靠,如DES和RSA算法,他们经过二十多年的考 验、鉴定,数人攻击而无人承认攻破;加密算法复杂度,主要是解密算法的复杂 性要强,事实证明,仅靠对算法保密是不安全的,因为软件加密可以通过反汇编 可执行程序来发现;另外加密算法必须支持足够长的密钥,加密算法的实现必须 可靠,这样才能具有较强的抗分析破译能力。
三、数据库加密与操作系统的关系 数据库管理系统是建立在操作系统的平台上,数据库管理系统的安全 离不开操作系统的安全,没有操作系统的安全,就不能真正解决数据库的安全。
作为加强数据库安全技术之一,数据库加密,必须依赖操作系统自身的安全。如 数据以加密形式存储于数据库中,一旦访问这些加密数据,往往需要把它们调入 内存并解密。这时,如果内存的安全得不到保障,那么这些数据就可能被攻击者 窃取,即使再好的加密方法也是无效的。而内存的安全问题通常由操作系统解决。
典型的,操作系统提供的安全机制有:
第一,访问控制机制。操作系统提供了访问控制机制,用来标识、鉴 别、审核用户,只有通过认证的用户才能根据授权访问特定的数据。但是,操作 系统中的对象一般是文件系统,粒度较粗。而数据库需要处理更为精细粒度的数 据,如记录、字段值,所以,数据库管理系统也提供了访问控制机制,以便更好 控制数据库中数据的访问。数据库加密和数据库访问控制室两种不同的安全措施, 二者不可互相替换。
数据库加密以牺牲性能为代价,并且不能提供灵活的访问控制。因此, 数据库中的数据加密后,一方面应该对特权用户(DBA,SA)的访问进行限制,使 只有经过授权的用户才能访问密文数据,为数据增加进一步的保护;另一方面也 不能单纯为了安全性而通过分配密钥控制数据库的访问,因为这样极大地牺牲了 系统性能,破坏了安全性和可用性的平衡,并且失去了灵活的控制策略。
加密技术和访问控制技术是两种不同的安全措施,可以这么说,如果 访问控制是保护数据库的第一道防线,那么加密技术就是进一步保护数据库的第 二道防线,有了加密技术的保护,数据库更加安全。二者的结合,可以对数据库 数据进行深度的保护。第二,内存保护。在多道程序运行的系统中,需要对缓冲区中的各用 户(私人)空间采取隔离措施,使之不要互相干扰。用户进程一旦退出,应当及时 清空用户数据。
第三,提供最小特权管理。操作系统提供了最小特权管理,不给用户 超过执行任务所需要特权以外的特权,使特权用户(如系统管理员)只具有完成其 任务所需要的特权,尽量减少误操作、恶意操作、特权用户口令丢失所引起的损 失。
第四,监控机制。提供审计、隐蔽通道分析、病毒防护等措施。当然, 仅仅依靠目前操作系统的安全措施,还不能够完全保证数据库的安全。对于数据 库,操作系统的安全措施是防御攻击者攻击数据库的一道基本屏障,而加密措施 则是加固数据库安全的又一道防线,两者结合起来,能够更加有效地增强数据库 的安全。
总之,数据库加密技术是提高数据库安全的一个重要手段,但加密数 据并提高安全性的同时也带来了其他问题,频繁的加密和解密使得数据库的性能 降低用户体验降低,故此还需进一步做研究,进一步提高数据库加密技术的各项 性能。
(作者单位:浙江省气象信息网络中心) 看了“数据加密技术论文”的人还看:
1.详解加密技术概念加密方法以及应用论文 2.计算机网络安全方面的论文 3.网络安全技术论文三篇 4.安全防范技术论文 5.计算机安全与保密论文