可加载执行文件的无损升级方法、安全芯片及存储介质与流程
未命名
09-22
阅读:73
评论:0
1.本技术涉及安全芯片
技术领域:
:,例如涉及一种可加载执行文件的无损升级方法、安全芯片及存储介质。
背景技术:
::2.目前,现代数字设备(例如笔记本电脑、手机等)都允许软件在有网络连接的情况下进行软件升级,升级的原因包括修复错误或添加新功能等。3.安全元件(secureelement,se)通常以安全芯片的形式部署在智能卡内。部署在安全芯片中的软件本身会局限于服务提供者的需求及用户的正确性,不可避免存在升级功能。由于安全芯片中的软件程序存在持久的应用实例(applet),这些应用实例由服务提供者使用用户数据和机密或敏感数据创建和个性化。同时,个性化过程是复杂和昂贵的,通常在软件升级的情况下不应该重复。4.在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:在现有的可执行加载文件(executableloadfile,elf)升级的过程中,elf的数据包在保存阶段需经过保存、清理和删除等序列。如果在数据清理序列或删除序列期间发生异常中断(例如异常掉电、死机等情况),则用户的敏感数据和elf存在丢失的风险。同时,应用实例也会处于错误的状态,并且原有的数据包也无法正常恢复。5.需要说明的是,在上述
背景技术:
:部分公开的信息仅用于加强对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:6.为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。7.本公开实施例提供了一种可加载执行文件的无损升级方法、安全芯片及存储介质,在实现应用实例无损升级的情况下,提高机密或敏感数据的安全性与保密性,同时降低无损升级过程占用的芯片空间资源。8.在一些实施例中,所述可加载执行文件的无损升级方法,应用于安全芯片,包括:响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存;将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存;通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包;在软件升级过程中出现异常中断的情况下,触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。9.可选地,所述将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包,包括:按照预设的第一压缩编码规则,对所述源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据;按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据;基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包。10.可选地,所述按照预设的第一压缩编码规则,对所述源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据,包括:在所述源数据中相邻的两个数据均小于第一阈值的情况下,将相邻的两个数据压缩合并为一个数据;在所述源数据中任意一个数据大于或等于第一阈值的情况下,保留原始的数据;按照大端规则设置对应每个数据的第一数据头标志位,得到具有固定字节数的第一级压缩数据。11.可选地,所述按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据,包括:在所述第一级压缩数据中相邻的两个数据的差值小于等于第二阈值的情况下,选择其中一个数据作为压缩合并后的数据;在所述第一级压缩数据中相邻的两个数据的差值大于第二阈值的情况下,保留原始的数据;设置用于记录数据压缩过程的第二数据头标志位,得到具有固定字节数的第二级压缩数据。12.可选地,所述基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包,包括:根据所述第二级压缩数据中所有数据对应的字符和每个字符在所有字符中出现的概率,将概率区间[0,1)划分为多个子区间;其中,每个子区间对应一个字符,并且每个子区间的大小正比于其对应的字符在总字符中出现的概率;依次读取所述第二级压缩数据中所有数据对应的字符,并获取每个字符对应的子区间[l,r),其中,0≤l<r≤1;通过计算left=left+(right-left)×l和right=left+(right-left)×r,得到每个字符压缩编码后的编码区间[left,right);其中,left的初始值为0,right的初始值为1;将每个字符对应的编码区间[left,right)中任意一个小数以二进制形式存储,得到所述源数据压缩包。[0013]可选地,所述通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包,包括:根据内置的根密钥和真随机数发生器产生的随机数,离散重组派生一组仅支持当前升级会话请求的预设比特位的会话密钥;将所述会话密钥和源数据压缩包共同进行高级加密标准aes加密,生成加密源数据压缩包。[0014]可选地,所述源数据还原阶段包括主动模式和被动模式:在主动模式中,在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压;在被动模式中,直接获取缓存中的升级会话校验码,在验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。[0015]可选地,所述在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压,包括:响应于用户的升级终止请求,获取所述升级终止请求中附带的预设比特位的升级终止校验码;将所述升级终止校验码与存储在缓存中的升级会话校验码进行校验;在升级终止请求格式正确且验签结果通过的情况下,对所述加密源数据压缩包进行aes解密,得到所述源数据压缩包;对所述源数据压缩包进行多级解压,以将源数据恢复到升级地址并清除升级会话校验码和会话密钥。[0016]可选地,所述升级会话请求附带有预设比特位的升级会话校验码,所述升级会话校验码仅在当前升级会话请求中生效,用于在源数据还原阶段的主动模式中进行解密功能校验。[0017]在一些实施例中,所述安全芯片,包括集成在安全芯片内的处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行如本技术所述的可加载执行文件的无损升级方法。[0018]在一些实施例中,所述存储介质,存储有程序指令,所述程序指令在运行时,执行如本技术所述的可加载执行文件的无损升级方法。[0019]本公开实施例提供的可加载执行文件的无损升级方法、安全芯片及存储介质,可以实现以下技术效果:本技术的安全芯片在执行升级流程之前,通过对源数据配置升级会话校验码并进行加密,提高了源数据中敏感数据与升级流程的保密性。通过对加密后的源数据进行多级无损压缩编码,减少了升级过程占用的资源空间。同时,在软件升级过程中出现异常中断的情况下,通过升级异常管理器进行调度,出现异常后对加密源数据压缩包进行解密和多级解压,从而正常恢还原升级前的状态。在正常升级后又能保证源数据覆盖到升级后的应用实例中,最终实现了安全、低消耗的无损升级。[0020]以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本技术。附图说明[0021]一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:图1是本公开实施例提供的一个可加载执行文件的无损升级方法的示意图;图2是本公开实施例提供的另一个可加载执行文件的无损升级方法的示意图;图3是本公开实施例提供的另一个可加载执行文件的无损升级方法的示意图;图4是本公开实施例的另一个可加载执行文件的无损升级方法的示意图;图5是本公开实施例提供的一个应用示意图;图6是本公开实施例提供的另一个应用示意图;图7是本公开实施例提供的另一个应用示意图;图8是本公开实施例提供的一个安全芯片示意图。具体实施方式[0022]为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。[0023]本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。[0024]除非另有说明,术语“多个”表示两个或两个以上。[0025]本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,a/b表示:a或b。[0026]术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,a和/或b,表示:a或b,或,a和b这三种关系。[0027]术语“对应”可以指的是一种关联关系或绑定关系,a与b相对应指的是a与b之间是一种关联关系或绑定关系。[0028]由于个性化用户数据的重要性及敏感性,作为安全芯片既需要支持elf升级,还要求无损升级。此时,需要一种升级保护机制,在保证elf无损升级的前提下,提高数据的保密性。此外,在现有的设备成本下,还需要降低无损升级过程中安全芯片的占用空间资源。为此,针对上述存在的技术问题,本公开实施例提供一种安全高效的方式实现可加载执行文件无损升级功能,其主要的功能模块能够实现以下功能:用于生成会话密钥的根密钥、用于加解密的会话密钥、数据压缩和解压、掉电管理、密钥派生、校验码验签、数据加解密、数据还原和存储、无损升级指令。[0029]同时,结合图1所示,本公开实施例提供一种可加载执行文件的无损升级方法,应用于安全芯片,包括:步骤101:安全芯片响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存。[0030]步骤102:安全芯片将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存。[0031]步骤103:安全芯片通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包。[0032]步骤104:在软件升级过程中出现异常中断的情况下,安全芯片触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。[0033]采用本公开实施例提供的可加载执行文件的无损升级方法,通过安全芯片对源数据配置升级会话校验码并进行加密,提高了源数据中敏感数据与升级流程的保密性。通过对加密后的源数据进行多级无损压缩编码,减少了升级过程占用的资源空间。同时,在软件升级过程中出现异常中断的情况下,通过升级异常管理器进行调度,出现异常后对加密源数据压缩包进行解密和多级解压,从而正常恢还原升级前的状态。在正常升级后又能保证源数据覆盖到升级后的应用实例中,最终实现了安全、低消耗的无损升级。[0034]结合图2所示,本公开实施例提供另一种可加载执行文件的无损升级方法,包括:步骤201:安全芯片响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存。[0035]可选地,本技术的升级会话请求附带有预设比特位的升级会话校验码,所述升级会话校验码仅在当前升级会话请求中生效,用于在源数据还原阶段的主动模式中进行解密功能校验。[0036]步骤202:安全芯片按照预设的第一压缩编码规则,对源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据。[0037]步骤203:安全芯片按照预设的第二压缩编码规则,对第一级压缩数据进行第二级压缩编码,得到第二级压缩数据。[0038]步骤204:安全芯片基于数据概率进行统计编码,对第二级压缩数据进行第三级压缩编码,得到源数据压缩包。[0039]步骤205:安全芯片通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包。[0040]步骤206:在软件升级过程中出现异常中断的情况下,安全芯片触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。[0041]在本技术的实施例中,按照预设的第一压缩编码规则,对源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据,包括:在源数据中相邻的两个数据均小于第一阈值的情况下,将相邻的两个数据压缩合并为一个数据;在源数据中任意一个数据大于或等于第一阈值的情况下,保留原始的数据;按照大端规则设置对应每个数据的第一数据头标志位,得到具有固定字节数的第一级压缩数据。[0042]具体地,对于相邻的两个十六进制数据,若两个数据均小于第一阈值(例如0x10),则合并两个数据,反之不合并,保留原始的数据。合成后以固定字节数(例如8字节)的数据为一组,每组数据有1字节的第一数据头标志位。第一数据头标志位用于记录对应对是否为合成数据,其中,第一数据头标志位按大端规则对应每个数据。合成过程中如果源数据未能组成一组,则第一数据头标志位对应的比特设置为0。在解码使,可以取9字节为一组,最后一组若不足9字节,则根据第一数据头标志位最后一个为1的比特标志查看后续比特为0的位置是否有数据。[0043]在一个具体应用中,结合下表1和下表2所示,源数据包括的十六进制数据可以是:0x01、0x02、0xfe、0x03、0x04、0x0f、0x0a、0x10、0xee、0x5、0x06、0x08和0x09。以第一阈值为0x10经过合并后,得到0xd3、0x12、0xfe、0x34、0xfa、0x10、0xee、0x56和0x89,其中,第一数据头标志位0xd3的二进制表达为11010011,1代表数据为合成,0代表数据为原始数据,按大端规则从左往右对应。[0044]表1[0045]表2[0046]在本技术的实施例中,按照预设的第二压缩编码规则,对第一级压缩数据进行第二级压缩编码,得到第二级压缩数据,包括:在第一级压缩数据中相邻的两个数据的差值小于等于第二阈值的情况下,选择其中一个数据作为压缩合并后的数据;在第一级压缩数据中相邻的两个数据的差值大于第二阈值的情况下,保留原始的数据;设置用于记录数据压缩过程的第二数据头标志位,得到具有固定字节数的第二级压缩数据。[0047]具体地,安全芯片按照预设的第二压缩编码规则,对第一级压缩数据进行第二级压缩编码。在相邻的两个数据的差值小于等于第二阈值(例如两个数据相差3以内)的情况下,将相邻的两个数据中位于左边的数据作为压缩合并后的数据。同时,增加4比特作为第二数据头标志位。反之则保留原始的数据,以3个合并后的数据为一组,最大压缩率1.33。合成过程若源数据不足组成一组,数据头对应4比特设置为0;解码取3字节为一组,最后一组若不足3字节,根据数据头的4比特为全0标志的位置查看是否有数据。[0048]在一个具体应用中,结合下表3所示,第一级压缩数据包括的十六进制数据可以是:0x12、0x13、0x59和0x56,以第二阈值为3经过合并后,得到0xdb、0x12和0x56,其中0xdb的二进制表达为11011011。其中,4个比特作用分别为:比特4表示是否为合成数、比特3表示差值加减(0减、1加)、比特2和比特1表示差值。对应地,高4比特记录0x12与0x13的合成数据,低4比特记录0x59与0x56的合成数据。[0049]表3[0050]在本技术的实施例中,基于数据概率进行统计编码,对第二级压缩数据进行第三级压缩编码,得到源数据压缩包,包括:根据第二级压缩数据中所有数据对应的字符和每个字符在所有字符中出现的概率,将概率区间[0,1)划分为多个子区间;其中,每个子区间对应一个字符,并且每个子区间的大小正比于其对应的字符在总字符中出现的概率;依次读取第二级压缩数据中所有数据对应的字符,并获取每个字符对应的子区间[l,r),其中,0≤l<r≤1;通过计算left=left+(right-left)×l和right=left+(right-left)×r,得到每个字符压缩编码后的编码区间[left,right);其中,left的初始值为0,right的初始值为1;将每个字符对应的编码区间[left,right)中任意一个小数以二进制形式存储,得到源数据压缩包。[0051]具体地,第二级压缩数据中所有数据,统计所有的字符和出现的次数,得到每个字符在总字符出现的概率。字符出频率越高,在总区间占比越大,字符所有区间总和在[0,1)。从一个初始的概率区间[0,1)开始编码,设置:left=0,right=1。不断读入原始数据的字符,找到当前字符所在的子区间[l,r)。然后通过计算left=left+(right-left)×l和right=left+(right-left)×r,得到每个字符压缩编码后的编码区间[left,right),其中,l、r为字符概率区间,right、left为要转化的字符的编码区间,计算后得到转换后各个字符的编码区间。最后将得到的编码区间[left,right)中任意一个小数以二进制形式输出即得到编码的数据。[0052]在一个具体应用中,结合图3所示,第二级压缩数据中的数据包括:0x12、0x13、0x59和0x13,统计各个字符出现次数,其中0x12出现1次,0x13出现2次,0x59出现1次。概率按照从小到大排列分别为,0x12:0.25,0x59:0.25,0x13:0.5,则0x12、0x59和0x13的子区间分别为[0,0.25)、[0.25,5)和[0.5,1)。[0053]按照数据取码:字符0x12的编码区间为[0,0.25);再次取码,因为0x13的子区间为[0.5,1),则在编码区间[0,0.25)继续编码,可得0x13编码区间为[0.125,0.25)。同理,0x59的子区间为[0.25,0.5),则在在编码区间[0.125,0.25)继续编码,可得0x59编码区间为[0.15625,0.1875)。最后一个数据0x13,在[0.15625,0.1875)编码区间为[0.171875,0.1875)。这样,只需将该区间内任意小数按二进制存储起来即可,该例子以0.171875,对应二进制0.001011存储。[0054]解码步骤:通过最后存储的[0.171875,0.1875)编码区间,在原始区间[0,0.25),[0.25,0.5),[0.5,1)可知道该区间落在[0,0.25),即代表第一个数据为0x12。[0,0.25)有三个编码区间,分别为[0,0.0625),[0.0625,0.125),[0.125,0.25),[0.171875,0.1875)落在[0.125,0.25),即代表第二个数据为0x13。[0.125,0.25)有三个编码区间,分别为[0.125,0.15626),[0.15626,0.1875),[0.1875,0.25),[0.171875,0.1875)落在[0.15625,0.1875),即代表第三个数据为0x59。[0.15625,0.1875)有三个编码区间,分别为[0.15625,0.1640625),[0.1640625,0.171875),[0.171875,0.1875),数据区间[0.171875,0.1875)与最后一个编码区间[0.171875,0.1875)一致,代表为最后一个数据,值为0x13。从0.001011到源数据0x12、0x13、0x59,0x13解析完成。这样,用6比特即可无损存储4×8=32比特数据,压缩比为5.33。同时,本技术对源数据使用三级压缩算法,降低升级过程中了对安全芯片的空间资源占用率。[0055]结合图4所示,本公开实施例提供另一种可加载执行文件的无损升级方法,包括:步骤401:安全芯片响应于用户的升级会话请求,获取所述升级会话请求中携带的升级会话校验码。[0056]步骤402:安全芯片将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存。[0057]步骤403:安全芯片根据内置的根密钥和真随机数发生器产生的随机数,离散重组派生一组仅支持当前升级会话请求的预设比特位的会话密钥。[0058]步骤404:安全芯片将所述会话密钥和源数据压缩包共同进行高级加密标准aes加密,生成加密源数据压缩包。[0059]步骤405:在软件升级过程中出现异常中断的情况下,安全芯片触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。[0060]在本技术的实施例中,结合图5所示,安全芯片响应于用户的升级会话请求,校验当前状态并开始升级流程。安全芯片生成8字节的升级会话校验码,由安全芯片内置的根密钥rootkey根据真随机数发生器生成的随机数,离散重组派生一组128比特会话密钥sessionkey,两组数据存储于安全芯片的缓存。会话密钥仅支持当前升级流程,派生后存储于升级缓存中,当升级流程完成/终止后失效。安全芯片读取升级前的源数据,使用三级无损压缩编码后输出源数据压缩包。安全芯片从升级缓存取出128比特的会话密钥,与源数据压缩包进入加密器做aes(advancedencryptionstandard,高级加密标准)加密,得到最终加密源数据压缩包。[0061]在本技术的实施例中,源数据还原阶段包括主动模式和被动模式:在主动模式中,在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。在被动模式中,直接获取缓存中的升级会话校验码,在验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。[0062]其中,在主动模式中,安全芯片响应于用户的升级终止请求,获取所述升级终止请求中附带的预设比特位的升级终止校验码。然后,将升级终止校验码与存储在缓存中的升级会话校验码进行校验。在升级终止请求格式正确且验签结果通过的情况下,对所述加密源数据压缩包进行aes解密,得到所述源数据压缩包。最后,对所述源数据压缩包进行多级解压,以将源数据恢复到升级地址并清除升级会话校验码和会话密钥。[0063]其中,在被动模式中,安全芯片直接获取内部缓存中的升级会话校验码,并在验签结果通过后,解密后解压源数据压缩包恢复源数据包到升级前状态。[0064]此外,常规恢复流程为globalplatform标准升级中断恢复流程。[0065]具体地,结合图6所示,如果安全芯片在软件升级过程的预处理阶段发生断电或其它异常引起压缩/加密失败,则会通过异常中断管理器进入被动还原模式,升级会话终止,通知用户重新升级。如果安全芯片在elf升级的保存阶段异常中断,而且是清理或删除序列中断,则再次上电后异常中断管理会触发还原模式进行数据恢复,如果在还原过程中断,则再次上电后异常中断管理再次执行还原过程,直到还原完成为止。如果是在保存序列时断电,可以使用升级会话恢复请求进入常规的恢复流程,或者发送不带校验码的升级会话终止请求终止流程,直接删除会话数据及数据包,完成后安全芯片还原升级前的状态。然后进入加载阶段,等待加载完成,进入恢复阶段。如果恢复阶段断电,可以使用升级会话恢复请求进入常规的恢复流程,或者发送附带升级终止校验码的升级终止请求终止流程,执行还原模式,完成后安全芯片还原升级前的状态。直至恢复阶段完成后,elf无损升级流程完成。[0066]可选地,安全芯片的还原模式是指安全芯片从缓存中取出128比特的会话密钥,并对加密源数据压缩包进行aes解密,得到源数据压缩包明文。进入解压阶段,通过3次解压后得到源数据。将源数据恢复到升级地址,清除所有会话数据,包括会话密钥、校验码、缓存对象、压缩包等数据,终止升级流程,安全芯片还原升级前状态。[0067]可选地,结合图7所示,还原模式包括被动模式和主动模式,被动模式指是指某些重要阶段出现异常中断(如预处理阶段),必须重新开始流程。此时,安全芯片从内部升级缓存获取升级会话校验码,并与源数据压缩包验签即可对源数据进行解密操作。主动模式是指响应于用户的升级终止请求,获取升级终止请求中包含的升级终止校验码,将升级终止校验码与存储在缓存中的升级会话校验码进行校验,在升级终止请求格式正确且验签结果通过的情况下,对加密源数据压缩包进行解密和多级解压,以将源数据恢复到升级地址并清除所有会话数据。[0068]这样,本技术可以通过制造异常中断后数据完整性与可靠性验证以此功能。相比于现有的升级方案,如果有包升级的需求,在保存阶段需经过保存、清理、删除3个序列,如果在数据清理/删除序列期间异常中断(异常掉电、死机等情况),数据和elf有丢失风险。此时应用实例可能处于不正确的状态,原有包无法正常恢复。通过使用本技术的数据压缩加密备份,即使碰到各种异常中断,源数据都可以在解密解压后正常恢复,在升级完成后,删除压缩包即可,不会占用过多的空间资源。[0069]结合图8所示,本公开实施例提供一种安全芯片,包括集成在安全芯片内的处理器(processor)800和存储器(memory)801。可选地,该装置还可以包括通信接口(communicationinterface)802和总线803。其中,处理器800、通信接口802、存储器801可以通过总线803完成相互间的通信。通信接口802可以用于信息传输。处理器800可以调用存储器801中的逻辑指令,以执行上述实施例的可加载执行文件的无损升级方法。[0070]此外,上述的存储器801中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。[0071]存储器801作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器800通过运行存储在存储器801中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中可加载执行文件的无损升级方法。[0072]存储器801可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器801可以包括高速随机存取存储器,还可以包括非易失性存储器。[0073]本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令设置为执行上述可加载执行文件的无损升级方法。[0074]上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。[0075]本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。[0076]以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本技术中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“(the)”旨在同样包括复数形式。类似地,如在本技术中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本技术中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。[0077]本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0078]本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0079]附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。当前第1页12当前第1页12
技术特征:
1.一种可加载执行文件的无损升级方法,应用于安全芯片,其特征在于,包括:响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存;将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存;通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包;在软件升级过程中出现异常中断的情况下,触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。2.根据权利要求1所述的无损升级方法,其特征在于,所述将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包,包括:按照预设的第一压缩编码规则,对所述源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据;按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据;基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包。3.根据权利要求2所述的无损升级方法,其特征在于,所述按照预设的第一压缩编码规则,对所述源数据包中的源数据第一级压缩编码,得到第一级压缩数据,包括:在所述源数据中相邻的两个数据均小于第一阈值的情况下,将相邻的两个数据压缩合并为一个数据;在所述源数据中任意一个数据大于或等于第一阈值的情况下,保留原始的数据;按照大端规则设置对应每个数据的第一数据头标志位,得到具有固定字节数的第一级压缩数据。4.根据权利要求3所述的无损升级方法,其特征在于,所述按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据,包括:在所述第一级压缩数据中相邻的两个数据的差值小于等于第二阈值的情况下,选择其中一个数据作为压缩合并后的数据;在所述第一级压缩数据中相邻的两个数据的差值大于第二阈值的情况下,保留原始的数据;设置用于记录数据压缩过程的第二数据头标志位,得到具有固定字节数的第二级压缩数据。5.根据权利要求4所述的无损升级方法,其特征在于,所述基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包,包括:根据所述第二级压缩数据中所有数据对应的字符和每个字符在所有字符中出现的概率,将概率区间[0,1)划分为多个子区间;其中,每个子区间对应一个字符,并且每个子区间的大小正比于其对应的字符在总字符中出现的概率;依次读取所述第二级压缩数据中所有数据对应的字符,并获取每个字符对应的子区间
[l,r),其中,0≤l<r≤1;通过计算left=left+(right-left)
×
l和right=left+(right-left)
×
r,得到每个字符压缩编码后的编码区间[left,right);其中,left的初始值为0,right的初始值为1;将每个字符对应的编码区间[left,right)中任意一个小数以二进制形式存储,得到所述源数据压缩包。6.根据权利要求1所述的无损升级方法,其特征在于,所述通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包,包括:根据内置的根密钥和真随机数发生器产生的随机数,离散重组派生一组仅支持当前升级会话请求的预设比特位的会话密钥;将所述会话密钥和源数据压缩包共同进行高级加密标准aes加密,生成加密源数据压缩包。7.根据权利要求1所述的无损升级方法,其特征在于,所述源数据还原阶段包括主动模式和被动模式:在主动模式中,在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压;在被动模式中,直接获取缓存中的升级会话校验码,在验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。8.根据权利要求7所述的无损升级方法,其特征在于,所述在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压,包括:响应于用户的升级终止请求,获取所述升级终止请求中附带的预设比特位的升级终止校验码;将所述升级终止校验码与存储在缓存中的升级会话校验码进行校验;在升级终止请求格式正确且验签结果通过的情况下,对所述加密源数据压缩包进行aes解密,得到所述源数据压缩包;对所述源数据压缩包进行多级解压,以将源数据恢复到升级地址并清除升级会话校验码和会话密钥。9.根据权利要求1至8任一项所述的无损升级方法,其特征在于,所述升级会话请求附带有预设比特位的升级会话校验码,所述升级会话校验码仅在当前升级会话请求中生效,用于在源数据还原阶段的主动模式中进行解密功能校验。10.一种安全芯片,包括集成在安全芯片内的处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至9任一项所述的可加载执行文件的无损升级方法。11.一种存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,执行如权利要求1至9任一项所述的可加载执行文件的无损升级方法。
技术总结
本申请涉及安全芯片技术领域,公开一种可加载执行文件的无损升级方法、安全芯片及存储介质,其中,所述无损升级方法,包括:响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存;将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存;通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包;在软件升级过程中出现异常中断的情况下,触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。据压缩包恢复到升级前的源数据包。据压缩包恢复到升级前的源数据包。
技术研发人员:钟毅 王治钦 黄金煌
受保护的技术使用者:紫光同芯微电子有限公司
技术研发日:2023.08.17
技术公布日:2023/9/20
技术领域:
:,例如涉及一种可加载执行文件的无损升级方法、安全芯片及存储介质。
背景技术:
::2.目前,现代数字设备(例如笔记本电脑、手机等)都允许软件在有网络连接的情况下进行软件升级,升级的原因包括修复错误或添加新功能等。3.安全元件(secureelement,se)通常以安全芯片的形式部署在智能卡内。部署在安全芯片中的软件本身会局限于服务提供者的需求及用户的正确性,不可避免存在升级功能。由于安全芯片中的软件程序存在持久的应用实例(applet),这些应用实例由服务提供者使用用户数据和机密或敏感数据创建和个性化。同时,个性化过程是复杂和昂贵的,通常在软件升级的情况下不应该重复。4.在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:在现有的可执行加载文件(executableloadfile,elf)升级的过程中,elf的数据包在保存阶段需经过保存、清理和删除等序列。如果在数据清理序列或删除序列期间发生异常中断(例如异常掉电、死机等情况),则用户的敏感数据和elf存在丢失的风险。同时,应用实例也会处于错误的状态,并且原有的数据包也无法正常恢复。5.需要说明的是,在上述
背景技术:
:部分公开的信息仅用于加强对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:6.为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。7.本公开实施例提供了一种可加载执行文件的无损升级方法、安全芯片及存储介质,在实现应用实例无损升级的情况下,提高机密或敏感数据的安全性与保密性,同时降低无损升级过程占用的芯片空间资源。8.在一些实施例中,所述可加载执行文件的无损升级方法,应用于安全芯片,包括:响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存;将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存;通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包;在软件升级过程中出现异常中断的情况下,触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。9.可选地,所述将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包,包括:按照预设的第一压缩编码规则,对所述源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据;按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据;基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包。10.可选地,所述按照预设的第一压缩编码规则,对所述源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据,包括:在所述源数据中相邻的两个数据均小于第一阈值的情况下,将相邻的两个数据压缩合并为一个数据;在所述源数据中任意一个数据大于或等于第一阈值的情况下,保留原始的数据;按照大端规则设置对应每个数据的第一数据头标志位,得到具有固定字节数的第一级压缩数据。11.可选地,所述按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据,包括:在所述第一级压缩数据中相邻的两个数据的差值小于等于第二阈值的情况下,选择其中一个数据作为压缩合并后的数据;在所述第一级压缩数据中相邻的两个数据的差值大于第二阈值的情况下,保留原始的数据;设置用于记录数据压缩过程的第二数据头标志位,得到具有固定字节数的第二级压缩数据。12.可选地,所述基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包,包括:根据所述第二级压缩数据中所有数据对应的字符和每个字符在所有字符中出现的概率,将概率区间[0,1)划分为多个子区间;其中,每个子区间对应一个字符,并且每个子区间的大小正比于其对应的字符在总字符中出现的概率;依次读取所述第二级压缩数据中所有数据对应的字符,并获取每个字符对应的子区间[l,r),其中,0≤l<r≤1;通过计算left=left+(right-left)×l和right=left+(right-left)×r,得到每个字符压缩编码后的编码区间[left,right);其中,left的初始值为0,right的初始值为1;将每个字符对应的编码区间[left,right)中任意一个小数以二进制形式存储,得到所述源数据压缩包。[0013]可选地,所述通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包,包括:根据内置的根密钥和真随机数发生器产生的随机数,离散重组派生一组仅支持当前升级会话请求的预设比特位的会话密钥;将所述会话密钥和源数据压缩包共同进行高级加密标准aes加密,生成加密源数据压缩包。[0014]可选地,所述源数据还原阶段包括主动模式和被动模式:在主动模式中,在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压;在被动模式中,直接获取缓存中的升级会话校验码,在验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。[0015]可选地,所述在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压,包括:响应于用户的升级终止请求,获取所述升级终止请求中附带的预设比特位的升级终止校验码;将所述升级终止校验码与存储在缓存中的升级会话校验码进行校验;在升级终止请求格式正确且验签结果通过的情况下,对所述加密源数据压缩包进行aes解密,得到所述源数据压缩包;对所述源数据压缩包进行多级解压,以将源数据恢复到升级地址并清除升级会话校验码和会话密钥。[0016]可选地,所述升级会话请求附带有预设比特位的升级会话校验码,所述升级会话校验码仅在当前升级会话请求中生效,用于在源数据还原阶段的主动模式中进行解密功能校验。[0017]在一些实施例中,所述安全芯片,包括集成在安全芯片内的处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行如本技术所述的可加载执行文件的无损升级方法。[0018]在一些实施例中,所述存储介质,存储有程序指令,所述程序指令在运行时,执行如本技术所述的可加载执行文件的无损升级方法。[0019]本公开实施例提供的可加载执行文件的无损升级方法、安全芯片及存储介质,可以实现以下技术效果:本技术的安全芯片在执行升级流程之前,通过对源数据配置升级会话校验码并进行加密,提高了源数据中敏感数据与升级流程的保密性。通过对加密后的源数据进行多级无损压缩编码,减少了升级过程占用的资源空间。同时,在软件升级过程中出现异常中断的情况下,通过升级异常管理器进行调度,出现异常后对加密源数据压缩包进行解密和多级解压,从而正常恢还原升级前的状态。在正常升级后又能保证源数据覆盖到升级后的应用实例中,最终实现了安全、低消耗的无损升级。[0020]以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本技术。附图说明[0021]一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:图1是本公开实施例提供的一个可加载执行文件的无损升级方法的示意图;图2是本公开实施例提供的另一个可加载执行文件的无损升级方法的示意图;图3是本公开实施例提供的另一个可加载执行文件的无损升级方法的示意图;图4是本公开实施例的另一个可加载执行文件的无损升级方法的示意图;图5是本公开实施例提供的一个应用示意图;图6是本公开实施例提供的另一个应用示意图;图7是本公开实施例提供的另一个应用示意图;图8是本公开实施例提供的一个安全芯片示意图。具体实施方式[0022]为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。[0023]本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。[0024]除非另有说明,术语“多个”表示两个或两个以上。[0025]本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,a/b表示:a或b。[0026]术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,a和/或b,表示:a或b,或,a和b这三种关系。[0027]术语“对应”可以指的是一种关联关系或绑定关系,a与b相对应指的是a与b之间是一种关联关系或绑定关系。[0028]由于个性化用户数据的重要性及敏感性,作为安全芯片既需要支持elf升级,还要求无损升级。此时,需要一种升级保护机制,在保证elf无损升级的前提下,提高数据的保密性。此外,在现有的设备成本下,还需要降低无损升级过程中安全芯片的占用空间资源。为此,针对上述存在的技术问题,本公开实施例提供一种安全高效的方式实现可加载执行文件无损升级功能,其主要的功能模块能够实现以下功能:用于生成会话密钥的根密钥、用于加解密的会话密钥、数据压缩和解压、掉电管理、密钥派生、校验码验签、数据加解密、数据还原和存储、无损升级指令。[0029]同时,结合图1所示,本公开实施例提供一种可加载执行文件的无损升级方法,应用于安全芯片,包括:步骤101:安全芯片响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存。[0030]步骤102:安全芯片将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存。[0031]步骤103:安全芯片通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包。[0032]步骤104:在软件升级过程中出现异常中断的情况下,安全芯片触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。[0033]采用本公开实施例提供的可加载执行文件的无损升级方法,通过安全芯片对源数据配置升级会话校验码并进行加密,提高了源数据中敏感数据与升级流程的保密性。通过对加密后的源数据进行多级无损压缩编码,减少了升级过程占用的资源空间。同时,在软件升级过程中出现异常中断的情况下,通过升级异常管理器进行调度,出现异常后对加密源数据压缩包进行解密和多级解压,从而正常恢还原升级前的状态。在正常升级后又能保证源数据覆盖到升级后的应用实例中,最终实现了安全、低消耗的无损升级。[0034]结合图2所示,本公开实施例提供另一种可加载执行文件的无损升级方法,包括:步骤201:安全芯片响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存。[0035]可选地,本技术的升级会话请求附带有预设比特位的升级会话校验码,所述升级会话校验码仅在当前升级会话请求中生效,用于在源数据还原阶段的主动模式中进行解密功能校验。[0036]步骤202:安全芯片按照预设的第一压缩编码规则,对源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据。[0037]步骤203:安全芯片按照预设的第二压缩编码规则,对第一级压缩数据进行第二级压缩编码,得到第二级压缩数据。[0038]步骤204:安全芯片基于数据概率进行统计编码,对第二级压缩数据进行第三级压缩编码,得到源数据压缩包。[0039]步骤205:安全芯片通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包。[0040]步骤206:在软件升级过程中出现异常中断的情况下,安全芯片触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。[0041]在本技术的实施例中,按照预设的第一压缩编码规则,对源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据,包括:在源数据中相邻的两个数据均小于第一阈值的情况下,将相邻的两个数据压缩合并为一个数据;在源数据中任意一个数据大于或等于第一阈值的情况下,保留原始的数据;按照大端规则设置对应每个数据的第一数据头标志位,得到具有固定字节数的第一级压缩数据。[0042]具体地,对于相邻的两个十六进制数据,若两个数据均小于第一阈值(例如0x10),则合并两个数据,反之不合并,保留原始的数据。合成后以固定字节数(例如8字节)的数据为一组,每组数据有1字节的第一数据头标志位。第一数据头标志位用于记录对应对是否为合成数据,其中,第一数据头标志位按大端规则对应每个数据。合成过程中如果源数据未能组成一组,则第一数据头标志位对应的比特设置为0。在解码使,可以取9字节为一组,最后一组若不足9字节,则根据第一数据头标志位最后一个为1的比特标志查看后续比特为0的位置是否有数据。[0043]在一个具体应用中,结合下表1和下表2所示,源数据包括的十六进制数据可以是:0x01、0x02、0xfe、0x03、0x04、0x0f、0x0a、0x10、0xee、0x5、0x06、0x08和0x09。以第一阈值为0x10经过合并后,得到0xd3、0x12、0xfe、0x34、0xfa、0x10、0xee、0x56和0x89,其中,第一数据头标志位0xd3的二进制表达为11010011,1代表数据为合成,0代表数据为原始数据,按大端规则从左往右对应。[0044]表1[0045]表2[0046]在本技术的实施例中,按照预设的第二压缩编码规则,对第一级压缩数据进行第二级压缩编码,得到第二级压缩数据,包括:在第一级压缩数据中相邻的两个数据的差值小于等于第二阈值的情况下,选择其中一个数据作为压缩合并后的数据;在第一级压缩数据中相邻的两个数据的差值大于第二阈值的情况下,保留原始的数据;设置用于记录数据压缩过程的第二数据头标志位,得到具有固定字节数的第二级压缩数据。[0047]具体地,安全芯片按照预设的第二压缩编码规则,对第一级压缩数据进行第二级压缩编码。在相邻的两个数据的差值小于等于第二阈值(例如两个数据相差3以内)的情况下,将相邻的两个数据中位于左边的数据作为压缩合并后的数据。同时,增加4比特作为第二数据头标志位。反之则保留原始的数据,以3个合并后的数据为一组,最大压缩率1.33。合成过程若源数据不足组成一组,数据头对应4比特设置为0;解码取3字节为一组,最后一组若不足3字节,根据数据头的4比特为全0标志的位置查看是否有数据。[0048]在一个具体应用中,结合下表3所示,第一级压缩数据包括的十六进制数据可以是:0x12、0x13、0x59和0x56,以第二阈值为3经过合并后,得到0xdb、0x12和0x56,其中0xdb的二进制表达为11011011。其中,4个比特作用分别为:比特4表示是否为合成数、比特3表示差值加减(0减、1加)、比特2和比特1表示差值。对应地,高4比特记录0x12与0x13的合成数据,低4比特记录0x59与0x56的合成数据。[0049]表3[0050]在本技术的实施例中,基于数据概率进行统计编码,对第二级压缩数据进行第三级压缩编码,得到源数据压缩包,包括:根据第二级压缩数据中所有数据对应的字符和每个字符在所有字符中出现的概率,将概率区间[0,1)划分为多个子区间;其中,每个子区间对应一个字符,并且每个子区间的大小正比于其对应的字符在总字符中出现的概率;依次读取第二级压缩数据中所有数据对应的字符,并获取每个字符对应的子区间[l,r),其中,0≤l<r≤1;通过计算left=left+(right-left)×l和right=left+(right-left)×r,得到每个字符压缩编码后的编码区间[left,right);其中,left的初始值为0,right的初始值为1;将每个字符对应的编码区间[left,right)中任意一个小数以二进制形式存储,得到源数据压缩包。[0051]具体地,第二级压缩数据中所有数据,统计所有的字符和出现的次数,得到每个字符在总字符出现的概率。字符出频率越高,在总区间占比越大,字符所有区间总和在[0,1)。从一个初始的概率区间[0,1)开始编码,设置:left=0,right=1。不断读入原始数据的字符,找到当前字符所在的子区间[l,r)。然后通过计算left=left+(right-left)×l和right=left+(right-left)×r,得到每个字符压缩编码后的编码区间[left,right),其中,l、r为字符概率区间,right、left为要转化的字符的编码区间,计算后得到转换后各个字符的编码区间。最后将得到的编码区间[left,right)中任意一个小数以二进制形式输出即得到编码的数据。[0052]在一个具体应用中,结合图3所示,第二级压缩数据中的数据包括:0x12、0x13、0x59和0x13,统计各个字符出现次数,其中0x12出现1次,0x13出现2次,0x59出现1次。概率按照从小到大排列分别为,0x12:0.25,0x59:0.25,0x13:0.5,则0x12、0x59和0x13的子区间分别为[0,0.25)、[0.25,5)和[0.5,1)。[0053]按照数据取码:字符0x12的编码区间为[0,0.25);再次取码,因为0x13的子区间为[0.5,1),则在编码区间[0,0.25)继续编码,可得0x13编码区间为[0.125,0.25)。同理,0x59的子区间为[0.25,0.5),则在在编码区间[0.125,0.25)继续编码,可得0x59编码区间为[0.15625,0.1875)。最后一个数据0x13,在[0.15625,0.1875)编码区间为[0.171875,0.1875)。这样,只需将该区间内任意小数按二进制存储起来即可,该例子以0.171875,对应二进制0.001011存储。[0054]解码步骤:通过最后存储的[0.171875,0.1875)编码区间,在原始区间[0,0.25),[0.25,0.5),[0.5,1)可知道该区间落在[0,0.25),即代表第一个数据为0x12。[0,0.25)有三个编码区间,分别为[0,0.0625),[0.0625,0.125),[0.125,0.25),[0.171875,0.1875)落在[0.125,0.25),即代表第二个数据为0x13。[0.125,0.25)有三个编码区间,分别为[0.125,0.15626),[0.15626,0.1875),[0.1875,0.25),[0.171875,0.1875)落在[0.15625,0.1875),即代表第三个数据为0x59。[0.15625,0.1875)有三个编码区间,分别为[0.15625,0.1640625),[0.1640625,0.171875),[0.171875,0.1875),数据区间[0.171875,0.1875)与最后一个编码区间[0.171875,0.1875)一致,代表为最后一个数据,值为0x13。从0.001011到源数据0x12、0x13、0x59,0x13解析完成。这样,用6比特即可无损存储4×8=32比特数据,压缩比为5.33。同时,本技术对源数据使用三级压缩算法,降低升级过程中了对安全芯片的空间资源占用率。[0055]结合图4所示,本公开实施例提供另一种可加载执行文件的无损升级方法,包括:步骤401:安全芯片响应于用户的升级会话请求,获取所述升级会话请求中携带的升级会话校验码。[0056]步骤402:安全芯片将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存。[0057]步骤403:安全芯片根据内置的根密钥和真随机数发生器产生的随机数,离散重组派生一组仅支持当前升级会话请求的预设比特位的会话密钥。[0058]步骤404:安全芯片将所述会话密钥和源数据压缩包共同进行高级加密标准aes加密,生成加密源数据压缩包。[0059]步骤405:在软件升级过程中出现异常中断的情况下,安全芯片触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。[0060]在本技术的实施例中,结合图5所示,安全芯片响应于用户的升级会话请求,校验当前状态并开始升级流程。安全芯片生成8字节的升级会话校验码,由安全芯片内置的根密钥rootkey根据真随机数发生器生成的随机数,离散重组派生一组128比特会话密钥sessionkey,两组数据存储于安全芯片的缓存。会话密钥仅支持当前升级流程,派生后存储于升级缓存中,当升级流程完成/终止后失效。安全芯片读取升级前的源数据,使用三级无损压缩编码后输出源数据压缩包。安全芯片从升级缓存取出128比特的会话密钥,与源数据压缩包进入加密器做aes(advancedencryptionstandard,高级加密标准)加密,得到最终加密源数据压缩包。[0061]在本技术的实施例中,源数据还原阶段包括主动模式和被动模式:在主动模式中,在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。在被动模式中,直接获取缓存中的升级会话校验码,在验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。[0062]其中,在主动模式中,安全芯片响应于用户的升级终止请求,获取所述升级终止请求中附带的预设比特位的升级终止校验码。然后,将升级终止校验码与存储在缓存中的升级会话校验码进行校验。在升级终止请求格式正确且验签结果通过的情况下,对所述加密源数据压缩包进行aes解密,得到所述源数据压缩包。最后,对所述源数据压缩包进行多级解压,以将源数据恢复到升级地址并清除升级会话校验码和会话密钥。[0063]其中,在被动模式中,安全芯片直接获取内部缓存中的升级会话校验码,并在验签结果通过后,解密后解压源数据压缩包恢复源数据包到升级前状态。[0064]此外,常规恢复流程为globalplatform标准升级中断恢复流程。[0065]具体地,结合图6所示,如果安全芯片在软件升级过程的预处理阶段发生断电或其它异常引起压缩/加密失败,则会通过异常中断管理器进入被动还原模式,升级会话终止,通知用户重新升级。如果安全芯片在elf升级的保存阶段异常中断,而且是清理或删除序列中断,则再次上电后异常中断管理会触发还原模式进行数据恢复,如果在还原过程中断,则再次上电后异常中断管理再次执行还原过程,直到还原完成为止。如果是在保存序列时断电,可以使用升级会话恢复请求进入常规的恢复流程,或者发送不带校验码的升级会话终止请求终止流程,直接删除会话数据及数据包,完成后安全芯片还原升级前的状态。然后进入加载阶段,等待加载完成,进入恢复阶段。如果恢复阶段断电,可以使用升级会话恢复请求进入常规的恢复流程,或者发送附带升级终止校验码的升级终止请求终止流程,执行还原模式,完成后安全芯片还原升级前的状态。直至恢复阶段完成后,elf无损升级流程完成。[0066]可选地,安全芯片的还原模式是指安全芯片从缓存中取出128比特的会话密钥,并对加密源数据压缩包进行aes解密,得到源数据压缩包明文。进入解压阶段,通过3次解压后得到源数据。将源数据恢复到升级地址,清除所有会话数据,包括会话密钥、校验码、缓存对象、压缩包等数据,终止升级流程,安全芯片还原升级前状态。[0067]可选地,结合图7所示,还原模式包括被动模式和主动模式,被动模式指是指某些重要阶段出现异常中断(如预处理阶段),必须重新开始流程。此时,安全芯片从内部升级缓存获取升级会话校验码,并与源数据压缩包验签即可对源数据进行解密操作。主动模式是指响应于用户的升级终止请求,获取升级终止请求中包含的升级终止校验码,将升级终止校验码与存储在缓存中的升级会话校验码进行校验,在升级终止请求格式正确且验签结果通过的情况下,对加密源数据压缩包进行解密和多级解压,以将源数据恢复到升级地址并清除所有会话数据。[0068]这样,本技术可以通过制造异常中断后数据完整性与可靠性验证以此功能。相比于现有的升级方案,如果有包升级的需求,在保存阶段需经过保存、清理、删除3个序列,如果在数据清理/删除序列期间异常中断(异常掉电、死机等情况),数据和elf有丢失风险。此时应用实例可能处于不正确的状态,原有包无法正常恢复。通过使用本技术的数据压缩加密备份,即使碰到各种异常中断,源数据都可以在解密解压后正常恢复,在升级完成后,删除压缩包即可,不会占用过多的空间资源。[0069]结合图8所示,本公开实施例提供一种安全芯片,包括集成在安全芯片内的处理器(processor)800和存储器(memory)801。可选地,该装置还可以包括通信接口(communicationinterface)802和总线803。其中,处理器800、通信接口802、存储器801可以通过总线803完成相互间的通信。通信接口802可以用于信息传输。处理器800可以调用存储器801中的逻辑指令,以执行上述实施例的可加载执行文件的无损升级方法。[0070]此外,上述的存储器801中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。[0071]存储器801作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器800通过运行存储在存储器801中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中可加载执行文件的无损升级方法。[0072]存储器801可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器801可以包括高速随机存取存储器,还可以包括非易失性存储器。[0073]本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令设置为执行上述可加载执行文件的无损升级方法。[0074]上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。[0075]本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。[0076]以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本技术中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“(the)”旨在同样包括复数形式。类似地,如在本技术中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本技术中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。[0077]本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0078]本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0079]附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。当前第1页12当前第1页12
技术特征:
1.一种可加载执行文件的无损升级方法,应用于安全芯片,其特征在于,包括:响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存;将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存;通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包;在软件升级过程中出现异常中断的情况下,触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。2.根据权利要求1所述的无损升级方法,其特征在于,所述将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包,包括:按照预设的第一压缩编码规则,对所述源数据包中的源数据进行第一级压缩编码,得到第一级压缩数据;按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据;基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包。3.根据权利要求2所述的无损升级方法,其特征在于,所述按照预设的第一压缩编码规则,对所述源数据包中的源数据第一级压缩编码,得到第一级压缩数据,包括:在所述源数据中相邻的两个数据均小于第一阈值的情况下,将相邻的两个数据压缩合并为一个数据;在所述源数据中任意一个数据大于或等于第一阈值的情况下,保留原始的数据;按照大端规则设置对应每个数据的第一数据头标志位,得到具有固定字节数的第一级压缩数据。4.根据权利要求3所述的无损升级方法,其特征在于,所述按照预设的第二压缩编码规则,对所述第一级压缩数据进行第二级压缩编码,得到第二级压缩数据,包括:在所述第一级压缩数据中相邻的两个数据的差值小于等于第二阈值的情况下,选择其中一个数据作为压缩合并后的数据;在所述第一级压缩数据中相邻的两个数据的差值大于第二阈值的情况下,保留原始的数据;设置用于记录数据压缩过程的第二数据头标志位,得到具有固定字节数的第二级压缩数据。5.根据权利要求4所述的无损升级方法,其特征在于,所述基于数据概率进行统计编码,对所述第二级压缩数据进行第三级压缩编码,得到所述源数据压缩包,包括:根据所述第二级压缩数据中所有数据对应的字符和每个字符在所有字符中出现的概率,将概率区间[0,1)划分为多个子区间;其中,每个子区间对应一个字符,并且每个子区间的大小正比于其对应的字符在总字符中出现的概率;依次读取所述第二级压缩数据中所有数据对应的字符,并获取每个字符对应的子区间
[l,r),其中,0≤l<r≤1;通过计算left=left+(right-left)
×
l和right=left+(right-left)
×
r,得到每个字符压缩编码后的编码区间[left,right);其中,left的初始值为0,right的初始值为1;将每个字符对应的编码区间[left,right)中任意一个小数以二进制形式存储,得到所述源数据压缩包。6.根据权利要求1所述的无损升级方法,其特征在于,所述通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包,包括:根据内置的根密钥和真随机数发生器产生的随机数,离散重组派生一组仅支持当前升级会话请求的预设比特位的会话密钥;将所述会话密钥和源数据压缩包共同进行高级加密标准aes加密,生成加密源数据压缩包。7.根据权利要求1所述的无损升级方法,其特征在于,所述源数据还原阶段包括主动模式和被动模式:在主动模式中,在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压;在被动模式中,直接获取缓存中的升级会话校验码,在验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压。8.根据权利要求7所述的无损升级方法,其特征在于,所述在用户的终止升级请求正确,并且所述终止升级请求中包含的升级终止校验码与升级会话校验码的验签结果通过的情况下,对所述源数据压缩包进行解密和多级解压,包括:响应于用户的升级终止请求,获取所述升级终止请求中附带的预设比特位的升级终止校验码;将所述升级终止校验码与存储在缓存中的升级会话校验码进行校验;在升级终止请求格式正确且验签结果通过的情况下,对所述加密源数据压缩包进行aes解密,得到所述源数据压缩包;对所述源数据压缩包进行多级解压,以将源数据恢复到升级地址并清除升级会话校验码和会话密钥。9.根据权利要求1至8任一项所述的无损升级方法,其特征在于,所述升级会话请求附带有预设比特位的升级会话校验码,所述升级会话校验码仅在当前升级会话请求中生效,用于在源数据还原阶段的主动模式中进行解密功能校验。10.一种安全芯片,包括集成在安全芯片内的处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至9任一项所述的可加载执行文件的无损升级方法。11.一种存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,执行如权利要求1至9任一项所述的可加载执行文件的无损升级方法。
技术总结
本申请涉及安全芯片技术领域,公开一种可加载执行文件的无损升级方法、安全芯片及存储介质,其中,所述无损升级方法,包括:响应于用户的升级会话请求进入升级流程,获取所述升级会话请求中携带的升级会话校验码并缓存;将升级前已解析的源数据包进行多级无损压缩编码,得到源数据压缩包并存储至非易失存储内存;通过由根密钥派生的会话密钥对所述源数据压缩包进行加密,生成加密源数据压缩包;在软件升级过程中出现异常中断的情况下,触发异常中断管理器,根据不同中断情况进入源数据还原阶段或常规恢复流程,以根据升级会话校验码将源数据压缩包恢复到升级前的源数据包。据压缩包恢复到升级前的源数据包。据压缩包恢复到升级前的源数据包。
技术研发人员:钟毅 王治钦 黄金煌
受保护的技术使用者:紫光同芯微电子有限公司
技术研发日:2023.08.17
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/