安全建议的问题在于,建议的数量实在太多,而那些负责安全的人员往往又缺乏足够的时间来全部实施。现在的挑战是确定哪些是最大的风险,并优先关注这些风险,然后再根据时间允许处理其他风险。 本文列出了七个常见的问题——安全领域的七宗罪——这些问题最有可能导致您的系统或银行账户遭受重大损失。 如果您的任何系统存在这些问题,请务必立即处理。
这七宗罪是基于我的研究和经验总结出来的,包括太多人在他们的 Linux 或 Unix 系统遭受安全漏洞后才采取行动来提高系统安全性,以及法证分析和与系统管理员的讨论。 这些罪行及其解决方案中的大多数也适用于 Mac、Windows 和其他平台。
它们没有按风险级别排序,因为如果您的系统可以从互联网访问,那么犯下其中任何一项罪行都可能导致您的系统被入侵。 即使您身处防火墙之后,如果您从互联网接收到任何不受信任的数据,例如网页、电子邮件或即时消息,您的系统也面临巨大的风险。 务必像躲避魔鬼一样避开这些罪行。
事不宜迟,以下是七宗罪以及应对方法。
作为系统管理员,您了解您的 Linux 或 Unix 机器上可能发生的系统漏洞。 您已经花费时间和精力设计了一个难以猜测的 root 密码,该密码至少使用 12 个字符,其中包括至少两个单词或字典中没有的单词,同时使用了字母和数字,并且包含大小写字母和一些标点符号。
我仍然遇到一些客户,他们使用的密码非常简单,黑客只需几分钟就能通过修改过的 SSH 版本破解,这种 SSH 版本可以猜测不同的密码。 诸如此类的黑客工具很容易在网上通过 Google 搜索找到,或者由任何 C 或 C++ 程序员自行编写。 在可以从互联网访问的系统上,我曾见过 root 密码仅仅由一个单词加上一个小数组成,而这个单词通常与公司名称、公司业务、公司人员或公司所在地相关。 高明的黑客会访问您的网站,获取所有这些信息,然后将其输入密码破解程序。
另一个常见的错误是在不同的系统上为 root 帐户(或其他重要帐户)使用相同或非常相似的密码。 因此,通过密码猜测以外的其他方式入侵一个系统的破解者将能够在该系统上安装特洛伊木马化的 SSH、FTP 或 IMAP 服务器,或者特洛伊木马化的 CGI 程序,查看您使用的密码,并在其他系统上尝试这些密码。 我已经多次看到这种情况发生。
一种变体是使用 SSH 公钥,允许一个系统上的帐户无需提供任何密码即可 SSH 进入另一个系统。 至少,为您的 SSH 密钥选择一个中等难度破解的密码。 如果您必须有一个自动程序使用 SSH 而无需密码即可 SSH 进入另一个系统,那么在目标系统上创建一个单独的非 root 帐户,或者创建一个 UID 为 0 但登录“shell”的备用帐户,该帐户仅执行所需的操作,例如执行备份。
一个更好的解决方案,例如用于远程备份,是让需要备份的系统以唯一的非特权帐户身份 SSH 进入接收备份的系统,并复制备份的加密版本。 这样,即使备份服务器被入侵,也不会获得任何机密数据。
让我们希望您的 root 密码非常强大,并且在 100 年内无人能猜到。 好的,一些痴迷者可以使用 Crack 等程序在几天内破解它,除非您使用影子密码,但那是另一个故事了。 选择一个好的密码至关重要。
您的用户做得如何? 呛住、咳嗽、作呕、破解。 每个帐户都是可能的入口点。 您的用户是否听从了您的建议、公司政策或威胁来设计好的密码? 他们是否像您一样小心谨慎? 可能不是。 现在轮到您戴上黑帽子,像您的敌人一样思考了。
您可以使用密码破解程序破解您用户的帐户吗? 您绝对需要获得书面管理层批准才能进行此级别的安全审计。 有一些著名的案例,未经授权的审计导致人们入狱,或者至少失业。(Randal Schwartz 就是其中之一。这位软件顾问和作家因访问英特尔的密码文件而受审,他说这是为了展示安全方面的漏洞。)
您甚至可以在 passwd 程序中安装一个模块,该模块会自动尝试破解用户提出的新密码。 虽然标准的 passwd 程序只进行非常简单的测试,但也有更复杂的例程,其中包括 Crack 的大部分功能。 一种方法是利用 PAM(可插拔身份验证模块)增强功能中的 cracklib 功能来改进 passwd 程序。 cracklib 库分析密码以确定它们是否容易被破解。 PAM 为 Linux 和 Unix 系统提供额外的安全性。
编辑 /etc/pam.d/passwd 文件以包含图 1 中的代码。 这将导致启用 PAM 的 passwd 程序加载这些动态可加载的程序库。 PAM 现在是 Red Hat 的标准配置。 在某些系统上,这些库位于 /lib 而不是 /usr/lib 中。(PAM 信息的另一个好来源是 http://www.sun.com/software/solaris/pam/。)
在 Slackware 上,如果 /etc/login.defs 中存在以下行(并且已安装字典),则将启用此功能
CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
考虑限制哪些远程系统可以通过 IP 表防火墙规则 SSH 进入您系统的各种帐户,或者通过编辑您的 SSH 服务器的配置文件 /etc/ssh/sshd_config 来限制哪些远程系统可以 SSH 进入以及它们可以 SSH 进入哪些帐户,或者同时使用这两种方法来提高安全性。 为 root 用户(在 sshd_config 中)将此列表设置得非常短。
正如您系统上的每个帐户都是密码破解者的潜在路径一样,每个网络服务都是通往它的道路。 禁用并卸载您不需要的服务。 大多数 Linux 发行版和 Unix 供应商默认安装大量软件和服务。 他们有意地选择易用性而不是安全性。 其中许多服务既不必要也不需要。 花时间删除您不需要的软件和服务。 更好的是,一开始就不要安装它们。
要找出正在运行哪些服务,请使用 netstat -atuv 命令。 即使是家庭系统也可能打开数十个不同的端口。 大型 Web 服务器可能更多。
如果列出的服务不是您希望此计算机提供的,请禁用它们。 许多发行版都提供了控制面板来轻松完成此操作,包括 Red Hat 和 Mandriva。 您可能需要从磁盘中删除二进制文件或将它们的 chmod 设置为 0,尤其是任何设置为 set-UID 或 set-GID 的文件。
NFS、finger、shell、exec、login r* 服务(rsh、rexec 和 rlogin)、FTP、telnet、sendmail、DNS 和 linuxconf 是默认安装在许多 Linux 发行版上的一些更流行的服务; 至少其中一些不应为大多数系统启用。 大多数服务都由守护进程 xinetd 控制; 这些服务可以通过编辑 /etc/xinetd.d/* 脚本来禁用。
您不需要 FTP 或 telnet 守护进程来使用各自的客户端连接到其他系统。 您不需要 sendmail 守护进程在端口 25 上监听来发送邮件、向本地用户发送邮件或通过 POP 或 IMAP 下载邮件。(您确实需要定期调用 sendmail 以取消延迟的传出邮件的假脱机。) 只有当其他系统将查询您的系统以获取此数据时,您才需要 DNS(named,名称守护进程)。 您自己系统上运行的大多数程序都会很高兴读取 /etc/resolv.conf 并查询您的 ISP 或组织的主要 DNS 服务器,而不是联系在您的系统上运行的 named 进程。 巧合的是,named 的端口是破解者用来入侵系统的一些最流行的端口。 如果您确实需要运行 named,请使用最近添加的功能,这些功能允许它 chroot 自身并切换到非 root 用户。
所有这些服务,除了 NFS、1 DNS 和 sendmail 的正常安装外,都是由 xinetd 按需启动的。 可以通过注释掉 /etc/xinetd.d 下的条目来关闭它们。 许多发行版都提供了控制面板或 Linuxconf 来轻松完成此操作,包括 Red Hat 和 Mandriva。
独立服务通过更改 /etc/rc.d 或其中的配置文件下的条目来关闭。
在基于 Red Hat 的系统上,发出以下命令以关闭 portmap 并防止其在重新启动时重新启动。
/etc/rc.d/init.d/portmap stop
chkconfig --del portmap
另一种工具是基于 ASCII 菜单的 ntsysv 程序。 与 chkconfig 一样,ntsysv 仅操作 /etc/rc.d/rc[0-6].d 下的符号链接,因此您还需要显式关闭该服务。 要同时执行这两项操作,请发出以下命令
/etc/rc.d/init.d/portmap stop
ntsysv
在其他使用 System V 风格启动脚本的发行版上(Red Hat 派生发行版的 /etc/rc.d/rc[0-6].d 目录和 Debian 的 /etc/rc.[0-b].d 目录),重命名 rcX.d(X 通常为 3)下的相应脚本,该脚本以大写字母 S 开头,并且其中包含服务名称。 例如,
cd /etc/rc.d/rc3.d mv S11portmap K11portmap
正如只有以 S 开头的脚本在进入相应的运行级别时才会被调用一样,以 K 开头的脚本在退出该运行级别时会被调用。 这是为了关闭仅应在该运行级别中运行的守护进程。 例如,当从运行级别 3(具有网络的 多用户)切换到运行级别 s(单用户模式)时,此机制将关闭 sshd,即 SSH 守护进程。 正如可以通过重命名为 ssomething 来禁用选定的 Ssomething 脚本一样,可以将这些后来的脚本之一从 Ksomething 重命名为 ksomething 以禁用它。
在 Slackware 和类似系统上,只需注释掉 /etc/rc.d/* 中启动它们的行即可。 grep 程序可用于查找这些行。 在更改配置文件后,请务必终止系统上正在运行的任何这些服务。
如果您不想麻烦地使用 kill,只需简单地重新启动即可完成此操作,并验证配置文件是否已正确更改。(在此重新启动之前准备好一套可用的救援磁盘将是一个好主意。)
要从系统中删除这些服务,您可以使用发行版的软件包管理器。 基于 Red Hat 的安装使用 RPM; 基于 Debian 的发行版使用 dpkg; SuSE 使用 YAST; Slackware 使用 pkgtool。
Linux 和 Unix 就像网络中的瑞士军刀:它们有一两个经常使用的工具,其他工具使用频率较低,还有一些工具从未使用过。 与瑞士军刀不同,您可以将 Linux 或 Unix 精简到仅包含您需要的服务,并丢弃您不需要的服务。 我永远不会使用刀上的锥子或剪刀,就像我永远不会使用 rsh 或 mount 或 umount 的 set-UID 到 root 功能一样。
确定您希望打开哪些端口(例如 www 和 ftp),并关闭其余端口。 关闭不必要的端口可以使您的系统更安全并性能更好。
Linux 和 Unix 并非完美无缺。 人们每个月都会发现新的漏洞。2 不过,不要绝望。 Linux 中发现和修复问题的速度是地球上最快的。 作为管理员,您的挑战是跟上这些变化。
每个发行版都有一个邮件列表,通过该列表发布安全公告,以及一个 FTP 或网站,可以在其中找到修复程序。 还有一些优秀的独立安全邮件列表,例如 Bugtraq 和 X-Force 的 Alert。 您可以(并且应该)订阅这些列表。3
Linux 安全信息的其他良好来源是 http://www.lwn.net/ 和 http://www.linuxtoday.com/。 这些站点是发行版中立的,并包含所有主要发行版的安全公告。
Linux 的优势之一是,当发布修复程序时,安装速度非常快。 此外,除非它在内核中,否则您的服务停机时间在几秒或几分钟之内。 极少情况下需要重新启动。
在非精心控制的情况下使用不安全的程序(例如 PHP、FTP、rsh、NFS 和 portmap)以及未能正确配置其他程序仍然是主要的安全性罪行。
大多数系统管理员都知道 POP 和 IMAP(除非封装在 SSL 中)、telnet 和 FTP4 以明文(未加密)形式发送密码和数据。 他们知道 PHP、NFS 和 portmap 存在安全问题的历史,以及其身份验证中的设计缺陷。 许多人仍然使用它们,然后在被入侵时感到惊讶。 相反,请使用 spop、simap、ssh 和 ssh 的 scp 或 sftp,或者在该子网前面放置一个好的防火墙,或者在您的设施之间设置受限 VPN。 如果您绝对必须使用 PHP,请保持其打补丁状态,并仔细审核您的代码以查找问题。
许多程序只有在正确配置后才是安全的。 系统管理员通常会不正确地配置它们,有时是因为缺乏培训和对风险的理解; 有时使用不安全的功能是故意的,因为“我只是必须拥有它”。 最近的一个例子是 Apache 的 PHP 功能,它过去曾出现过安全问题。 这些问题已广为人知,但有些人似乎仍然无法安全地使用它或找到替代方案。 安全性和便利性通常是矛盾的,您必须在两者之间做出选择。
在决定部署服务(或更改将使用的功能或服务的部署方式)之前,请进行一些研究。 检查安全历史记录并了解如何安全地部署服务。 如果无法安全部署,有哪些安全替代方案? 我仍然遇到有人使用 FTP,但没有意识到 sftp 是一个极好的替代方案。 将 NFS 等不安全的服务放在防火墙后面可能是某些人的解决方案。 对于其他人来说,将他们不安全的 Windows 网络放在防火墙后面,并将他们不同的办公室通过这些相同的 Linux 防火墙之间的 VPN 连接起来,可以提供出色的安全性。 配置一个防火墙,在单独的接口上为不同类别的用户(例如学生和教职员工或销售、人力资源和工程部门)设置单独的子网。
绝对禁止在防火墙内部或连接到任何包含机密信息的系统中使用无线网络,除非所有无线流量都首先使用 IPsec 或等效技术进行加密。 不要依赖 WEP(有线等效保密)或其后继技术。
Web 服务器和 CGI 程序是 Linux 和 Unix 计算机安全的祸根。 简单来说,CGI 程序是黑客可以进入您系统的最简单方式之一。 它本质上是一个在您的计算机上运行的程序,任何人和每个人都可以请求它,无需密码,并且有权执行强大的操作(例如,运送贵重的商品、泄露机密数据(如您的客户的信用卡号)以及在帐户之间转移资金)。
CGI 允许任何人访问您的网站,无论其意图是好是坏。 虽然其他“公认的”服务器(如 sendmail 和 named)也会与任何人对话,但客户端可以请求的范围要小得多。 尽管这些后者的服务器也曾出现过严重的安全性错误,但那些保持安全补丁更新的人员的风险极小。
以下是一些硬性规定,可帮助您使您的网站安全。
在编写 CGI 程序时,请像破解者一样查看它们,并尝试破解它们。 通过使用良好的编程技术来阻止缓冲区溢出。 判断该行是否大于缓冲区大小的简单方法是查看它是否不以换行符结尾,如以下示例所示
#include <stdio.h>
#include <string.h>
int c;
char buf[200];
if (!fgets(buf, sizeof buf, stdin))
error();
else if (!strchr(buf, '\n')) {
/* 读取长行的其余部分。 */
while ((c = getchar()) != EOF
&& c != '\n')
;
overflow();
}
不要使用 gets() 例程,因为它不执行任何缓冲区溢出检查; 请改用 fgets()。 许多其他流行的 C 字符串函数都有类似的弱点。 例如,strcpy() 函数“允许”您将大缓冲区复制到小缓冲区中,从而覆盖不相关的内存。 strncpy() 函数是一个极好的替代方案。 复制字符串的安全方法是
strncpy(dest_buf, source_buf,
sizeof dest_buf);
dest_buf[sizeof dest_buf - 1] = '\0';
要检测问题,一种可能性是
if (strlen(source_buf)
>= sizeof dest_buf)
error();
else
strcpy(dest_buf, source_buf);
检查转义序列、客户端发出 Linux 或 Unix 命令的可能性(通过插入空格、引号或分号)、二进制数据、对其他程序的调用等。 通常,列出允许的字符列表比确定每个不安全字符更安全。
以下 C 代码可用于处理客户端应提供其姓名的字段。 在此示例中,调用进程提供了一个以 NUL 结尾的字符串; 如果字符串是合法名称,则此例程返回 0,否则返回 -1。 第二个参数指定允许的最大合法字符串,包括终止 NUL 字节。 请注意,调用例程必须小心确保其缓冲区没有溢出。 我选择了清晰的代码而不是稍微更高效的代码。
#include <string.h>
char okname[] = " .'-,abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/* 合法名称返回 0,否则返回 -1。 */
legal(char *name, int maxlen)
{
if (!name || !*name
|| strlen(name) >= maxlen)
return -1;
while (*name)
if (!strchr(okname, *name++))
return -1;
return 0;
}
许多与 Linux 和 Unix Web 服务器相关的系统入侵都通过不安全的 CGI 发生。
尝试设计您的应用程序,以便即使它发现 CGI 漏洞,系统也能免受重大损害。 一种解决方案是让 CGI 只是在不同机器上运行的可靠编写的服务器的前端。 黑客必须跳过才能达到目标的障碍越多,他就越有可能绊倒。
如果您使用第三方提供的 CGI 脚本(例如购物车),您应该订阅相应的邮件列表并关注安全公告。 如果可能,获取源代码并进行审查。 如果您不了解该语言,请找一个了解该语言的人来审查它。
许多 CGI,无论是商业的还是开源的,都存在黑客社区众所周知的严重安全漏洞。 许多本地编写的 CGI 都存在安全漏洞,因为编写它们的程序员通常没有接受过编写安全代码的培训,并且此类代码很少经过审核。
许多系统程序以 root 身份运行。 通常,所有这些程序都需要设置为 set-UID 才能以某个用户身份运行,以便访问不应世界可访问的数据。 其他程序只需要在启动以打开低网络端口进行侦听或将其权限更改为特定用户的权限时设置为 set-UID 到 root。 在这种情况下,程序随后应放弃 root 权限。 Apache、named 和 ftpd 在几年前进行了增强,可以执行此操作以提高安全性。 不同的程序可能需要设置为 set-UID 到不同的用户,以保护它们免受彼此的侵害。
避免将用户的特权数据(信用卡号、财务详细信息、邮寄地址和电话号码等)存储在与 Web 服务器相同的计算机上。 这种分离将迫使黑客破解两个系统而不是仅仅一个系统才能获得此数据。
通常,这是(不安全地)作为 CGI 程序的参数完成的。 考虑以下示例
www.abroker.com/cgi-bin/address_change?account=666? passwd=secret&addr=1+Maple+St.&phone=301-688-652
某些浏览器可能会将此 URL(包含机密数据)存储在历史记录文件中。 如果有人从公共终端(例如学校或图书馆)浏览,您可能会因粗心处理数据而承担责任。 Cookie 也存在类似的问题。
是的,这种情况实际上发生过。
在输入此信息之前,将用户带到安全区域,并确保密码或信用卡号在传输到您的服务器之前已在系统上加密(使用 https)。
在许多组织中,管理层根本不会批准足够的资源来允许系统管理员提供良好的安全性。 实现真正全面的安全解决方案需要很多方面。 教育、设计、正确实施、用户培训、维护和持续的警惕性都是组织安全所必需的。 通常,安全性仅限于系统管理员愿意在自己的时间做的事情。 然而,不愿花时间的系统管理员肯定会因任何违规行为而受到责备。 这种致命的罪行涉及并非系统管理员直接责任的问题。 换句话说,管理层不允许系统管理员进行良好安全性所需的更改。
这可能不是“技术”问题,但它已成为许多组织发生入侵的原因。 资源匮乏通常是优先级错位的结果。 例如,以下是那些组织尚未被入侵的人的常见误解:“媒体夸大了每一种危险,远远超出了真实风险。” 向您的经理展示媒体对遭受安全漏洞的大公司的报道。 如果您在 2006 年在 T.J. Maxx 或 Marshalls 购物,您可能收到了新的信用卡号,这要归功于母公司 TJX Cos.,该公司在 12 月遭受了安全漏洞。 Circuit City 也遭受了类似的漏洞。 考虑将 Bruce Schneier 的优秀著作《秘密与谎言:网络世界的数字安全》(Wiley,2004 年)作为礼物送给您的老板。《秘密与谎言》面向管理层,并限制了技术术语的使用。
在许多场合,我曾警告客户注意重大的安全问题,但他们却认为安全性不如发布下一个版本或进行与安全无关的计算机改进那么重要。 后来,他们才了解到可悲的现实——从安全漏洞中恢复的成本通常是入侵前实施良好安全措施的 10 倍——只有那时他们才花钱实施安全措施。
此外,从安全漏洞中恢复的成本是预防成本 10 倍的估计仅仅是直接成本。 它没有考虑到延迟产品的市场机会损失、听到安全漏洞并转移到其他地方的客户损失,以及恢复期间客户和员工无法访问您的网站和电子邮件的成本。 它没有考虑到失去投资者和其他不良宣传的后果,当然也没有考虑到对 IT 专业人员职业生涯造成的损害。
可以采取哪些措施来解决资源不足和优先级错位的问题? 每周花一两个小时作为一个秘密项目来研究安全性。7 演示 Linux 防火墙、Web 服务器或 VPN。 展示在补丁程序发布时更新 Linux 软件、使用 ssh 和 gpg、破解大多数密码或攻击 Wi-Fi 无线网络是多么容易。 从您的家庭系统扫描您的网络(使用带有 -O 标志的 nmap)以显示您的网络有多开放。 在您的防火墙(如果有)外部安装 Snort 和 PortSentry,以显示您的网络受到攻击的频率。
重点与您的同事交谈,以获取您可以传递给管理层的详细问题描述。 让一位优秀的顾问或其他值得信赖的外部来源对您的公司进行安全审计并提出改进建议。 放弃会导致拖延,而拖延会导致系统受损。 这就是原力的黑暗面。 永不放弃。 永不投降。8
优先级错位也可能意味着使用 Microsoft,因为“我们是 Microsoft 商店”,而无视它可能没有足够的安全性来保护可从互联网访问的服务器。
如前所述,每个帐户都是进入系统的可能入口点。 过时帐户的密码不会更改,从而留下漏洞。 如果该帐户有需要重新分配的数据,请通过在 /etc/passwd 文件中前用户的密码字段中输入 * 或 !!(在第一个冒号之后)来禁用该帐户。 这会禁用通过该帐户登录,因为没有密码会加密为这些值中的任何一个,并且启用影子密码的代码可以理解这些序列。 尽快清理干净。 确保该帐户中没有包含机密数据的 set-UID 或 set-GID 程序或公共可读或可写的文件。
发出以下代码
chmod 0 /home/someone
find / -user someone -ls
是一个好的开始。 请注意,用户可能有一个邮箱、打印假脱机目录中的文件、各种应用程序中的帐户等,这些都需要处理。
您删除的一些服务(在纠正早期的罪行时)在 /etc/passwd 文件中具有帐户。 当您删除该服务时,请确保 /etc/passwd 帐户也被删除或禁用。 一些值得注意的服务是 FTP、NFS、uucp、mail、gopher 和 news。 如果您不需要它们,请摆脱它们。
在许多入侵报告中,系统管理员说,“我本打算安装……IP 表……TCP Wrappers……较新版本的……防火墙……关闭 NFS 和 portmap……停止使用 PHP……” 显然,他们至少模糊地知道必须做什么,但拖延了,直到为时已晚。
当然,你的责任可能比时间还多,但请考虑每周抽出两个小时来升级安全。这些小时可能意味着你只能在办公桌前吃着自带的午餐,但这总比因安全漏洞导致需要一周时间全天候在办公室加班恢复要好得多。可悲的是,我知道有一家公司在遭受入侵后,为了一个长达数周的恢复项目,他们真的为一些工程师在办公室里放了行军床。更糟糕的是,他们直到事件发生后才开始拖拖拉拉地决定构建防火墙。
本文基于 Bob Toxen 撰写的《RealWorld Linux Security: Intrusion, Detection, Prevention, and Recovery》第二版(Prentice Hall PTR,2003 年,ISBN 0130464562);第 2 章,第 2 节,“七宗罪”。
感谢 Prentice Hall PTR 允许本文使用该书中的材料。感谢才华横溢的程序员 Larry Gee,他与我共同撰写了本书的这一章节。
BOB TOXEN 是一位计算机和网络安全顾问,拥有 33 年的 Unix 经验和 12 年的 Linux 经验。他是 Berkeley Unix 的 162 位开发者之一,也是 Silicon Graphics Unix 的四位创始人之一。他曾担任乔治·W·布什政府在五个主要情报机构的计算机问题顾问。
最初发表于 Queue vol. 5, no. 4—
在 数字图书馆 中评论这篇文章
Jinnan Guo, Peter Pietzuch, Andrew Paverd, Kapil Vaswani - 使用机密联邦学习实现可信赖的 AI
安全性、隐私性、问责制、透明度和公平性原则是现代 AI 法规的基石。经典的 FL 设计非常强调安全性和隐私性,但以牺牲透明度和问责制为代价。CFL 通过将 FL 与 TEE 和承诺相结合,弥补了这一差距。此外,CFL 还带来了其他理想的安全属性,例如基于代码的访问控制、模型机密性和推理期间的模型保护。机密计算的最新进展,例如机密容器和机密 GPU,意味着现有的 FL 框架可以无缝扩展以支持具有低开销的 CFL。
Raluca Ada Popa - 机密计算还是密码学计算?
通过 MPC/同态加密与硬件飞地进行安全计算,在部署、安全性和性能方面存在权衡。关于性能,这在很大程度上取决于你所考虑的工作负载。对于简单的算术,例如简单的求和、低阶多项式或简单的机器学习任务,这两种方法都可以在实践中使用,但对于复杂的计算,例如复杂的 SQL 分析或训练大型机器学习模型,目前只有硬件飞地方法在许多实际部署场景中足够实用。
Matthew A. Johnson, Stavros Volos, Ken Gordon, Sean T. Allen, Christoph M. Wintersteiger, Sylvan Clebsch, John Starks, Manuel Costa - 机密容器组
此处展示的实验表明,Parma(Azure 容器实例上驱动机密容器的架构)增加的额外性能开销不到底层 TEE 增加的开销的百分之一。重要的是,Parma 确保了容器组所有可到达状态的安全不变量,该不变量植根于证明报告中。这允许外部第三方与容器安全地通信,从而实现需要机密访问安全数据的各种容器化工作流程。公司可以在云中运行其最机密的工作流程,而无需在其安全要求上妥协,从而获得优势。
Charles Garcia-Tobin, Mark Knight - 利用 Arm CCA 提升安全性
机密计算具有巨大的潜力,可以通过将监管系统从 TCB 中移除,从而减小 TCB 的大小、攻击面以及安全架构师必须考虑的攻击向量,来提高通用计算平台的安全性。机密计算需要在平台硬件和软件方面进行创新,但这些创新有可能增强对计算的信任,尤其是在由第三方拥有或控制的设备上。机密计算的早期消费者将需要对他们选择信任的平台做出自己的决定。