本文是一篇软件加密技术的基础性文章,简要介绍了软件加密的一些基本常识和一些加密产品,适用于国内软件开发商或者个人共享软件开发者阅读参考。 1 、加密技术概述 一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。 对纯数据的加密的确是这样。对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。 但是,软件的加密不同于数据的加密,它只能是“隐藏” 。不管你愿意不愿意让他(合法用户,或 Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器,它就必须是明文。既然机器可以“看见” 这些明文,那么 Cracker,通过一些技术,也可以看到这些明文。 于是,从理论上,任何软件加密技术都可以破解。只是破解的难度不同而已。有的要让最高明的 Cracker 忙上几个月,有的可能不费吹灰之力,就被破解了。 所以,反盗版的任务(技术上的反盗版,而非行政上的反盗版)就是增加 Cracker 的破解难度。让他们花费在破解软件上的成本,比他破解这个软件的获利还要高。这样 Cracker 的破解变得毫无意义— — 谁会花比正版软件更多的钱去买盗版软件? 2 、密码学简介 2 .1 概念 (1 ) 发送者和接收者 假设发送者想发送消息给接收者,且想安全地发送信息:她想确信偷听者不能阅读发送的消息。 (2 ) 消息和加密 消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。 明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及到计算机,P 是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M 指待加密的消息。 密文用C 表示,它也是二进制数据,有时和M 一样大,有时稍大(通过压缩和加密的结合,C 有可能比P 小些。然而,单单加密通常达不到这一点)。加密函数E 作用于M 得到密文C,用数学表示为: E(M)=C. 相反地,解密函数D 作用于C 产生M D(C)=M. 先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立: D(E(M))=M (3 ) 鉴别、完整性和抗抵赖 除了提供机密性外,密码学通常有其它的作用:. (a) 鉴别 消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。 (b) 完整性检验 消息的接收者应该能够验证在...