“开放式 PC”安全模型的替代方案

信息安全 移动的 操作系统 硬化 桌面 建筑学
2021-09-10 05:33:14

今天,PC(笔记本电脑、台式机等)通常在我称之为“开放式 PC”的安全模型下工作。用户对自己的机器拥有完全的系统管理员/开发人员级别的访问权限。用户可以将他们选择的任意软件安装到他们的 PC 上。该软件可以做任何事情,或者至少是用户可以做的任何事情。软件应用程序没有沙盒;他们可以自由访问所有用户的数据并与所有其他应用程序交互或篡改 (*)。本质上,每个用户都是他们自己机器上的上帝,并且可以将上帝身份授予他们选择安装的任何软件应用程序。

您可以将恶意软件视为“开放式 PC”安全模型的结果之一。如果用户有能力安装他们选择的软件,并且如果该软件可以完全访问他们的 PC,那么攻击者需要做的就是说服用户安装恶意软件,然后用户就完蛋了。类似地,如果应用程序没有被沙盒化,那么攻击者需要做的就是破坏用户的应用程序之一,然后用户就会被吐司(攻击者可以访问用户的所有数据并可以破坏用户的所有应用程序) .

目前,“开放式 PC”安全模型已深深植根于 PC 的工作方式以及 PC 操作系统的工作方式中。

“开放式 PC”模型还有哪些其他替代方案?如果业界想在未来 5 到 10 年内摆脱“开放式 PC”模式,有哪些可能值得考虑的替代范式?它们的优点和缺点是什么?


例如,一种竞争范式是“应用程序”安全模型。在“应用程序”安全模型中,用户通常对自己的机器没有完全的 syadmin/开发人员级别的访问权限(除非他们采取了一些特殊的步骤,大多数用户不会采取)。用户可以安装应用程序,但对于大多数用户而言,应用程序的选择仅限于一些至少在某种最小意义上精心策划的列表(可能有办法从其他来源旁加载应用程序,但大多数用户大多不这样做) . 在安装应用程序之前,可以通过某种方式来了解该选择的安全性或风险性(例如,通过阅读评论、应用程序请求的权限或其他信息)。应用程序是沙盒的。防止每个应用程序干扰其他应用程序;一个应用程序无法访问用户的所有数据或干扰其他应用程序。

应用程序模型可以说对恶意软件更具弹性:它使攻击者更难说服用户安装恶意软件,并且它限制了恶意或受损应用程序可以造成的损害。

因此,我们可以将“应用程序”安全模型视为“开放式 PC”安全模型的一种替代方案。许多移动世界已经转向“应用”安全模型,我们甚至已经开始在桌面空间(例如,Windows 8)看到这个方向的一些变化。

另一种可能的替代方案可能是“设备”模型,您的 PC 不再是通用计算机,用户不再对他们的 PC 拥有完全的上帝权力。相反,系统管理外包给其他人(可能是您雇主的系统管理员,或其他一些进行系统管理的第三方公司)。一些基本的软件应用程序可能已预先安装(例如,Web 浏览器、一些办公/生产力软件),您可能无法安装其他任何东西,或者您可以安装的软件应用程序可能受到限制(例如,您只能安装某些允许应用程序白名单上的应用程序)。我将其称为“设备”模型,但其他合理的名称可能是“白名单”或“外包系统管理”模型。

还有其他完全不同的安全模型值得考虑吗?如果我们可以完全改变计算机和操作系统以及计算机体系结构的安全范式(如果需要,从头开始),是否还有其他范式/安全模型可以显着提高安全性?


(*) 脚注:好的,我知道我正在稍微简化对“开放式 PC”模型的描述。我意识到现代桌面操作系统确实在用户帐户和管理员/root 之间存在一些区别。但是,从某种意义上说,这是一个细节。例如,用户/根分离不提供应用程序之间的任何隔离。我们运行的大多数软件都在用户级别运行,因此在桌面操作系统中,任何用户应用程序仍然可以干扰任何其他用户应用程序。

4个回答

在某种程度上,所有的 Web/Cloud 炒作都是关于一个新模型(或者,也许是一个带有新涂层的旧模型)。使用“应用程序”,应用程序非常包含并且彼此隔离。使用 iOS / Android 系统上使用的“应用程序”模型,应用了进一步的转折,即只能安装“允许”的应用程序。用户仍然可以选择要安装的应用程序,但只能在专用商店中维护(和签名)的应用程序列表中。

