本发明涉及到安卓开机加载分区过程,尤其涉及到分区的数据校验和数据加密的方法。
背景技术:
安卓(android)系统是基本linux构架的,上电开机首先会加载bootloader(嵌入式系统的引导程序通常称为bootloader,类似于pc系统上的bios),bootloader初始化完成之后,会加载bootimage(包括kernel和ramdisk),然后去执行其中的kernel部分,挂载其中的ramdisk部分,之后会加载systemimage,执行完systemimage中的开机流程,会进入桌面应用。进入桌面应用后,用户可以与系统进行交互。
验证启动功能旨在保证设备软件(从硬件信任根直到系统分区)的完整性。在启动过程中,无论是在每个阶段,都会在进入下一个阶段之前先验证下一个阶段的完整性和真实性。
android4.4及更高版本支持通过可选的device-mapper-verity(dm-verity)内核功能进行的验证启动,以便对块设备进行透明的完整性检查。所述dm-verity有助于阻止可以持续保有root权限并入侵设备的持续性rootkit。验证启动功能有助于android用户在启动设备时确定设备状态与上次使用时是否相同。
所述dm-verity保护机制位于内核中。因此,如果获取root权限的软件在内核启动之前入侵系统,那么它将会一直拥有该权限。为了降低这种风险,大多数制造商都会使用烧录到设备的密钥来验证内核。然,这种密钥在设备出厂后将无法被更改。
技术实现要素:
鉴于以上内容,有必要提供一种加密安卓系统的方法,从而实现对整个安卓系统的保护。
为实现上述目的,本发明所采用的技术方案是:
提供了一种加密安卓系统的方法,所述加密安卓系统的方法应用在安卓系统中,所述安卓系统包括bootloader、cpu和system分区,其中,所述加密安卓系统的方法包括以下步骤:
步骤s100:所述bootloader和所述cpu相互验证;
步骤s200:所述bootloader加密至少一被检验分区及对所述至少一被检验分区进行验证;及
步骤s300:使用源生方法devicemapperverity(dm-verity)对所述system分区进行保护;
其中,所述步骤s100包括:
步骤s102:读取加密的cpu中efuserom的内容;
步骤s103:根据读取到的所述efuserom的内容,通过解密算法对所述efuserom的内容进行解密;及
步骤s104:根据所述解密后的efuserom的内容,通过解密算法解密所述cpu。
在本实施例的加密安卓系统的方法中,通过所述解密算法解密所述cpu后,可以使所述cpu操作不受限制,正常工作。
优选地,所述解密算法存储于所述bootloader中。
本实施例中,由于所述解密算法位于所述bootloader中,其产生的要求计算量小,处理速度快,存储空间占用小,抗破解能力强。
优选地,所述步骤s200包括:
步骤s201:创建一个新分区;
步骤s203:根据检验码和密钥检验分区数据的完整性;及
步骤s205:根据被取出的被检验分区签名对所述被检验分区名和分区密钥表进行正确性确定。
优选地,所述步骤s200包括:
步骤s202:查找所述被检验分区对应的检验码和密钥;
其中,所述步骤s202在所述步骤s201和所述步骤s203之间。
优选地,所述步骤s200包括:
步骤s204:所述bootloader取出所述被检验分区签名;
其中,所述步骤s204在所述步骤s203和所述步骤s205之间。
在本实施例中,由于所述被检验分区签名是由所述bootloader取出,因此,可以对分区的正确性和所有性进行检验,以避免第三方替换我们发布的boot.img、recovery.img、modem等。
优选地,所述efuserom的内容包括密钥。
优选地,所述被创建的新分区为secro.img分区,所述secro.img分区包括版本号、表签名、表长度、被检验分区名、检验码及被检验分区签名。
优选地,所述版本号对应所述bootloader中的检验算法,所述表签名用于对所述被检验的分区名和分区密钥表进行正确性确定,所述表长度用于标记所述分区密钥表的大小,所述被检验分区名用于查找被检验的分区对应的检验码和密钥,所述检验码用于检验分区数据的完整性。
本实施例中,所述检验码用于检验分区数据的完整性,避免分区数据在刷机等过程中因变化而导致加载执行时出现的未知情况。
优选地,所述bootloader包括所述检验算法,所述步骤s203具体为:根据所述检验码和所述密钥,通过所述检验算法检验所述分区数据的完整性。
优选地,所述至少一被检验分区包括3个被检验分区,分别是bootimage(boot.img)分区、recoveryimage(recovery.img)分区、及modem分区。
与现有技术相比,本发明的有益效果为:由于所述解密算法位于所述bootloader中,其产生的要求计算量小,处理速度快,存储空间占用小,抗破解能力强;通过所述检验码检验分区数据的完整性,避免分区数据在刷机等过程中因变化而导致加载执行时出现的未知情况。此外,在本实施例的加密安卓系统的方法中,整个系统由硬件到软件,层层向上加密,从而可以保证客户数据不被窃取。
附图说明
图1是本发明实施方式之加密安卓系统的方法的流程图。
图2是图1中的步骤s100的流程图。
图3是图1中的步骤s200的流程图。
图4是图3中的secro.img分区的结构图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
请参阅图1,本发明的一较佳实施方式,提供一种加密安卓系统的方法,所述加密安卓系统的方法应用在安卓系统中,所述系统包括bootloader和cpu。
所述系统还包括system分区。
其中,所述bootloader包括检验算法及解密算法。
其中,所述cpu存储有efuserom。
所述加密安卓系统的方法包括以下步骤:
步骤s100:所述bootloader和所述cpu相互验证。
步骤s200:所述bootloader加密至少一被检验分区及对所述至少一被检验分区进行验证。具体地,由所述bootloader对所述至少一被检验分区进行加载、对所述至少一被检验分区进行验证及对所述至少一被检验分区进行解密及对所述至少一被检验分区进行验证。在本实施例中,以加密3个被检验分区为例进行说明,但是分发明不限于3个被检验分区;具体的实施方式中,所述3个被检验分区分别是bootimage(boot.img)分区、recoveryimage(recovery.img)分区、及modem分区。
在本实施例中,由于这些被检验分区是由所述bootloader进行加载,从而这些被检验分区由所述bootloader进行解密。
步骤s300:使用源生方法devicemapperverity(dm-verity)对所述system分区进行保护。
在本实施例的加密安卓系统的方法中,整个系统由硬件到软件,层层向上加密,从而可以保证客户数据不被窃取。
其中,所述步骤s100的加密过程是由软件和硬件共同完成,相互绑定,相互依赖;优选地,所述步骤s100的加密过程由芯片广商和方案商共同完成。更进一步地,请参阅图2,所述步骤s100具体包括如下步骤:
步骤s101:系统加电。
步骤s102:读取加密的cpu中efuserom的内容。其中,所述efuserom的内容包括密钥。
步骤s103:根据读取到的所述efuserom的内容,通过解密算法对所述efuserom的内容进行解密。
步骤s104:根据所述解密后的efuserom的内容,通过解密算法解密所述cpu。所述cpu被解密后,可以使所述cpu操作不受限制,正常工作。
优选地,所述解密算法位于所述bootloader中。在本实施例中,由于所述解密算法位于所述bootloader中,其产生的要求计算量小,处理速度快,存储空间占用小,抗破解能力强。
请参阅图3,所述步骤s200具体包括如下步骤:
步骤s201:创建一个新分区。在本实施例中,创建一个secro.img分区作为新分区;其中,所述secro.img分区可以用于辅助所述bootloader对所述boot.img分区、recovery.img分区、及modem分区进行检验。
进一步地,请参阅图4,所述secro.img分区包括版本号、表签名、表长度、被检验分区名、检验码及被检验分区签名。在本实施例中,由于以上述所述的3个被检验分区为例进行说明,即以所述boot.img分区、所述recovery.img分区、及所述modem分区为例进行说明,因此,所述secro.img分区中包括有3个被检验分区名、3个检验码及3个被检验分区签名,所述3个被检验分区名、所述3个检验码及所述3个被检验分区签名分别对应所述boot.img分区、所述recovery.img分区、及所述modem分区。
优选地,所述版本号对应所述bootloader中的检验算法,因此,可以便于算法升级。
优选地,所述表签名用于对所述被检验的分区名和分区密钥表进行正确性确定。其中,所述分区密钥表是由分区密钥数据组成的表。
优选地,所述表长度用于标记所述分区密钥表的大小。
优选地,所述被检验分区名用于查找被检验的分区对应的检验码和密钥。
优选地,所述检验码用于检验分区数据的完整性,避免分区数据在刷机等过程中因变化而导致加载执行时出现的未知情况。
优选地,所述被检验分区签名由所述bootloader取出。在本实施例中,由于所述被检验分区签名是由所述bootloader取出,因此可以对所述被检验分区的正确性和所有性进行检验,以避免第三方替换我们发布的boot.img、recovery.img、modem等。
步骤s202:查找所述被检验分区对应的检验码和密钥。
步骤s203:根据所述检验码和所述密钥检验分区数据的完整性。具体地,所述步骤s203具体为:根据所述检验码和所述密钥,通过所述检验算法检验所述分区数据的完整性。
步骤s204:所述bootloader取出所述被检验分区签名。
步骤s205:根据所述被取出的被检验分区签名对所述被检验分区名和分区密钥表进行正确性确定。
在本实施例的加密安卓系统的方法中,通过所述解密算法解密所述cpu后,可以使所述cpu操作不受限制,正常工作;且,由于所述解密算法位于所述bootloader中,其产生的要求计算量小,处理速度快,存储空间占用小,抗破解能力强。
此外,在本实施例的加密安卓系统的方法中,整个系统由硬件到软件,层层向上加密,从而可以保证客户数据不被窃取。
其中,本发明的加密安卓系统的方法中的相关技术术语解释如下:
bootloader,嵌入式系统引导装载系统
cpu,中央处理器
ramdisk,虚拟内存盘
kernel,操作系统内核
system分区,系统分区
对本领域的技术人员来说,可以根据本发明的发明方案和发明构思结合生产的实际需要做出其他相应的改变或调整,而这些改变和调整都应属于本发明所公开的范围。