首页> 中国专利> 提高嵌入式Linux内核安全性的应用程序启动方法和系统

提高嵌入式Linux内核安全性的应用程序启动方法和系统

摘要

提供一种通过发放超级用户权限提高嵌入式Linux内核的安全性的应用程序启动方法和系统。所述方法包括:搜索关于用户选择的应用程序的安全设置信息;将应用程序的处理器的用户帐户改为与所述安全设置信息中的应用程序相关的用户ID;根据所述安全设置信息中的权能的设置信息设置处理器的权能;根据安全设置信息中的基本目录改变处理器的基本目录;和启动应用程序。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-01

    授权

    授权

  • 2009-06-03

    实质审查的生效

    实质审查的生效

  • 2009-04-08

    公开

    公开

说明书

技术领域

本发明一般涉及一种用于提高嵌入式Linux内核安全性的应用程序启动方法和系统,具体来说,涉及一种通过发放超级用户权限提高嵌入式Linux内核安全性的应用程序启动方法和系统。

背景技术

随着硬件处理器技术的发展,嵌入式系统的性能也得到极大的提高。因此,可通过固定线缆和移动网络将嵌入式系统连接到外部通信装置。因为可在PDP和PMP装置中使用诸如Linux的通用操作系统,所以用户或者程序产生器创建的外部程序可在所述嵌入式系统中被运行。因此,嵌入式系统的安全性变得很重要。

在诸如Linux的通用操作系统中,安全方法基于多用户环境(诸如传统的服务器-客户机环境)。在多用户环境中,操作系统应当将用户处理器从系统管理处理器中分离出来,以保护系统不受用户影响。为此,所述操作系统保留一个具有用于管理系统所需的大部分权限的独立的超级用户帐户。在Unix类型的操作系统中(诸如Linux),超级用户帐户通常被称为根帐户。所述根帐户具有用于将特定端口与处理器进行绑定、载入内核模块、安装和卸载文件系统以及各种系统管理的权限。

因此,在传统的Linux操作系统中,基于用户帐户而不是根帐户来设计安全方法。典型示例是安全内核。安全内核提高内核的内部安全性。也就是说,只允许拥有相应文件的用户的用户帐户访问该文件,并且允许拥有相应权限的用户帐户进行网络连接和处理器间的通信。

因为嵌入式系统通常在单一用户环境下而不是多用户环境(诸如服务器-客户机环境)下操作,所以一个用户使用嵌入式系统。因此,在嵌入式系统中,不需要用户帐户,而使用根帐户运行多数处理器。

图1是示出根据传统安全方法在嵌入式系统中运行应用程序的环境的框图。参照图1,使用根帐户运行应用程序110、120和130的处理器的每一个(以下称为应用程序处理器),并且每个处理器可没有任何限制地访问Linux内核100。因为即使当应用程序处理器110、120和130需要部分超级用户权限或者不需要超级用户权限时也可以行使与超级用户一样的全部权限(以下称为超级用户权限),所以他们会不必要地访问嵌入式系统。因此,根据基于多用户环境的传统安全方法在嵌入式系统中运行应用程序是不是有效的方法并且对嵌入式系统安全性构成威胁。

发明内容

为了解决以上讨论的现有技术的缺点,本发明的主要目的在于实际解决至少以上问题和/或缺点,并且至少提供以下优点。因此,本发明的一个目的在于提供一种使用传统安全方法的应用程序启动方法和系统,所述方法和系统在Linux操作系统中使用,并且所述方法和系统在不对传统安全方法进行大规模修改的情况下在嵌入式系统中被使用。

根据本发明的一方面,提供一种在嵌入式Linux内核中启动应用程序的方法,所述方法包括以下步骤:搜索关于用户选择的应用程序的安全设置信息;将应用程序的处理器的用户帐户改为与所述安全设置信息中的应用程序相关的用户标识(ID);根据所述安全设置信息中的权能的设置信息设置处理器的权能;根据安全设置信息中的基本目录来改变处理器的基本目录;和启动应用程序。所述方法还包括:在搜索安全设置信息的步骤之前,安装应用程序的步骤。所述安装应用程序的步骤可包括以下步骤:为将被安装的应用程序分配用户ID;对应用程序所需的权能的设置信息进行配置;和在注册表中存储包括用户标识(ID)和权能的安全设置信息。

根据本发明的另一方面,提供一种在嵌入式Linux内核中启动应用程序的设备,包括:用户接口,接收关于用户选择的应用程序的信息;注册表接口,通过与注册表管理器通信,从注册表搜索关于应用程序的安全设置信息;和控制器,根据安全设置信息来设置用户帐户、权能和基本目录,并启动应用程序的处理器。所述系统还可包括应用程序安装器,所述应用程序安装器用于检测将被安装的应用程序的安全设置信息,并在安装应用程序的处理中将检测到的安全设置信息存储在注册表中。

