提到软件加密,很多人的第一反应就是在安装过程进行到一半的时候弹出来的提示输入序列号的对话框. 但是要设计实施一个完整的软件加密系统,需要考虑的问题是很多的. 究竟需要考虑哪些问题,以及对每个问题该重视到何种程度,都要由设计目的来决定.
很多开发者认为,只有不能被破解的加密才是成功的加密. 事实上,就我们目前的计算机体系而言,这几乎是一个不可能达成的目标. 理论上来说,加密前后的软件在完成功能上应当是完全相同的,则必然存在某种方法可以在保证功能不变的前提下,把加密的部分从软件本身移除,所需要的仅仅是时间而已. 所以严格地讲,如果某种加密技术能够保证软件的生命周期内不被破解,那么这种加密技术就是成功的. 因此,必须首先明确设计目的,才能正确限制花费在软件加密方面的开发代价,从而在安全性和效率之间找到一个合理的平衡点.
总地来说,软件加密的目的就是保护创作者的劳动成果. 因为软件产品可以被随意地复制分发,因此大部分软件在安装时会提示输入序列号来验证合法性. 只有拥有序列号的人才可以继续安装,这样就限制了软件被其他人通过非法取得的手段来使用的可能性. 但是用户仍然可以只购买一份软件,却在亲戚朋友家人同事的数台电脑上利用自己的合法序列号同时安装. 为了禁止这种行为,必须将某一份软件与某一个用户捆绑限定在一起----用户的爸爸和用户是两个人,需要购买两份软件,除非他们使用同一台电脑. 于是,软件在安装过程中,序列号验证合法后,还要收集并记录用户机器的硬件信息. 安装进程将这些信息和序列号一同记录下来,通过网络或者传真、电话等方式通知开发者. 开发者将用户的机器硬件信息和软件序列号一起通过某种算法生成唯一一个相对应的激活码来允许用户使用软件. 此后,每次软件启动时都会检查一次硬件变动,如果与激活码里记录的硬件不一致,则禁止用户使用.
Software Encryption ---- 序
最新推荐文章于 2024-07-21 21:08:59 发布