为什么移动应用程序有细粒度的权限,而桌面应用程序没有?

信息安全 移动的 权限 桌面
2021-08-20 16:59:26

出于安全原因,Android 应用程序使用细粒度权限,iOS 应用程序 (afaik) 也这样做。Windows 8.1 应用程序没有这样的权限架构,到目前为止我尝试过的所有 Linux 版本也没有,我猜 Mac OS X 也没有,对吧?

为什么这些细粒度的权限在移动设备上被认为是必要的,而在桌面系统上却不是?用户对移动设备上的应用程序的信任度是否低于桌面系统上的应用程序?

Windows 10 或更新的 Linux 和 Mac OS 版本是否有它们?

PS:似乎有些人认为这可能与为什么移动设备的应用程序比桌面设备更受限制?- 但这两个问题至少在观点上有所不同(开发者/用户)。如果您阅读答案,您还会看到大多数 SO 用户认为这两个问题是不同的 :-)

4个回答

智能手机具有细粒度权限而台式计算机没有的主要原因有两个。

  1. 历史。大型机操作系统具有向用户而不是程序授予权限的传统,这延续到小型机/工作站/台式机;保持与现有程序的兼容性的愿望限制了改变事物的能力。智能手机与现有应用程序生态系统彻底决裂,因此存在改变权限模型的机会。

  2. 智能手机比台式机更加同质化,并且通常不会随着时间的推移而改变其硬件配置。这使得设置权限系统变得更加容易。

也就是说,桌面操作系统有细粒度的权限系统。例如,Linux 有 AppArmor、SELinux、Bitfrost,可能还有其他。

