旅游景点讲解APP的设计与实现外文翻译资料

 2023-02-04 19:56:45

附录Y 外文原文

Understanding Android Security

Understanding android securitywith existing online services. However, as the importance of the data and services our cell phones support increases, so too do the opportunities for vulnerability. Itrsquo;s essential that this next generation of platforms provides a comprehensive and usable security infrastructure. Developed by the Open Handset Alliance (visibly led by Google), Android is a widely anticipated open source operating system for mobile devices that provides a base operating system, an application middleware layer, a Java software development kit (SDK), and a collection of system applications. Although the Android SDK has been available since late 2007, the first publicly available Androidready “G1” phone debuted in late October 2008. Since then, Androidrsquo;s growth has been phenomenal: T-Mobilersquo;s G1 manufacturer HTC estimates shipment volumes of more than 1 million phones by the end of 2008, and industry insiders expect public adoption to increase steeply in 2009. Many other cell phone providers have either promised or plan to support it in the near future. A large community of developers has organized around Android, and many new products and applications are now available for it. One of Androidrsquo;s chief selling points is that it lets developers seamlessly extend online services to phones. The most visible example of this feature is, unsurprisingly, the tight integration of Googlersquo;s Gmail, Calendar, and Contacts Web applications with system utilities. Android users simply supply a username and password, and their phones automatically synchronize with Google services. Other vendors are rapidly adapting their existing instant messaging, social networks, and gaming services to Android, and many enterprises are looking for ways to integrate their own internal operations (such as inventory management, purchasing, receiving, and so forth) into it as well. Traditional desktop and server operating systems have struggled to securely integrate such personal and business applications and services on a single platform. Although doing so on a mobile platform such as Android remains nontrivial, many researchers hope it provides a clean slate devoid of the complications that legacy software can cause. Android doesnrsquo;t officially support applications developed for other platforms: applications execute on top of a Java William Enck, machigarOngtang, and Patrick mcdaniEl Pennsylvania State University.The next generation of open operating systems wonrsquo;t be on desktops or mainframes but on the small mobile devices we carry every day. The openness of these new environments will lead to new applications and markets and will enable greater integrationmiddleware layer running on an embedded Linux kernel, so developers wishing to port their application to Android must use its custom user interface environment. Additionally, Android restricts application interaction to its special APIs by running each application as its own user identity. Although this controlled interaction has several beneficial security features, our experiences developing Android applications have revealed that designing secure applications isnrsquo;t always straightforward. Android uses a simple permission label assignment model to restrict access to resources and other applications, but for reasons of necessity and convenience, its designers have added several potentially confusing refinements as the system has evolved. This article attempts to unmask the complexity of Android security and note some possible development pitfalls that occur when defining an applicationrsquo;s security. We conclude by attempting to draw some lessons and identify opportunities for future enhancements that should aid in clarity and correctness. Android Applications The Android application framework forces a structure on developers. It doesnrsquo;t have a main() function or single entry point for execution—instead, developers must design applications in terms of components.

Letrsquo;s consider a location-sensitive social networking application for mobile phones in which users can discover their friendsrsquo; locations. We split the functionality into two applications: one for tracking friends and one for viewing them.TheFriendTracker application consists of components specific to tracking friend locations (for example, via a Web service), storing geographic coordinates, and sharing those coordinates with other applications. The user then uses the FriendViewer application to retrieve the stored geographic coordinates and view friends on a map. Both applications contain multiple components for performing their respective tasks; the components themselves are classified by their component types. An Android developer chooses from predefined component types depending on the componentrsquo;s purpose (such as interfacing with a user or storing data).Component Types Android defines four component types:

An activity presents a visual user interface for one focused endeavor the user can undertake. For example, an activity might present a list of menu items users can choose from or it might display photographs along with their captions. A text messaging application might have one activity that shows a list of contacts to send messages to, a second activity to write the message to the chosen contact, and other activities to review old messages or change settings. Though they work together to form a cohesive user interface, each activity is independent of the others. Each one is implemented as a subclass of the Activity base class.

Activitybull; components define an applicationrsquo;s user interface. Typically, an application developer defines one activity per “screen.” Activities start each other, possibly passing and returning values. Only one activity on the system has keyboard and processing focus at a time; all

剩余内容已隐藏,支付完成后下载完整资料


附录X 译文

