现在的位置: 首页 > 综合 > 正文

从D-Bus(DBus)的使用看Android设计策略中安全的优先级

2018年04月18日 ⁄ 综合 ⁄ 共 1545字 ⁄ 字号 评论关闭

Android使用了一种特殊的进程间通讯系统D-bus .
而我们知道进程间通讯机制已经存在好多种,Corba,DCOP,COM,SOAP, XML-RPC ... ... 太多了。
为什么要有一个D-Bus,换句话说D-Bus是什么,不是什么呢?为什么要用这么一个独特的通讯系统?
以下的一些资料整理来自于D-Bus的FAQ(http://dbus.freedesktop.org/doc/dbus-faq.html).

D-Bus是什么?
D-Bus 是这样一个系统: 具有面向对象接口的协议frame,以及应用程序用户互相发现和监视的守护进程.换句话说:是一个进程间通讯系统,是由两个守护进程,一个是系统范围,一个是用户会话范围的提供的生命周期跟踪、服务激活、安全策略检查等高级功能的集合。D-Bus守护进程可以启动服务以便给其它程序提供某些功能。
D-Bus的效率高嘛?
D-Bus的效率,D-Bus 大约比直接适用socket读写数据慢2.5倍。D-Bus比其它的Corba,DCOP等通讯机制
都要慢一些。这样的效率主要受它的设计思想的影响:不信任对端发来的数据,一定要做复杂的校验。
D-Bus的适用性如何?
D-bus 并不是一个普遍适用的通讯系统,这一点和Corba等明显不同,D-bus的设计之初
就带有一定的特定性。D-Bus 设计用来作为用户交互接口与系统服务(守护进程)之间的分隔和通讯以及系统服务(守护进程)之间的通讯。D-Bus 设计之初并未考虑为Cluster,P2P,分布式应用之间的通讯,至于是否适合上述复杂应用,自己去试吧。D-Bus 也不是用来代替SOAP,XML-RPC的,该用这些东西的地方请尽管用。
D-Bus 与其他进程间(分布式)通讯中间件相比如何?
D-Bus 可以看作是下一代的DCOP,比DCOP要复杂一些,而DCOP是用来作为OpenSource桌面应用
之间通讯的。但D-Bus比DCOP效率上要慢,原因还是更多的数据校验和更多层的实现。
D-Bus 与ICE (Inter-Client Exchange http://www.x.org/X11R6.8.1/docs/ICE/ice.pdf),XSMP,ICE是为XSMP开发的,DCOP和XSMP是构建在ICE之上的,原则上,XSMP和DCOP都可以被D-Bus代替.
D-Bus 与ZeroC ICE(Internet Communications Engine),ICE 是Corba /SOAP级别上的东西,要比D-Bus强大,ICE是双许可证的.
D-Bus 与DCOM,DCOM 是Windows 下的IPC系统,类似于Corba,DCE. D-Bus是苹果,DCOM是桔子?!
D-Bus 与SOAP,D-Bus 是长连接,SOAP一般承载在HTTP的一个请求和响应的连接上,可以是每次一连接,SOAP是构建在XML上的,D-Bus不是.
D-Bus 与Corba,很多Corba的实现比如Orbit都要比D-Bus(libdbus)快,D-Bus的一个重要的设计思想是不信任对端发来的数据,
一定要做复杂的校验.Corba和D-Bus都使用了二机制的通讯协议,但Corba 更通用和开放,D-Bus很多地方都是硬编码,所以D-Bus要简单得
多.
++
非常明显的是,D-Bus为安全考虑,在效率上做了让步,在结构设计上安全考虑是优先的。这一点是其它通讯用中间件系统所明显不同的。
而Android 一定要使用这样一个效率并非优先的一个通讯系统,已经明显的透露了Android的设计者在安全方面的倾向性,也就是说,安全的优先级在设计策略中较高。
Android通过D-Bus来耦合用户界面和服务这种划分策略是软件系统安全设计的一个典型分离权限设计手法,是偶然嘛?仅此一处?

抱歉!评论已关闭.