一种基于安全芯片的多用户分区隔离方法与流程

文档序号:29701092发布日期:2022-04-16 14:28阅读:274来源:国知局
一种基于安全芯片的多用户分区隔离方法与流程

1.本发明涉及智能终端技术领域,特别是基于安全芯片的多用户分区隔离方法。


背景技术:

2.随着信息技术的高速发展,android系统的不断迭代,android8.0以上得到不断优化,系统更加稳定和流畅,尽管如此还是存在多种安全问题。android操作系统是开源的系统,相比于ios等封闭的移动操作系统,它更容易被攻击和感染病毒,对于数据泄露也缺乏完善的保护机制。在终端系统面临巨大安全风险的现状下,除了在android原生系统上增加安全应用这一解决方案,双操作系统应运而生。
3.当前主流的双操作系统方案主要有四种:基于linux账户技术的双操作系统方案(简称双用户)、基于安卓服务改造技术的多系统方案(简称安全域)、基于容器技术的双操作系统方案(简称双操作系统)和基于虚拟机技术的双操作系统方案(简称虚拟机)。这些双操作系统通过在软件或硬件层面的数据隔离策略,来达到内部系统数据信息安全的目的。
4.目前双操作系统的多用户功能里多用户使用相同的分区,并没有做到物理隔离,所有数据包括系统数据和应用数据均使用同一个分区/data,数据十分容易泄露,安全性极低。同时多用户系统没有设计较强的隐蔽性,并且在数据安全方面没有其他任何手段加固保护,可以操作文件中任何数据,而且没有对数据加密处理,数据泄漏风险极大。


技术实现要素:

