2024年4月12日发(作者:)

龙源期刊网

软件超市授权下载机制对比及其改进方案

作者:李莉

来源:《现代电子技术》2012年第22期

摘 要:在现有的软件超市平台中,授权机制不能避免无限制地分散合法下载的软件,在

此对此提出修正方案,对不同的下载软件设计出不同的流程,这意味攻击者不易开发出给一般

人使用的通用工具,这样就可以增加软件的存活时间,而这也刚好解决了软件超市所出售软件

生命周期短暂的问题。

关键词:软件超市平台; 授权系统; 密钥分享问题; 软件生命周期

中图分类号:TN91934 文献标识码:A 文章编号:1004373X(2012)22001803

自从Apple AppStroe的商业模式成功,使得许多大厂纷纷跟进,想要建立自己的软件超

市平台,其中较著名的厂商包括Google和即将推出自主平台的Amazon等不同领域的主流厂

商。这些厂商的软件超市都使用类似AppStore的架构,主要包括安装在客户端的近端商店软

件以及服务器端的远端商店服务器:前者负责下载、更新、安装以及检查客户的软件状况;后

者则负责软件上下架、展示以及远端管理客户的软件。与传统的电子商务不同之处在于近端商

店软件,这个软件安装在消费者终端,平台运行商会比传统电子商务业者更了解消费者需求,

增加消费者对平台运行商的忠诚度。而这样的趋势,使得客户端的软件保护更加重要,因为若

上架软件很容易被非法复制,则就会减低开发者上架意愿,进而降低平台的下载量,造成恶性

循环。从消费者观点来看,如果已经安装近端商店软件,但还是下载到了不安全软件,这同样

会降低平台的下载量。因此,一个适当的软件授权机制关系到软件超市平台的运营情况

[12]。但为了提高下载速度,平台的运营会使用内容传递网络(Content Delivery

Network,CDN)技术[34],从而限制软件授权机制的设计,因为内容传递网络技术就是将

上架软件事先复制到全球各区域的服务器,通过分散下载点来加快反应速度,这意味着每一个

消费者下载的软件都会一样,当平台的运营商无法下载时,针对不同消费者对下载软件做个别

处理,而使得非法复制软件的情况更难防范。针对这点,本文将进行讨论并提出其改进方案。

1 相关工作

首先介绍传统的软件授权方式,不外乎如微软的使用者授权(EndUser License

Agreement,EULA),原始设备商授权(OEM)以及大量授权。前两者的授权方式都是将授

权信息随软件套件或终端给使用者,再加上安装完毕的启动动作来加强安全性,因为会对每一

个软件套件做差异化,并不适合应用在内容传递网络技术,而后者则是在企业或组织的内部网

络架设授权服务器,软件启动会连到这台授权服务器,除此之外还会定期检查软件授权状态检

查,要是太久没有做授权更新,就会被停止使用,这样的使用情境类似现有的软件超市应用,

其差异是没有考虑跨网域的安全性。

龙源期刊网

在不考虑软件上/下架管理情况下,软件超市平台其实就是一个跨网域的授权系统,由于

要授权多种软件给消费者,所以需要于客户端终端安装近端商店软件来管理不同软件的授权。

而不同的软件超市平台的差异在于包装授权方式不同,如Amazon AppStore及Android

Market会以非对称方式密码算法,而Apple Appstore则使用对称方式密码算法,但无论是哪

种方式,都因为使用 CDN技术,而易遭受取代攻击,造成合法下载的软件被非法复制传

播。关于这两个软件超市平台运作流程,将在下一段说明。Android Market的授权系统核心

License Verification Library(LVL),软件开发者将LVL相关程序加入自己的软件后,当

消费者执行此程序,就会与Android Market的授权系统通信检查授权状况。软件开发者使用

LVL的步骤包含:

上网申请公开密钥,相对应的私密密钥会存放于Android Market 的授权系统。申请好

的公开密钥,将软件开发者直接复制在源代码中,并通过函数传递LVL模组,主要用来验证

由远端传来的授权文件。所申请的公开密钥会以Base64方式编码,如图1所示,开发者只要

复制/粘贴就可以放进源代码。

开发者复制/粘贴此公开密钥并嵌入LVL相关的程序后,所发展的软件就可经由近端商店

软件(Market App)向远端的授权服务器做查询,保护自己的软件。

图1 LVL License Key远端的授权流程如图2所示。流程概述如下,当消费者想要执

行程序(myAPP),步骤2内嵌的LVL程序会与近端商店软件沟通,传递软件信息(App

Data),收到信息的近端商店软件便会加上消费者信息(User Data),与远端的授权服务器

沟通,远端的授权服务器用传来的信息查询数据库,然后传回经过签章的授权状态(License

Status),这个经过签章的授权状态最后会传到myAPP,先使用公开密钥验签章,再依授权状

态内容决定是否执行。而这样的设计,会由于授权状态是明文,别的消费者只要依据内容改变

自己终端的设定就可以将复制过来的软件执行起来。

图2 Android Market 授权架构至于Apple Appstore并没有实际的授权检查,

