2023年8月

“Go 2 永远不会出现”

谷歌的 Russ Cox 称现在还没有 Go 2 的计划,这就提出了一个显而易见的问题:我们什么时候才能看到会破坏旧版 Go 1 程序的 Go 2 规范呢?在今天的博文中他写道:“答案是永远不会。从与过去决裂、不再编译旧程序的意义上讲,Go 2 永远不会出现。从 2017 年开始对 Go 1 进行重大修订的意义上来说,Go 2 已经出现了。” Go 语言的开发者认为,“优先考虑兼容性是我们为 Go 1 所做的最重要的设计决定。”

消息来源:Phoronix
老王点评:编程语言的大版本换代中,Python、Perl 都遭遇过严重的问题,而 Go 很好地绕开了这些前辈们遇到的陷阱,显然会让 Go 的发展更加顺畅。

“诈弹” 毁了 DEF CON 派对之夜

本次 DEF CON 黑客大会于 8 月 10 日在拉斯维加斯召开,并于 8 月 13 日结束,今年据称有超过 3 万人参加了大会。在周六傍晚,主会场受到炸弹威胁,导致主会场大厅被清空,消防人员和警察对大楼进行了搜查,但没有找到可疑物品。炸弹威胁被认为是一次恶作剧,但恶作剧者毁掉了所有人的夜晚。受此影响,大会主办方取消了当晚在主会场的庆祝活动,令数千人倍感失望。这个恶作剧者还导致四号轨道大厅欣赏《2001:太空漫游》的观众被迫错过了电影最后十分钟的关键时刻。

消息来源:The Register
老王点评:本来 DEF CON 是欢迎恶作剧的,但是这个蠢蛋的恶作剧太过分了,毁掉了大家的狂欢夜。

微软发现可关闭发电厂的安全漏洞

微软披露了一个广泛使用的工具集合中的 15 个高严重性漏洞,这些工具用于开发可编程逻辑控制器,这种面包大小的设备用于打开和关闭阀门、转动转子以及控制全球工业设施中的各种其他物理设备。微软警告说,虽然利用代码执行和拒绝服务漏洞很困难,但它能使威胁行为者 “对目标造成巨大损害”,如关闭发电厂,而远程代码执行可为设备创建后门,让攻击者篡改操作,导致 PLC 以异常方式运行,或窃取关键信息。

消息来源:Ars Technica
老王点评:这种工业控制领域的安全风险,不出则已,一旦被利用,造成的危害可远不止数据丢失那么简单。

你会在 Linux 讨论中听到 Compiz 这个词。在此简要介绍一下 Compiz。

今天,我们听到人们谈论 “发行版快闪”。我们中的一些人可能对此深有感触。尝试具有新功能的新 Linux 发行版是很难抗拒的。即使我也不能幸免,我有几台笔记本电脑,我经常在上面尝试新的操作系统(如果我怀旧的话,可以尝试旧的操作系统)。

但曾经有一段时间,发行版快闪并不常见,因为在 Linux 诞生之初,发行版较少。我们许多早期用户所做的就是使用不同的窗口管理器。

compiz - magic lamp effect - Courtesy of Wikimedia

Compiz 是这些窗口管理器之一,于 2006 年发布。它是 X Window 系统 最古老的合成窗口管理器之一,在当时相当先进。窗口管理器不再像以前那样流行,但 Compiz 仍然在维护中,仍然具有出色的性能和大量的功能。

Compiz 是什么?

Compiz 是一个开源 X 窗口管理器,可实现高级视觉效果和桌面增强。它提供了广泛的功能,包括窗口管理、窗口装饰、桌面效果、动画等等,并以可加载插件的形式实现。Compiz 可以用作大多数其他桌面的默认窗口管理器和合成器的直接替代品。

compiz - burn effect - Courtesy of Wikimedia

Compiz 的历史

在其早期阶段,Compiz 专门与 Xgl 支持的 3D 硬件一起运行。与 Xgl 一起使用时,大多数 英伟达ATI) 显卡与 Compiz 兼容。从 2006 年 5 月 22 日开始,Compiz 通过利用 AIGLX 与标准 X.Org 服务器 兼容。

在 2000 年代初期,ATI英伟达 驱动程序在 Linux 上变得越来越流行,这使得先进的 OpenGL 开发能够扩展到昂贵的 UNIX 工作站之外。大约在同一时间,Xgl、Xegl 和 AIGLX 使 Xorg 能够利用 OpenGL 进行窗口转换和效果。