5.本发明通过结合安全芯片和多用户分区技术,将多用户里各用户的数据物理隔离,将非0用户数据存放在独立分区,使各用户之间从软件到硬件层满足分区隔离需求,通过安全芯片的加解密技术对独立分区对分区文件加密保护,提高用户数据安全等级。安全芯片采用国产密码算法,在算法安全性上可得到保障,保证了用户数据的安全。同时系统还设计自毁模式,当满足限定条件时,系统调用自毁模块,将新用户相关的分区数据包括个人数据和分区文件系统进行格式化,这样可以从根本上防止用户私密数据泄露,保护用户的隐私信息安全。本发明是通过如下技术方案实现的。
6.一种基于安全芯片的多用户分区隔离方法,主用户使用原生的流程,所有数据存放在data分区,当新用户创建时,系统从硬件层面划分一个独立的分区cells,所有新建用户的所有数据存放在独立的分区下面,各用户之间无法跨物理分区进行相互的数据访问,保证数据的安全性。
7.本发明的有益效果是:与现有技术相比,本发明针对多用户创建独立的分区,从物理底层达到各系统用户相互隔离,保护用户数据安全,同时通过安全芯片提供的加密校验技术对分区的挂载进行校验,保证分区安全挂载。
8.本发明基于可信计算技术、selinux技术、系统级别的应用运行环境隔离技术、多用户技术以及以防信息泄露为核心的设备安全管理技术,实现双操作系统环境,达到应用、数据安全隔离的目的。
9.可以通过密码触发销毁分区系统,快速清除系统分区存储及分区系统的使用痕迹,保护系统安全无泄露,保护数据不被窃取。
10.安全芯片中的算法能力由加密芯片硬件ip核提供,所有的加密运算在ip核中完成,可以有效的抵抗各种形式的攻击。
附图说明
11.图1是现有技术的原生多用户的分区结构图。
12.图2是本发明的独立分区多用户的结构图。
13.图3是本发明的独立分区示意图。
14.图4是本发明的原生selinux安全框架示意图。
15.图5是本发明的使用独立分区后,selinux安全框架示意图。
16.图6是本发明的系统独立分区的启动、校验流程图。
17.图7是本发明的分区销毁流程图。
18.图8是本发明的fbe流程图。
具体实施方式
19.以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
20.如图1所示,是现有技术中,原生多用户在创建多用户时,所有用户(包括0号主用户)的数据存放在同一个data(数据)分区下,通过userid创建各自的目录,各自应用产生的数据及共享数据均存放在data目录(如共享数据存放在/data/media目录下)。所有用户使用同一分区,数据也没有隔离,这种模式下,数据的安全性不高,很容易导致用户数据泄露被窃取。
21.如图2所示,是本发明使用独立分区后多用户的分区结构图,对原生多用户进行分区隔离划分,0号主用户使用原生的流程,所有数据存放在data分区,另起独立分区(cells),当新用户创建时,系统从硬件层面划分一个独立的分区,所有新建用户(以10用户为例),10用户的所有数据存放在独立的分区下面,各用户之间无法跨物理分区进行相互的数据访问,保证数据的安全性。
22.如图3所示,为分区使用示意图。区别于0号主用户的非0用户使用用独立分区cells,在编译系统源码时生成cells.img(分区镜像)并在partition(分区)分配时,分配好所需的大小,init.rc(初始化启动文件)中配置cells分区初始化目录。
23.cells/user|user_de user目录存放新分区用户的app及其数据
24.cells/system|system_ce|system_de目录存放新分区用户的相关系统设置数据
25.cells/vendor_ce|vendor_de目录存放厂商定制部分相关数据
26.cells/misc|misc_ce|misc_de目录存放引导恢复信息及关键设置数据
27.cells/media目录存放应用的共享存储目录,例如图片、视频、下载等媒体内容。
28.android系统启动时,解析init.rc文件时,会创建以上相关目录,并配置好对应的selinux(安全策略)。
29.以android系统为例,基于android11为实现新分区的正常使用,需要对系统的各
处关键流程做修改,具体实现如下:
30.android系统的system(系统)层:
31.rootdir(根目录)中增加cells目录的相关结构,在init.rc中增加cells/media user system vendor等相关目录的创建,在init.environ.rc.in(初始化环境配置文件)中增加全局属性指向cells根目录,此处逻辑修改主要为了内核启动后,拉起init进程进行系统初始化解析rc文件时,创建好cells相关的目录。
32.init.rc中增加相关逻辑,实现init在做cells.img挂载时与安全芯片的交互功能,通过安全芯片的验证校验成功后,才能进行cells.img的挂载,同时在init的selinux(安全策略)逻辑中,增加安全策略校验,对cells目录的secontext(安全上下文)进行安全性检验。
33.vold(存储管理服务)中新增cells根目录接口,系统主用户(0号用户)返回/data为根目录的文件路径,而所有新建非0用户返回以/cells为根目录的文件路径,例如media目录,新建用户10则返回/cells/media/10。同时在volume挂载的时候新建用户挂载cells/media共享媒体目录,针对emulatedvolume的挂载,新用户创建一套自用的目录/mnt/cellsrutime及相关子目录用以适配新用户,以区分于主用户。
34.针对android系统的fbe功能,由于fbe功能的密钥不能进行跨分区加解锁,所以需要修改相关逻辑。在fscrypt(文件加解密)中修改逻辑,针对新分区实现其本身的一套加解锁流程,用以适配分区的fbe(file-based encryption基于文件的加解密)功能。
35.sdcard(外置存储管理)中针对mnt(缓存)目录的相关挂载,增加相关逻辑,当进行新用户的分区目录挂载时,sdcardfs(外置存储文件管理服务)机制使用"/mnt/cellsruntime/default/""/mnt/cellsruntime/read/""/mnt/cellsruntime/write/""/mnt/cellsruntime/full/"等相关目录,以适配新分区,最终这些相关目录会挂载到cells/media共享媒体目录。
36.在android系统sepolicy(安全策略)中增加cells目录的file_context(文件上下文实体),以cells_file为上下文管控新建分区里所有目录文件的安全上下文,同时针对cells目录的几个相关主目录(system user vendor等)增加单独的安全上下文。并在相关的te(策略实体)文件(system_server zygote voldinit install等te)中增加对cells_file的allow(许可)规则。
37.在版本sepolicy(安全策略)(device/mediatek/sepolicy)中同时针对分区新增对应的block_device(块设备)(/dev/block/platform/mtk-\b(msdc|ufs)\b\.0/[0-9]+\.\b(msdc0|ufs0)\b/by-name/cells以及/dev/block/by-name/cells),配置好针对此block_device相关的规则,在initfsck e2fs resize等相关te中增加对cells block_device的相关规则支持。
[0038]
external(安卓源码扩展)中libselinux(安全策略库)中,增加分区相关目录比如cells/user等目录的安全策略处理逻辑。
[0039]
android系统的框架层:
[0040]
在zygote(孵化进程)的相关多用户逻辑中进行修改,zygote进行isolateappdata(应用数据分离方法)时,根据userid,新用户的ce、de目录返回分区目录(cells/user cells/user_de),同时relabel(重定向标签)分区目录的上下文。
install等服务运行过程中向libselinux库(安全策略库)发起安全检查、上下文检查匹配,最终进入内核空间安全策略文件系统做最终的安全检查。
[0057]
原生的多用户,所有用户均处于/data分区下,使用独立分区后,需要使用单独的安全上下文。独立分区的安全框架如图5所示,在用户空间安全上下文配置策略(sepolicy模块中增加新分区相关的安全上下文cells_file,同时由于cells分区是独立的块设备,需要配置相关的cells_block_device),配置上下文同时,需要针对新增的安全上下文在不同的te实体上增加一系列的安全规则。
[0058]
同时基于新分区的多用户,在新用户的创建、启动流程中需要针对新分区做相应的流程改变,在zygote(孵化进程)中创建新用户时需要增加对/cells/user等相关的目录的relabel(对新用户创建应用目录时进行重新打标签),在vold中进行emulate的lock与unlock时,需要增加对新分区目录进行setfilecon(设置文件安全上下文)和restorecon(重加载文件安全上下文),在installd服务中新用户创建应用数据时需要基于新分区目录进行restorecon_app_data。
[0059]
libselinux核心安全服务库为上述zygote、vold、installd等服务提供相关的与安全上下文操作方法(setfileconrestorecon等),在libselinux中修改方法(pkgdir_selabel_lookup)对新分区cells的处理方法以适配新分区里创建多用户应用目录等操作。
[0060]
如图6所示,是独立分区启动及使用流程图,包括如下步骤:
[0061]
系统在创建多用户的时候,各用户系统启动流程基本一致,主要区别在于挂载文件系统位置不同以及独立分区的挂载需要通过安全芯片的检验,保证非0用户的安全性。具体流程如下:
[0062]
android启动过程中,解析init.rc后,在android系统根目录下创建cells文件夹。
[0063]
从rom(只读存储器)对应的cells分区位置读取ext4文件格式cells.img镜像。工作系统分区加载程序计算cells.img hash值,与存储在安全芯片中的hash(哈希)进行比对,比对成功后对cells.img的签名值进行验签,验签通过则解析cells镜像。解析cells.img镜像文件格式,从超级块中读取到cells.img镜像相关信息,包含文件系统的状态、文件系统类型、大小、区块数、索引节点数等。
[0064]
成功解析完cells.img镜像后,挂载cells.img到cells目录,cells挂载成功后,在cells目录下创建工作系统相关的目录,同时系统selinux(安全策略)服务以cells为rootfs,配置cells的secontext(安全上下文)并根据规则配置cells目录下各子目录的secontext(安全上下文)。
[0065]
以上步骤完成分区目录的相关工作,用户在ui界面操作新建用户后,进入用户创建流程。
[0066]
ums(usermanagerservice用户管理服务)在创建用户(例如创建用户id为10)过程中,通过调用installd服务创建用户专用目录,最终由vold完成各用户目录的创建(cells/user/10cells/user_de/10cells/media/10等),完成各用户目录创建后开始安装apps至相应的目录。
[0067]
完成应用安装后,ums开始通过system_server(系统服务)拉起各个应用,启动桌面进入用户系统。
[0068]
如图7所示,为分区销毁流程,包括如下步骤:
[0069]
基于系统安全策略设计多用户系统在特殊场景下可以被销毁,保护用户的个人私有数据不被窃取。
[0070]
设计销毁触发方式,系统设置界面提供相关设置,设置销毁密码,当用户在锁屏界面输入对应的销毁密码时,可以触发销毁。
[0071]
销毁数据时系统的用户目录及应用数据会被清除,系统分区cells整个分区被格式化,所有数据清除且不可再用。
[0072]
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1