了解Android安全与现有的在线服务。由于我们手机支持的数据和服务的重要性增加,脆弱性的机会也越来越多。下一代平台必须提供一个全面和可用的安全基础设施。由开放手机联盟(由Google显而易见的领导)开发,Android是一种广泛预期的移动设备开源操作系统,提供基础操作系统,应用中间件层,Java软件开发工具包(SDK)和系统应用。虽然Android SDK自2007年年底以来一直可用,但第一款公开的Androidready“G1”手机于2008年10月下旬首次亮相。自那以后,Android的增长是惊人的:T-Mobile的G1制造商HTC估计出货量超过100万部截至2008年底,行业内部人士预计公众收入将在2009年急剧增加。许多其他手机供应商已经承诺或计划在不久的将来支持该计划。一大批开发商围绕Android组织了许多新产品并可以使用应用程序。 Android的主要卖点之一是,它允许开发人员将在线服务无缝扩展到手机。这个功能最明显的例子是,毫不奇怪,Google的Gmail,日历和联系人Web应用程序与系统实用程序的紧密集成。 Android用户只需提供用户名和密码,手机会自动与Google服务同步。其他供应商正在迅速地将现有的即时消息,社交网络和游戏服务适应到Android,许多企业正在寻找将自己的内部业务(如库存管理,采购,接收等)集成到其中的方法。传统的桌面和服务器操作系统一直在努力将这样的个人和商业应用程序和服务安全地集成到单个平台上。尽管在移动平台(如Android)上这样做仍然是不平凡的,但许多研究人员希望能够提供一个没有遗留软件可能导致的复杂情况的干净平板。 Android不支持为其他平台开发的应用程序:应用程序在Java William Enck,MachigarOngtang和Patrick mcdaniEl Pennsylvania State University之上执行。下一代​​开放式操作系统不会在桌面或大型机上,而是在我们每天携带的小型移动设备上,这些新环境的开放性将导致新的应用程序和市场,将在嵌入式Linux内核上运行更强大的集成中间件层,因此希望将应用程序移植到Android的开发人员必须使用其自定义的用户界面环境。此外,Android通过运行每个应用程序作为自己的用户身份来限制应用程序与其特殊API的交互。虽然这种受控的交互具有几个有益的安全功能,但我们开发Android应用程序的经验表明,设计安全应用程序并不总是直接的。 Android使用简单的权限标签分配模型来限制对资源和其他应用程序的访问,但出于必要性和便利性的原因,其设计人员在系统发展时添加了几个潜在的混乱细化。本文尝试揭露Android安全性的复杂性,并注意到在定义应用程序的安全性时发生的一些可能的开发陷阱。最后,我们总结出一些经验教训,找出有助于明确和正确的未来增强机会。Android应用程序Android应用程序框架强制开发人员的结构。它没有一个main()函数或单个进入点来执行,而开发人员必须按照组件来设计应用程序。

考虑一个位置敏感的社交网络应用程序,用户可以在其中发现他们的朋友的位置。我们将功能分为两个应用程序:一个用于跟踪朋友,另一个用于查看它们。FriendTracker应用程序由特定于跟踪朋友位置(例如,通过Web服务),存储地理坐标以及与其他应用程序共享这些坐标的组件组成。然后,用户使用FriendViewer应用程序来检索存储的地理坐标并在地图上查看朋友。两个应用程序都包含多个组件来执行各自的任务;组件本身根据其组件类型进行分类。 Android开发人员根据组件的目的(例如与用户进行接口或存储数据)从预定义的组件类型中进行选择,Android定义了四种组件类型:

activity是为用户操作而展示的可视化用户界面。例如,一个activity可以展示一个菜单项列表供用户选择,戒者显示一些包含说明文字的照片。一个短消息应用程序可以包括一个用于显示要发送消息到的联系人列表的activity,一个给选定的联系人写短信的activity以及翻阅以前的短信或改变设置的其他activity。尽管它们一起组成了一个内聚的用户界面,但其中每个activity都不其它的保持独立。每一个都实现为以Activity类为基类的子类。