Compiz 于 2006 年 2 月由 NovellSUSE)作为自由软件推出,成为 X 的早期合成窗口管理器之一。到 2006 年 3 月,红帽 将 Compiz 移植到了 AIGLX。

对 Compiz 的早期评论大多是正面的,称赞其性能、视觉吸引力和创新性。同时开发的还有 Metisse 和 Project Looking Glass 等项目,但没有一个项目获得了与 Compiz 相同的认可或广泛采用。后来,合成效果也被集成到窗口管理器中,例如 GNOME ShellKWin

Wayland 于 2010 年左右出现,将合成器和图形服务器的功能合并到一个程序中,从而使单独的窗口管理器和合成器变得过时。因此,Compiz 不再被广泛使用,但这并不意味着它的时代已经结束。继续包含 Compiz 的发行版通常只启用一些实用的插件,同时禁用更多视觉上奢侈的插件。此外,发行版越来越多地将 KDEGNOME 与其默认窗口管理器结合在一起。最后一个以 Compiz 作为 Unity 桌面管理器的 Ubuntu 版本是 Ubuntu 16.04,此后其开发基本陷入停滞。

Compiz 仍然得到维护,有两个现有版本:Compiz 0.9 和 Compiz 0.8。Compiz 0.9 是用 C++ 重写的,而 Compiz 0.8 继续使用原始 C 版本。Ubuntu 维护和开发 Compiz 0.9,而 Debian 中的软件包是 Compiz 0.8 “Reloaded”。两个版本都很相似,但区别在于插件支持的级别,因为 0.9 重写版不得不排除了某些功能。Compiz 0.8 被认为更快、更稳定。

总结

我在使用时,Compiz 的所有功能和效果确实让我付出了很多时间。我记得我花费了大量的时间以独特的方式改造我的工作空间。然而,随着时间的推移,我发现自己花越来越多的时间在 Compiz 上修修补补,而不是专注于我的工作。虽然其视觉奇观的吸引力是不可否认的,但它也成为了分散注意力的来源:我摆弄 Compiz 的次数越多,我未完成的任务就越长。最终,我不得不更换窗口管理器才能完成工作。

对我来说,Compiz 在桌面环境的历史上占有特殊的地位。这证明了其开发人员和社区的独创性,将技术推向了极限。

如果你想了解 Compiz 的一些功能,请观看以下视频:Compiz Fusion:快速演示。对于“旧代码”来说,它确实可以做很多事情并且有点领先。

顺便说一句,如果你对复古的东西感兴趣,我写了几篇文章来带你回忆起来。

我想你会喜欢它们的。

怀旧 Coherent 操作系统
在现代 Linux 发行版上体验 CDE

via: https://itsfoss.com/compiz/

作者:Bill Dyer 选题:lkxed 译者:geekpi 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

毫无疑问,无论是在桌面、笔记本电脑还是移动设备上,浏览器都是任何操作系统中最重要的应用之一。如果没有一个功能强大、快速且稳定的浏览器,操作系统的实用性将大幅度降低,以至于我相当确定,如果一个操作系统没有浏览器,几乎没有人会将其用于常规、正常的使用。拥有一个起码可用的浏览器是将操作系统从娱乐玩具升级到你可以使用超过 10 分钟的有趣新奇物品的关键。

但问题在于,开发一个功能强大的浏览器实际上非常困难,因为浏览器本身已经成为一个功能丰富的平台。承担起从零开始构建浏览器的巨大任务并不是很多人感兴趣的事情——除了那些疯狂的人——而这一切被恶化的原因是,由于市场的合并和垄断,与剩下来的三个浏览器引擎竞争基本上是无济于事的。Chrome 和其各种衍生产品的占据统治地位,其次是 iOS 上的 Safari,原因仅仅是因为你在 iOS 上不能使用任何其他浏览器(引擎)。然后就是 Firefox,作为一个远远落后的第三名而存在——且份额还在下滑。

这就是 Linux 桌面发行版所处的环境。长期以来,Linux 桌面几乎完全依赖于 Firefox(和之前的 Mozilla 套件)作为它们的浏览器,一些用户选择在安装后下载 Chrome。尽管 GNOME 和 KDE 名义上都有自己的两个浏览器,GNOME WebFalkon,但其用户数量有限,发布的版本也寥寥无几。例如,没有一个主要的 Linux 发行版会将 GNOME Web 作为其默认浏览器,并且它缺少用户对浏览器期待的许多功能。相比之下,Falkon 只会偶尔更新,往往几年才发布一个新版本。更糟糕的是,Falkon 通过 QtWebEngine 使用的是 Chromium 引擎,而 GNOME Web 使用的是 WebKit(它们独立于浏览器更新,所以浏览器版本并不总是一个可靠的指标!),所以两者都依赖于世界上最无情的两个公司——谷歌和苹果的善意