根据本发明另一方面,提供一种存储执行在嵌入式Linux内核中启动应用程序的方法的程序的计算机可读记录介质,所述方法包括以下步骤:搜索关于用户选择的应用程序的安全设置信息;将应用程序的处理器的用户帐户改为与所述安全设置信息中的应用程序相关的用户标识(ID);根据所述安全设置信息中的权能的设置信息设置处理器的权能;根据安全设置信息中的基本目录改变处理器的基本目录;和启动应用程序。

在进行以下对本发明的详细描述之前,贯穿本专利文档,对使用的特定词语和词组提前进行定义可以是有利的:术语“包括”和“包含”以及其变型表示非限制性的“包含”;术语“或者”是包括性的,表示“和/或”;词组“与......相关联”及其变型可表示“包括”、“被包括在......中”、“与......相互连接”、“包含”、“被包含在......中”、“连接到......或者与......连接”、“耦合到......或者与......耦合”、“与......通信”、“与......合作”、“交织”、“并列”、“与......接近”、“绑定到......或者与......绑定”、“具有”、“具有......的属性”等;以及术语“控制器”表示控制至少一项操作的任何装置、系统或者所述装置、系统的一部分,可以以硬件、固件或者软件实现的装置或者以上至少两项的一些组合实现所述装置。应当注意,不管本地还是远程,与任何特定控制器相关的功能可以是集中或者分布的。贯穿在本专利文档,提供了对特定词语和词组的定义,从而本领域技术人员应当理解,在大多数情况下,这些前述的定义既可以被应用于现有技术,也可将这些定义的词语和词组应用于未来的技术。

附图说明

为了更全面地理解本公开及其优点,现在对以下结合附图的描述进行参照,其中相同的标号表示相同的部分:

图1是示出根据传统安全方法的在嵌入式系统中运行应用程序的环境的框图;

图2是示出根据本发明实施例的用于启动应用程序的示意性步骤的流程图;

图3是示出根据本发明实施例的应用启动处理器的环境的示图;

图4是根据本发明实施例的应用启动处理器的框图;

图5是示出根据本发明实施例的启动应用程序的步骤的流程图;和

图6是示出根据本发明实施例的安装应用程序的步骤的流程图。

具体实施方式

以下讨论的图2到图6以及用于描述本专利文档中的本公开的原理的各个实施例仅用于示例性的目的,不应被理解为以任何方式限制本公开的范围。本领域技术人员将理解,本公开的原理可以在任何适当安置的处理系统中被实现。

图2是示出根据本发明实施例的启动应用程序的示意性步骤的流程图。

参照图2,用户210使用应用启动处理器220选择将被启动的应用程序。应用启动处理器220激活在Linux内核240上将被启动的选择的应用程序处理器232、234和236。

因此,用户210不能直接启动应用程序。用户210仅可以使用应用启动处理器220来启动应用程序。换句话说,应用启动处理器220被用作用户210和应用程序处理器232、234和236之间的接口。为此,因为应用启动处理器220应当在嵌入式Linux系统运行时持续运行,所以应用启动处理器220可被实现为嵌入式Linux系统中的守护进程(daemon)。通常,应用启动处理器220可被实现为图形用户界面(GUI),在这种情况下,应用启动处理器220还被用作在嵌入式Linux系统中管理背景屏幕和图标的窗口管理器。因此,应用启动处理器220可通过修改窗口管理器来实现。

图3是示出根据本发明实施例的运行应用启动处理器的环境的示图。

参照图3,应用启动处理器320向注册表管理器330请求关于应用程序的安全设置信息,以启动所述应用程序,并从注册表管理器330接收所述安全设置信息。注册表管理器330是用于管理存储在注册表(registry)中的信息的驻留处理器。通常,注册表管理器330在Linux操作系统中被实现为称作gconfd的守护进程。

注册表332是存储关于应用程序的信息的数据库(DB)。如图3所示,注册表332可存储关于应用程序的各种信息以及安全设置信息。

安全设置信息包括:与应用程序相关的用户标识(ID)、权能(capability)和基本目录。例如,在图3中,在存储在注册表332中的第一应用中,第一字段存储用户ID“100”,第二字段存储权能“0x40f00000”,第三字段存储基本目录“/usr/local/class1”。

