掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Openharmony的组件权限管理方法

文献发布时间:2023-06-19 19:30:30


一种基于Openharmony的组件权限管理方法

技术领域

本发明涉及Openharmony操作系统的系统服务开发管理领域,具体地说是一种基于Openharmony的组件权限管理方法。

背景技术

Openharmony是国产的一款开源的操作系统,具有先进的分布式框架,同时由于发布的时间不长,功能尚不完善。特别是在金融场景下,NAPI(新型应用程序编程接口)可以被任何经过简单签名的应用调用,对系统服务的访问也没有做实质性的权限控制,这导致一些具有金融属性的需要进行访问控制的系统服务和NAPI被暴露在信息泄露和恶意操作的危险之中。而在每个系统服务和NAPI中加入权限控制功能将耗费大量的开发工作量,最终影响整体的开发效率。

现有技术中,系统服务的调用是通过Openharmony系统的SAMGR,而NAPI的调用是通过BUNDLEMGR中转实现,需要将以上两种服务融合到一种框架中。

操作系统中进程间的通信都是经过binder以代理的方式进行,被调双方均无法获取对方的信息,也就无法进行权限控制。需要使用一种机制能够使被调用方能够感知调用者的身份,进而判断访问权限。

发明内容

本发明基于Openharmony L2(开源鸿蒙标准系统)系统,为系统开发者提供一种针对系统服务和NAPI的权限管理方法,既一种基于Openharmony的组件权限管理方法,以解决现有技术中系统服务的调用是通过Openharmony系统的SAMGR(系统能力管理服务),而NAPI的调用是通过BUNDLEMGR(系统包管理服务)中转实现,需要将以上两种服务融合到一种框架中;和操作系统中进程间的通信都是经过binder(进程通信套件)以代理的方式进行,被调双方均无法获取对方的信息,也就无法进行权限控制的问题。

为实现上述目的,本发明提供以下技术方案:

一种基于Openharmony的组件权限管理方法,在不改变Openharmony本身架构的前提之下,为系统服务和NAPI的访问控制提供了一种通用的技术方案,具体包括以下步骤:

S1、建立区别于Openharmony原生的全新注册表;

S2、在Openharmony系统的BUNDLEMGR追加应用注册操作;

S2.1、修改应用安装进程ProcessBundleInstall方法,在应用安装过程完成后插入注册表注册功能;

S2.1.1、取得应用的BundleName(组件名称)并传入注册表对应NAME字段;

S2.1.2、取得应用版本号存入注册表;

S2.1.3、取得应用版本号、签名、描述、版权信息存入注册表;

S2.1.4、判断应用类型,系统预置应用为OS,第三方应用为EXT,存入注册表;

S2.1.5、设置应用初始状态为“使用中”;

S2.1.6、生成应用安全签名;

S2.1.7、提交注册信息,存入系统内置数据库,完成注册。

S2.2、修改应用卸载进程ProcessBundleUninstall方法,在应用卸载时清除注册表记录。

S2.2.1、通过bundleName取得应用注册信息;

S2.2.2、删除对应注册表信息;

S2.2.3、完成应用删除。

S3、修改应用管理服务appmgr(应用管理服务),植入应用启动权限控制功能;

S3.1、取得应用注册信息;

S3.2、判断是否具有应用启动权限;

S3.3、如权限验证通过则启动应用,否则结束应用启动过程。

S4、修改NAPI框架功能;

S4.1、在NAPI启动时追加注册功能;

S4.1.1、调用系统原注册接口进行注册;

S4.1.2、取得NAPI名称信息;

S4.1.3、初始化NAPI的类型、运行状信息;

S4.1.4、向[步骤S1]的注册表中注册NAPI;

S4.2、成生数字签名;

S4.2.1、取得Napi的数型和名称;

S4.2.2、使用BlowFinsh算法生成数字签名;

S4.3、返回数字签名,保存至内存中;

S4.4、增加NAPI访问控制功能;

S4.4.1、取得访问NAPI应用的数字签名,根据CID(组件表示码)判断是否具有访问权限;

