使用 Linux 烹饪:被遗忘的安全

作者:Marcel Gagné

弗朗索瓦,亨利精酿葡萄酒坊的葡萄酒订单在哪里?我们的几款我最喜欢的酒似乎快用完了。亨利通常会及时处理这些事情。他没有给你订单让你批准吗?啊,太好了。那么你有订单吗?没有?你是什么意思,它在某个安全的地方?你要么有,要么没有?我明白了。你认为它很重要,所以你加密了订单并扔掉了原始信息。我猜猜,我的朋友,你不记得你用来加密信息的密码了。我就这么想。好吧,给我看看你用了什么程序。

隐写术,弗朗索瓦?你用了一张你自己的照片,并将葡萄酒订单嵌入其中——我印象深刻!我们稍后再处理这个问题,弗朗索瓦。时间不多了,我们的客人们随时都会到。啊,但是他们已经到了。

欢迎,我的朋友们来到 Chez Marcel,世界上最好的 Linux 法式餐厅和世界上最伟大的酒窖的所在地。当然,目前,它可能只是世界上第二好的。看来我忠实的侍者放错了订单,不想告诉我。是的,弗朗索瓦,我知道你知道它在哪里。去酒窖把葡萄牙 2000 年杜罗河红葡萄酒拿来。这是一款很棒的红葡萄酒,我的朋友们,一款浓郁而有力的葡萄酒,带有美妙的深色水果风味和一丝神秘感。快点,弗朗索瓦!

在弗朗索瓦取酒的时候,让我告诉你他是如何做到不放错葡萄酒订单的。他使用了一个名为 Steghide 的程序,由 Stefan Hetzl 创建,将列表编码并加密到一张图像中,结果是一张他自己的照片(图 1)。

Cooking with Linux: Forgotten Security

图 1. 这张图片中的某个地方隐藏着一份大量的葡萄酒订单。

这个过程称为隐写术。使用这个过程,你可以将任何信息编码到另一条信息(或者在本例中,是一张图形图像)中。事实上,你可以创建一个完整的网站,其中充满了带有秘密信息的图像,而且没有人会知道。你可以在 Steghide 主页(参见在线资源)上获取 Steghide 的副本。很容易找到贡献的二进制文件。要从源代码构建,Steghide 需要 libmhash、libjpeg、zlib 和 libmcrypt 开发库;除此之外,它是一个简单的构建,你将其识别为一个提取和构建五步法

tar -xzvf steghide-0.5.1.tar.gz
cd steghide-0.5.1
./configure
make
su -c "make install"

为了隐藏葡萄酒更换订单,弗朗索瓦使用了以下命令将文档编码到他的照片中

steghide embed -cf francois.jpg -ef wine_order.txt

说到葡萄酒,弗朗索瓦回来了。如果您愿意,我的朋友,为我们的客人倒酒。无论如何,在运行命令后,您会被立即要求输入密码

Enter passphrase:
Re-Enter passphrase:
embedding "wine_order.txt" in "francois.jpg"... done

结果是一张图像,它看起来仍然像您在其中隐藏秘密信息之前一样,但其大小会发生变化。要从图像中恢复数据,您或您发送图像的人可以使用带有命令的 extract 参数

steghide extract -sf francois.jpg
Enter passphrase:

如果您成功输入了正确的信息,隐藏的文件将被保存到磁盘。这正是事情开始出错的地方。忘记密码后,就无法检索信息。在现实生活中,我们中的一些人有时会丢失钥匙。有些人经常丢失钥匙,这就是为什么一位有进取心的发明家想出了在钥匙链上安装蜂鸣器的想法。假设您没有丢失定位器,您可以按下按钮,您的钥匙就会发出高音调信号,告诉您它们滑落到哪个垫子后面了。

对于密码,也有类似的想法。其中最简单的方法是将密码写下来或保存在文本文件中。这不是一种特别安全的方法。然而,当我们被要求记住几十个,有时是数百个密码时,保留密码或密码短语列表的想法越来越有道理。如果我们只需要记住一个密码,可能会容易得多,这就是密码管理器发挥作用的地方。

我遇到的第一个是 Dennis Pries 的密码管理系统或 PMS。我喜欢这个,因为它可以在纯文本终端窗口中运行,这意味着您可以从任何地方通过 shell 登录访问它。您可以从 SourceForge(参见资源)获取该程序,那里提供源代码和 Debian 软件包。

要构建 PMS,您必须进行一种双重提取和构建五步法。首先,提取 tar 和 gzip 压缩包 (tar -xzvf pms-0.94.tar.gz)。现在,查看该源目录内部,您会找到一个 contrib 目录,您可以从中在该源存档上使用提取和构建五步法构建 cdk。一旦 cdk 安装完成,返回到 PMS 源目录,然后构建并安装它。

使用此密码管理器的命令是pms。当您第一次运行时,它会要求您输入主密码。这是您从这里开始需要记住的唯一密码或密码短语,但请务必记住。忘记主密钥,您将无法访问所有其他密码。然后,PMS 为您提供一个简单的菜单,您可以通过该菜单添加、删除或重命名主机。这些将是您需要登录的主机。首先添加一个主机(例如,www.somewhere.dom),然后添加一条注释(例如,主要生产系统)。您会发现自己回到了主菜单。从那里,选择用户功能。这是允许您添加或删除与您在上一步中添加的任何主机名关联的用户名的菜单。您还可以显示用户以显示您认为永远丢失的密码。