Appstore将所有软件加密起来,只有近端商店软件(iTunes)可以解密,运作流程如图3所

示。流程概述如下,使用者通知iTunes要下载ap1,iTunes 产生(暂时密钥)sk,在向后端

授权系统要求下载ap1,收到要求的授权系统先将加密ap1的主密钥(Master Key)查询出来

并以sk加密,最后将加密的ap1及Master Key密文传给iTunes,如此以来iTunes就可解密

ap1。

而这样的设计,基本上只要可以模拟图3的流程,就可发布合法下载的软件。

与现有的软件超市平台相同,所提方案也包括在客户端的近端商店软件以及服务器端的远

端商店服务器,与上述软件超市平台的不同在于增加了下载的差异性同时可用于采取CDN技

术的环境。所谓的差异性指的是消费者下载的软件或执行软件所需参数,无法拿给另一台终端

使用,例如Appstore 的主密钥以及Android Market的授权状态。 首先说明本方案的基本

说明如下:

龙源期刊网

(1) 每一个上架的软件都被一把主密钥(KEY)加密。

(2) 每个客户端的装置,都安装近端商店软件,且此近端商店软件事先拥有部分密钥

K1。

(3) 服务器端的远端商店服务器,拥有数据库,可以依据近端商店软件送出的消费者

信息(User Data)查询到K1,以及依据送出的软件信息(App Data)查询KEY。最后,

远端商店服务器计算出部分密钥K2满K2=f(KEY,K1),最后传给近端商店软件。

(4) 上架的软件,被分解成多个模组,只有程序需要时,才会被解密放入内存执行。

在本方案中,软件要执行时,才由近端商店软件将K1及K2组合(使用秘密分享技术)

出KEY,以便解密必要的模组。工作原理如图4所示。

图4 本文所提出的软件执行流程图4中的上架的软件及K2都无法在别的终端上使用,

因为K2会因K1不同而不同,因此只要在近端商店软件被安装时,所分配到的K1不同,本方

案就可达到上述的差异性。

3 讨 论

本文提出一个跨网域的软件授权机制,可以达成每个使用者需使用不同密钥解密下载软

件,同时下载软件可事先被发布到CDN上的服务器。本文将包含两个子系统如下:

近端商店软件负责与受保护执行档沟通解密文,并负责与后端服务器沟通取得安全参数及

回报软件安装状态;

远端商店服务器:使用秘密分享技术实作的远端商店服务器,用于产生安全参数供给近端

商店软件。

这两个子系统可达成每个使用者的装置(保护中介软件)有不同的秘密值(K1),并可

以事先将下载软件放到CDN的服务器以减少下载反映时间。同时改善原设计的弱点,增加攻

击者解密难度。要达成这目的,本文先以主密钥(KEY)将下载软件(执行文件)分析成数个

区块做加密,每当使用者下载时,会送出下载软件ID及自己的ID,让远端商店服务器取得对

应的K1, 再由下载软件ID取得KEY,然后算出安全参数(K2),使得KEY=f(K1,

K2)。当远端商店服务器产生K2后,就可传送给保护近端商店软件。当近端商店软件收到安

全参数,就会与下在软件沟通,一起解开/管理需要的模组。

4 结 语

由于Android平台的开放性,近年来智能手机市场呈爆炸性成长趋势,Android系统已逐

渐成为主流,但也因开放的特性,使得Android软件易遭受逆向攻击。因此,破解Android

龙源期刊网

Marke 的主要方法是反编译执行档,而要减缓这类攻击的方法有远端动态加载模组及混淆两

种技术,虽然这些技术都已经发展多年,但发展出一个可协助软件开发者加入混淆程序以及与

近端商店软件的程序的转换器未出现,而本方案的未来目标将朝此前进,包括开发一个转换器

以及一个可以整合软件开发流的软件超市平台。

参 考 文 献

[1] 董黎明,何鸿君.基于用户授权的恶意软件防护方法[J].微计算机应用,2010,

35(18):6165.

[2] 董黎明,何鸿君.Power Builder与Delphi相结合实现软件授权许可[J].电脑编

程技巧与维护,2009,26(3):5153.

[3] CHOW S, GU Y, JOHNSON H, et al. An approach to the

obfuscation of controlflow of sequential computer programs \[J\]. Computer

Science, 2001, 2200/2201: 144155.

[4] FUKUSHIMA K, KIYOMOTO S, TANAKA T. KAZUHIDE F.

Obfuscation mechanism in conjunction with tamperproof module \[C\]// 2009

International Conference on Computational Science and Engineering. Vancouver,

BC: CSE, 2009: 665670.

[5] LI Gong, SHACHAM N. Elements of trusted multicasting \[C\]//

Proceedings of 1994 International Conference on Network Protocols. Boston,

Massachusetts: IEEE,1994: 2330.

[6] HOLLABAUGH Craig. Embedded Linux: hardware, software and

interfacing \[M\]. \[S.l.\]: Addison Wesley, 2002.

作者简介: 李 莉 女,1979年出生,河北沧州人,硕士,讲师。主要研究方向为计

算机应用。