即使是 Firefox 本身,尽管它显然是 Linux 发行版和 Linux 用户的首选浏览器,也并不将 Linux 视为一线平台Firefox 首先是一个 Windows 浏览器,然后是 macOS,最后是 Linux。Linux 世界对 Firefox 的热爱并没有得到 Mozilla 同样的回应,这种情况在许多地方表现出来,那些在 Windows 端修复和解决的问题在 Linux 端被忽视了好几年甚至更久。

这种情况最好、最明显的例子就是硬件视频加速。这个功能从一开始就是 Windows 版本的默认部分,但是直到 2023 年 7 月初发布的 Firefox 115,才在 Linux 上默认启用。即使是这样,这个功能也只是默认为英特尔显卡用户开启,并没有 AMD 和英伟达用户什么事。这种视频加速功能的缺失(对于 AMD 和英伟达用户来说,仍旧如此),是 Linux 笔记本电脑在电池寿命上与 Windows 对手差距严重的一个主要因素。

然后,要走上这条路一直都是漫长、艰巨、且充满颠簸。长久以来,要让硬件视频加速在 Linux 的 Firefox 上工作一直复杂而不稳定,每一个浏览器版本可能都会改变你需要设置的标志。有时候无论你怎么做,它可能都会在连续几个版本中停止工作。论坛消息、博客帖子和网站文章中充满了过时的指令和像 Hail Mary 一样的建议,供那些试图让它运行的用户参考。你以往的成功经验会随着每个版本的发布而变化,而跟踪所有这些都是一种噩梦

不仅仅是硬件加速视频解码。手势支持在 Linux 版本上的推出比在 Windows 版本上要晚得多——比如使用滑动来前进和后退,或者在图片上捏合来进行缩放。同样,触摸屏支持也在 Linux 版本的 Firefox 上晚了一段时间才出现。通常,此类功能可能在默认启用之前几年就可以通过 about:config 指令启用,但这远非理想情况。

桌面 Linux 的普及率落后于 Windows 和 macOS,这并不是什么意想不到的情况,或出于恶意的结果。前几段的重点并不是抱怨 Linux 版 Firefox 的状态,或者建议 Mozilla 将 Windows 和 macOS 版本的宝贵资源转移到 Linux 版本。虽然如果他们这么做的话,我显然不会抱怨这些,但这并没有多大意义。我强调这些问题的真正原因是,如果今天在 Mozilla 现有的财力和资源下,Linux 版的 Firefox 已经被视为第三级平台,那么如果 Mozilla 的财力和资源急剧减少,将会发生什么?

Firefox 的状况并不太好。它的市场份额在这些年里急剧下滑,现在在桌面和笔记本电脑上仅占有微薄的 3%,而在移动设备上更是微不足道的 0.5%。Chrome 和稍少的 Safari 已经完全压倒了这个曾经威猛的浏览器,以至于它对于 Linux/BSD 用户和其他平台上的更多极客来说,基本上就是一个附带的产品。我说这个并不是为了贬低那些使用 Firefox 的人——我就是其中之一——而是为了强调 Firefox 当前市场位置的糟糕程度。这种市场份额的缩小已经对 Firefox 的开发和未来前景构成了伤害,尤其是如果这种滑坡还在继续的话。

然而,市场份额的下滑远非最大的问题。摆在 Firefox 头顶的达摩克利斯之剑是 Mozilla 非常奇怪且失衡的收入来源。大多数人可能都知道,Mozilla 的大部分收入来自与谷歌的搜索合作。大约 80% 的 Mozilla 的收入 来自谷歌,后者支付给这个浏览器制造商费用,以将谷歌搜索设为默认搜索引擎。

这份协议还会持续多久?无论 Firefox 陷入多么糟糕的情况,它还会一直续约吗?合作的规模会缩小,还是会完全结束?什么时候,谷歌会觉得每年在本质上是对竞争对手的慈善上投入数亿美元已经不再值得,或者根本不需要?谷歌与苹果的类似搜索交易已经面临 法律审查;那么这种审查会对与 Mozilla 的交易产生影响吗?

只需问自己这个问题:如果由于 Firefox 的市场份额进一步下滑,与谷歌的交易泡汤,两者结合起来,或甚至这里未提到的其他因素,导致 Mozilla 的资金短缺,哪个版本的 Firefox 将首先感受到削减?Mozilla 会采取什么措施来缓解困境?当 Mozilla 日益绝望时,我们是否会看到与其他公司的肮脏交易?不靠谱的加密货币概念?允许广告以换取收入?更多的推荐的网站和扩展,需要付费?还是 Linux 版本将被全部削减,让社区接管?