权能是处理器的属性,Linux权能系统基于所述处理器的属性调整处理器的权限。Linux权能系统将部分超级用户权限分配给用户处理器。也就是说,分配给用户处理器的权能指示用户处理器行使的权限。权能内核模块基于分配给用户处理器的权能来控制用户处理器的操作。以下,表1是在Linux内核2.2.13中定义的权能的列表。所述权能是从内核源...include/linux/capability.h中提取的。

表1

名称    编号描述CAP_CHOWN    0重新定义改变文件所有权的限制CAP_DAC_OVERRIDE    1重新定义文件的访问限制CAP_DAC_READ_SEARCH    2重新定义读取并搜索文件和目录的限制CAP_FOWNER    3重新定义当进程占用文件时的文件的限制CAP_FSETID    4允许设置setuid位(未实现)CAP_KILL    5允许向其他人拥有的进程发送信号CAP_SETGID    6允许组ID操作CAP_SETUID    7允许用户ID操作CAP_SETPGAP    8将权能传送到其他进程CAP_Linux_IMMUTABL E    9允许不可逆和只追加文件属性的修改CAP_NET_BIND_SERVI CE    10允许绑定到1024以下的套接字CAP_NET_BROADCAST    11允许网络广播和多播访问CAP_NET_ADMIN    12允许网络管理任务:接口、防火墙、路由......CAP_NET_RAW    13允许使用原始套接字CAP_IPC_LOCK    14允许锁定内存片段CAP_IPC_OWNER    15重新定义IPC所有权检查CAP_SYS_MODULE    16插入和删除内核模块CAP_SYS_RAWIO    17允许访问ioperm和ioplCAP_SYS_CHROOT    18允许使用chroot()CAP_SYS_PTRACE    19允许跟踪任何进程CAP_SYS_PACCT    20允许进程帐户管理的配置CAP_SYS_ADMIN    21许多系统管理任务:mount、quotas、swapping更多CAP_SYS_BOOT    22允许重新启动系统

CAP_SYS_NICE    23允许提高优先级,设置其他进程的优先级CAP_SYS_RESOURCE    24重新定义资源限制CAP_SYS_TIME    25允许改变系统时钟CAP_SYS_TTY_CONFIG    26允许tty装置配置

例如,当第一应用程序处理器342尝试访问Linux内核310以运行受限于超级用户权限的操作时,权能内核模块312确定第一应用程序处理器342是否被分配了用于运行所述操作的超级用户权限,并且根据确定的结果控制对Linux内核310的访问。

应用启动处理器320可将关于由用户选择的应用程序的标识信息发送到注册表管理器330,以请求关于所述应用程序的安全设置信息。在一个实施例中,因为不同用户ID被分别分配给了应用程序,所以与应用程序相关的用户标识(ID)可被用作为标识信息。应用启动处理器320可使用映射表将用户选择与用户ID进行映射。以下,将参照图4对映射表进行描述。

注册表管理器330响应于应用启动处理器320的请求在注册表332中搜索关于应用程序的安全设置信息,并将安全设置信息发送到应用启动处理器320。应用启动处理器320根据所述安全设置信息启动所述应用程序。使用相应的用户ID并在相应基本目录上运行具有指示运行权限的相应权能的每一个应用程序。

基本目录是相应应用程序处理器识别的文件系统的根目录。不同的基本目录被分别分配给第一应用程序处理器342和第二应用程序处理器344。为第三应用程序处理器346和第四应用程序处理器348分配一个基本目录。

图4是根据本发明实施例的应用启动处理器的框图。

运行应用启动处理的应用启动处理器400包括:控制器402、用户接口404、注册表接口406和映射表408。用户接口404接收关于用户410选择的应用程序的信息。注册表接口406基于接收到的信息向注册表管理器430请求关于应用程序的安全设置信息。在所述请求中,注册表接口406还向注册表管理器430发送关于所述应用程序的标识(ID)信息。在一个实施例中,与应用程序相关的用户ID可被用作标识信息。映射表408使用例如由用户410选择的图标来搜索用户ID。

注册表接口406从注册表管理器430接收安全设置信息,并基于接收到的安全设置信息来设置用户帐户、权能和基本目录,以启动所述应用程序。

图5是示出根据本发明实施例的启动应用程序的步骤的流程图。

在步骤501,安装应用程序。将参照图6描述应用程序的安装。

图6是示出根据本发明实施例的安装应用程序的步骤的流程图。可通过单独的安装处理器来执行安装步骤。参照图6,在步骤601,用户ID被分配给将被安装的应用程序。分配的用户ID与分配给预装的应用程序的现有用户ID不同。在嵌入式系统中,因为将被启动应用程序的数量相对少,所以可将不同用户ID分别分配给应用程序。以应用程序分别由相应用户运行的方式来运行每个应用程序。还可如多用户环境中一样,独立地运行每个应用程序处理器。此外,将不同的用户帐户分别分配给应用程序处理器,从而基于分配给应用程序的用户ID来设计根据本发明的上述安全方法。