“设备”模型更进一步:用户不再选择在他的硬件上安装哪些应用程序。或者,此模型与“签名应用程序”模型之间的区别可能在于“允许应用程序”列表的大小这些安全模型之间的界限有点​​模糊。在拥有超过 100000 个应用程序的应用商店中,如果认为所有应用程序都是良性的,那就过于乐观了。

可以说,对于“电器”模型,用户的计算机不再是他的计算机。那么,让我们来结束这个逻辑:如果那不是他的电脑,他为什么可以触摸它?让我们把它放在其他地方,只能通过网络访问。用户实际存在的只是一个显示设备,但实际代码在远程服务器上运行。这就是云模型(或者简单地说,Web 模型;云和网站之间的区别充其量只是定量的,而不是定性的)。

因此,有人可能会争辩说只有一个模型,并且差异只是数量上的。那将是一个相当极端的观点。


很久以前(大约20年),我经常听到和我在同一所学校的学生的胡言乱语;在他看来,未来是可证明的安全性应用程序应该在一个足够精确的模型中描述它们所做的事情以捕获有趣的属性,而且操作系统也应该能够“证明”这些属性将被有效地执行。这些想法的部分化身在实践中被使用,例如在 Android 应用程序的“权限”列表中,以及(对于不同级别的同一事物)Java 字节码(字节码在 Java 类型模型的约束内运行) ,并且VM可以通过统计分析和仅几分钟的运行时检查来确保它)。

然后,我们需要的不是真正的新“模型”(正如我在上面试图解释的那样,所有模型实际上都是单一连续体上的变体),而是一个更丰富的框架来描述我们想要强制执行的安全特性(像往常一样,棘手的一点是定义我们想要的东西)。

负责机器管理的任何人(即最终用户)也应该能够理解该框架。因此,这看起来像是一个圣杯任务。

当今桌面PC环境最大的问题:

  • 允许任意应用程序访问用户拥有的所有数据;
  • 让应用程序无限制地访问互联网和敏感硬件(麦克风、相机、GPS 芯片、蓝牙等);
  • 白痴用户激增;
  • 一种商业文化的出现,窃取和出售用户的个人数据是常态

我强烈反对精心策划的围墙花园,因为它们存在的理由是商业性的,而且看到它们的利润超过我的安全并不是那么牵强云服务和密封设备也是如此:我购买了计算能力,我可以随意购买、安装和使用我选择的任何东西,而不必担心我的数据会为了他人的商业利益而被勒索赎金。

恐怕没有什么灵丹妙药可以洗去用户的无能和行业的贪婪,而是一些让应用程序安全可用的进化步骤,并对行业施加压力(我知道这是徒劳的努力)。


一些解决方案:

  • 硬件虚拟化 (VT-x) 和沙盒;
  • 建立区分不同角色的细粒度权限集:

    • 系统管理帽子/角色(如在操作系统调整中)应该与用户在安装(和试用)应用程序时戴的帽子分开;
    • 我的银行浏览器应该与我用于电子邮件的浏览器分开;
    • 例如,视频会议应该与我的办公应用程序隔离开来(请记住,有些工作流程应该是“无缝集成”——曾经这种互操作性是许多软件供应商的卖点);
  • 将尽可能多的安全功能转移到硬件中(是的,微码可以更新,但在软件中实施访问控制是易受攻击且成本高昂的)。

并不是重新发明轮子,所有这些都是经过尝试的方法,最终将渗透到消费者桌面操作系统/硬件的广阔世界中。

...除非愚蠢和贪婪碰巧赢得了反对审慎和智慧的战争。

在您的个人 PC 上,您是“上帝”,但在公司 PC 上通常不是这样。您的系统管理员可能会强制您的所有网络流量通过公司网络代理,而您无法覆盖它(除了黑客之外)。Linux 和 Windows(和 Mac)具有相当好的多用户安全性,它们有效地继承了多用户大型机。

所以我认为你提到的“设备”模型,通常被称为“托管系统”已经存在并且被广泛使用。但也许它可以得到更广泛的应用。例如,我爸爸拥有自己的 PC,但不是技术人员。他目前在“上帝”模式下使用它,但“托管系统”更适合他。问题是:谁将是他的系统管理员?我不是自愿的:-)