这就是 Thunderbird 所经历的。Thunderbird 花了近十年的时间才完全恢复。这也可能发生在 Linux 的 Firefox 上。

这就是桌面 Linux 的 Firefox 所面临的问题。这个最重要的桌面 Linux 应用程序已经处于非常困难的境地,而且似乎不可避免的是,事态只会逐渐变得更糟。然而,我并没有看到有人在谈论这个问题,或者考虑 Firefox 最终可能的消亡,这对 Linux 桌面意味着什么,以及如何避免或减轻这种情况。

在理想的世界里,Linux 桌面的主要利益相关者 —— KDE、GNOME,各种主要的发行版 —— 会聚在一起,严肃地考虑一项行动计划。在我看来,最好的可能解决方案是复刻一个主要的浏览器引擎(或选择一个并大幅投入),并修改这个引擎,并专门为 Linux 桌面进行定制。停止生活在 Windows 和 macOS 浏览器制造商的残羹冷炙中,完全专注于制作一个完全为 Linux 及其图形堆栈和桌面优化的浏览器引擎。让主要的利益相关者共同在一个 Linux 首选—— 或甚至仅限于 Linux —— 的浏览器引擎上共同努力,而将图形前端留给各种工具箱和桌面环境。

显然,这并不容易,需要在时间、资源和人员方面进行重大投资。然而,通过仅专注于 Linux,你不会真正与 Blink 和 WebKit 竞争,因为他们完全不重视桌面 Linux(Chrome 在 Linux 上仍然没有硬件视频加速)。让其他引擎去为各种专有平台争夺——Linux 需要一个独立于谷歌(和苹果)的浏览器引擎,并且认真将 Linux 作为一个平台对待。

我真的很担心 Linux 上浏览器的状态,特别是 Firefox 在 Linux 上的未来。我认为桌面 Linux 社区的各种主要参与者,从 GNOME 到 KDE,从 Ubuntu 到 Fedora,显然对于 Firefox 出问题或死亡完全没有应急计划,尽管我们都知道当前的浏览器市场状态、Mozilla 的财务状况和两者的未来前景。这种行为实在是太不负责任了。

Linux 桌面的 Firefox 面临着大问题,但似乎没有人愿意承认它。

(题图:MJ/0c6cebcc-3c94-4ac1-86cc-ecfa828d33e7)


via: https://www.osnews.com/story/136653/desktop-linux-has-a-firefox-problem/

作者:Thom Holwerda 选题:wxy 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Firefox 在意 Linux 桌面用户吗?

Firefox 是 “最重要的桌面 Linux 应用程序”,如果不是之一的话。大多数发行版都默认配备了 Firefox,即便有些用户会在安装后下载 Chrome 浏览器。但 Firefox 并不把 Linux 视为一级平台。Firefox 浏览器首先是一款 Windows 浏览器,其次是 macOS,第三才是 Linux。Linux 界对 Firefox 的喜爱并没有得到 Mozilla 的回应。这表现在很多地方,在 Windows 上解决的问题在 Linux 上被忽视了数年甚至更久。最好、最明显的例子就是硬件视频加速功能,直到 2023 年 7 月初发布的 Firefox 115 才在 Linux 上默认启用了该功能,而且只支持英特尔显卡,AMD 和英伟达用户直到现在也不支持。这是导致 Linux 笔记本电脑的电池续航时间比 Windows 笔记本电脑严重缩短的一个主要因素。

消息来源:OS News
老王点评:还真是,连同是传统开源阵营的 Mozilla 都不和 Linux 桌面报团取暖。那么 Linux 桌面应该拥抱 Chrome 么,还是支持一个 Linux 优先的浏览器呢?

Stack Overflow 拥抱人工智能

虽然 ChatGPT 在回答编程问题上的表现还不如抛硬币,但是 Stack Overflow 的访问量也在不断下降,该编程网站保守地承认,今年的平均流量要比去年低了 5%。Stack Overflow 上个月宣布了其人工智能产品 OverflowAI,作为一个 VSCode 插件,它将从公共平台和 Stack Overflow for Teams 实例中提取经过验证的内容,提供给程序员们。但据 Stack Overflow 对 9 万名程序员进行的年度开发人员调查发现,77% 的开发人员对人工智能工具持支持态度,但只有 42% 的开发人员相信这些工具的准确性。

