实现软件安全交付及分发的方法

文档序号:7928839阅读:324来源:国知局
专利名称:实现软件安全交付及分发的方法
技术领域
本发明涉及软件应用程序的安全协议技术,特别涉及软件的安全交付及分发的方法。
背景技术
随着互联网技术及嵌入式软件技术的不断发展,终端网络化、智能化趋势明显,各种嵌入式终端的处理能力、存储能力不断提升,很多终端比如智能手机、各种PAD类产品及智能电视等已经逐渐成为人们的工作及娱乐平台。伴随着各种智能终端的日渐普及,针对各种智能终端的软件也大量出现,由此出现了众多的软件开发者团队、独立的软件发布运营商。由于各方利益诉求点不同,针对软件的交付、发布及终端使用存在不少安全问题。对软件开发者来说,高价值的软件需要安全交付到软件发布运营商手中;对软件发布运营商来说,也存在着如何有效验证众多的由自由软件开发者交付的软件,并如何安全可控的将软件提供给终端用户的问题;同时,对终端用户而言,既要能安全可靠的获取想要的软件, 又要能对软件的来源合法性和完整性进行确认;另外,一旦软件运行过程中出现安全漏洞, 终端用户很难界定软件发布运营商和第三方软件开发者之间的责任。

发明内容
本发明目的是克服目前软件的交付及分发存在安全问题的缺点,提供一种实现软件安全交付及分发的方法。本发明为解决上述技术问题所采用的技术方案是,实现软件安全交付及分发的方法,其特征在于,包括以下步骤a.软件开发者开发完成某应用软件后,进入软件安全交付程序对该软件进行封包、签名,得到原始开发者软件包,再经过加密,形成开发者软件包,并交付给软件发布运营商;b.软件发布运营商接收到开发者软件包后,解密获得原始开发者软件包,并对该原始开发者软件包进行签名验证,若通过签名验证则进入下一步,若未通过签名验证则提示失败并退出;c.软件发布运营商在适当的终端平台上测试该原始开发者软件包中的软件,若测试通过则进入下一步,若测试未通过则提示失败并退出;d.软件发布运营商将该软件或该软件及相关信息使用软件加密密钥进行加密,并进行封包签名,得到发布者软件包,并将其发布到相应的软件发布服务平台上;e.终端用户在相应的软件发布服务平台上下载某发布者软件包时,软件发布服务平台对该终端进行认证和下载权限鉴定,若认证通过且确认该终端拥有下载该发布者软件包的权限后,将该发布者软件包中使用的软件加密密钥经加密后发送给终端,再进入下一步,若未通过认证或该终端没有权限,则提示终端,并切断与终端的连接;f.终端获得该发布者软件包后对该发布者软件包进行签名验证,若签名验证通过则进入下一步,若未通过则提示用户该发布者软件包未通过签名验证;g.终端使用e步骤得到的该发布者软件包中使用的软件加密密钥解密该发布者软件包,安装该软件。具体的,所述步骤a中,软件开发者在生成开发者软件包之前,必须拥有自身的开发者软件签名证书及其私钥和软件发布运营商公钥证书,且自身的开发者软件签名证书和软件发布运营商公钥证书能够通过证书链认证或交叉认证互相信任。进一步的,步骤a包括以下步骤al.软件开发者开发完成某应用软件后,进入软件安全交付程序,对待签名信息进行组织封包,封包内容至少包括该软件自身及封装指示信息;a2.使用开发者软件签名证书私钥对该封包后的待签名信息进行签名,得到签名信息,然后生成原始软件证书,并将签名信息封装进原始软件证书中,再将待签名信息和生成的原始软件证书进行组合,得到原始开发者软件包;a3.使用软件发布运营商公钥对原始开发者软件包进行加密,得到开发者软件包, 再交付给软件发布运营商。再进一步的,步骤al所述封包内容包括该软件自身、封装指示信息、发布者信息及证书链。具体的,所述步骤b中,软件发布运营商在对原始开发者软件包进行签名验证之前,必须拥有自身的发布者软件签名证书及其私钥和软件开发者公钥证书,且自身的发布者软件签名证书和软件开发者公钥证书能够通过证书链认证或交叉认证互相信任。再进一步的,所述步骤b包括以下步骤bl.软件发布运营商接收到开发者软件包后,使用发布者软件签名证书私钥对开发者软件包进行解密,得到原始开发者软件包;b2.对原始开发者软件包进行签名验证,验证原始开发者软件包的完整性及来源合法性,若签名验证通过则进入下一步,若未通过则提示失败并退出;所述步骤c包括以下步骤Cl.软件发布运营商根据原始开发者软件包的封装指示信息获取该软件自身;c2.将该软件自身安装在在适当的终端平台上进行测试,若测试通过则进入下一步,若测试未通过则提示失败并退出;所述步骤d包括以下步骤dl.软件发布运营商使用软件加密密钥对软件自身或软件自身及相关信息进行加密,得到密文软件信息;d2.对待签名信息进行组织封包,封包内容至少包括密文软件信息及封装指示信息;d3.使用软件发布运营商软件签名证书私钥对该封包后的待签名信息进行签名, 得到签名信息;d4.生成发布者软件证书,并将签名信息封装进发布者软件证书中,再将待签名信息和生成的发布者软件证书进行组合,得到发布者软件包;d5.软件发布运营商将该发布者软件包发布到相应的软件发布服务平台上。具体的,所述步骤1^2中,对原始开发者软件包的签名验证中,先验证原始软件证书的合法性,再验证待签名信息的完整性。进一步的,步骤d2所述封包内容包括密文软件信息、封装指示信息、发布者信息及证书链。具体的,所述步骤e中,终端用户在相应的软件发布服务平台上下载某发布者软件包之前,必须拥有自身的唯一的终端用户证书及其私钥,且和软件发布运营商公钥证书之间能够通过证书链认证或交叉认证互相信任。再进一步的,步骤e所述将该发布者软件包中使用的软件加密密钥经加密后发送给终端,其具体步骤为,将该发布者软件包中使用的软件加密密钥使用终端用户公钥进行加密,得到密文软件加密密钥,再传输给终端。具体的,所述步骤f包括以下步骤Π.终端获得该发布者软件包后对该发布者软件包中的发布者软件证书通过软件发布服务平台上的发布者软件证书进行验证,若验证通过则进入下一步,若未通过则提示用户该发布者软件包未通过签名验证。本发明的有益效果是,通过上述实现软件安全交付及分发的方法,由于在软件开发者向软件发布运营商提供软件时进行加密及认证,且软件发布运营商也进行了加密及认证后再由终端用户进行下载,且由于密文软件信息的存在,终端用户也需要在得到软件发布运营商的认证和授权后才能进行安装,保证了上述传输过程的安全,且软件发布运营商在对待签名信息进行封包时,可以将开发者信息封装在里面,便于后续程序运行过程中出现安全漏洞时的责任追溯认定。
具体实施例方式本发明的实现软件安全交付及分发的方法为首先软件开发者开发完成某应用软件后,进入软件安全交付程序对该软件进行封包、签名,得到原始开发者软件包,再经过加密,形成开发者软件包,并交付给软件发布运营商,软件发布运营商在接收到开发者软件包后,解密获得原始开发者软件包,并对该原始开发者软件包进行签名验证,若未通过签名验证则提示失败并退出,若通过签名验证则在适当的终端平台上测试该原始开发者软件包中的软件,若测试未通过则提示失败并退出,若测试通过则将该软件或该软件及相关信息使用软件加密密钥进行加密,并进行封包签名,得到发布者软件包,并将其发布到相应的软件发布服务平台上,当终端用户在相应的软件发布服务平台上下载某发布者软件包时,软件发布服务平台对该终端进行认证和下载权限鉴定,若未通过认证或该终端没有权限,则提示终端,并切断与终端的连接,若认证通过且确认该终端拥有下载该发布者软件包的权限后,将该发布者软件包中使用的软件加密密钥经加密后发送给终端,终端获得该发布者软件包后对该发布者软件包进行签名验证,若未通过则提示用户该发布者软件包未通过签名验证,若签名验证通过则终端使用之前得到的该发布者软件包中使用的软件加密密钥解密该发布者软件包,安装该软件并使用。实施例本例的软件开发者在生成开发者软件包之前,必须拥有自身的开发者软件签名证书及其私钥和软件发布运营商公钥证书,且自身的开发者软件签名证书和软件发布运营商公钥证书能够通过证书链认证或交叉认证互相信任;软件发布运营商在对原始开发者软件包进行签名验证之前,必须拥有自身的发布者软件签名证书及其私钥和软件开发者公钥证书,且自身的发布者软件签名证书和软件开发者公钥证书能够通过证书链认证或交叉认证互相信任;终端用户在相应的软件发布服务平台上下载某发布者软件包之前,必须拥有自身的唯一的终端用户证书及其私钥,且和软件发布运营商公钥证书之间能够通过证书链认证或交叉认证互相信任。首先软件开发者开发完成某应用软件后,进入软件安全交付程序对该软件进行封包、签名,得到原始开发者软件包,再经过加密,形成开发者软件包,并交付给软件发布运营商,软件发布运营商在接收到开发者软件包后,解密获得原始开发者软件包,并对该原始开发者软件包进行签名验证,若未通过签名验证则提示失败并退出,若通过签名验证则在适当的终端平台上测试该原始开发者软件包中的软件,若测试未通过则提示失败并退出,若测试通过则将该软件或该软件及相关信息使用软件加密密钥进行加密,并进行封包签名, 得到发布者软件包,并将其发布到相应的软件发布服务平台上,当终端用户在相应的软件发布服务平台上下载某发布者软件包时,软件发布服务平台对该终端进行认证和下载权限鉴定,若未通过认证或该终端没有权限,则提示终端,并切断与终端的连接,若认证通过且确认该终端拥有下载该发布者软件包的权限后,将该发布者软件包中使用的软件加密密钥经加密后发送给终端,终端获得该发布者软件包后对该发布者软件包进行签名验证,若未通过则提示用户该发布者软件包未通过签名验证,若签名验证通过则终端使用之前得到的该发布者软件包中使用的软件加密密钥解密该发布者软件包,安装该软件并使用。其中,软件开发者开发完成某应用软件后到交付软件发布运营商之间的具体步骤可以为当软件开发者开发完成某应用软件后,进入软件安全交付程序,对待签名信息进行组织封包,封包内容至少包括该软件自身及封装指示信息,还可以包括发布者信息及证书链等相关信息,再使用开发者软件签名证书私钥对该封包后的待签名信息进行签名,得到签名信息,然后生成原始软件证书,并将签名信息封装进原始软件证书中,再将待签名信息和生成的原始软件证书进行组合,得到原始开发者软件包,然后使用软件发布运营商公钥对原始开发者软件包进行加密,得到开发者软件包,再交付给软件发布运营商。软件发布运营商接收到开发者软件包到将发布者软件包发布到软件发布服务平台之间的具体步骤可以为当软件发布运营商接收到开发者软件包后,使用发布者软件签名证书私钥对开发者软件包进行解密,得到原始开发者软件包,再对原始开发者软件包进行签名验证,验证原始开发者软件包的完整性及来源合法性,若未通过则提示失败并退出, 若签名验证通过则根据原始开发者软件包的封装指示信息获取该软件自身,再将该软件自身安装在在适当的终端平台上进行测试,若测试未通过则提示失败并退出,若测试通过则使用软件加密密钥对软件自身或软件自身及相关信息进行加密,得到密文软件信息,再对待签名信息进行组织封包,封包内容至少包括密文软件信息及封装指示信息,还可以包括发布者信息及证书链等相关信息,然后使用软件发布运营商软件签名证书私钥对该封包后的待签名信息进行签名,得到签名信息,再生成发布者软件证书,并将签名信息封装进发布者软件证书中,再将待签名信息和生成的发布者软件证书进行组合,得到发布者软件包,最后将该发布者软件包发布到相应的软件发布服务平台上,其中,对原始开发者软件包的签名验证中,先验证原始软件证书的合法性,再验证待签名信息的完整性。将该发布者软件包中使用的软件加密密钥经加密后发送给终端的具体步骤可以为首先将该发布者软件包中使用的软件加密密钥使用终端用户公钥进行加密,得到密文软件加密密钥,再传输给终端。 终端获得该发布者软件包后对该发布者软件包进行签名验证的具体步骤可以为 终端在获得该发布者软件包后对该发布者软件包中的发布者软件证书通过软件发布服务平台上的发布者软件证书进行验证,若未通过则提示用户该发布者软件包未通过签名验证,若验证通过则终端使用之前得到的该发布者软件包中使用的软件加密密钥解密该发布者软件包,安装该软件并使用。
权利要求
1.实现软件安全交付及分发的方法,其特征在于,包括以下步骤a.软件开发者开发完成某应用软件后,进入软件安全交付程序对该软件进行封包、签名,得到原始开发者软件包,再经过加密,形成开发者软件包,并交付给软件发布运营商;b.软件发布运营商接收到开发者软件包后,解密获得原始开发者软件包,并对该原始开发者软件包进行签名验证,若通过签名验证则进入下一步,若未通过签名验证则提示失败并退出;c.软件发布运营商在适当的终端平台上测试该原始开发者软件包中的软件,若测试通过则进入下一步,若测试未通过则提示失败并退出;d.软件发布运营商将该软件或该软件及相关信息使用软件加密密钥进行加密,并进行封包签名,得到发布者软件包,并将其发布到相应的软件发布服务平台上;e.终端用户在相应的软件发布服务平台上下载某发布者软件包时,软件发布服务平台对该终端进行认证和下载权限鉴定,若认证通过且确认该终端拥有下载该发布者软件包的权限后,将该发布者软件包中使用的软件加密密钥经加密后发送给终端,再进入下一步,若未通过认证或该终端没有权限,则提示终端,并切断与终端的连接;f.终端获得该发布者软件包后对该发布者软件包进行签名验证,若签名验证通过则进入下一步,若未通过则提示用户该发布者软件包未通过签名验证;g.终端使用e步骤得到的该发布者软件包中使用的软件加密密钥解密该发布者软件包,安装该软件。
2.根据权利要求1所述实现软件安全交付及分发的方法,其特征在于,所述步骤a中, 软件开发者在生成开发者软件包之前,必须拥有自身的开发者软件签名证书及其私钥和软件发布运营商公钥证书,且自身的开发者软件签名证书和软件发布运营商公钥证书能够通过证书链认证或交叉认证互相信任。
3.根据权利要求2所述实现软件安全交付及分发的方法,其特征在于,步步骤a包括以下步骤al.软件开发者开发完成某应用软件后,进入软件安全交付程序,对待签名信息进行组织封包,封包内容至少包括该软件自身及封装指示信息;a2.使用开发者软件签名证书私钥对该封包后的待签名信息进行签名,得到签名信息, 然后生成原始软件证书,并将签名信息封装进原始软件证书中,再将待签名信息和生成的原始软件证书进行组合,得到原始开发者软件包;a3.使用软件发布运营商公钥对原始开发者软件包进行加密,得到开发者软件包,再交付给软件发布运营商。
4.根据权利要求3所述实现软件安全交付及分发的方法,其特征在于,步骤al所述封包内容包括该软件自身、封装指示信息、发布者信息及证书链。
5.根据权利要求1或2或3或4所述实现软件安全交付及分发的方法,其特征在于,所述步骤b中,软件发布运营商在对原始开发者软件包进行签名验证之前,必须拥有自身的发布者软件签名证书及其私钥和软件开发者公钥证书,且自身的发布者软件签名证书和软件开发者公钥证书能够通过证书链认证或交叉认证互相信任。
6.根据权利要求5所述实现软件安全交付及分发的方法,其特征在于,所述步骤b包括以下步骤bl.软件发布运营商接收到开发者软件包后,使用发布者软件签名证书私钥对开发者软件包进行解密,得到原始开发者软件包;b2.对原始开发者软件包进行签名验证,验证原始开发者软件包的完整性及来源合法性,若签名验证通过则进入下一步,若未通过则提示失败并退出; 所述步骤c包括以下步骤Cl.软件发布运营商根据原始开发者软件包中的封装指示信息获取该软件自身; c2.将该软件自身安装在在适当的终端平台上进行测试,若测试通过则进入下一步,若测试未通过则提示失败并退出; 所述步骤d包括以下步骤dl.软件发布运营商使用软件加密密钥对软件自身或软件自身及相关信息进行加密, 得到密文软件信息;d2.对待签名信息进行组织封包,封包内容至少包括密文软件信息及封装指示信息; d3.使用软件发布运营商软件签名证书私钥对该封包后的待签名信息进行签名,得到签名信息;d4.生成发布者软件证书,并将签名信息封装进发布者软件证书中,再将待签名信息和生成的发布者软件证书进行组合,得到发布者软件包;d5.软件发布运营商将该发布者软件包发布到相应的软件发布服务平台上。
7.根据权利要求6所述实现软件安全交付及分发的方法,其特征在于,步骤d2所述封包内容包括密文软件信息、封装指示信息、发布者信息及证书链。
8.根据权利要求6所述实现软件安全交付及分发的方法,其特征在于,所述步骤e中, 终端用户在相应的软件发布服务平台上下载某发布者软件包之前,必须拥有自身的唯一的终端用户证书及其私钥,且和软件发布运营商公钥证书之间能够通过证书链认证或交叉认证互相信任。
9.根据权利要求8所述实现软件安全交付及分发的方法,其特征在于,步骤e所述将该发布者软件包中使用的软件加密密钥经加密后发送给终端,其具体步骤为,将该发布者软件包中使用的软件加密密钥使用终端用户公钥进行加密,得到密文软件加密密钥,再传输给终端。
10.根据权利要求6所述实现软件安全交付及分发的方法,其特征在于,所述步骤f包括以下步骤fl.终端获得该发布者软件包后对该发布者软件包中的发布者软件证书通过软件发布服务平台上的发布者软件证书进行验证,若验证通过则进入下一步,若未通过则提示用户该发布者软件包未通过签名验证。
全文摘要
本发明涉及软件应用程序的安全协议技术。本发明解决了现有软件的交付及分发存在的安全问题,提供了一种实现软件安全交付及分发的方法,其技术方案可概括为在软件开发者向软件发布运营商提供软件时进行加密及认证,且软件发布运营商也进行了加密及认证后再由终端用户进行下载。本发明的有益效果是,既保证了传输过程中的安全,又能验证待传输软件的完整性和来源合法性,适用于软件的交付及分发。
文档编号H04L29/06GK102271130SQ20111020669
公开日2011年12月7日 申请日期2011年7月22日 优先权日2011年7月22日
发明者刘贤洪, 杨金峰 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1