PC 的重大安全弱点正是您所指出的 - 应用程序可以完成您所做的一切。我认为你是对的,我们确实需要考虑一种完全不同的安全模型,其中应用程序是沙盒的。但这种模式是有先例的:它是我们在 iOS 和 Android 上看到的“应用”模式。这是一项出色的技术创新,我觉得创造它的团队应该得到更多的赞誉。

顺便说一句,将应用程序沙盒化和应用程序控制(如这个 iOS 应用商店)的想法分开很重要。两者都有助于安全,但控制应用程序会产生各种社会问题。另一方面,沙盒并不是特别有争议的。

因此,下一步是在桌面上进行沙盒化。我们正在看到朝着这个方向迈出的一小步,例如 Chrome 在沙盒中运行。然而,这是一个难题。桌面应用程序需要做的不仅仅是移动应用程序。在移动设备上,每个应用程序都倾向于在一个孤岛中拥有自己的数据。在桌面上,多个应用程序在共享文件系统上协同工作。当然,在桌面上,高级用户想要执行诸如脚本之类的事情。

我认为不需要任何激进的新安全模型——但在桌面上实施沙盒的过程将需要很多年。

这个“问题”是有偏见的,因为可能没有明确的答案。术语“开放式 PC”是模棱两可的:在计算机体系结构/安全模型领域内没有“开放式 PC”模型。

用户对自己的机器拥有完全的系统管理员/开发人员级别的访问权限

从 IT 安全和系统管理员的角度来看,将完全的管理权限授予用户是不可接受的。“最佳实践”是审核组织内的不同角色并相应地映射他们的权限/访问级别。当涉及到用户权限时,必须应用最小权限原则。此类策略需要在系统级别和网络级别执行。必须定期审查与系统和应用程序相关的角色和权限。必须管理软件和硬件库存。

主题很广泛,可能会讨论不同的方面:

  • 要实现的访问控制模型(MAC、DAC、RBAC 等...)
  • 平台类型(PC、哑终端、设备、服务器...)
  • 操作系统架构和限制(权限管理、沙盒机制、软件信任模型...)
  • 软件分发(内部、SaaS、经典供应商渠道、“应用商店”、分布式存储库……)
  • 信息系统管理(政策、技术控制、审计、监控……)

为了定义所谓的“开放式 PC”安全模型的替代方案,必须定义前者:提到的“开放式 PC”安全模型似乎是平台安全完全不受管理的用例。此用例不能定义为“模型”。

平台类型分为以下几类:

  • 个人计算机 (PC) 旨在由其最终用户操作。严格来说,PC是家用的通用计算机。
  • 工作站是企业/专业环境(单用户或多桌面)中的计算机。
  • 终端(通常是哑终端)是一个专门构建的系统,它公开受限的用户界面以仅执行特定任务(收银机、ATM、瘦客户端......)。
  • 设备是由定制的硬件和/或软件组成的“交钥匙”系统。它不适用于最终用户。通常,设备在网络环境中用于特定目的(安全、存储……)
  • 服务器是在网络环境中响应客户端请求的系统(客户端/服务器模型也用作组件、应用程序和进程之间的通信框架)。客户端可以是 PC、工作站、终端、设备、应用程序、其他服务器……

安全模型是抽象模型,旨在帮助开发安全策略、系统和软件,以及管理组织内的信息流。安全和访问控制模型主要是高级别的。它们在官方信息安全文献中得到了很好的定义

试图将新的安全范式定义为特定用例的替代方案是一条死胡同。然而,问题可能更多是关于计算机系统内的软件供应和访问控制实施。

软件供应模型取决于:

  1. 计算机系统类别/平台类型
  2. 操作系统功能
  3. 环境(单用户、多桌面、分布式、网络...)
  4. 供应商商业模式

访问控制模型的实现取决于:

  1. 关于要保护的数据的风​​险接受。必须进行成本/收益分析以保持安全性和安全性成本之间的平衡)。请注意,成本可能是金钱、时间、专业知识……
  2. 环境(单用户、多桌面、分布式、网络...)
  3. 可用于实施安全控制的操作系统功能
  4. 治理模型(用户驱动、基于角色、基于组织策略、外包......)