消息来源:ZDNet
老王点评:或许,AI 给 Stack Overflow 或程序员带来的帮助不是替你写代码,而是作为一个配合得更好的编程伙伴。

OpenAI 每天花掉 70 万美元

据报道,ChatGPT 每天的运营成本高达 70 万美元。今年 5 月,自从开始开发 ChatGPT 以来,它的亏损额翻了一番,达到了 5.4 亿美元。OpenAI 预计 2023 年的年收入为 2 亿美元,预计 2024 年将达到 10 亿美元,而亏损会越来越多。此外,ChatGPT 网站的流量也在下降,与 6 月份的 17 亿用户相比,7 月份的用户数量为 15 亿,环比下降了 12%,当然,这有可能是很多公司禁止员工在工作中使用 ChatGPT,但允许他们在不同的工作流程中使用 API 来利用大语言模型。该公司也受困于 GPU 短缺,它已经申请了 GPT-5 商标,很明显,希望对其进行训练,但这反过来又导致了 ChatGPT 输出质量的大幅下降。

消息来源:Analytics India
老王点评:现在就看钱烧完之前,OpenAI 能取得多大的成绩了。

Penpot 是一个设计师和开发人员使用的开源设计工作空间。

使用 Fedora 会让你接触到许多不同的开源软件。Fedora 网站的重大改造始于一年多前,目标是提高设计美感、创建风格指南、规划网站策略以及选择用于交付 Fedora Linux 产品网站的技术栈。从设计的角度来看,团队需要一个创建模型的工具、一个保存资源库的地方,以及完成后适合移交给开发人员的东西。

选择 Penpot

Figma 是许多人推荐的流行界面设计工具,但由于该公司最近对其免费计划施加了限制,因此被认为不合适。这种担忧在 Adobe 收购 Figma 之前就已经出现,所以现在回想起来,不使用它的决定更加重要!

团队研究了 Penpot,发现它符合每个人的要求。Penpot 是第一个面向跨领域团队的开源设计和原型平台。Kaleidos 内的一个团队创建了 Penpot。Kaleidos 是一家成立于 2011 年的科技公司,完全专注于开源项目。

Fedora 网站和应用程序团队通过三种方式使用 Penpot:

  • 线框图和模型
  • UX 测试和反馈
  • 协作

我将在下面详细介绍这些用途。虽然示例讨论了 Fedora 项目,但 Penpot 可以为任何开源社区带来好处。

1、线框和模型

设计网页草图是我们团队使用 Penpot 的主要方式。草图可以实现快速协作并减少贡献者之间的沟通问题。开发人员和设计师可以在同一空间自由协作。

社区反馈很重要。正确地共享模型可能有点困难。Penpot 基于网络,可在任何平台上轻松访问。当在原型上进入 查看模式 View Mode 时,该工具会生成一个可共享的链接。如果你不再希望共享链接,还可以修改权限或销毁链接。

Creating a shareable link and editing permissions on Penpot.

2、UX 测试和反馈

此次改造与 Fedora 社区密切合作。通过对原型进行可用性测试并共享设计进度,我们使用 Penpot 让社区参与每一步。

3、协作

在改造过程中,我们的开发和设计团队使用 Penpot 来产生想法、组织会议并直观地测试新概念。

我们的团队在早期规划会议中将 Penpot 用作白板,让开发人员在参与讨论的同时以异步方式贡献想法。这种方法减轻了压力,确保每个人的想法都能被听到,帮助我们看到模式,并调解分歧,达成良好的妥协。Penpot 有助于在每个人之间建立一种理解感。

团队使用 Penpot 作为素材来源。用户可以将元素和其他内容存储在资源库中,以便可以重复使用它们。Penpot 可以存储组件、图形、版式、调色板等。

An example of an asset library within Penpot.

共享这些库使整个团队都可以访问它们。当与定期访问相同源文件的团队合作时,这会很有帮助。如果新成员加入,他们开始为项目构建模型所需的所有素材都将随时可用。用户可以直接从 Penpot 文件导出这些素材。

Exporting selected assets in a Penpot file.

开发人员可以在任何浏览器上查看原型的全部内容。这种功能让网站建设变得更容易,因为你可以与原型同时进行编码。如果设计人员同时在处理文件,他们所做的更改可以通过查看模式刷新查看,如果是在实际文件中,则可以实时查看。

An editor with code and the Penpot interface.

开源价值观

Penpot 符合 Fedora 项目的“四大基础”:自由、朋友、功能和第一。在回顾这些价值观时,请考虑该工具如何与你自己的开源计划保持一致。

自由