活动bull;组件定义应用程序的用户界面。通常,应用程序开发人员为每个“屏幕”定义一个活动。活动开始彼此,可能传递和返回值。系统中只有一个活动一次有键盘和处理对象;所有其他人被暂停。服务bull;组件执行后台处理。当活动需要执行一些在用户界面消失后必须继续的操作(例如下载文件或播放音乐)时,通常会启动针对该动作专门设计的服务。开发人员还可以使用服务作为特定于应用程序的守护程序,可能是从启动开始。服务通常定义一个用于远程过程调用(RPC)的接口,其他系统组件可用于发送命令和检索数据以及注册回调。内容提供商bull;组件使用关系数据库接口存储和共享数据。每个内容提供者都具有描述其包含的内容的关联“权限”。其他组件使用权限名称作为句柄执行SQL查询(如SELECT,INSERT或DELETE)来读取和写入内容。虽然内容提供商通常在数据库记录中存储值,但数据检索是实现特定的 - 例如,文件也通过内容提供者接口共享。广播接收器bull;组件用作来自其他应用程序的消息的邮箱。通常,应用程序代码将消息广播到隐式目的地。因此,广播接收机订阅这样的目的地以接收发送给它的消息。应用程序代码还可以通过包括分配给其包含应用程序的命名空间来明确地对广播接收器进行寻址包含不同组件类型的FriendTracker和FriendViewer应用程序。开发人员使用清单文件指定组件(也用于定义稍后描述的策略)。应用程序为每种类型定义的组件数量没有限制,但作为约定,一个组件具有与应用程序相同的名称。通常,这是一个活动,如在FriendViewer应用程序。此活动通常表示系统应用程序启动器用于启动用户界面的主要活动;然而,启动时选择的具体活动则以清单中的元信息为标记。在FriendTracker应用程序中,例如,FriendTrackerControl活动被标记为主用户界面入口点。在这种情况下,我们为执行核心应用程序逻辑的服务组件保留名称“FriendTracker”。FriendTracker应用程序包含四种组件类型中的每一种。FriendTracker服务轮询外部服务以发现朋友的位置。在我们的示例代码中,我们随机生成位置,但是将组件扩展到与Web服务的接口是直接的。

FriendTracker和FriendViewer应用程序由不同类型的多个组件组成,每个组件都提供不同的功能集。活动提供用户界面,服务执行后台处理,内容提供商是数据存储设施,广播接收者用作来自其他应用程序的消息的邮箱。焦点帐篷提供商为朋友维护最新的地理坐标,FriendTrackerControl活动定义用于启动和停止跟踪功能的用户界面,BootReceiver广播接收器在启动时从系统获取通知(应用程序使用此通知自动启动FriendTracker服务)。FriendViewer应用程序主要关心显示有关朋友位置的信息。FriendViewer活动列出所有的朋友及其地理坐标,FriendMap活动会在地图上显示。FriendReceiver广播接收器等待指示物理电话在特定朋友附近的消息,并在此类事件时向用户显示消息。虽然我们可以将这些组件放在FriendTracker应用程序中,但我们创建了一个单独的应用程序来演示跨应用程序通信。另外,通过分离跟踪和用户界面逻辑,我们可以创建具有不同显示和功能的替代用户界面 - 也就是说,许多应用程序可以重用在FriendTracker中执行的逻辑。

组件交互的主要机制是一种意图,它只是一个包含目标组件地址和数据的消息对象。 Android API定义了接受意图并使用该信息启动活动的方法(startActivity(Intent)),启动服务(StartService(Intent))和广播消息(sendBroadcast(Intent)))。这些方法的调用告诉Android框架开始执行目标应用程序中的代码。这种组件间通信过程被称为一种动作。简单地说,意图对象定义了执行“动作”的“意图”。Android的最强大的功能之一是其意图寻址机制允许的灵活性。虽然开发人员可以使用其应用程序的命名空间来唯一地寻址目标组件,但是它们也可以指定隐式名称。在后一种情况下,系统通过考虑安装的应用程序集和用户选择来确定动作的最佳组件。隐式名称称为操作字符串,因为它指定了所请求操作的类型 - 例如,如果在具有指向图像文件的数据字段的意图中指定了“VIEW”操作字符串,则系统将将意图指向首选图像查看器开发者还使用动作串来向一组广播接收器广播消息。在接收端,开发人员使用意图过滤器订阅特定的操作字符串。 Android包含额外的目标解析规则,但可选数据类型的操作字符串是最常见的。FriendTracker和FriendViewer应用程序中组件之间的交互以及定义为基础Android发行版一部分的应用程序中的组件。在每种情况下,一个组件启动与另一组件的通信。为了简单起见,我们称之为组件间通信(ICC)。在许多方面,ICC类似于基于Unix的系统中的进程间通信(IPC)。对于开发人员来说,除了本文后面定义的安全规则之外,ICC的作用是相同的,无论目标是在相同还是不同的应用程序中。可用的ICC操作取决于目标组件。每个组件类型支持特定于其类型的交互 - 例如,当FriendViewer启动FriendMap时,FriendMap活动出现在屏幕上。服务组件支持启动,停止和绑定操作,因此,例如,FriendTrackerControl活动可以启动和停止在后台运行的FriendTracker服务。绑定操作建立组件之间的连接,允许启动器执行由服务定义的RPC。在我们的示例中,FriendTracker绑定到系统服务器中的位置管理器。

