标题：信息加密技术
简介
保密通信，计算机密钥，防复制软盘 等都属于信息加密技术。通信过程  信息加密技术中的加密主要是采用密码，在数字通信中可利用计算机采用加密法，改变负载信息的数码结构。计算机信息保护则以软件加密为主。目前世界上最流行的几种加密体制和加密算法有：RSA算法和CCEP算法等。为防止破密，加密软件还常采用硬件加密和加密软盘。一些软件商品常带有一种小的硬卡，这就是硬件加密措施。在软盘上用激光穿孔，使软件的存储区有不为人所知的局部存坏，就可以防止非法复制。这样的加密软盘可以为不掌握加密技术的人员使用，以保护软件。由于计算机软件的非法复制，解密及盗版问题日益严重，甚至引发国际争端，因此对信息加密技术和加密手段的研究与开发，受到各国计算机界的重视，发展日新月异。
加密技术应用
在常规的邮政系统中，寄信人用信封隐藏其内容，这就是最基本的保密技术，而在电子商务中，有形的信封就不再成为其代表性的选择。为了实现电子信息的保密性，就必须实现该信息对除特定收信人以外的任何人都是不可读取的。而为了保证共享设计规范的贸易伙伴的信息安全性就必须采取一定的手段来隐藏信息，而隐藏信息的最有效手段便是加密。
保密通信，计算机密钥，防复制软盘等都属于信息加密技术。通信过程中的加密主要是采用密码，在数字通信中可利用计算机采用加密法，改变负载信息的数码结构。计算机信息保护则以软件加密为主。
加密技术分析
加密就是通过密码算术对数据进行转化，使之成为没有正确密钥任何人都无法读懂的报文。而这些以无法读懂的形式出现的数据一般被称为密文。为了读懂报文，密文必须重新转变为它的最初形式--明文。而含有用来以数学方式转换报文的双重密码就是密钥。在这种情况下即使一则信息被截获并阅读，这则信息也是毫无利用价值的。而实现这种转化的算法标准，据不完全统计，到现在为止已经有近200多种。在这里，主要介绍几种重要的标准。按照国际上通行的惯例，将  信息加密技术这近200种方法按照双方收发的密钥是否相同的标准划分为两大类：一种是常规算法（也叫私钥加密算法或对称加密算法），其特征是收信方和发信方使用相同的密钥，即加密密钥和解密密钥是相同或等价的。比较著名的常规密码算法有：美国的DES及其各种变形，比如3DES、GDES、New DES和DES的前身Lucifer； 欧洲的IDEA；日本的FEAL N、LOKI?91、Skipjack、RC4、RC5以及以代换密码和转轮密码为代表的古典密码等。在众多的常规密码中影响最大的是DES密码，而最近美国NIST（国家标准与技术研究所）推出的AES将有取代DES的趋势，后文将作出详细的分析。常规密码的优点是有很强的保密强度，且经受住时间的检验和攻击，但其密钥必须通过安全的途径传送。因此，其密钥管理成为系统安全的重要因素。另外一种是公钥加密算法（也叫非对称加密算法）。其特征是收信方和发信方使用的密钥互不相同，而且几乎不可能从加密密钥推导解密密钥。比较著名的公钥密码算法有：RSA、背包密码、McEliece密码、Diffe Hellman、Rabin、Ong Fiat Shamir、零知识证明的算法、椭圆曲线、EIGamal算法等等⑷。最有影响的公钥密码算法是RSA，它能抵抗到目前为止已知的所有密码攻击，而最近势头正劲的ECC算法正有取代RSA的趋势。公钥密码的优点是可以适应网络的开放性要求，且密钥管理问题也较为简单，尤其可方便的实现数字签名和验证。但其算法复杂，加密数据的速率较低。尽管如此，随着现代电子技术和密码技术的发展，公钥密码算法将是一种很有前途的网络安全加密体制。这两种算法各有其短处和长处，在下面将作出详细的分析。1.1 私钥加密算法在私钥加密算法中，信息的接受者和发送者都使用相同的密钥，所以双方的密钥都处于保密的状态，因为私钥的保密性必须基于密钥的保密性，而非算法上。这在硬件上增加了私钥加密算法的安全性。但同时我们也看到这也增加了一个挑战：收发双方都必须为自己的密钥负责，这种情况在两者在地理上分离显得尤为重要。私钥算法还面临这一个更大的困难，那就是对私钥的管理和分发十分的困难和复杂，而且所需的费用十分的庞大。比如说，一个n个用户的网络就需要派发n(n-1)/2个私钥，特别是对于一些大型的并且广域的网络来说，其管理是一个十分困难的过程，正因为这些因素从而决定了私钥算法的使用范围。而且，私钥加密算法不支持数字签名，这对远距离的传输来说也是一个障碍。另一个影响私钥的保密性的因素是算法的复杂性。现今为止，国际上比较通行的是DES、3DES以及最近推广的AES。 
数据加密标准（Data Encryption Standard）是IBM公司1977年为美国政府研制的一种算法。DES是以56 位密钥为基础的密码块加密技术。它的加密过程一般如下：
① 一次性把64位明文块打乱置换。 
② 把64位明文块拆成两个32位块； 
③ 用机密DES密钥把每个32位块打乱位置16次； 
④ 使用初始置换的逆置换。 
但在实际应用中，DES的保密性受到了很大的挑战，1999年1月，EFF和分散网络用不到一天的时间，破译了56位的DES加密信息。DES的统治地位受到了严重的影响，为此，美国推出DES的改进版本-- 三重加密（triple Data Encryption Standard）即在使用过程中，收发双方都用三把密钥进行加解密，无疑这种3*56式的加密方法大大提升了密码的安全性，按现在的计算机的运算速度，这种破解几乎是不可能的。但是我们在为数据提供强有力的安全保护的同时，也要化更多的时间来对信息进行三次加密和对每个密层进行解密。同时在这种前提下，使用这种密钥的双发都必须拥有3个密钥，如果丢失了其中任何一把，其余两把都成了无用的密钥。这样私钥的数量一下又提升了3倍，这显然不是我们想看到的。于是美国国家标准与技术研究所推出了一个新的保密措施来保护金融交易。高级加密标准（Advanced Encryption Standard）美国国家技术标准委员会(NIST)在2000年10月选定了比利时的研究成果"Rijndael"作为AES的基础。"Rijndael"是经过三年漫长的过程，最终从进入候选的五种方案中挑选出来的。
AES内部有更简洁精确的数学算法,而加密数据只需一次通过。AES被设计成高速，坚固的安全性能，而且能够支持各种小型设备。AES与3DES相比，不仅是安全性能有重大差别，使用性能和资源有效利用上也有很大差别。虽然到现在为止，我还不了解AES的具体算法但是从下表可以看出其与3DES的巨大优越性。
还有一些其他的一些算法，如美国国家安全局使用的飞鱼（Skipjack）算法，不过它的算法细节始终都是保密的，所以外人都无从得知其细节类容；一些私人组织开发的取代DES的方案：RC2、RC4、RC5等。1.2 公钥加密算法面对在执行过程中如何使用和分享密钥及保持其机密性等问题，1975年Whitefield Diffe和Marti Hellman提出了公开的密钥密码技术的概念，被称为Diffie-Hellman技术。从此公钥加密算法便产生了。
由于采取了公共密钥，密钥的管理和分发就变得简单多了，对于一个n个用户的网络来说，只需要2n个密钥便可达到密度。同时使得公钥加密法的保密性全部集中在及其复杂的数学问题上，它的安全性因而也得到了保证。但是在实际运用中，公共密钥加密算法并没有完全的取代私钥加密算法。其重要的原因是它的实现速度远远赶不上私钥加密算法。又因为它的安全性，所以常常用来加密一些重要的文件。自公钥加密问世以来，学者们提出了许多种公钥加密方法，它们的安全性都是基于复杂的数学难题。根据所基于的数学难题来分类，有以下三类系统目前被认为是安全和有效的：大整数因子分解系统(代表性的有RSA)、椭圆曲线离散对数系统(ECC)和离散对数系统 (代表性的有DSA)，下面就作出较为详细的叙述。 
RSA算法是由罗纳多·瑞维斯特（Rivet）、艾迪·夏弥尔（Shamir）和里奥纳多·艾德拉曼（Adelman）联合推出的，RAS算法由此而得名。它的安全性是基于大整数素因子分解的困难性，而大整数因子分解问题是数学上的著名难题，至今没有有效的方法予以解决，因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法，大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。它得具体算法如下：
① 找两个非常大的质数，越大越安全。把这两个质数叫做P和Q。 
② 找一个能满足下列条件得数字E： 
A． 是一个奇数。 
B． 小于P×Q。 
C． 与（P－1）×（Q－1）互质，只是指E和该方程的计算结果没有相同的质数因子。 
③ 计算出数值D，满足下面性质：（（D×E）－1）能被（P－1）×（Q－1）整除。 
公开密钥对是（P×Q，E）。 
私人密钥是D。 
公开密钥是E。 
解密函数是： 
假设T是明文，C是密文。 
加密函数用公开密钥E和模P×Q； 
加密信息=（TE）模P×Q。 
解密函数用私人密钥D和模P×Q； 
解密信息=（CD）模P×Q。
椭圆曲线加密技术（ECC）是建立在单向函数（椭圆曲线离散对数）得基础上，由于它比RAS使用得离散对数要复杂得多。而且该单向函数比RSA得要难，所以与RSA相比，它有如下几个优点： 
安全性能更高 加密算法的安全性能一般通过该算法的抗攻击强度来反映。ECC和其他几种公钥系统相比，其抗攻击性具有绝对的优势。如160位 ECC与1024位 RSA有相同的安全强度。而210位 ECC则与2048bit RSA具有相同的安全强度。 
计算量小，处理速度快 虽然在RSA中可以通过选取较小的公钥（可以小到3）的方法提高公钥处理速度，即提高加密和签名验证的速度，使其在加密和签名验证速度上与ECC有可比性，但在私钥的处理速度上（解密和签名），ECC远比RSA、DSA快得多。因此ECC总的速度比RSA、DSA要快得多。 
存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多，意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。 
带宽要求低 当对长消息进行加解密时，三类密码系统有相同的带宽要求，但应用于短消息时ECC带宽要求却低得多。而公钥加密系统多用于短消息，例如用于数字签名和用于对对称系统的会话密钥传递。带宽要求低使ECC在无线网络领域具有广泛的应用前景。 
ECC的这些特点使它必将取代RSA，成为通用的公钥加密算法。比如SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。
优劣比较
以上综述了两种加密方法的各自的特点，并对他们优劣处作了一个简要的比较，总体来说主要有下面几个方面：管理方面第一、在管理方面，公钥密码算法只需要较少的资源就可以实现目的，在密钥的分配上，两者之间相差一个指数级别（一个是n一个是n2）。所以私钥密码算法不适应广域网的使用，而且更重要的一点是它不支持数字签名。安全方面第二、在安全方面，由于公钥密码算法基于未解决的数学难题，在破解上几乎不可能。对于私钥密码算法，到了AES虽说从理论来说是不可能破解的，但从计算机的发展角度来看。公钥更具有优越性。速度方面第三、从速度上来看，AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍，如果用硬件来实现的话这个比值将扩大到1000倍。算法方面第四、对于这两中算法，因为算法不需要保密，所以制造商可以开发出低成本的芯片以实现数据加密。这些芯片有着广泛的应用，适合于大规模生产。总结纵观这两种算法一个从DES到3DES再到ADES，一个从RSA到ECC。其发展角度无不是从密钥的简单性，成本的低廉性，管理的简易性，算法的复杂性，保密的安全性以及计算的快速性这几个方面去考虑。因此，未来算法的发展也必定是从这几个角度出发的，而且在实际操作中往往把这两种算法结合起来，也需将来一种集两种算法有点于一身的新型算法将会出现，到那个时候，电子商务的实现必将更加的快捷和安全。
流行算法
目前世界上最流行的几种加密体制和加密算法有：RSA算法和CCEP算法等。为防止破密，加密软件还常采用硬件加密和加密软盘。一些软件商品常带有一种小的硬卡，这就是硬件加密措施。在软盘上用激光穿 孔，使软件的存储区有不为人所知的局部存坏，就可以防止非法复制。这样的加密软盘可以为不掌握加密技术的人员使用，以保护软件。由于计算机软件的非法复制，解密及盗版问题日益严重，甚至引发国际争端，因此对信息加密技术和加密手段的研究与开发，受到各国计算机界的重视，发展日新月异。
软件保护技术
1、序列号保护数学算法一项都是密码加密的核心，但在一般的软件加密中，它似乎并不太为人们关心，因为大多数时候软件加密本身实现的都是一种编程的技巧。但近几年来随着序列号加密程序的普及，数学算法在软件加密中的比重似乎是越来越大了。
看看在网络上大行其道的序列号加密的工作原理。当用户从网络上下载某个shareware——共享软件后，一般都有使用时间上的限制，当过了共享软件的试用期后，你必须到这个软件的公司去注册后方能继续使用。注册过程一般是用户把自己的私人信息（一般主要指名字）连同信用卡号码告诉给软件公司，软件公司会根据用户的信息计算出一个序列码，在用户得到这个序列码后，按照注册需要的步骤在软件中输入注册信息和注册码，其注册信息的合法性由软件验证通过后，软件就会取消掉本身的各种限制，这种加密实现起来比较简单，不需要额外的成本，用户购买也非常方便，在互联网上的软件80%都是以这种方式来保护的。
软件验证序列号的合法性过程，其实就是验证用户名和序列号之间的换算关系是否正确的过程。其验证最基本的有两种，一种是按用户输入的姓名来生成注册码，再同用户输入的注册码比较，公式表示如下：
序列号 = F（用户名）
但这种方法等于在用户软件中再现了软件公司生成注册码的过程，实际上是非常不安全的，不论其换算过程多么复杂，解密者只需把你的换算过程从程序中提取出来就可以编制一个通用的注册程序。
另外一种是通过注册码来验证用户名的正确性，公式表示如下：
用户名称 = F逆（序列号） （如ACDSEE）
这其实是软件公司注册码计算过程的反算法，如果正向算法与反向算法不是对称算法的话，对于解密者来说，的确有些困难，但这种算法相当不好设计。
于是有人考虑到以下的算法：
F1（用户名称） = F2（序列号）
F1、F2是两种完全不同的的算法，但用户名通过F1算法计算出的特征字等于序列号通过F2算法计算出的特征字，这种算法在设计上比较简单，保密性相对以上两种算法也要好的多。如果能够把F1、F2算法设计成不可逆算法的话，保密性相当的好；可一旦解密者找到其中之一的反算法的话，这种算法就不安全了。一元算法的设计看来再如何努力也很难有太大的突破，那么二元呢？
特定值 = F（用户名，序列号）
这个算法看上去相当不错，用户名称与序列号之间的关系不再那么清晰了，但同时也失去了用户名于序列号的一一对应关系，软件开发者必须自己维护用户名称与序列号之间的唯一性，但这似乎不是难以办到的事，建个数据库就可以了。当然也可以把用户名称和序列号分为几个部分来构造多元的算法。
特定值 = F（用户名1，用户名2，...序列号1，序列号2...）
现有的序列号加密算法大多是软件开发者自行设计的，大部分相当简单。而且有些算法作者虽然下了很大的功夫，效果却往往得不到它所希望的结果。2、时间限制有些程序的试用版每次运行都有时间限制，例如运行10分钟或20分钟就停止工作，必须重新运行该程序才能正常工作。这些程序里面自然有个定时器来统计程序运行的时间。这种方法使用的较少。3、Key File 保护Key File（注册文件）是一种利用文件来注册软件的保护方式。Key File一般是一个小文件，可以是纯文本文件，也可以是包含不可显示字符的二进制文件，其内容是一些加密过或未加密的数据，其中可能有用户名、注册码等信息。文件格式则由软件作者自己定义。试用版软件没有注册文件，当用户向作者付费注册之后，会收到作者寄来的注册文件，其中可能包含用户的个人信息。用户只要将该文件放入指定的目录，就可以让软件成为正式版。该文件一般是放在软件的安装目录中或系统目录下。软件每次启动时，从该文件中读取数据，然后利用某种算法进行处理，根据处理的结果判断是否为正确的注册文件，如果正确则以注册版模式来运行。这种保护方法使用也不多。4、CD-check即光盘保护技术。程序在启动时判断光驱中的光盘上是否存在特定的文件，如果不存在则认为用户没有正版光盘，拒绝运行。在程序运行的过程当中一般不再检查光盘的存在与否。Windows下的具体实现一般是这样的：先用GetLogicalDriveStrings（ ）或GetLogicalDrives（ ）得到系统中安装的所有驱动器的列表，然后再用GetDriveType（ ）检查每一个驱动器，如果是光驱则用CreateFileA（ ）或FindFirstFileA（ ）等函数检查特定的文件存在与否，并可能进一步地检查文件的属性、大小、内容等。5、软件狗软件狗是一种智能型加密工具。它是一个安装在并口、串口等接口上的硬件电路，同时有一套使用于各种语言的接口软件和工具软件。当被狗保护的软件运行时，程序向插在计算机上的软件狗发出查询命令，软件狗迅速计算查询并给出响应，正确的响应保证软件继续运行。如果没有软件狗  软件狗，程序将不能运行，复杂的软硬件技术结合在一起防止软件盗版。真正有商业价值得软件一般都用软件狗来保护。
平时常见的狗主要有“洋狗”（国外狗）和“土狗”（国产狗）。这里“洋狗”主要指美国的彩虹和以色列的HASP，“土狗”主要有金天地（现在与美国彩虹合资，叫“彩虹天地”）、深思、尖石。总的说来，“洋狗”在软件接口、加壳、反跟踪等“软”方面没有“土狗”好，但在硬件上破解难度非常大；而“土狗”在软的方面做的很好，但在硬件上不如“洋狗”，稍有单片机功力的人，都可以复制。6、软盘加密通过在软盘上格式化一些非标准磁道，在这些磁道上写入一些数据，如软件的解密密钥等等。这种软盘成为“钥匙盘”。软件运行时用户将软盘插入，软件读取这些磁道中的数据，判断是否合法的“钥匙盘”。
软盘加密还有其它一些技术，如弱位加密等等。随着近年来软盘的没落，这种方法基本上退出了历史舞台。7、将软件与机器硬件信息结合用户得到（买到或从网上下载）软件后，安装时软件从用户的机器上取得该机器的一些硬件信息（如硬盘序列号、BOIS序列号等等），然后把这些信息和用户的序列号、用户名等进行计算，从而在一定程度上将软件和硬件部分绑定。用户需要把这一序列号用Email、电话或邮寄等方法寄给软件提供商或开发商，软件开发商利用注册机（软件）产生该软件的注册号寄给用户即可。软件加密虽然加密强度比硬件方法较弱，但它具有非常廉价的成本、方便的使用方法等优点。非常适合做为采用光盘（CDROM）等方式发授软件的加密方案。
此种加密算法的优点：
· 不同机器注册码不同。用户获得一个密码只能在一台机器上注册使用软件。不同于目前大多软件采用的注册方法，即只要知道注册码，可在任何机器上安装注册。
· 不需要任何硬件或软盘
· 可以选择控制软件运行在什么机器、运行多长时间或次数等
· 可让软件在不注册前的功能为演示软件，只能运行一段时间或部分功能。注册后就立即变为正式软件　· 采用特别技术，解密者很难找到产生注册号码的规律
· 在使用注册号产生软件（注册机）时可采用使用密码、密钥盘、总次数限制等方法
· 方便易用，价格低廉。
这种加密还有以下特点：
1、 注册加密的软件，只能在一台机器上安装使用。把软件拷贝到其它机器上不能运行。
2、 若用户想在另一机器上安装运行，必须把软件在这一机器上运行时的序列号，寄给软件出版商换取注册密码。当然应再交一份软件费用。
3、 此加密方法特别适应在因特网上发布的软件及用光盘发布的软件。