应用安装包的发布方法、验证方法和装置
技术领域
本说明书一个或多个实施例涉及计算机领域,尤其涉及应用安装包的发布方法、验证方法和装置。
背景技术
随着手机、平板等智能设备的普及,应用(application,APP)的更新速度也逐渐加快,通常需要将应用安装包发布到网络上以供用户下载安装。在APP快速发展背景下,现行的应用安装包的发布方法中,主要通过各大应用商店发布应用安装包,应用商店作为主要APP发布渠道存在被黑客攻击的风险,如果应用商店被攻击,则会影响大规模用户。同时,很多小网站也会发布应用安装包,从而网上有很多山寨版的应用安装包,难以鉴别应用安装包的真假,并且这些山寨版的应用安装包有很多是恶意的应用安装包,例如病毒和木马APP,恶意APP的作者难以追溯。
因此,希望能有改进的方案,使得应用安装包的发布能够保证应用安装包的真实性以及可追溯性。
发明内容
本说明书一个或多个实施例描述了一种应用安装包的发布方法、验证方法和装置,使得应用安装包的发布能够保证应用安装包的真实性以及可追溯性。
第一方面,提供了一种应用安装包的发布方法,所述方法由已加入第一网络作为网络中第一节点的应用开发者执行,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一节点的公钥;方法包括:
所述应用开发者获取第一应用的应用信息,所述第一应用的应用信息包括所述第一节点的公钥;
所述应用开发者利用所述第一节点的私钥对所述第一应用的应用信息进行签名计算得到第一签名信息;
所述应用开发者在所述可信网络中广播所述第一应用的应用信息和所述第一签名信息,以使所述可信网络中的第二节点根据所述第一节点的公钥对所述第一签名信息进行验证,并在验证成功后存储所述第一应用的应用信息;
所述应用开发者利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到第二签名信息;
所述应用开发者通过第二网络发布所述第一应用的安装包和所述第二签名信息,以使应用获取者根据从所述可信网络获取的所述第一节点的公钥对所述第二签名信息进行验证,并至少根据签名验证结果确定所述安装包是否为可信安装包。
在一种可能的实施方式中,所述可信网络为区块链网络,所述第一应用的应用信息以区块的形式进行存储。
在一种可能的实施方式中,所述第一应用的应用信息还包括:
所述第一应用的安装包的标识信息和所述第一应用的安装包的属性信息。
进一步地,所述第一应用的安装包的标识信息包括以下至少一种信息:
所述第一应用的名称、所述第一应用的安装包的包名、所述第一应用的安装包的版本。
进一步地,所述第一应用的安装包的属性信息包括以下至少一种信息:
所述第一应用的安装包的大小、所述第一应用的安装包的开发时间、所述第一应用的安装包的哈希值。
第二方面,提供了一种应用安装包的验证方法,方法包括:
应用获取者从第一网络中获取第一应用的应用信息,所述第一应用的应用信息包括第一节点的公钥;其中,所述第一节点为已加入所述第一网络的应用开发者,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一应用的应用信息;
所述应用获取者通过第二网络获取所述第一应用的安装包,以及签名信息,所述签名信息是利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到的;
所述应用获取者利用所述第一节点的公钥对所述签名信息进行验证,得到签名验证结果;
所述应用获取者至少根据所述签名验证结果,确定所述安装包是否为可信安装包。
在一种可能的实施方式中,所述可信网络为区块链网络,所述第一应用的应用信息以区块的形式进行存储。
在一种可能的实施方式中,所述第一应用的应用信息还包括:
所述第一应用的安装包的标识信息和所述第一应用的安装包的属性信息。
进一步地,所述第一应用的安装包的标识信息包括以下至少一种信息:
所述第一应用的名称、所述第一应用的安装包的包名、所述第一应用的安装包的版本。
进一步地,所述第一应用的安装包的属性信息包括以下至少一种信息:
所述第一应用的安装包的大小、所述第一应用的安装包的开发时间、所述第一应用的安装包的哈希值。
进一步地,所述应用获取者至少根据所述签名验证结果,确定所述安装包是否为可信安装包,包括:
在所述签名验证通过的情况下,所述应用获取者通过解析所述第一应用的安装包,获得所述第一应用的安装包的属性信息;
将解析得到的所述第一应用的安装包的属性信息与从所述可信网络中获取的所述应用信息中的属性信息进行比对,得到比对结果;
所述应用获取者根据所述比对结果,确定所述安装包是否为可信安装包。
在一种可能的实施方式中,所述第一应用的应用信息还包括:
所述第一应用的安装包的版本;
所述应用获取者通过第二网络获取所述第一应用的安装包,以及签名信息之前,所述方法还包括:
所述应用获取者确定已安装所述第一应用,且所述第一应用的版本发生了更新;或者,
所述应用获取者确定未安装所述第一应用。
第三方面,提供了一种应用安装包的发布装置,所述装置设置于已加入第一网络作为网络中第一节点的应用开发者中,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一节点的公钥;装置包括:
获取单元,用于获取第一应用的应用信息,所述第一应用的应用信息包括所述第一节点的公钥;
签名单元,用于利用所述第一节点的私钥对所述获取单元获取的第一应用的应用信息进行签名计算得到第一签名信息;
广播单元,用于在所述可信网络中广播所述获取单元获取的第一应用的应用信息和所述签名单元得到的第一签名信息,以使所述可信网络中的第二节点根据所述第一节点的公钥对所述第一签名信息进行验证,并在验证成功后存储所述第一应用的应用信息;
所述签名单元,还用于利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到第二签名信息;
发布单元,用于通过第二网络发布所述第一应用的安装包和所述签名单元得到的第二签名信息,以使应用获取者根据从所述可信网络获取的所述第一节点的公钥对所述第二签名信息进行验证,并至少根据签名验证结果确定所述安装包是否为可信安装包。
第四方面,提供了一种应用安装包的验证装置,装置包括:
获取单元,用于从第一网络中获取第一应用的应用信息,所述第一应用的应用信息包括第一节点的公钥;其中,所述第一节点为已加入所述第一网络的应用开发者,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一应用的应用信息;
所述获取单元,还用于通过第二网络获取所述第一应用的安装包,以及签名信息,所述签名信息是利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到的;
验证单元,用于利用所述获取单元获取的第一节点的公钥对所述签名信息进行验证,得到签名验证结果;
确定单元,用于至少根据所述验证单元得到的签名验证结果,确定所述获取单元获取的安装包是否为可信安装包。
第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。
第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
通过本说明书实施例提供的方法和装置,应用开发者预先加入第一网络作为网络中的第一节点,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一节点的公钥;当应用开发者进行应用发布时,首先在可信网络中广播第一应用的应用信息和第一签名信息,以使所述可信网络中的第二节点根据所述第一节点的公钥对所述第一签名信息进行验证,并在验证成功后存储所述第一应用的应用信息,然后应用开发者通过第二网络发布所述第一应用的安装包和第二签名信息,以使应用获取者根据从所述可信网络获取的所述第一节点的公钥对所述第二签名信息进行验证,并至少根据签名验证结果确定所述安装包是否为可信安装包。由上可见,应用开发者在进行应用发布时,不仅发布了该应用的应用安装包,而且在可信网络中发布了该应用的应用信息,由于可信网络是去中心化的,因此能够保证应用信息的真实性,相应地保证与该应用信息相匹配的应用安装包的真实性,并且由于应用开发者本身已加入该可信网络,因此能够实现与该应用信息相匹配的应用安装包的可追溯性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的应用安装包的发布方法流程图;
图3示出根据一个实施例的应用安装包的验证方法流程图;
图4示出根据一个实施例的应用安装包的发布装置的示意性框图;
图5示出根据一个实施例的应用安装包的验证装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及应用安装包的发布和应用安装包的验证,应用开发者11预先加入第一网络12作为网络中的第一节点,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络12为去中心化的可信网络,例如,区块链网络,所述可信网络包括多个节点,所述多个节点保存了所述第一节点的公钥。
在一个示例中,应用开发者11在进行应用发布时,不仅在第二网络发布了该应用的应用安装包,而且在可信网络12中发布了该应用的应用信息,上述应用信息中包括第一节点的公钥,由于可信网络是去中心化的,因此能够保证应用信息的真实性,相应地保证与该应用信息相匹配的应用安装包的真实性,并且由于应用开发者11本身已加入该可信网络,因此能够实现与该应用信息相匹配的应用安装包的可追溯性。
相应地,应用获取者13从第一网络12中获取第一应用的应用信息,通过第二网络获取所述第一应用的安装包,以及签名信息,所述签名信息是利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到的;所述应用获取者13利用所述应用信息中包括的第一节点的公钥对所述签名信息进行验证,得到签名验证结果;所述应用获取者13至少根据所述签名验证结果,确定所述安装包是否为可信安装包。
由上可见,通过应用开发者11在可信网络12中发布应用的应用信息,从而能够确保应用的应用信息是可信的,该应用信息中包括的应用开发者的公钥是可信的,相应地,应用获取者13利用应用开发者的公钥来对安装包进行签名验证的结果是可信的,从而可以识别应用的安装包是否为可信安装包。
需要说明的是,本说明书实施例中对于第二网络的类型不做限定,在一个示例中,第二网络为通常的互联网,应用开发者可以在现有的应用商店中发布应用的安装包。该示例可以实现与现有的发布平台的兼容,并节约可信网络的存储资源。
可以理解的是,第二网络也可以为去中心化的可信网络,例如,第二网络可以与第一网络为同一去中心化的可信网络,也就是说,应用的安装包也可以通过可信网络发布,此时应用的安装包也是可信的,无需应用获取方对安装包进行验证。
此外,本说明书实施例中提到的应用不仅包括用于移动终端(例如手机)的移动APP,还包括用于非移动终端(例如个人电脑)的APP。也就是说,应用获取者13既可以包括移动终端,也可以包括非移动终端。
图2示出根据一个实施例的应用安装包的发布方法流程图,所述方法由已加入第一网络作为网络中第一节点的应用开发者执行,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一节点的公钥。如图2所示,该实施例中应用安装包的发布方法包括以下步骤:步骤21,应用开发者获取第一应用的应用信息,所述第一应用的应用信息包括所述第一节点的公钥;步骤22,应用开发者利用所述第一节点的私钥对所述第一应用的应用信息进行签名计算得到第一签名信息;步骤23,应用开发者在所述可信网络中广播所述第一应用的应用信息和所述第一签名信息,以使所述可信网络中的第二节点根据所述第一节点的公钥对所述第一签名信息进行验证,并在验证成功后存储所述第一应用的应用信息;步骤24,应用开发者利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到第二签名信息;步骤25,应用开发者通过第二网络发布所述第一应用的安装包和所述第二签名信息,以使应用获取者根据从所述可信网络获取的所述第一节点的公钥对所述第二签名信息进行验证,并至少根据签名验证结果确定所述安装包是否为可信安装包。下面描述以上各个步骤的具体执行方式。
首先在步骤21,应用开发者获取第一应用的应用信息,所述第一应用的应用信息包括所述第一节点的公钥。可以理解的是,应用开发者具体为第一应用的应用开发者,也为第一应用的发布方。应用开发者为可信网络中的第一节点,第一节点的公钥即应用开发者的公钥。
在一个示例中,所述可信网络为区块链网络,所述第一应用的应用信息以区块的形式进行存储。
以区块链网络为例,任何一个应用开发者都可以加入到区块链网络,作为区块链网络的一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一区块都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一个区块的前世今生。
可选地,所述第一应用的应用信息还包括:
所述第一应用的安装包的标识信息和所述第一应用的安装包的属性信息。
进一步地,所述第一应用的安装包的标识信息包括以下至少一种信息:
所述第一应用的名称、所述第一应用的安装包的包名、所述第一应用的安装包的版本。
进一步地,所述第一应用的安装包的属性信息包括以下至少一种信息:
所述第一应用的安装包的大小、所述第一应用的安装包的开发时间、所述第一应用的安装包的哈希值。
接着在步骤22,应用开发者利用所述第一节点的私钥对所述第一应用的应用信息进行签名计算得到第一签名信息。可以理解的是,第一节点的私钥与第一节点的公钥为一对密钥。
本说明实施例中,可以采用常用的数字签名技术,数字签名涉及到一个哈希函数、应用开发者的公钥、应用开发者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。
在一个示例中,应用开发者用一个哈希函数从应用信息中生成摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为应用信息的数字签名。
然后在步骤23,应用开发者在所述可信网络中广播所述第一应用的应用信息和所述第一签名信息,以使所述可信网络中的第二节点根据所述第一节点的公钥对所述第一签名信息进行验证,并在验证成功后存储所述第一应用的应用信息。可以理解的是,该步骤23用于可信开发者验证。上述第二节点可以为所述可信网络中除第一节点之外的任一节点。
在一个示例中,第二节点首先用与第一节点一样的哈希函数从接收到的应用信息中计算出摘要,接着再用第一节点的公钥来对应用信息附加的数字签名进行解密,如果这两个摘要相同、那么第二节点就能确认该数字签名是第一节点的。
再然后在步骤24,应用开发者利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到第二签名信息。
其中,可以采用常用的数字签名技术,在此不做赘述。
最后在步骤25,应用开发者通过第二网络发布所述第一应用的安装包和所述第二签名信息,以使应用获取者根据从所述可信网络获取的所述第一节点的公钥对所述第二签名信息进行验证,并至少根据签名验证结果确定所述安装包是否为可信安装包。
可选地,当第一应用的应用信息还包括所述第一应用的安装包的属性信息时,可以在签名验证结果为验证通过时,进一步根据属性信息确定所述安装包是否为可信安装包。
在一个示例中,应用开发者在完成应用开发之后,使用私钥对应用安装包完成签名,将应用安装包和签名通过互联网进行发布;并且,提取应用安装包的标识信息和应用安装包的属性信息组成一个区块,将该区块广播到区块链网络中,并最终获得共识挂载在区块链网络中。如果攻击者企图伪造某个应用开发者向区块链网络中广播恶意区块数据,会因为公钥不同而被识别。
通过本说明书实施例提供的方法,应用开发者在进行应用发布时,不仅发布了该应用的应用安装包,而且在可信网络中发布了该应用的应用信息,由于可信网络是去中心化的,因此能够保证应用信息的真实性,相应地保证与该应用信息相匹配的应用安装包的真实性,并且由于应用开发者本身已加入该可信网络,因此能够实现与该应用信息相匹配的应用安装包的可追溯性。
图3示出根据一个实施例的应用安装包的验证方法流程图,所述方法由应用获取者执行,该应用获取者可以访问第一网络和第二网络。如图3所示,该实施例中应用安装包的验证方法包括以下步骤:步骤31,应用获取者从第一网络中获取第一应用的应用信息,所述第一应用的应用信息包括第一节点的公钥;其中,所述第一节点为已加入所述第一网络的应用开发者,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一应用的应用信息;步骤32,应用获取者通过第二网络获取所述第一应用的安装包,以及签名信息,所述签名信息是利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到的;步骤33,应用获取者利用所述第一节点的公钥对所述签名信息进行验证,得到签名验证结果;步骤34,应用获取者至少根据所述签名验证结果,确定所述安装包是否为可信安装包。下面描述以上各个步骤的具体执行方式。
首先在步骤31,应用获取者从第一网络中获取第一应用的应用信息,所述第一应用的应用信息包括第一节点的公钥;其中,所述第一节点为已加入所述第一网络的应用开发者,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一应用的应用信息。
可以理解的是,第一节点具体为第一应用的应用开发者,也为第一应用的应用发布者。
在一个示例中,所述可信网络为区块链网络,所述第一应用的应用信息以区块的形式进行存储。
在一个示例中,所述第一应用的应用信息还包括:
所述第一应用的安装包的标识信息和所述第一应用的安装包的属性信息。
进一步地,所述第一应用的安装包的标识信息包括以下至少一种信息:
所述第一应用的名称、所述第一应用的安装包的包名、所述第一应用的安装包的版本。
进一步地,所述第一应用的安装包的属性信息包括以下至少一种信息:
所述第一应用的安装包的大小、所述第一应用的安装包的开发时间、所述第一应用的安装包的哈希值。
接着在步骤32,应用获取者通过第二网络获取所述第一应用的安装包,以及签名信息,所述签名信息是利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到的。
在一个示例中,第二网络为通常的互联网,应用获取者可以通过访问应用商店获取第一应用的安装包。
然后在步骤33,应用获取者利用所述第一节点的公钥对所述签名信息进行验证,得到签名验证结果。
其中,签名验证结果具体为签名验证通过或签名验证未通过。
可以理解的是,第一节点的私钥和第一节点的公钥为一对密钥。如果第一应用的应用开发者为应用开发者甲,应用开发者乙伪造了第一应用的安装包,由于应用开发者乙通常不会有应用开发者甲的私钥,因此只能对第一应用的安装包用自己的私钥(应用开发者乙的私钥)进行签名,而从可信网络中获取的应用开发者的公钥为应用开发者甲的公钥,应用开发者甲的公钥与应用开发者乙的私钥不匹配,则签名验证未通过。
最后在步骤34,应用获取者至少根据所述签名验证结果,确定所述安装包是否为可信安装包。
在一个示例中,应用获取者可以仅根据所述签名验证结果,确定所述安装包是否为可信安装包。例如,应用获取者在所述签名验证结果为签名验证通过时,确定所述安装包为可信安装包;应用获取者在所述签名验证结果为签名验证未通过时,确定所述安装包不为可信安装包。
在另一个示例中,在所述签名验证通过的情况下,所述应用获取者通过解析所述第一应用的安装包,获得所述第一应用的安装包的属性信息;将解析得到的所述第一应用的安装包的属性信息与从所述可信网络中获取的所述应用信息中的属性信息进行比对,得到比对结果;所述应用获取者根据所述比对结果,确定所述安装包是否为可信安装包。例如,当所述比对结果为一致时,确定所述安装包为可信安装包;当所述比对结果为不一致时,确定所述安装包不为可信安装包。
此外,在一个示例中,所述第一应用的应用信息还包括:所述第一应用的安装包的版本;所述应用获取者首先确定已安装所述第一应用,且所述第一应用的版本发生了更新;或者,所述应用获取者确定未安装所述第一应用,然后再通过第二网络获取所述第一应用的安装包,以及签名信息。
在一个示例中,用户的手机操作系统或者手机集成特定的软件,实现对移动APP分发区块链网络(即前述第一网络)的访问,首先索引用户手机中安装的APP的版本,如果APP的版本有更新,则从移动APP分发区块链网络中拉取最新版本的该APP的应用信息,该应用信息中包括应用开发者的公钥,并通过互联网(即前述第二网络)获取该APP的应用安装包,以及利用应用开发者的私钥得到的签名信息,通过从移动APP分发区块链网络获取的应用开发者的公钥对所述签名信息进行验证,并在签名验证结果通过后,进一步解析该APP的应用安装包获取该APP的应用信息,将解析得到的该APP的应用信息与从移动APP分发区块链网络获取的该APP的应用信息进行比对,防止手机安装了虚假山寨APP。
通过本说明书实施例提供的方法,应用获取者在进行应用获取时,不仅获取了该应用的应用安装包,而且在可信网络中获取了该应用的应用信息,由于可信网络是去中心化的,因此能够保证应用信息的真实性,应用获取者通过判断应用信息与应用安装包是否匹配来验证应用安装包的真实性,并且由于应用开发者本身已加入该可信网络,因此能够实现与该应用信息相匹配的应用安装包的可追溯性。
基于前述实施例,应用开发者通过在去中心化的可信网络(例如区块链网络)中分发APP的应用信息,防止了单点APP分发渠道被攻击后导致的恶性后果。一款APP的各个版本的应用信息都在去中心化的可信网络中留存,应用获取者可以通过本地APP的应用信息与可信网络中的应用信息进行对比,防止安装恶意或山寨APP。每个应用开发者在可信网络中发布的APP都可追溯且无法抵赖,对恶意APP的作者可以快速追溯定位。
根据另一方面的实施例,还提供一种应用安装包的发布装置,所述装置设置于已加入第一网络作为网络中第一节点的应用开发者中,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一节点的公钥。图4示出根据一个实施例的应用安装包的发布装置的示意性框图。如图4所示,该装置400包括:
获取单元41,用于获取第一应用的应用信息,所述第一应用的应用信息包括所述第一节点的公钥;
签名单元42,用于利用所述第一节点的私钥对所述获取单元41获取的第一应用的应用信息进行签名计算得到第一签名信息;
广播单元43,用于在所述可信网络中广播所述获取单元41获取的第一应用的应用信息和所述签名单元42得到的第一签名信息,以使所述可信网络中的第二节点根据所述第一节点的公钥对所述第一签名信息进行验证,并在验证成功后存储所述第一应用的应用信息;
所述签名单元42,还用于利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到第二签名信息;
发布单元44,用于通过第二网络发布所述第一应用的安装包和所述签名单元42得到的第二签名信息,以使应用获取者根据从所述可信网络获取的所述第一节点的公钥对所述第二签名信息进行验证,并至少根据签名验证结果确定所述安装包是否为可信安装包。
可选地,作为一个实施例,所述可信网络为区块链网络,所述第一应用的应用信息以区块的形式进行存储。
可选地,作为一个实施例,所述第一应用的应用信息还包括:
所述第一应用的安装包的标识信息和所述第一应用的安装包的属性信息。
进一步地,所述第一应用的安装包的标识信息包括以下至少一种信息:
所述第一应用的名称、所述第一应用的安装包的包名、所述第一应用的安装包的版本。
进一步地,所述第一应用的安装包的属性信息包括以下至少一种信息:
所述第一应用的安装包的大小、所述第一应用的安装包的开发时间、所述第一应用的安装包的哈希值。
通过本说明书实施例提供的装置,应用开发者在进行应用发布时,不仅通过发布单元44发布了该应用的应用安装包,而且通过广播单元43在可信网络中发布了该应用的应用信息,由于可信网络是去中心化的,因此能够保证应用信息的真实性,相应地保证与该应用信息相匹配的应用安装包的真实性,并且由于应用开发者本身已加入该可信网络,因此能够实现与该应用信息相匹配的应用安装包的可追溯性。
根据另一方面的实施例,还提供一种应用安装包的验证装置。如图5所示,该装置500包括:
获取单元51,用于从第一网络中获取第一应用的应用信息,所述第一应用的应用信息包括第一节点的公钥;其中,所述第一节点为已加入所述第一网络的应用开发者,所述第一节点具有密钥对,所述密钥对包括所述第一节点的公钥和所述第一节点的私钥,所述第一网络为去中心化的可信网络,所述可信网络包括多个节点,所述多个节点保存了所述第一应用的应用信息;
所述获取单元51,还用于通过第二网络获取所述第一应用的安装包,以及签名信息,所述签名信息是利用所述第一节点的私钥对所述第一应用的安装包进行签名计算得到的;
验证单元52,用于利用所述获取单元51获取的第一节点的公钥对所述签名信息进行验证,得到签名验证结果;
确定单元53,用于至少根据所述验证单元52得到的签名验证结果,确定所述获取单元51获取的安装包是否为可信安装包。
可选地,作为一个实施例,所述可信网络为区块链网络,所述第一应用的应用信息以区块的形式进行存储。
可选地,作为一个实施例,所述第一应用的应用信息还包括:
所述第一应用的安装包的标识信息和所述第一应用的安装包的属性信息。
进一步地,所述第一应用的安装包的标识信息包括以下至少一种信息:
所述第一应用的名称、所述第一应用的安装包的包名、所述第一应用的安装包的版本。
进一步地,所述第一应用的安装包的属性信息包括以下至少一种信息:
所述第一应用的安装包的大小、所述第一应用的安装包的开发时间、所述第一应用的安装包的哈希值。
进一步地,所述确定单元53,具体用于:
在所述验证单元52得到的签名验证结果为签名验证通过的情况下,通过解析所述第一应用的安装包,获得所述第一应用的安装包的属性信息;
将解析得到的所述第一应用的安装包的属性信息与从所述可信网络中获取的所述应用信息中的属性信息进行比对,得到比对结果;
根据所述比对结果,确定所述安装包是否为可信安装包。
可选地,作为一个实施例,所述第一应用的应用信息还包括:
所述第一应用的安装包的版本;
所述确定单元53,还用于在所述获取单元51通过第二网络获取所述第一应用的安装包,以及签名信息之前,确定已安装所述第一应用,且所述第一应用的版本发生了更新;或者,确定未安装所述第一应用。
通过本说明书实施例提供的装置,获取单元51在进行应用获取时,不仅获取了该应用的应用安装包,而且在可信网络中获取了该应用的应用信息,由于可信网络是去中心化的,因此能够保证应用信息的真实性,验证单元52和确定单元53通过判断应用信息与应用安装包是否匹配来验证应用安装包的真实性,并且由于应用开发者本身已加入该可信网络,因此能够实现与该应用信息相匹配的应用安装包的可追溯性。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2或图3所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2或图3所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。