S4.4.2、具有访问权限的应用继续执行NAPI调用操作;

S4.4.3、中断没有访问权限应用的调用操作。

S5、修改ACE(跨平台能力环境)框架;

S5.1、在应用安装时,取得应用属性信息;

S5.2、将应用的属性信息存入注册表。

S6、修改SAMGR服务;

S6.1、在safwk(系统服务框架)中追加权限判断功能;

S6.1.1、取得SAMGER代理服务;

S6.1.2、判断服务是否正常取得,如未正常取得则返回错误消息,结束SA(系统服务)调用服务;

S6.1.3、取得系统注册码以及SA的数字签名;

S6.1.4、判断是否具有访问权限;

S6.2、在SAMGR中追加权限判断功能;

S6.2.1、判断系统注册码是否有效,如无效,调用中断,返回错误信息;

S6.2.2、根据传入数字签名判断是否具有访问权限。

S7、系统服务组件访问权限配置;

S7.1、在系统启动时读取系统服务接口访问权限的初始化文件;

S7.2、根据配置文件生成和更新已注册组件的CID,CID由组件编号和访问者数字签名组件;

S7.3、将CID存入注册表中对应的字段中。

S8、系统服务组件访问权限修改;

S8.1、在被访问组件的CID增加访问者的数字签名,即可添加访问权限;

S8.2、在被访问组件的CID删除访问者的数字签名,即可删除访问权限。

S9、组件状态修改。

S9.1、被访问组件注册信息中的STATUS字段默认为1:使用中;

S9.2、将被访问组件注册信息中的STATUS字段改为0:停用,则该组件停用,处于不可使用状态。

与现有技术相比,本发明有益效果如下:

本发明填补了基于Openharmony的系统服务访问控制组件的空白,可做到根据需求自主设置系统服务的访问者权限,系统服务的访问权限可远程修改,权限修改指令可定制化,保障了隐私与安全性,且使用方法灵活,可按需使用,不影响原系统技术架构体系。

附图说明

图1为本发明步骤S1中的注册表结构;

图2为本发明组件管理功能系统启动加载流程;

图3为本发明权限判断流程图。

具体实施方式

为阐明技术问题、技术方案、实施过程及性能展示,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释。本发明,并不用于限定本发明。以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

实施例1

一种基于Openharmony的组件权限管理方法,在不改变Openharmony本身架构的前提之下,为系统服务和NAPI的访问控制提供了一种通用的技术方案,具体包括以下步骤:

S1、建立区别于Openharmony原生的全新注册表;

S2、在Openharmony系统的BUNDLEMGR追加应用注册操作;

S2.1、修改应用安装进程ProcessBundleInstall方法,在应用安装过程完成后插入注册表注册功能;

S2.1.1、取得应用的BundleName并传入注册表对应NAME字段;

S2.1.2、取得应用版本号存入注册表;

S2.1.3、取得应用版本号、签名、描述、版权信息存入注册表;

S2.1.4、判断应用类型,系统预置应用为OS,第三方应用为EXT,存入注册表;

S2.1.5、设置应用初始状态为“使用中”;

S2.1.6、生成应用安全签名;

S2.1.7、提交注册信息,存入系统内置数据库,完成注册。

S2.2、修改应用卸载进程ProcessBundleUninstall方法,在应用卸载时清除注册表记录。

S2.2.1、通过bundleName取得应用注册信息;

S2.2.2、删除对应注册表信息;

S2.2.3、完成应用删除。

S3、修改应用管理服务appmgr,植入应用启动权限控制功能;

S3.1、取得应用注册信息;

S3.2、判断是否具有应用启动权限;

S3.3、如权限验证通过则启动应用,否则结束应用启动过程。

S4、修改NAPI框架功能;

S4.1、在NAPI启动时追加注册功能;

S4.1.1、调用系统原注册接口进行注册;

S4.1.2、取得NAPI名称信息;

S4.1.3、初始化NAPI的类型、运行状信息;

S4.1.4、向[步骤S1]的注册表中注册NAPI;

