2008年1月19日星期六

微软的SLP软件加密保护服务

  今天微软的几个工程师来到我们公司,演示他们开发的一套软件加密系统:微软软件授权保护系统(SLP/Software License Protection),在这个系统上还有软件许可及保护服务(SLP Services),听他们讲了一些相关的知识和技术,感觉大有收获。

  SLP代码保护器(SLP Code Protector)

  众所周知,使用微软的.NET开发的应用软件,编译之后的EXE和DLL文件,可以使用Lutz Roeder's .NET Reflector很方便的进行反编译,使得一些核心代码的安全性受到威胁。这时就可以使用“SLP代码保护器”(SLP Code Protector)对.NET的代码进行保护,使得其核心的函数经过了加密,无法使用反编译工具进行反编译。

  SLP代码保护器是免费产品,可以免费在.NET开发中使用。

  SLP置换器(SLP Permutation)

  如果要进行加密商用加密处理,需要和各个不同的企业使用不同的算法,因此使用SLP置换器(SLP Permutation),把现有代码通过置换算法转换为安全虚拟机(SVM,Secure Virtual Machine)语言,然后代码的入口处就会增加一小段代码,也就是SVM,代码无论是被浏览还是被执行都要先执行这段代码,这就实现了将关键核心的算法的代码进行了内容上的替换,实现了软件许可的认证和保护功能。

  SLP在线服务(SLP Online Service)

  软件被保护后,软件的许可证可以通过在线服务进行动态打包,SLP服务网站定义了产品许可证的不同特性(Feature),可以针对不同的个人进行灵活发放。

  SLP服务器(SLP Server)

  软件开发商需要单独搭建一台自己的服务器并创建软件授权-基于机器、时间(软件订阅和试用)、用户或功能-针对它们的产品。服务器会创建激活码,用户可以通过激活码进行数字授权,激活他们的软件。

  SLP激活(SLP Activation)

  客户软件的激活可以通过两种方式激活:在线激活和离线激活方式。激活时候客户输入激活码,然后SLP会收集客户的硬件信息(硬盘、CPU、主板等),通过这些硬件信息生成一个客户独有的硬件指纹,然后连接到SLP服务器上获取License文件并引入客户软件系统。

  总的来说,微软的这一套软件授权保护系统还是比较完善的,从产品开发、许可管理到销售等主要的业务流程都可以走通,是软件企业用于保护自身软件的一个不错的工具,价格也不算贵,好像只有几万美元的价格。以微软的技术实力来看,这套软件的安全性应该也是不错的,不过其安全性还是低于硬件加密锁(加密狗),虽然加密狗被破解也是很常见的

  不过从另一个方面上来看,微软的Windows几乎每个版本都被破解过,因为微软花费巨大精力研究的最尖端的反盗版技术用于保护Windows和Office,但同时全世界最顶级的黑客和破解者也在研究微软的这套加密保护系统,破解了Windows的加密系统,那么用SLP开发的所有加密系统都会面临被破解的风险,而一些冷门的加密产品由于利益较少,被关注的也较少,因此可能反而更少人去对其进行破解。

  微软软件授权保护服务的网站地址是:http://www.microsoft.com/slps ,有兴趣的话可与去看看。