由于技术原因,在应用程序尝试使用它们之前,无法知道应用程序需要哪些权限,这意味着应用程序需要某种方式来声明它。桌面操作系统上的应用程序从未这样做过。当用户启动一个遗留应用程序时,你只能假设它需要一切(训练用户不加思索地接受长长的功能列表)或在应用程序需要它的那一刻弹出一个询问(这可能会破坏一些可以' t 处理突然的中断)。这两种解决方案都很糟糕,因此引入这种机制会破坏与旧软件的向后兼容性。

Windows 7 试图通过允许较新的应用程序声明它们不会做某些潜在的邪恶事情并在启动旧的程序时添加“你想要 [程序] 对你的计算机进行更改”提示来改善这种情况。 t 以及防止一些更潜在的邪恶事情,除非程序以管理员身份运行。

UNIX 和 UNIXoid 操作系统(如 Linux)允许使用其文件权限和所有权系统来限制程序的权利。硬件设备也被抽象为文件,可以归某个组所有。因此,您可以通过使用不同的用户运行每个程序并将用户添加到拥有程序所需的硬件设备“文件”的那些组来限制程序的功能。这当然不是一个非常用户友好的解决方案,因为它需要大量配置。

在开发智能手机操作系统时,没有开发人员必须确保兼容性的遗留应用程序,因此他们有机会从一开始就做好一切。

另一个原因是智能手机有可能比台式电脑更容易侵犯隐私。智能手机具有 GPS 传感器、麦克风、摄像头和永久的互联网连接,大多数用户通过它们进行大部分私人和商业通信。当人们无论走到哪里都不会始终将这些设备放在他们的身上或附近时,所有这一切都不会那么糟糕。智能手机简直就是完美的间谍工具。当您控制智能手机时,您将获得对用户及其周围环境的完美 24/7 监控。要访问此工具,您需要做的就是诱使用户安装您的放屁声应用程序。

移动操作系统对应用程序具有细粒度权限,而桌面操作系统没有,至少有两个重要原因:

  1. 历史。 桌面操作系统可以追溯到几十年前,当时主要威胁模型不同,因此具有旨在处理该(现在基本上已经过时)威胁模型的机制。

    桌面操作系统是大型机操作系统的演变。在大型机上,主要关注的是多用户安全:操作系统需要确保一个用户不能攻击另一个用户。因此,桌面操作系统通常围绕多用户安全模型构建,该模型试图将用户彼此隔离,并确保一个用户无法攻击同一台机器上的其他用户。

    然而,今天大多数机器都是单用户机器,主要威胁不是其他用户,而是来自 Internet 上其他站点或数据的恶意攻击。因此,移动操作系统旨在解决这种现代威胁模型。它们旨在使下载和运行由某些不受信任的开发人员制作的应用程序变得容易和安全;现有的机制(应用沙箱、权限系统、应用商店、应用评论)有助于使这通常非常安全。因此,移动操作系统专注于保护您免受恶意/粗略应用程序的侵害并将应用程序彼此隔离,而不是将用户彼此隔离。

    这解释了为什么移动操作系统具有细粒度权限而桌面操作系统没有的很大一部分原因:细粒度权限在处理现代威胁模型(保护用户免受恶意/狡猾的应用程序)方面比旧大型机更有帮助威胁模型(相互保护用户)。

    如果我们今天从头开始设计桌面操作系统,它们可能看起来更像现代移动操作系统,侧重于应用程序模型、应用程序威胁模型而不是多用户威胁模型等等,这似乎是合理的。 . 然而,由于遗留限制,桌面操作系统要转向这种新方法并不容易:用户希望现有的桌面应用程序能够正常工作,因此操作系统不能只是阻止它们。相比之下,当 Apple 和 Google 推出 iOS 和 Android 时,这些都是没有遗留基础的新操作系统;他们不需要兼容任何现有的应用程序,因此他们可以以桌面操作系统无法轻松做到的基本方式改变编程模型。

  2. 不同的用户群,不同的权衡,不同的威胁。智能手机是一种大众市场设备。他们必须为每个人工作。在桌面上,安装粗略的应用程序可能会使您的桌面性能不佳,让您的桌面上充斥着间谍软件,并使系统运行缓慢或不稳定。在台式机上,如果您不知道自己在做什么,您真的会搞砸计算机的可靠性和性能。如果你的手机那样工作,那将是不可接受的——因此苹果和谷歌努力设计一个操作系统,以确保安装一个糟糕的应用程序无法做到这一点。这带来了不同的权衡和不同的设计目标,自然会导致平台更加锁定,并支持一些在桌面上可能被认为可以接受的设计。

    此外,智能手机有各种各样的传感器,可以捕捉到你的大部分生活(例如,记录对话、跟踪你的位置等),而且你的手机全天都在你身边,所以可以说有更多的机会来保护你的隐私违规行为。这是建立更强大的安全模型的另一个动机。

也就是说,现代桌面操作系统开始慢慢从以应用程序为中心的移动操作系统中采用其中的一些想法。例如:

  • Mac OS X 支持沙盒应用程序,这使得应用程序看起来更像是一个移动应用程序。Mac App Store上的应用程序通常是沙盒化的。操作系统提供了细粒度的权限模型,应用程序必须声明它需要的权限(权利)。

  • Windows 8 支持沙盒应用程序,其安全模型看起来很像移动应用程序。特别是,Windows 应用商店应用程序在沙盒中运行,并且必须声明他们想要的权限。用户可以查看应用拥有的权限

顺便说一句,您可能会注意到移动应用程序安全模型与 Web 的安全模型松散相似:Web 也是基于将站点彼此隔离,因此一个邪恶的网站无法攻击另一个站点。如果您认为移动应用程序类似于网站,那么移动应用程序沙盒现在看起来类似于浏览器同源策略。从历史上看,Web 应用程序的功能受到了更多限制,但使用 HTML5,这种情况正在发生变化。浏览器开始使 Web 服务具有更广泛的能力(从传感器读取、在文件系统上读写文件等),并开始实施权限系统来控制对这些资源的访问,就像移动操作系统一样。因此,您可以将其视为浏览器借鉴了移动操作系统的一些想法。

其他一些你可能感兴趣的读物:

作为比较点,看看智能手机和桌面操作系统上的防火墙选项 - 我想你会发现桌面有更多细粒度的防火墙选项(不包括安卓上的根防火墙应用程序),允许你指定哪个可执行文件可以访问哪些端口和哪些网络上的通信,而几乎不可能阻止互联网访问电话应用程序(因为他们都希望通过互联网进行某种形式的广告来赚钱)

看看静音应用程序 - 在 Windows 和移动设备上静音单个应用程序有多容易 - 你能专门静音所有声音吗?两者都很容易做到——但是程序/应用程序 X 呢?或者你可以调整程序 Y 的音量,使其是程序 X 的一半吗?我想说桌面在这里有更细粒度的访问

PC 还具有更高级的监控选项 - 您可以在任何给定时间准确查看哪个进程正在访问哪些文件,查看每个进程的各个线程,通过防病毒(沙盒?)运行它们,虽然在技术上是可行的在手机上的实用性要低得多,而且基于手机的 AV 不如桌面版那么好。

我认为总体原因是,除非您将手机植根/获得管理员访问权限,否则手机并不是真正的“您的”,而在 PC 上,这是常态——因此,手机希望通过让您“感觉”得到授权来进行补偿,即使你真的不是,而如果你简单地配置它(在虚拟机、沙盒等中运行不受信任的应用程序),PC 几乎可以为你提供任何你想要的东西。

似乎也存在一些使用差异,在手机上几乎每个应用程序都希望访问您的联系人、您的位置等 - 在 PC 上,很少(如果有)会要求在不同应用程序之间“同步”联系人,甚至书签——如果有的话,通常是一次“迁移设置”——这些应用程序都是非常独立的,而不是每个应用程序都严重依赖系统和其他应用程序来为它们做事(有多少应用程序在运行没有 Google Play 服务的 android?在没有运行服务 X 的 Windows 上呢)?看看媒体播放器——大多数桌面媒体播放器都是独立的,因为它们有自己的编解码器,而几乎不可能找到有自己的编解码器并且不依赖系统编解码器的媒体播放器(因此继承了它的缺陷)在移动。