请注意,如果某个服务当前被绑定,则明确的“停止”操作将不会终止服务,直到释放所有绑定的连接。广播接收机和内容提供商组件具有独特的交互形式。针对广播接收机的ICC作为意图向组件显式发送(广播),或者更常见地发送到组件订阅的动作字符串。例如,FriendReceiver订阅了开发人员定义的“FRIEND_NEAR”操作字符串。当FriendTracker确定手机靠近朋友时,FriendTracker广播此操作字符串的意图;系统将启动FriendReceiver并向用户显示一条消息。内容提供商不使用意图 - 而是通过嵌入在content:// lt;authoritygt; / lt;tablegt; / [lt;idgt;]形式的特殊内容URI中的权限字符串来处理。这里,lt;tablegt;表示内容提供者中的表,lt;idgt;可选地指定该表中的记录。组件使用此URI在内容提供程序上执行SQL查询,可选地通过查询API包括WHERE条件。

Android通过两个执行机制的组合来保护应用程序和数据,一个在系统级别,另一个在ICC级别。 ICC调解定义了核心安全框架,这是本文的重点,但它建立在底层Linux系统提供的保证的基础上。在一般情况下,每个应用程序作为唯一的用户身份运行,这使得Android限制了编程缺陷的潜在损害。例如,正式发布T-Mobile G1手机后最近发现的Web浏览器漏洞只会影响到Web浏览器本身。由于这种设计选择,漏洞利用不会影响其他应用程序或系统。 ICC不受用户和流程边界的限制。实际上,所有ICC都是通过特殊设备节点/ dev / binder上的I / O控制命令进行的。因为文件必须是世界可读写才能正常运行,所以Linux系统无法调解ICC。尽管用户分离是直接且容易理解的,但控制ICC更为微妙,值得认真考虑。作为安全执法的中心点,Android中间件通过推荐分配给应用程序和组件的标签来调停所有ICC建立。参考监视器1提供强制访问控制(MAC)强制应用程序访问组件的方式。在其最简单的形式中,通过为其分配访问许可标签来限制对每个组件的访问;此文本字符串不必是唯一的。开发人员分配权限标签的应用程序集合。当组件启动ICC时,参考监视器将查看分配给其包含的应用程序的权限标签,并且 - 如果目标组件的访问权限标签位于该集合中,则允许ICC建立继续。如果标签不在FriendTracker应用程序FriendViewer应用程序中的Android应用程序联系人应用程序

Android中的安全执行发生在两个位置:每个应用程序都以其自己的用户身份执行,允许底层Linux系统提供系统级别的隔离;而Android中间件包含一个介绍组件间通信(ICC)建立的参考监视器。这两种机制对电话的安全至关重要,但首先是实施的直接,而第二种机制则需要认真考虑机制和政策。

开发人员通过每个应用程序包附带的XML清单文件分配权限标签。在这样做时,开发人员定义应用程序的安全策略,即为应用程序分配权限标签指定其保护域,而向应用程序中的组件分配权限则指定访问策略来保护其资源。由于Android的策略强制是强制性的,而不是自由裁量,所有权限标签都将在安装时设置,并且在重新安装应用程序之前不能更改。然而,尽管其MAC属性,Android的权限标签模型仅限制对组件的访问,并且当前不提供信息流保证,例如域类型实施.3安全性优化Android的安全框架基于由此描述的标签导向的ICC中介远,但我们的描述是不完整的。部分为了方便起见,设计Android的Google开发人员对基本安全模式进行了一些改进,其中一些具有微妙的副作用,并使其整体安全性难以理解。本节的其余部分提供了我们在v1.0r1 SDK发行版中确定的细化列表。

公共组件和私有组件应用程序通常包含另一个应用程序永远不能访问的组件,例如,可能会恶意启动旨在返回用户输入的密码的活动。除了定义访问权限之外,开发人员可以通过在manifest文件中将export属性显式设置为false来使组件为私有,或者让Android推断组件是否应该在其清单定义中的其他属性是私有的。专用组件简化了安全规范。通过

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[484660],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。