我们选择开源和自由来替代专有的代码和内容,并限制专有代码对项目和项目内的影响。Penpot 是第一个开源设计和原型平台。Penpot 基于网络,独立于操作系统,并采用开放网络标准。这确保了与 Web 浏览器和 Inkscape 等外部应用的兼容性。

朋友

我的社区由各行各业的人们组成,他们共同努力推进自由软件的发展。Penpot 的使命是相似的。其目标是提供开源和开放标准工具,将设计人员和开发人员之间的协作提升到新的水平。使用 Penpot 可以顺利地向开发人员移交,并使我们能够高效地合作。无需来回寻找文件或素材,因为他们需要的一切都在 Penpot 文件中。

功能

Fedora 关注优秀的软件。它的功能开发总是公开透明地进行,并鼓励参与。任何人都可以在任何问题上开始工作,也可以加入任何他们感兴趣的团队。Penpot 赞同这一理念。任何人都可以合作!代码和贡献者指南可从项目的 Git 仓库获取。

第一

Fedora 采用的策略是通过持续的前进动力来推动自由软件的发展。这种方法通常遵循“早发布、勤发布”的工作流程。Penpot 也经常更新。它向社区发布每日开发博客,重点介绍已完成的工作。它在网站上写道:“我们也有这种紧迫感,我们需要快速行动,这关系到太多的事情”。

总结

该项目即将完成,第一个截止日期与 Fedora Linux 38 的发布日期一致。事实证明,Penpot 是一个非常有价值的工具,它为开源设计爱好者提供了更多的资源。最近,该平台庆祝了它的正式发布,下一步的发展令人兴奋。

Penpot 改变了我们团队的工作方式。它能为你的组织和社区做些什么?

本文改编自 Ashlyn Knox 和 Emma Kidney 在创意自由峰会上的演讲:《模型和动作 - Fedora 设计团队如何使用 Penpot》。该演讲的录音可 在 PeerTube 上观看

(题图:MJ/fc248c3c-08e9-4e35-a389-8c88009a7110)


via: https://opensource.com/article/23/3/linux-penpot

作者:Emma Kidney 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

FIDO U2F 安全密钥是一种小型的基于 USB/NFC 的设备。它是一种硬件安全令牌,具有多个安全相关的用途模块。FIDO U2F 标准兼容的密钥品牌有多种,包括 NitroKey、SoloKey v2 和 YubiKey。与类似 Yubico OTP 的专有协议相比,FIDO 协议是不依赖特定硬件令牌的,并且使用的工具也不依赖特定制造商。

本文介绍了 FIDO 协议,并展示了如何安装和启用 FIDO U2F 安全密钥作为替代身份验证因素,以用于登录终端、GDM 或进行 sudo 认证。

对于 YubiKey,特别是其不支持 FIDO2/U2F 的旧版设备,请参阅之前的文章:

如何在 Fedora Linux 上使用 YubiKey

本文不涵盖存储 OpenPGP 密钥或 X.509 证书的操作,因为这些功能与硬件相关,不属于 FIDO U2F 标准的一部分。

保留备用安全密钥

一旦你开始使用安全令牌,就必须考虑到自己可能会被锁定在与这些令牌相关联的账户之外的情况。由于硬件安全令牌是独特的,并且被设计为非常难以复制,你不能像在使用 KeePass 或 AndOTP 等软件保险库时那样制作备份。因此,你使用主要密钥进行的所有注册都应立即使用第二个备份密钥重复进行,并将其存储在安全的位置,甚至可能是保险箱中。

在实践中,这意味着你需要将两个硬件令牌注册到你的 Linux 和 Web 账户中,并生成两份 OpenSSH 私钥,并将这两份 OpenSSH 公钥上传到你使用的服务器和服务(例如 GitHub)中。

如果你丢失了一个密钥,你将需要使用第二个密钥登录与密钥注册的每个服务,删除丢失的密钥,并注册一个新密钥。对于使用 FIDO2 协议的无密码登录尤其如此。

FIDO2、U2F 和 FIDO 联盟

FIDO2 是由 FIDO 联盟 维护的一系列标准。FIDO 联盟希望最终完全摒弃密码,并提供通过多个因素安全验证用户身份的过程,而无需使用密码。

该标准包括万维网联盟(W3C)的 网页认证 Web Authentication (WebAuthn)和 FIDO 联盟的 客户端到认证器协议 Client-to-Authenticator Protocol (CTAP)。WebAuthn 是一种用于请求和处理公钥挑战进行认证的标准 API。通过这个标准,浏览器会向客户端发送一个 挑战 challenge ,然后客户端使用私钥生成一个 响应 response ,挑战者再使用之前交换的公钥进行验证。如何生成挑战答案对于服务来说是不可知的,而是由 CTAP 控制。用户可能会被要求使用多种验证方法,如生物识别、PIN 或存在性检查(或这些方法的组合)。这些验证方式在认证时与注册密钥时的方式相同。