在步骤602,对分配给应用程序处理器的权能的设置信息进行配置。安装处理器确定运行应用程序所需的超级用户权限,并且配置所述设置信息,以设置对应于所需权限的权能。在启动应用程序的处理中,应用启动处理器可使用配置的设置信息来设置应用程序处理器的权能。

在步骤603,安装处理器为应用程序处理器分配基本目录。如上所述,不同基本目录可被分别分配给应用程序处理器,或者一个基本目录可被分配给多个应用程序处理器。因此,安装处理器根据应用程序的特点分配共享的基本目录或者单独的基本目录。由此,每个应用程序处理器具有部分超级用户权限,但不能访问与嵌入式系统的操作相关的文件,从而可保护嵌入式系统免受攻击应用程序的攻击,并且可将由外部攻击导致的损害局限于被攻击的应用程序。另外,基本目录独立于属于其他目录的其他应用程序处理器,从而可以防止修改和改变非期望文件。因此,可提高应用程序处理器间的安全性,并且可最小化由病毒导致的损害。

在步骤604,在注册表中存储包括用户ID、权能和基本目录的安全设置信息。将在启动安装的应用程序的处理器中使用存储在注册表中的安全设置信息。

再次参照图5,在步骤502,用户选择将被启动的应用程序。在一个实施例中,可通过GUI实现的用户接口来做出对应用程序的选择。

在步骤503,注册表接口通过注册表管理器从注册表搜索关于选择的应用程序的安全设置信息。所述安全设置信息包括:与选择的应用程序相关的用户ID、权能和基本目录。在步骤504,控制器将用于应用程序处理器的用户帐户改为安全设置信息中的用户ID。在一个实施例中,控制器可以使用Linux系统的setuid()命令来改变应用程序处理器的用户帐户。

在步骤505,应用启动处理器确定应用程序处理器是否是系统管理处理器。系统管理处理器是需要部分超级用户权限的处理器。可基于安全设置信息中的权能的设置信息来做出所述确定。如果应用程序处理器不是系统管理处理器,则因为应用程序处理器不需要部分超级用户权限,所以可以省略设置权能的步骤506。根据本发明,使用fork()命令将所有应用程序处理器创建为应用启动处理器的子处理器,并且Linux内核基于默认权能创建新的处理器。因此,当应用程序处理器不是系统管理处理器时,可在没有设置权能的处理的情况下启动所述应用程序处理器。

如果应用程序处理器是系统管理处理器,则因为应用程序处理器需要部分超级用户权限,所以在步骤506控制器基于安全设置信息中的权能的设置信息设置所述权能。

在步骤507,控制器根据安全设置信息中的基本目录来改变所述应用程序处理器的基本目录。在步骤508,控制器启动该应用程序。在改变基本目录的处理中,控制器可使用Linux系统的chroot()命令。

上述用于提高嵌入式Linux内核的安全性的应用程序启动方法可由计算机可读代码的计算机可读记录介质来实现。所述计算机可读记录介质是用于存储可由计算机系统读取的数据的记录介质。所述计算机可读记录介质包括:ROM、RAM、CD-ROM、磁带、软盘和光学数据存储装置。此外,载波(例如通过互联网的传输)是计算机可读记录介质。另外,所述计算机可读记录介质可分布于连接至网络的计算机系统上,并以计算机可读代码被存储。

根据应用到由一个用户使用的嵌入式系统中的本发明,以每个应用程序处理器由各自的用户运行的方式来运行所述应用程序处理器,从而可使用传统Linux系统安全功能来配置嵌入式Linux系统。

在本发明中,Linux系统中超级用户的角色被最小化,并且独立地运行应用程序的处理器,从而最小化由外部攻击导致的损害。

本发明提供一种基于Linux操作系统优化的嵌入式系统的安全方法,从而提高嵌入式系统的安全性并且能容易地将诸如Linux操作系统的通用操作系统应用于嵌入式系统。

本发明通过将基于在通用操作系统中使用的多用户环境来应用安全方法的方法提供给嵌入式系统而不对所述安全方法进行很大程度的修改,以低成本高效益的方式提高嵌入式系统的安全性。

尽管已经使用示例性实施例描述了本公开,但是本领域技术人员可进行各种改变和修改。本公开意图包括落入权利要求的范围的这些改变和修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号