软件的保护是每个软件设计人员必须要面对的问题,软件保护的目的就是尽最大的可能拒绝未经许可的用户使用它,或者让非法使用者付出比较高昂的代价(比如破解软件带来的时间和费用上的代价)。从理论上讲没有软件不能被破解,这取决于软件保护设计者和破解者的技术水平的高低,是矛和盾的较量。
从保护内容的角度来看,软件的保护主要有两个方面,一是软件的访问许可;二是软件的功能许可,大部分的中小软件只对软件产品进行访问许可的限制就可以了,对于功能复杂,服务用户对象划分详细的软件产品很有必要增加软件的功能许可限制(比如用户使用数的限制、功能模块的使用限制等)。有的时候功能许可是不得已必须有的,如果你的软件产品中使用了第三方的插件,插件必须具有使用许可才能正常使用,这时在你的软件产品中就必须考虑功能许可的问题了。
本文关注的不是软件注册本身的问题,而是对于一个复杂系统来说,如何管理多个软件产品的注册和访问许可、功能许可的验证问题,软件的注册、反跟踪、加壳等问题建议参考“看雪论坛”的有关论述和相关书籍。软件产品的注册不仅仅要考虑软件产品的保护问题,还有考虑用户的使用体验。
一个复杂的系统往往有多个应用程序组合而成,系统设计者可能需要在多个应用程设置注册和许可验证,但是对追求方便的用户来说就比较麻烦了,用户需要多个地方注册才能使用这个系统,我考虑的一个解决方案是,设计一个注册管理服务,可以是一个远程的服务,用户在一个地方,使用一个程序完成注册,应用程序通过访问服务来进行许可的验证。这里需要解决的问题有:
1、多应用程序的注册管理
2、注册的安全存储
3、应用程序和服务程序的身份验证,保障应用程序和服务不是篡改过的
4、验证过程的安全性
5、验证过程的性能
6、验证过程的可靠性
7、功能许可的策略组合