为了保护与硬件令牌的任何交互,可以选择设置一个访问 PIN,并且默认情况下未设置。大多数密钥在连续八次输入访问 PIN 失败后将自动失效。恢复失效的密钥并设置新 PIN 的唯一方法是重置密钥。然而,当密钥重置时,所有其服务注册将丢失!

FIDO2 密钥还支持 FIDO U2F 协议(现已更名为 CTAP1)。该协议旨在提供第二或多因素(但非无密码)认证。Linux 的 PAM 认证系统也可以配置为使用 U2F 协议。虽然 FIDO U2F 不是为无密码认证设计的,但 U2F PAM 模块允许无密码认证。

安全影响

FIDO2 / U2F 通过将安全密钥与用户账户绑定来工作。大多数密钥默认启用/使用基本的存在性检查。它们通常通过点亮并提示你触摸密钥来进行存在性检查。FIDO2 PIN 是可选的,默认情况下未设置。当密钥用于登录 Linux 帐户或用于使用 sudo 时,只需确保设备和密钥物理上存在即可。FIDO2 PIN 是一个重要的附加验证步骤,用于确保只有你才能使用密钥进行身份验证。

等一下!现在我还要记住额外的 PIN 吗?这不就是一个更短的密码吗?

—— 担心的读者

FIDO2 PIN 不是密码,它是一个简短、容易记住的短语。这并不是一个问题,因为:

  1. 你需要物理访问密钥 需要知道 PIN。
  2. 输入 PIN 错误达到八次会使密钥失效,这使得暴力破解变得困难。

相反地,现在你可以使用存储在密码管理器中的安全密码,而无需记住它。

谷歌在 2016 年进行的一项案例研究,题为 《安全密钥:现代网络的实用密码学第二因素》,显示了安全密钥有效地保护用户免受密码重用、钓鱼和中间人攻击的影响。

使用 PAM 进行用户认证

本地系统认证使用 可插拔认证模块(PAM)。U2F 设备的 PAM 模块(因此进行认证)是 pam_u2f。你的密钥是否支持 FIDO2 或 FIDO U2F 取决于其固件版本和硬件型号。

设置如下:

  1. 安装 PAM 模块。
  2. 将密钥注册到你的用户账户上。
  3. 使用 authselect 在 PAM 中激活智能卡支持。

authselect 是一个用于配置带有可重现配置文件的 PAM 的工具。使用 authselect 的配置文件可以避免手动修改 /etc/pam.d 目录下的配置文件。

依赖项

所需的软件包可在官方仓库中获取。

[…]$ sudo dnf install pam-u2f pamu2fcfg fido2-tools

在密钥上设置 FIDO2 PIN

FIDO2 标准定义了一种用于访问保护的可选 PIN。如果 PIN 丢失或失效,没有 PUK 或其他恢复方式,请确保你有一种备用的身份验证方法。如果通过连续输入无效的 PIN 使 PIN 失效,恢复的唯一方法是重置密钥。然而,重置密钥会删除其所有凭据,并将其与以前注册的所有服务断开连接。

fido2-tools 包含一个用于设置密钥的 FIDO2 PIN 的工具: fido2-token。使用 fido2-token -L 获取当前连接的 FIDO2 设备列表,并使用 fido2-token -C </path/to/device> 设置一个新的 PIN:

[…]$ fido2-token -L
/dev/hidraw1: vendor=0x1050, product=0x0407 (Yubico YubiKey OTP+FIDO+CCID)
[…]$ fido2-token -C /dev/hidraw1
Enter current PIN for /dev/hidraw1:
Enter new PIN for /dev/hidraw1:

将安全密钥注册到本地账户

使用工具 pamu2fcfg 检索一个配置行,该行将放入 ~/.config/Yubico/u2f_keys 中。pam_u2f 是由 Yubico 提供的通用 U2F 密钥模块,因此使用 Yubico 特定的默认配置路径。该文件中的每个配置行由用户名和密钥特定的凭据/配置部分以冒号分隔。确保每个用户仅使用一行。

fedora-user:owBYtPIH2yzjlSQaRrVcxB...Pg==,es256,+presence+pin[:该用户另外的密钥]

如果密钥受 PIN 保护,你将被要求输入 PIN 来进行此操作。对于第一个密钥的初始注册,请使用以下命令:

