现代社会,是一个高速发展的信息社会。在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。在竞争激烈的大公司中,工业间谍经常会获取对方的情报。形形色色的信息,形形色色的人物,形形色色的盗窃方法。我们经常需要一种措施来保护我们的数据,防止被一些信息被人看见或者破坏。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。数据加密与解密从宏观上讲是非常简单的,很容易理解。加密与解密的一些方法是非常直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。
信息作为一种资源,它的普遍性、共享性、增值性、可处理性和多效用性,使其对于人类具有特别重要的意义。信息安全的实质就是要保护信息系统或信息网络中的信息资源免受各种类型的威胁、干扰和破坏,即保证信息的安全性。根据国际标准化组织的定义,信息安全性的含义主要是指信息的完整性、可用性、保密性和可靠性。信息安全是任何国家、政府、部门、行业都必须十分重视的问题,是一个不容忽视的国家安全战略。但是,对于不同的部门和行业来说,其对信息安全的要求和重点却是有区别的。
那么,什么是信息安全呢?信息安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。它本身包括的范围很大。大到国家军事政治等机密安全,小到如防范商业企业机密泄露、防范青少年对不良信息的浏览、个人信息的泄露等。网络环境下的信息安全体系是保证信息安全的关键,包括计算机安全操作系统、各种安全协议、安全机制(数字签名、信息认证、数据加密等),直至安全系统,其中任何一个安全漏洞便可以威胁全局安全。信息安全服务至少应该包括支持信息网络安全服务的基本理论,以及基于新一代信息网络体系结构的网络安全服务体系结构。信息要保证安全,其根本目的就是使内部信息不受外部威胁,因此信息通常要加密。
在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容
易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip,它既压缩数据又加密数据。又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。
幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86 cpu系列就有一个指令‘xlat’在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表”就可以了。这种方法在计算机出现之前就已经被广泛的使用。
对这种“置换表”方式的一个改进就是使用2个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几次变换。通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比如,我们可以对所有的偶数位置的数据使用a表,对所有的奇数位置使用b表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。 与使用“置换表”相类似,“变换数据位置”也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer中,再在buffer中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序还原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient 可以变为listen,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。 但是,还有一种更好的加密算法,只有计算机可以做,就是字/字节循环移位和xor操作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移),就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难!而且,更进一步的是,如果再使用xor操作,按位做异或操作,就就使破译密码更
加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci数列。对数列所产生的数做模运算(例如模3),得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能!但是,使用fibbonaci数列这种伪随机的方式所产生的密码对我们的解密程序来讲是非常容易的。
在一些情况下,我们想能够知道数据是否已经被篡改了或被破坏了,这时就需要产生一些校验码,并且把这些校验码插入到数据流中。这样做对数据的防伪与程序本身都是有好处的。但是感染计算机程序的病毒才不会在意这些数据或程序是否加过密,是否有数字签名。所以,加密程序在每次load到内存要开始执行时,都要检查一下本身是否被病毒感染,对与需要加、解密的文件都要做这种检查!很自然,这样一种方法体制应该保密的,因为病毒程序的编写者将会利用这些来破坏别人的程序或数据。因此,在一些反病毒或杀病毒软件中一定要使用加密技术。
循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor操作来产生一个16位或32位的校验和 ,这使得丢失一位或两个位的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,例如 xmodem-crc。 这是方法已经成为标准,而且有详细的文档。但是,基于标准crc算法的一种修改算法对于发现加密数据块中的错误和文件是否被病毒感染是很有效的。
信息安全与现代密码是密不可分的。我们的各种信息几乎都要保密、加密,信息泄露的后果也是不堪设想的。信息化社会的我们,每一步都要走得很小心,至少有一定的警惕。我们生活在这样的信息时代,懂得至少了解如何保障信息安全是很有必要的。
因篇幅问题不能全部显示,请点此查看更多更全内容