在我继续之前,我应该指出主机名和用户名可以是任何内容。对于主机名,我可以输入“学校储物柜”,对于用户名“组合”,对于密码,组合本身。虽然它旨在记录登录信息,但它在其他方面也非常好用(图 2)。

Cooking with Linux: Forgotten Security

图 2. PMS 不仅适用于密码。也存储您的储物柜组合。

我们经常忘记的另一件事是我们为访问的无数网站输入的各种密码。从在线银行到要求您拥有免费帐户才能阅读文章的报纸,我们随着时间推移积累的帐户数量惊人。然后,还有与我们的即时消息帐户、电子邮件帐户、FTP 站点等关联的密码。如果有一种方法可以在我们工作时透明地维护和存储所有这些信息,它可以简化事情。是否有集成到桌面的东西?

答案是肯定的。随着 KDE 3.2 和现在的 3.3 的发布,桌面用户发现他们内置了一个密码管理器。它是 George Staikos 的 KDE 钱包管理器,运行它的程序是 kwalletmanager。当您第一次启动该程序时,不会创建任何钱包。但是,您会看到一个小的钱包图标出现在您的系统托盘中。如果钱包管理器窗口尚未打开,请单击该图标,将出现一个空白框,看起来很像一个空的目录文件夹。单击菜单栏上的设置,然后选择配置钱包。

将出现一个新的对话框,其中大多数项目呈灰色显示。单击标有启用 KDE 钱包子系统的复选框。现在您可以使用其他几个选项(图 3)。

Cooking with Linux: Forgotten Security

图 3. 配置 KDE 钱包管理器以处理您的密码

查看中间部分,标记为自动钱包选择。系统会要求您选择要用作默认钱包的钱包。在它的正下方,您可以选择另一个用于本地密码的钱包(稍后会详细介绍)。如果这是您第一次运行 KDE 钱包,那么此时您不太可能拥有现有钱包;单击新建并在提示时输入此钱包的名称。您可以像我一样简单地选择使用您的姓名。输入名称并单击确定后,KDE 钱包管理器向导将出现,为您提供基本或高级设置,建议选择基本设置。在高级设置中,还有更多信息屏幕,您可以在此时选择为本地密码创建单独的钱包。我选择了基本设置并使用了一个钱包。

无论您选择哪种方式,向导都会在某个时候要求您输入主密码以打开钱包。这是超级密码,您不想忘记的密码——打开所有其他密码之门的密码。仔细选择,并确保选中标有“是的,我希望使用 KDE 钱包来存储我的个人信息”的复选框。

完成向导后,您几乎就完成了。一个新的对话框弹出,告诉您应用程序(向导)已请求创建一个新钱包。您现在必须使用该钱包的密码确认此请求。请注意此对话框。每当应用程序想要打开钱包以检查密码时,您在一个 KDE 会话中会看到类似的情况。在您注销之前,钱包现在保持打开状态。事实上,访问一个要求您提供用户名和密码的网站(例如您的银行页面)。在您输入信息并单击提交或回车(取决于表格)后,KDE 钱包管理器会弹出一个新对话框,告诉您应用程序(在本例中为 Konqueror)已请求打开默认钱包(您刚刚创建的)。请看图 4,了解我的意思。

Cooking with Linux: Forgotten Security

图 4. 必须输入您的主密码才能打开钱包。

输入您的主密码并单击继续。您将收到最后的警告,告诉您此加密信息即将被保存,并要求您确认。单击是。现在,向下看您的系统托盘,您会看到图标显示一个稍微打开的钱包,而以前它是关闭的。

这个特定系统的优点是,下次您访问网站时,所有信息都会神奇地为您输入。对于任何要求您输入密码的 KDE 应用程序(例如您的即时通讯工具)来说,情况都是如此。

但是,有一个问题,而且是一个大问题。正如我所提到的,您每个 KDE 会话只需输入一次主密码,这使得事情变得容易。但请注意:既然您的系统会自动为您填写密码,那么保护您的桌面就变得重要了。在您离开之前,请务必锁定您的桌面。另一种方法是返回 KDE 钱包配置对话框,并查看一些关闭钱包选项。您可以将其设置为在定义的时间段后自动关闭,例如当屏幕保护程序启动时(当您通常会离开时)或当最后一个使用它的应用程序关闭时。这样做,您就少了一件要记住的事情。

看看墙上的钟,我的朋友们,看来又到了打烊时间了。正如您所看到的,有很多替代方案可以存储密码信息,这样您就不必记住几十个或数百个神秘的字母和数字组合。也许如果我们能说服弗朗索瓦将来使用这样的工具,就不会再有丢失的订单了。与此同时,我相信我们可以说服他再为我们的客人斟满一杯。不用担心葡萄酒供应。我个人将确保在我们下次见面时酒窖已满。直到下次,我的朋友们,让我们为彼此的健康干杯。祝您健康, Bon appétit!

本文的资源: /article/7860

Marcel Gagné (mggagne@salmar.com) 居住在安大略省密西沙加市。他是 Moving to the Linux Business Desktop(ISBN 0-131-42192-1)的作者,这是他在 Addison-Wesley 出版的第三本书。在现实生活中,他是 Salmar Consulting, Inc. 的总裁,这是一家系统集成和网络咨询公司。他也是一名飞行员,撰写科幻小说和奇幻小说,并能折出很棒的折纸霸王龙。

加载 Disqus 评论