[…]$ mkdir -p ~/.config/Yubico
[…]$ pamu2fcfg --pin-verification > ~/.config/Yubico/u2f_keys

要将另一个密钥(例如备份密钥)添加到此单用户配置中,请使用以下命令:

[…]$ pamu2fcfg --nouser --pin-verification >> ~/.config/Yubico/u2f_keys

pam_u2f 还支持使用一个中心身份验证文件。在这种情况下,请确保每个用户使用一行,并将给定用户的所有密钥保持在同一行上。如果两行引用相同的用户名,那么只有最后一行将被使用!请参阅 pam\_u2f 手册页 获取所有可用选项的详细信息。

使用 authselect 配置 PAM

authselect 是一个用于控制系统 PAM 配置的工具。它引入了配置文件作为额外的抽象层。一个 authselect 配置文件可以更改多个 PAM 配置文件。配置文件具有控制附加功能和行为的参数,例如启用 FIDO U2F 安全密钥。有关 authselect 的详细介绍计划在未来的文章中进行。

显示当前活动的 authselect 配置文件。如果选择了 SSSD(系统安全服务守护程序)配置文件并启用了 U2F 支持,则输出可能类似于以下内容:

[…]$ authselect current
Profile ID: sssd
Enabled features:
- with-pam-u2f

使用 authselectwith-pam-u2f 标志,在 PAM 中激活 FIDO U2F 支持:

[…]$ sudo authselect select sssd with-pam-u2f

如果你还想使用指纹读取器,必须同时启用这两个功能:

[…]$ sudo authselect select sssd with-pam-u2f with-fingerprint

这会在 PAM 中激活具有 pam_u2f 和指纹读取器支持的 SSSD 配置文件。例如,当使用上述 authselect 配置文件在终端上使用 sudo 时,首先会要求你提供指纹,如果指纹识别失败,则使用 U2F 密钥。然而,GDM 将首先使用 U2F 密钥。

解锁 GNOME 钥匙环守护程序

当使用生物识别、U2F 密钥或任何其他不需要密码短语登录 GNOME 的方法时,无法自动解锁“登录”钥匙环。这是因为,默认情况下,钥匙环的密码短语设置为与你的登录密码短语相同。通常,PAM 将你的登录密码短语传递给钥匙环守护程序。由于你在通过生物识别或 U2F 密钥进行身份验证时不需要输入密码短语,因此 PAM 没有密码短语可以传递给钥匙环守护程序。这个问题没有简单直接的解决方法。

如果你为家目录使用 LUKS 加密并且操作的是单用户系统,你可以从钥匙环中移除密码短语。这将使你的 GNOME 钥匙环在文件级别上保持未加密。但它仍然在块级别上由 LUKS 加密,因为 LUKS 加密与单用户系统上的默认基于文件的钥匙环加密等效。由于钥匙环的加密仅旨在保护其内容免受离线访问,钥匙环在登录后将被解密/解锁,任何运行时应用程序或恶意软件在解锁后都有可能访问钥匙环的内容。由于 LUKS 也是一种离线保护机制,因此可以认为它是钥匙环正常基于文件的加密的替代选择。

如果你的系统被多个用户使用,则 LUKS 加密和钥匙环的正常基于文件的加密不是等效的。在具有只由 LUKS 保护的钥匙环的多用户系统中,具有解密磁盘和引导系统授权的任何用户都能够访问同一系统上的任何其他用户的钥匙环。

移除 GNOME “登录”钥匙环密码短语非常简单。只需设置一个新的空密码,钥匙环将被解锁,并且其内容将以未加密的方式存储在文件级别上。可以使用图形实用程序 Seahorse(也称为“密码和密钥”)来在 GNOME “登录”钥匙环上设置一个空密码。

警惕和其他用例

即将发布的文章将探讨如何使用 U2F Dracut 插件使用 FIDO2/U2F 密钥解锁 LUKS 加密的磁盘。

OpenSSH 8.2+ 支持使用 ed25519-sk 安全密钥。这个主题已经在之前的文章《如何在 Fedora Linux 上使用 YubiKey》中涉及到。

需要注意的是,FIDO2/U2F 是一种认证标准。还有其他用于安全令牌的用例(主要由 Yubico 建立),例如 (T)OTP、PIV(用于 x509 密钥管理)或 OpenPGP,这些用例不是一般性的,而是具体硬件上的用例。

(题图:MJ/4bd195dc-130b-4ef2-af6c-9a6ef5d54223)


via: https://fedoramagazine.org/use-fido-u2f-security-keys-with-fedora-linux/

作者:Alexander Wellbrock 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出