S4.2、成生数字签名;

S4.2.1、取得Napi的数型和名称;

S4.2.2、使用BlowFinsh算法生成数字签名;

S4.3、返回数字签名,保存至内存中;

S4.4、增加NAPI访问控制功能;

S4.4.1、取得访问NAPI应用的数字签名,根据CID判断是否具有访问权限;

S4.4.2、具有访问权限的应用继续执行NAPI调用操作;

S4.4.3、中断没有访问权限应用的调用操作。

S5、修改ACE框架;

S5.1、在应用安装时,取得应用属性信息;

S5.2、将应用的属性信息存入注册表。

S6、修改SAMGR服务;

S6.1、在safwk中追加权限判断功能;

S6.1.1、取得SAMGER代理服务;

S6.1.2、判断服务是否正常取得,如未正常取得则返回错误消息,结束SA调用服务;S6.1.3、取得系统注册码以及SA的数字签名;

S6.1.4、判断是否具有访问权限;

S6.2、在SAMGR中追加权限判断功能;

S6.2.1、判断系统注册码是否有效,如无效,调用中断,返回错误信息;

S6.2.2、根据传入数字签名判断是否具有访问权限。

S7、在系统启动时读取系统服务接口访问权限的初始化文件;

S7.1、在系统启动时读取权限初始化文件;

S7.2、根据配置文件生成和更新已注册组件的CID,CID由组件编号和访问者数字签名组件;

S7.3、将CID存入注册表中对应的字段中。

S8、系统服务组件访问权限修改;

S8.1、在被访问组件的CID增加访问者的数字签名,即可添加访问权限;

S8.2、在被访问组件的CID删除访问者的数字签名,即可删除访问权限。

S9、组件状态修改。

S9.1、被访问组件注册信息中的STATUS字段默认为1:使用中;

S9.2、将被访问组件注册信息中的STATUS字段改为0:停用,则该组件停用,处于不可使用状态。

具体使用时,将本申请的组件权限管理方法加载到操作系统中,并开始进行权限管理工作需要经过如下具体加载流程:

Step1:系统启动时从指定目录读取系统服务访问权限配置文件;

Step2:启动权限控制服务Module_Management;

Step3:判断系统是否第一次启动,满足的情况下,即自动生成注册表;

Step4:读取配置文件中需要进行管控的系统服务,生成以下注册信息;

1:编号,2:类型,3:名称,4:版本,5:签名6:描述,7:版权,8:种类,9:状态,10:标识码;

Step5:读取配置文件中需要进行管控的Napi,生成注册信息,注册信息内容同Step4;

Step6:扫描系统预装应用,将预装应用信息自动写入注册表,注册表内容同Step4;

Step7:使用对称分组加密算法生成CID,CID由组件授权ID与调用者指纹组成;

Step8:从Step1读取的配置文件中取得调用者初始化信息,使用非对称加密算法为调用者生成指纹信息;

Step9:从Step1读取的配置文件中取得调用者初始化信息,使用非对称加密算法为调用者生成指纹信息。

当本申请的组件权限管理功能经过上述步骤加载到系统中后,访问系统组件所经过的访问权限验证过程如下所示:

Step1:调用者发出调用请求,调用请求的参数需包含调用者指纹以及系统服务全局唯一识别码,在SAMGR处理之前由权限控制服务拦截;

Step2:权限控制服务判断调用者是否具有访问被调用服务的权限,取得被调用服务的CID,与调用者指纹进行匹配。如匹配成功则运行Step3-1,如不成功则运行Step3-2;

Step3-1:验证成功,将请求服务交由SAGMR继续处理,并由SAMGR代理服务返回请求结果;

Step3-2:验证失败,结束调用动作。

本发明填补了基于Openharmony的系统服务访问控制组件的空白,可做到根据需求自主设置系统服务的访问者权限,系统服务的访问权限可远程修改,权限修改指令可定制化,保障了隐私与安全性,且使用方法灵活,可按需使用,不影响原系统技术架构体系。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

技术分类

06120115931666