标签 PGP 下的文章

在本系列文章中,我们将深度探讨如何使用 PGP 以及为工作于自由软件项目的开发者提供实用指南。在前一篇文章中,我们介绍了基本工具和概念。在本文中,我们将展示如何生成和保护你的 PGP 主密钥。

清单

  1. 生成一个 4096 位的 RSA 主密钥 (必要)
  2. 使用 paperkey 备份你的 RSA 主密钥 (必要)
  3. 添加所有相关的身份 (必要)

考虑事项

理解“主”(认证)密钥

在本节和下一节中,我们将讨论“主密钥”和“子密钥”。理解以下内容很重要:

  1. 在“主密钥”和“子密钥”之间没有技术上的区别。
  2. 在创建时,我们赋予每个密钥特定的能力来分配功能限制。
  3. 一个 PGP 密钥有四项能力

    • [S] 密钥可以用于签名
    • [E] 密钥可以用于加密
    • [A] 密钥可以用于身份认证
    • [C] 密钥可以用于认证其他密钥
  4. 一个密钥可能有多种能力

带有 [C] (认证)能力的密钥被认为是“主”密钥,因为它是唯一可以用来表明与其他密钥关系的密钥。只有 [C] 密钥可以被用于:

  • 添加或撤销其他密钥(子密钥)的 S/E/A 能力
  • 添加、更改或撤销密钥关联的身份(uid)
  • 添加或更改本身或其他子密钥的到期时间
  • 为了网络信任目的为其它密钥签名

在自由软件的世界里,[C] 密钥就是你的数字身份。一旦你创建该密钥,你应该格外小心地保护它并且防止它落入坏人的手中。

在你创建主密钥前

在你创建的你的主密钥前,你需要选择你的主要身份和主密码。

主要身份

身份使用邮件中发件人一栏相同格式的字符串:

Alice Engineer <[email protected]>

你可以在任何时候创建新的身份,取消旧的,并且更改你的“主要”身份。由于主要身份在所有 GnuPG 操作中都展示,你应该选择正式的和最有可能用于 PGP 保护通信的名字和邮件地址,比如你的工作地址或者用于在项目 提交 commit 时签名的地址。

密码

密码 passphrase 专用于私钥存储在磁盘上时使用对称加密算法对其进行加密。如果你的 .gnupg 目录的内容被泄露,那么一个好的密码就是小偷能够在线假冒你的最后一道防线,这就是为什么设置一个好的密码很重要的原因。

一个强密码最好使用丰富或混合的词典的 3-4 个词,而不引用自流行来源(歌曲、书籍、口号)。由于你将相当频繁地使用该密码,所以它应当易于输入和记忆。

算法和密钥强度

尽管现在 GnuPG 已经支持椭圆曲线加密一段时间了,但我们仍坚持使用 RSA 密钥,至少较长一段时间会这样。虽然现在就可以开始使用 ED25519 密钥,但你可能会碰到无法正确处理它们的工具和硬件设备。

在后续的指南中我们说 2048 位的密钥对 RSA 公钥加密的生命周期已经足够,你可能也会好奇主密钥为什么是 4096 位。 原因很大程度是由于社会因素而非技术上的:主密钥在密钥链上是最显眼的,如果你的主密钥位数比一些和你交互的开发者的少,他们肯定会鄙视你。

生成主密钥

为了生成你的主密钥,请使用以下命令,并且将 “Alice Engineer” 替换为正确值。

$ gpg --quick-generate-key 'Alice Engineer <[email protected]>' rsa4096 cert

这将弹出一个要求输入密码的对话框。然后,你可能需要移动鼠标或随便按一些键才能生成足够的熵,直到该命令完成。

查看命令输出,它就像这样:

pub rsa4096 2017-12-06 [C] [expires: 2019-12-06]
 111122223333444455556666AAAABBBBCCCCDDDD
uid Alice Engineer <[email protected]>

注意第二行的长字符串 —— 它是你新生成的密钥的完整指纹。密钥 ID(Key ID)可以用以下三种不同形式表达:

  • 指纹 Fingerprint ,一个完整的 40 个字符的密钥标识符
  • 长密钥 ID Long ,指纹的最后 16 个字符(AAAABBBBCCCCDDDD)
  • 短密钥 ID Short ,指纹的最后 8 个字符(CCCCDDDD)

你应该避免使用 8 个字符的短密钥 ID,因为它们不足够唯一。

这里,我建议你打开一个文本编辑器,复制你新密钥的指纹并粘贴。你需要在接下来几步中用到它,所以将它放在旁边会很方便。

备份你的主密钥

出于灾后恢复的目的 —— 同时特别的如果你试图使用 Web of Trust 并且收集来自其他项目开发者的密钥签名 —— 你应该创建你的私钥的硬拷贝备份。万一所有其它的备份机制都失败了,这应当是最后的补救措施。

创建一个你的私钥的可打印的硬拷贝的最好方法是使用为此而写的软件 paperkeypaperkey 在所有 Linux 发行版上可用,在 Mac 上也可以通过 brew 安装 paperkey

运行以下命令,用你密钥的完整指纹替换 [fpr]

$ gpg --export-secret-key [fpr] | paperkey -o /tmp/key-backup.txt

输出将采用易于 OCR 或手动输入的格式,以防如果你需要恢复它的话。打印出该文件,然后拿支笔,并在纸的边缘写下密钥的密码。这是必要的一步,因为密钥输出仍然使用密码加密,并且如果你更改了密钥的密码,你不会记得第一次创建的密钥是什么 —— 我保证。

将打印结果和手写密码放入信封中,并存放在一个安全且保护好的地方,最好远离你家,例如银行保险库。

打印机注意事项 打印机连接到计算机的并行端口的时代已经过去了。现在他们拥有完整的操作系统,硬盘驱动器和云集成。由于我们发送给打印机的关键内容将使用密码进行加密,因此这是一项相当安全的操作,但请使用您最好的偏执判断。

添加相关身份

如果你有多个相关的邮件地址(个人、工作、开源项目等),你应该将其添加到主密钥中。你不需要为任何你不希望用于 PGP 的地址(例如,可能不是你的校友地址)这样做。

该命令是(用你完整的密钥指纹替换 [fpr]):

$ gpg --quick-add-uid [fpr] 'Alice Engineer <[email protected]>'

你可以查看你已经使用的 UID:

$ gpg --list-key [fpr] | grep ^uid

选择主 UID

GnuPG 将会把你最近添加的 UID 作为你的主 UID,如果这与你想的不同,你应该改回来:

$ gpg --quick-set-primary-uid [fpr] 'Alice Engineer <[email protected]>'

下次,我们将介绍如何生成 PGP 子密钥,它是你实际用于日常工作的密钥。

通过 Linux 基金会和 edX 的免费“Introduction to Linux” 课程了解关于 Linux 的更多信息。


via: https://www.linux.com/blog/learn/PGP/2018/2/protecting-code-integrity-pgp-part-2-generating-and-protecting-your-master-pgp-key

作者:KONSTANTIN RYABITSEV 译者:kimii 校对:wxy

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

在本系列文章中,我们将深度探讨如何使用 PGP 确保软件完整性。这些文章将为工作于自由软件项目的开发者提供实用指南,并且将包含以下主题:

  1. PGP 基础和最佳实践
  2. 如何用 Git 使用 PGP
  3. 如何保护你的开发者账户

我们使用与“Freedom”含义相同的词项 “Free”,但这个系列中列出的指南也可以被任何其它类型的依赖于分布式团队开发者贡献的软件中。如果你编写进入公共源仓库的代码,你可以从了解和遵循这篇指南中受益。

结构

每节分为两个部分:

  • 适用于你项目需求的清单
  • 形式自由的考虑事项的列表,解释这些决定取决于什么,并伴随着配置指令

清单优先级

每个清单中各项包含着优先级,用来帮助指导你的决定:

  • (必要)该项一定要排在考虑事项列表的前面。如果没有这样做,它们将给提交到开源项目中的代码带来高风险。
  • (推荐)包含该项将提升整体安全性,但会影响你与工作环境的交互方式,并且可能需要学习新的习惯或者放弃旧的习惯。

记住,这些只是指导。如果你感到这些优先级不能反映你项目提交的安全,你应该根据自己的需要调整它们。

PGP 基本概念和工具

清单

  1. 理解 PGP 在自由软件开发中的作用 (必要)
  2. 理解 公钥密码学 Public Key Cryptography 的基础知识 (必要)
  3. 理解 PGP 加密和签名的不同 (必要)
  4. 理解 PGP 密钥身份 key identities (必要)
  5. 理解 PGP 密钥有效性 key validity (必要)
  6. 安装 GnuPG 工具(版本 2.x) (必要)

考虑事项

自由软件社区长期依赖于 PGP 确保它生产的软件产品的真实性和完整性。你可能没有注意到,但无论你是一个 Linux 、Mac 和 Windowas 用户,你都曾依赖 PGP 来确保你电脑环境的完整性:

  • Linux 发行版依赖 PGP 来确保当二进制或者原代码包从被生产出来到被终端用户安装之间没被更改过
  • 自由软件项目通常会伴随发行软件的存档提供分离的 PGP 签名,使得下游的项目可以在把下载的版本集成到自己的分布式下载之前,验证下载版本的完整性。
  • 自由软件项目通常依赖代码本身的 PGP 签名来跟踪起源,并验证项目开发者提交的代码的完整性

这与工作于专有平台的程序员使用的开发者证书或代码签名机制非常相似。实际上,这两种技术背后的核心概念非常相似 —— 尽管它们在实现的技术层面和它们委托信任方式的大多不同。PGP 不依赖于集中式认证机构,而是让每个用户为每个证书赋予自己的信任。

我们的目标是使你的项目通过使用 PGP 来进行代码起源和完整性追踪,遵循最佳实践并遵守基本的安全预防措施。

极其基本的 PGP 操作概括

你不需要知道 PGP 如何工作的具体细节 —— 理解核心概念足以成功地达到我们的目的。PGP 依赖于公钥密码学来将明文转换为密文。这个过程需要两种不同的密钥:

  • 公钥,被所有人知道
  • 私钥,只被拥有者知道
加密

对加密来说,PGP 使用拥有者的公钥创造一条只能通过拥有者私钥解密的消息:

  1. 发送者生成一个随机的加密密钥(“会话密钥”)
  2. 发送者使用该会话密钥(使用对称算法)加密内容
  3. 发送者使用接收者的 PGP 公钥加密会话密钥
  4. 发送者向接收者发送加密后的内容和加密后的会话密钥

要解密:

  1. 接收者使用他们的 PGP 私钥解密会话密钥
  2. 接收者使用会话密钥解密消息的内容
签名

为了创建签名,PGP 私钥或公钥会以相反的方式使用:

  1. 签名者生成内容的校检和哈希
  2. 签名者使用自己的 PGP 私钥来加密该校检和
  3. 签名者伴随内容提供加密后的校检和

要验证签名:

  1. 验证者生成自己的内容校检和哈希
  2. 验证者使用签名者的 PGP 公钥来解密提供的校检和
  3. 如果校检和匹配,就验证了内容的完整性
结合使用

通常,加密消息也被发送者自己的 PGP 密钥签名。无论何时使用加密消息,这应当是默认的,因为没有认证的加密没有很大意义(除非你是一个告密者或秘密代理并且需要可行的可否认性)

理解密钥身份

每个 PGP 密钥必须有一个或多个与之关联的身份。通常,“ 身份 Identity ”指的是以下格式中的人物全名和邮件地址:

Alice Engineer <[email protected]>

有时也会在括号中包含说明,来告诉终端用户关于该特定密钥的更多信息:

Bob Designer (obsolete 1024-bit key) <[email protected]>

由于人们可以和多个职业和个人实体相关联,因此在同一密钥上可以有多个身份:

Alice Engineer <[email protected]>
Alice Engineer <[email protected]>
Alice Engineer <[email protected]>

当使用多个身份时,其中之一将被标记为“ primary identity 主要身份 ”来让检索更简单。

理解密钥有效性

为了能使用其他人的公钥来加密或验证,你需要确保它确实属于正确的人(Alice)而不属于冒牌的(Eve)。在 PGP 中,这被称为“密钥有效性”:

  • 有效性: 完全 full -- 意味着非常确认该密钥属于 Alice
  • 有效性: 临界 marginal -- 意味着大致确认该密钥属于 Alice
  • 有效性: 未知 unknown -- 意味着不确认该密钥是否属于 Alice

Web of Trust (WOT) 与 Trust on First Use (TOFU)

PGP 使用了一种信任委托机制叫“Web of Trust”。它的核心是尝试替代 HTTPS/TLS 世界中对集中式认证机构的需求。PGP 把这个责任交给了每个用户,而不是各种软件开发商来决定谁应该是你的可信认证实体。

不幸的是,很少有人理解 Web of Trust 的是如何工作的,能使用它的人更少。它仍然是 OpenPGP 规范的一个重要方面,但 GnuPG 的近期版本(2.2 及以上)已经实现了一种替代机制叫“Trust on First Use”(TOFU)。

你可以把 TOFU 当作类似 SSH 的信任方式。使用 SSH,当你第一次连接到远程系统,它的密钥指纹会被记录和保存。如果将来密钥改变,SSH 客户端将会提醒你并拒绝连接,迫使你决定是否信任已改变的的密钥。

同样,当你第一次导入某人的 PGP 密钥,它被假定可信。如果在将来的任何时候,GnuPG 碰巧发现另一同样身份的密钥,过去导入的密钥和新密钥都将被标记为无效,并且你需要手动指出保留哪个。

安装 OpenPGP 软件

首先,理解 PGP、OpenPGP、GnuPG 和 gpg 之间的不同很重要:

  • PGP (“Pretty Good Privacy”) 是最初商业软件的名字
  • OpenPGP 是与最初 PGP 工具兼容的 IETF 标准
  • GnuPG (“Gnu Privacy Guard”)是实现了 OpenPGP 标准的自由软件
  • GnuPG 的命令行工具称为 “gpg”

今天,“PGP”这个词几乎被普遍用来表示开放的 OpenPGP 标准,而不是最初的商业软件,因此“PGP”和“OpenPGP”是可以互换的。“GnuPG”和“pgp”这两个词应该仅在提及工具时使用,而不用于它们产生的输出或它们实现的 OpenPGP 功能。举例:

  • PGP(而非 GnuPG 或 GPG)密钥
  • PGP(而非 GnuPG 或 GPG)签名
  • PGP(而非 GnuPG 或 GPG)密钥服务器

理解这一点应该可以保护你免受来自你遇到的其他 PGP 用户“实际上”不可避免的迂腐。

安装 GnuPG

如果你正在使用 Linux,你应该已经安装过了 GnuPG。在 Mac 上,你应该安装 GPG-Suite,或者使用 brew 安装 gnupg2。在 Windows 上,你应该安装 GPG4Win,并且为了可以工作,你可能需要调整指南中的部分命令,除非你设置了类似 Unix 的环境。对其他平台来说,你需要自行查找正确的地址来下载和安装 GnuPG。

GnuPG 1 vs. 2

GnuPG v.1 和 GnuPG v.2 都实现了同样的标准,但它们提供不兼容的库和命令行工具,所以许多发行版都带有了旧的版本 1 和最新的版本 2。你需要确保你总是使用 GnuPG v.2。

首先,运行:

$ gpg --version | head -n1

如果你看到 gpg (GnuPG) 1.4.x,说明你正使用 GnuPG v.1。尝试下 gpg2 命令:

$ gpg2 --version | head -n1

如果你看到 gpg (GnuPG) 2.x.x,说明你可以继续了。这篇指南将假设你使用 GnuPG 2.2 版本(或更新)。如果你正使用 GnuPG 的 2.0 版本,本指南中某些命令可能无效,你应该考虑安装 GnuPG 最新的 2.2 版本

确保你总是使用 GnuPG v.2

如果你 gpggpg2 命令都有,你应该确保总是使用 GnuPG v.2,而不是旧的版本。你可以通过设置别名来确保这一点:

$ alias gpg=gpg2

你可以把它放在你的 .bashrc 中,以确保它在你使用 gpg 命令时总是被加载。

在本系列的第 2 部分中,我们将介绍生成和保护你的 PGP 主密钥的基本步骤。

通过 Linux 基金会和 edX 的免费“Introduction to Linux” 课程了解关于 Linux 的更多信息。


via: https://www.linux.com/blog/learn/2018/2/protecting-code-integrity-pgp-part-1-basic-pgp-concepts-and-tools

作者:Konstantin Ryabitsev 译者:kimii 校对:wxy

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

 title=

学习使用 Seahorse GUI 工具去管理 PGP 和 SSH 密钥。

安全即内心的平静。毕竟,安全是许多用户迁移到 Linux 的最大理由。但是为什么要止步于仅仅采用该平台,你还可以采用多种方法和技术去确保你的桌面或者服务器系统的安全。

其中一项技术涉及到密钥 —— 用在 PGP 和 SSH 中。PGP 密钥允许你去加密和解密电子邮件和文件,而 SSH 密钥允许你使用一个额外的安全层去登入服务器。

当然,你可以通过命令行接口(CLI)来管理这些密钥,但是,如果你使用一个华丽的 GUI 桌面环境呢?经验丰富的 Linux 用户可能对于脱离命令行来工作感到很不适应,但是,并不是所有用户都具备与他们相同的技术和水平,因此,使用 GUI 吧!

在本文中,我将带你探索如何使用 Seahorse GUI 工具来管理 PGP 和 SSH 密钥。Seahorse 有非常强大的功能,它可以:

  • 加密/解密/签名文件和文本。
  • 管理你的密钥和密钥对。
  • 同步你的密钥和密钥对到远程密钥服务器。
  • 签名和发布密钥。
  • 缓存你的密码。
  • 备份密钥和密钥对。
  • 在任何一个 GDK 支持的格式中添加一个图像作为一个 OpenPGP photo ID。
  • 创建、配置、和缓存 SSH 密钥。

对于那些不了解 Seahorse 的人来说,它是一个管理 GNOME 钥匙环中的加密密钥和密码的 GNOME 应用程序。不用担心,Seahorse 可以安装在许多的桌面环境上。并且由于 Seahorse 可以在标准的仓库中找到,你可以打开你的桌面应用商店(比如,Ubuntu Software 或者 Elementary OS AppCenter)去安装它。你可以在你的发行版的应用商店中点击去安装它。安装完成后,你就可以去使用这个很方便的工具了。

我们开始去使用它吧。

PGP 密钥

我们需要做的第一件事情就是生成一个新的 PGP 密钥。正如前面所述,PGP 密钥可以用于加密电子邮件(通过一些工具,像 ThunderbirdEnigmail 或者使用 Evolution 内置的加密功能)。PGP 密钥也可以用于加密文件。任何人都可以使用你的公钥加密电子邮件和文件发给你(LCTT 译注:原文此处“加密”误作“解密”)。没有 PGP 密钥是做不到的。

使用 Seahorse 创建一个新的 PGP 密钥对是非常简单的。以下是操作步骤:

  1. 打开 Seahorse 应用程序
  2. 在主面板的左上角点击 “+” 按钮
  3. 选择 “ PGP 密钥 PGP Key ”(如图 1 )
  4. 点击 “ 继续 Continue
  5. 当提示时,输入完整的名字和电子邮件地址
  6. 点击 “ 创建 Create

 title=

图 1:使用 Seahorse 创建一个 PGP 密钥。

在创建你的 PGP 密钥期间,你可以点击 “ 高级密钥选项 Advanced key options ” 展开选项部分,在那里你可以为密钥添加注释信息、加密类型、密钥长度、以及过期时间(如图 2)。

 title=

图 2:PGP 密钥高级选项

增加注释部分可以很方便帮你记住密钥的用途(或者其它的信息)。

要使用你创建的 PGP,可在密钥列表中双击它。在结果窗口中,点击 “ 名字 Names ” 和 “ 签名 Signatures ” 选项卡。在这个窗口中,你可以签名你的密钥(表示你信任这个密钥)。点击 “ 签名 Sign ” 按钮然后(在结果窗口中)指出 “ 你是如何仔细的检查这个密钥的? how carefully you’ve checked this key? ” 和 “ 其他人将如何看到该签名 how others will see the signature ”(如图 3)。

 title=

图 3:签名一个密钥表示信任级别。

当你处理其它人的密钥时,密钥签名是非常重要的,因为一个签名的密钥将确保你的系统(和你)做了这项签名工作并且完全信任这个重要的密钥。

谈到导入的密钥,Seahorse 可以允许你很容易地去导入其他人的公钥文件(这个文件以 .asc 为后缀)。你的系统上有其他人的公钥,意味着你可以加密发送给他们的电子邮件和文件(LCTT 译注:原文将“加密”误作“解密”)。然而,Seahorse 在很长的一段时间内都存在一个 已知的 bug。这个问题是,Seahorse 导入使用 GPG 版本 1,但是显示的是 GPG 版本 2。这意味着,在这个存在了很长时间的 bug 被修复之前,导入公钥总是失败的。如果你想导入一个公钥文件到 Seahorse 中,你只能去使用命令行。因此,如果有人发送给你一个文件 olivia.asc,你想去导入到 Seahorse 中使用它,你将只能运行命令 gpg2 --import olivia.asc。那个密钥将出现在 GnuPG 密钥列表中。你可以打开该密钥,点击 “ 我信任签名 I trust signatures ” 按钮,然后在问题 “ 你是如何仔细地检查该密钥的? how carefully you’ve checked the key ” 中,点击 “ 签名这个密钥 Sign this key ” 按钮去签名。

SSH 密钥

现在我们来谈谈我认为 Seahorse 中最重要的一个方面 — SSH 密钥。Seahorse 不仅可以很容易地生成一个 SSH 密钥,而且它也可以很容易地将生成的密钥发送到服务器上,因此,你可以享受到 SSH 密钥验证的好处。下面是如何生成一个新的密钥以及如何导出它到一个远程服务器上。

  1. 打开 Seahorse 应用程序
  2. 点击 “+” 按钮
  3. 选择 “Secure Shell Key”
  4. 点击 “Continue”
  5. 提供一个密钥描述信息
  6. 点击 “Set Up” 去创建密钥
  7. 输入密钥的验证密钥
  8. 点击 OK
  9. 输入远程服务器地址和服务器上的登录名(如图 4)
  10. 输入远程用户的密码
  11. 点击 OK

 title=

图 4:上传一个 SSH 密钥到远程服务器。

新密钥将上传到远程服务器上以备使用。如果你的服务器已经设置为使用 SSH 密钥验证,那就一切就绪了。

需要注意的是,在创建一个 SSH 密钥期间,你可以点击 “ 高级密钥选项 Advanced key options ”去展开它,配置加密类型和密钥长度(如图 5)。

 title=

图 5:高级 SSH 密钥选项。

Linux 新手必备

任何 Linux 新手用户都可以很快熟悉使用 Seahorse。即便是它有缺陷,Seahorse 仍然是为你准备的一个极其方便的工具。有时候,你可能希望(或者需要)去加密或者解密一个电子邮件/文件,或者为使用 SSH 验证来管理 SSH 密钥。如果你想去这样做而不希望使用命令行,那么,Seahorse 将是非常适合你的工具。

通过来自 Linux 基金会和 edX 的 "Linux 入门" 免费课程学习更多 Linux 的知识。


via: https://www.linux.com/learn/intro-to-linux/2018/2/how-manage-pgp-and-ssh-keys-seahorse

作者:JACK WALLEN 译者:qhwdw 校对:wxy

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

EncryptPad 是一个自由开源软件,它通过简单方便的图形界面和命令行接口来查看和修改加密的文本,它使用 OpenPGP RFC 4880 文件格式。通过 EncryptPad,你可以很容易的加密或者解密文件。你能够像保存密码、信用卡信息等私人信息,并使用密码或者密钥文件来访问。

特性

  • 支持 windows、Linux 和 Max OS。
  • 可定制的密码生成器,可生成健壮的密码。
  • 随机的密钥文件和密码生成器。
  • 支持 GPG 和 EPD 文件格式。
  • 能够通过 CURL 自动从远程远程仓库下载密钥。
  • 密钥文件的路径能够存储在加密的文件中。如果这样做的话,你不需要每次打开文件都指定密钥文件。
  • 提供只读模式来防止文件被修改。
  • 可加密二进制文件,例如图片、视频、归档等。

在这份教程中,我们将学习如何在 Ubuntu 16.04 中安装和使用 EncryptPad。

环境要求

  • 在系统上安装了 Ubuntu 16.04 桌面版本。
  • 在系统上有 sudo 的权限的普通用户。

安装 EncryptPad

在默认情况下,EncryPad 在 Ubuntu 16.04 的默认仓库是不存在的。你需要安装一个额外的仓库。你能够通过下面的命令来添加它 :

sudo apt-add-repository ppa:nilaimogard/webupd8

下一步,用下面的命令来更新仓库:

sudo apt-get update -y

最后一步,通过下面命令安装 EncryptPad:

sudo apt-get install encryptpad encryptcli -y

当 EncryptPad 安装完成后,你可以在 Ubuntu 的 Dash 上找到它。

使用 EncryptPad 生成密钥和密码

现在,在 Ubunntu Dash 上输入 encryptpad,你能够在你的屏幕上看到下面的图片 :

Ubuntu DeskTop

下一步,点击 EncryptPad 的图标。你能够看到 EncryptPad 的界面,它是一个简单的文本编辑器,带有顶部菜单栏。

EncryptPad screen

首先,你需要生成一个密钥文件和密码用于加密/解密任务。点击顶部菜单栏中的 “Encryption->Generate Key”,你会看见下面的界面:

Generate key

选择文件保存的路径,点击 “OK” 按钮,你将看到下面的界面:

select path

输入密钥文件的密码,点击 “OK” 按钮 ,你将看到下面的界面:

last step

点击 “yes” 按钮来完成该过程。

加密和解密文件

现在,密钥文件和密码都已经生成了。可以执行加密和解密操作了。在这个文件编辑器中打开一个文件文件,点击 “encryption” 图标 ,你会看见下面的界面:

Encry operation

提供需要加密的文件和指定输出的文件,提供密码和前面产生的密钥文件。点击 “Start” 按钮来开始加密的进程。当文件被成功的加密,会出现下面的界面:

Success Encrypt

文件已经被该密码和密钥文件加密了。

如果你想解密被加密后的文件,打开 EncryptPad ,点击 “File Encryption” ,选择 “Decryption” 操作,提供加密文件的位置和你要保存输出的解密文件的位置,然后提供密钥文件地址,点击 “Start” 按钮,它将要求你输入密码,输入你先前加密使用的密码,点击 “OK” 按钮开始解密过程。当该过程成功完成,你会看到 “File has been decrypted successfully” 的消息 。

decrypt []

注意:

如果你遗忘了你的密码或者丢失了密钥文件,就没有其他的方法可以打开你的加密信息了。对于 EncrypePad 所支持的格式是没有后门的。


via: https://www.howtoforge.com/tutorial/how-to-install-and-use-encryptpad-on-ubuntu-1604/

作者:Hitesh Jethva 译者:singledo 校对:wxy

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

如果你一直在考虑如何加密电子邮件,那么在众多的邮件服务和邮件客户端中挑来挑去一定是件头痛的事情.可以考虑两种加密方法:SSL或TLS加密会保护发送到邮件服务器的登录名和密码.Gunpg是一款标准的、强大的Linux加密工具,可以加密和认证消息.如果你可以管理自己的GPG加密,并不考虑第三方工具,那它就够了,其它的我们将在稍后讨论.

即便加密了消息,你仍然会暴露在流量分析中,因为消息头部必须是明文形式.所以需要另一款比如Tor network来隐藏你在互联网上的足迹.我们会看看各种邮件服务和客户端,以及其中的利弊.

忘掉Web邮件

如果你使用过GMail, Yahoo,Hotmail或者其它Web邮件提供商的邮件服务,那就忘掉它们吧.你在Web浏览器里输入的任何信息都会暴露在JavaScript攻击中,而且无论服务提供商提供什么保障都是过眼云烟(译者注:此说法靠谱否?).GMail,Yahoo和Hotmail均提供SSL/TLS加密来防止消息被窃听.但是它们不会提供任何保护来阻碍它们自己的数据挖掘,因此并不会提供端到端的加密.Yahoo和Google都声称将在明年推出端到端的加密.对此我持怀疑态度,因为如果一旦它们的核心业务数据挖掘受到干预,它们就什么都干不了了.

市面上也有各式各样的声称可以为所有类型的电子邮件都能提供安全加密的第三方邮件加密服务,比如VirtruSafeMess.对此我依旧表示怀疑,因为无论是谁,只要持有加密秘钥就可以访问你的消息,所以你还是要依赖于对他们的信任而不是技术.

对等消息可以避免许多使用集中化服务中的缺陷.RetroShareBitmessage是两种流行的范例.我不知道它们是否如实所述,但这么说肯定有其可取之处.

那Anddroid和iOS又如何呢?假设大部分的Android和iOS应用都没有权限获取你的消息的话,那就是最安全的.不要照搬我说的 -- 在应用将要安装到你的设备上时麻烦读读相关的服务条款并检查所要求的权限.即便在初次安装时它们的条款是可接受的,也记得单方面的条款改变是行业的标准,所以做最坏的打算是最安全的.

零知识(Zero Knowledge)

Proton Mail是一款全新的邮件服务,声称采用零知识就可以实现消息加密.认证和消息加密分为两个单独的步骤,Proton遵照Swiss隐私条款,它们不会通过日志记录用户的活动.零知识加密提供真正的安全.这代表只有你拥有你的加密秘钥,如果你丢了它们,你的消息就无法恢复了.

也有许多加密电子邮件服务声称可以保护你的隐私.认真阅读细则,查看红色标注的地方,比如受限的用户数据采集,与好友分享,与执法部门的合作等.这些条款暗示它们会收集和共享用户数据,拥有权限获取你的加密秘钥,并读取你的消息.

Linux邮件客户端

一款独立的开源邮件客户端,比如, Mutt, Claws, Evolution, Sylpheed和Alpine,可建立你自己控制的GnuPG秘钥,给你大部分的保护.(建立更安全的电子邮件和Web浏览的最容易的方式是运行TAILS live的Linux发行版.详情查看通过 Tor、TAILS 和 Debian 在网上保护你自己。)

无论你使用的是TAILS还是一款标准Linux发行版,管理GnuPG的方法是相同的,所以下面来学习如何使用GnuPG加密消息.

使用GnuPG

首先,熟悉一下相关术语。OpenPGP是一种开放的电子邮件加密和认证协议,基于菲利普·齐默曼的Pretty Good Privacy (PGP)。GNU Privacy Guard (GnuPG or GPG)是OpenPGP的GPL实现。GnuPG使用对称公钥加密算法,也就是说会生成一对密钥:一个任何人都可以用来加密发送给你的消息的公钥和一个只有你自己拥有用来解密消息的的私钥。GnuPG执行两个分开的函数:数字化签名消息以证明消息来自你和加密消息。任何人都可以读到你的数字签名消息,但只有那些与你交换密钥的人才可以读取加密消息。切记千万不要与他人分享你的密钥!只能分享公钥。

Seahorse是GnuPG对应的GNOME图形化前端,KGpg是KDE图形化的GnuPG工具。

Kgpg provides a nice GUI for creating and managing your encryption keys.

Kgpg为了创建了管理加密秘钥提供了一个很好的GUI界面.

现在我们执行生成和管理GunPG密钥的基本步骤。这个命令生成一个新的密钥:

$ gpg --gen-key

这个过程有许多步骤;对于大部分人来说,只需要回答所有的问题,遵循默认设置就好。当你生成你的密钥时,记下来并将其保存在一个安全的地方,因为如果你丢掉了它,你就不能解密任何消息了。任何关于不要写下密码的建议都是错误的。我们中的大部分人要记住许多登录名和密码,包括那些我们几乎从来不会用到的,所以全部记住它们是不现实的。你知道当人们不写下他们的密码时会发生什么吗?他们会选择生成简单的密码并不断重复使用。你存储在电脑里的任何东西都潜在地会被攻击窃取;一个保存在上锁的柜子里的小本是无法通过渗透获取的,除了物理的入侵,当然入侵者要知道如何去寻找它。

我必须叮嘱你们去弄清楚如何使用新密钥去配置邮件客户端,因为每一个都不同。你可以按照如下操作列出你的密钥:

$ gpg --list-keys
/home/carla/.gnupg/pubring.gpg
------------------------------
pub   2048R/587DD0F5 2014-08-13
uid                  Carla Schroder (my gpg key) 
sub   2048R/AE05E1E4 2014-08-13

这能快速地获知像密钥的位置、名称(也就是UID)等必要信息。假设你想要把公钥上传到密钥服务器,可以参考实例操作:

$ gpg --send-keys 'Carla Schroder' --keyserver http://example.com

当你生成了一个新的密钥要上传到公钥服务器,你也应该生成一个撤销证书。不要推迟到以后做———当你生成新密钥时就生成它。你可以给它取任意的名称,比如使用一个像mycodeproject.asc的描述性名称来代替revoke.asc:

$ gpg --output revoke.asc --gen-revoke 'Carla Schroder'

如果你的密钥变得不可靠了,你可以通过向keyring导入撤销证书来撤销它:

$ gpg --import ~/.gnupg/revoke.asc

然后生成并上传一个新的密钥来取代它。当它们更新到密钥数据库时,所有使用旧密钥的用户都会被通知。

你必须像保护私钥一样保护撤销证书。将它拷贝到CD或USB存储器中,并加锁,然后从电脑中删除。这是明文密钥,所以你甚至可以将它打印出来。

如果你需要一份复制粘贴的密钥,比如在允许将密钥粘贴到网页表格中的公用keyring中,或者是想将公钥发布到个人站点上,那么你必须生成一份公钥的ASCII-armored版本:

$ gpg --output carla-pubkey.asc --export -a 'Carla Schroder'

这会生成可见的明文公钥,就像下面这个小例子:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQENBFPrn4gBCADeEXKdrDOV3AFXL7QQQ+i61rMOZKwFTxlJlNbAVczpawkWRC3l
IrWeeJiy2VyoMQ2ZXpBLDwGEjVQ5H7/UyjUsP8h2ufIJt01NO1pQJMwaOMcS5yTS
[...]
I+LNrbP23HEvgAdNSBWqa8MaZGUWBietQP7JsKjmE+ukalm8jY8mdWDyS4nMhZY=
=QL65
-----END PGP PUBLIC KEY BLOCK-----

相信上面的教程应该使你学会如何使用GnuPG。如果不够,The GnuPG manuals上有使用GnuPG和相关全部配置的详细信息。


via: http://www.linux.com/learn/tutorials/784165-how-to-encrypt-email-in-linux

作者:Carla Schroder 译者:KayGuoWhu 校对:wxy

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

事实上,我的硬盘上不存在那种不愿意被别人看到的东西,只存有一些猫咪的照片、一些记录着想写的书的想法的文本文件,或者是一些短篇故事的文本,也有一些写了一半的 NaNoWriMo 小说文件。简单的说,我的硬盘就没有加密的必要,因为没有什么可隐藏的。可问题是,我们错误的把“隐私的渴望”跟“要隐藏某东西”两概念混淆在一起。比如说我生活的美国,我们视隐私权利是理所当然的事,但不包括那些传统所认为的“某人的隐藏色情或炸弹”。隐私考虑的是一些平常的事情。

我居住在密歇根州。这儿的冬天很冷,我趋向于把温度设置在华氏 75 度左右。对您们来说这个温度可能高了,但在我的家里刚好合适。多亏我的家是属于私有的,我的邻居不可能知道我们保持了这么高的温度,否则一但他们看到冬天如此“浪费”能源的家庭,这些邻居心里会很不平衡的。事实上,本地条规中有一条明确指出任何超过华氏 60 度的就算是生态浪费。我并不想与这种僵老的条例较真,所以我仅仅想保守我们舒适的房子的秘密。我们并不想隐藏任何事情,但也并不是任何事情都要让外人知道。

很明显,我举的例子有点弱智,但我希望的是这能引起大家的思考。现代的 Linux 系统很容易的就可以对我们的数据进行加密,并且很可靠,所以为什么不好好利用利用呢?

加密原理?

我不会涉及太多关于加密原理的细节,但要明白最基本的原理,即使是最简单的实现,这是必须的。要加密和解密一个文件,需要两把“钥匙”。一把是私钥,正如名字所示,属于私有的。我宁愿把私钥看作是真实的钥匙——你想要多少就可造出多少,但这样做是不明智的。同样的,私钥你造的越多,某些不怀好意的人得到其中一把的机率就越大,他们就会闯入你的公寓(额,我的意思是指那些文件)。

公钥更像是锁的样子,只有你能(用你的私钥)打开此锁。这公钥任何人都可以得到,你可以将它张贴在网站上、把它放在你的 E-mail 中、甚至纹在你的背上。其它人想创建一个只有你能访问的文件,就可以使用此公钥来加密。

这种一对多(LCTT译注:指别人可以加密多个文件,而只有你的一个私钥才能解密)的情况也有个很酷的副作用。如果你用你的私钥来加密一些东西,任何人都可以用你提供的公钥来解密它们。这听起来很傻,但这种情景很有用。虽然加密的文件不能免于被窥视,但是它能保证此文件确实来自于你而没有被恶意改动过。用你的公钥能解密的文件仅仅只能是用你私钥加密过的。用这种方式,用私钥加密的文件即是数字“签名”文件。(LCTT译注:既然是任何人都可以用公钥解密,其实加密没有意义,相反,仅仅用你的私钥做一个签名指纹,别人只需要用你的公钥来验证该签名是否一致即可判断是否来自你。)

(LCTT译注:其实本文此处所述的加密解密、签名校验等原理不完全正确,和实际的非对称加密情形有所差异,不过比较容易理解和类比。)

通用加密步骤:

  1. 你有一个文件想要发送给苏茜 ,所以你得使用苏茜的公钥来加密,这样就只有 苏茜才能打开这个文件,但苏茜没有办法知道是谁给她发送的文件。因为任何一个人都可以用她的公钥来加密文件。
  2. 因此,你得把你的文件用苏茜的公钥和你的私钥都加密。苏茜将不得不解密两次,但她知道它是来自于你的文件。(LCTT译注:实际上应该是用你的私钥要做签名,生成一小段签名指纹,而不是对已经加密的文件再次加密。)
  3. 苏茜接收到此文件后会用能证明来自于你的公钥来解密第一层。(LCTT译注:校验签名,确认来自你的私钥的签名正确。)
  4. 然后用她的私钥来解密第二层的密码,这是唯一的能够将原始文件进行解密的钥匙了(因为你是用她的公钥来加密的)。

当然,这情景就是用来安全传输文件的加密手段。这也是加密你的文件(或者分区)相当常用及简单的方法。就让我们开始来对文件进行加密吧,因为大多数人都想加密他们的系统。

始于简

在深入更复杂的各种加密设置操作前,我们先做简单的对文件加密例子。能处理加密的应用程序有很多很多,事实上,对文件和系统进行加密的各种可用软件选择,很容易就会让我们变得焦头烂额。现在,我们就使用一款很基本的(但非常强大)命令行工具来对文件加密。 GPG (英文名:Gnu Privacy Guard)是一款对商业软件 PGP(英文名:Pretty Good Protection)的开源实现软件。它具有加密、签名及管理多个密钥等功能。用例子说明,让我们简单的加密一个文件吧。

我们假设你有一个名叫 secret\_manifesto.txt 的文件,它包含有关于生命、宇宙及一切事物的秘密。使用 GPG,你只需要一个密码就可以加密此文件。使用密码远比使用公钥和私钥对简单,因为它只是用你的密码加密。虽然这比较容易让你的文件遭受到破解(比如使用彩虹表或其他黑客工具暴力破解),但像它的名字中所宣称的:这是相当不错的保护。要加密你的文件,可以这样做:

# gpg -c secret_manifesto.txt
  Enter passphrase:
  Repeat passphrase:

一但完成,在相同的目录下就会多出个新的文件,它默认的名字是 secret\_manifesto.txt.gpg 。这是一个二进制文件,这意味着它真的比较小,但是要将其内容拷贝/粘贴到电子邮件(e-mail)或 即时消息(IM) 就不可能了(LCTT译注:当然你可以使用附件方式。)。要使其便于拷贝等操作,可以添加 -a 标志,这将创建一个只包含 ASCII 码文本的加密文件:

# gpg -a -c secret_manifesto.txt
  Enter passphrase:
  Repeat passphrase:
# ls -l
-rw-rw-r--  1 spowers spowers    6 Nov 23 1:26 secret_manifesto.txt
-rw-rw-r--  1 spowers spowers  174 Nov 23 1:27 secret_manifesto.txt.asc
-rw-rw-r--  1 spowers spowers   55 Nov 23 1:26 secret_manifesto.txt.gpg

注意到现在多了一个以 .asc 为扩展名的文件。它是个纯文本文件,从上面的代码段示例可以看到它比二进制的加密文件还大,当然比原文本文件就大的更多了。一但你把文件加密了,也确实想要对些信息保密,最明智的就是把原文本文件删除掉。(LCTT译注:千万记住密码啊,否则谁也帮不了你了——你得自己破解自己的密码啦:>)

要解密文件,你需要再一次使用 GPG 程序。不管是二进制的还是 ASCII 文件,使用相同的命令就可以解密。如下所示:

# gpg secret_manifesto.txt.asc
 gpg: CAST5 encrypted data
 Enter passphrase:
 gpg: encrypted with 1 passphrase
 File `secret_manifesto.txt' exists. Overwrite? (y/N)

注意到上面的例子中,我没有删除源文本文件,所以 GPG 给出了是否覆盖选项提示。一但操作完成,我的未加密的源文件又回来了。如果你仅仅只有一两个文件要保护,那基于命令行的 GPG 程序正是你所需的。但如果你想实现在系统上指定一个区域,任何保存到这区域的的文件都会自动加密的话,就有点复杂了。可这也并不是非常的困难,让我们用一个非常简单的示范例子来讲解吧。

加密 USB 驱动盘

如我前面提到的,要加密有很多可选的方式方法。加密磁盘分区最通用的一种方法是 LUKS(Linux Unified Key Setup) 系统。一个使用 LUKS 格式化分区的 USB 驱动盘可以被大多数系统自动识别到。实际上,如果你使用的是像 Ubuntu 桌面这样的桌面环境系统的话,加密 USB 驱动盘其实就是在格式化过程中简单的勾选上一个复选框而已。虽然这是加密 USB 盘最容易让人接受的方式,但我还是想演示如何在命令行下进行加密,因为这种方式可以让你明白在加密的后面具体发生了什么。

步骤 1: 识别您的 USB 驱动盘。

在您插入 USB 驱动盘后,如果在终端输入 dmesg 命令,将会显示出所有的系统信息,包括刚插入的 USB 驱动盘的设备名字。 确保设备标识是正确的,因为后面要进行的操作会破坏驱动盘上的所有数据。您也不想一不小心就格式化掉正常的磁盘吧。(虽然不用提醒,但我还是要说,确保您的 USB 驱动盘已经没有你想保留的数据,因为这是一个破坏性的过程。)

步骤 2: 对 USB 驱动盘进行分区。

假设,在您的系统上 USB 驱动盘是 /dev/sdb 这个设备,您需要在这个驱动上创建一个单分区(LCTT译注:设备是sdb,其上可以有多个分区,分别叫sdb1、sdb2等等)。我们使用 fdisk 命令。下面是 fdisk 必须的交互操作。一般地,用 o 命令来创建一个新的空分区,然后用 w 命令来保存设置。然后重新运行 fdisk 命令,并用 n 命令来创建一个新的主分区,接下来保持默认的以使用整个设备空间:

# sudo fdisk /dev/sdb

Command (m for help): o
Building a new DOS disklabel with disk identifier 0x1234567.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Command (m for help): w
The partition table has been altered!

# sudo fdisk /dev/sdb
Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
Using default value 1
First sector (2048-1016522, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1016522, default 1016522):
Using default value 1016522

Command (m for help): w
The partition table has been altered!

现在你的 USB 驱动盘有了一个单分区了(/dev/sdb1),但还没有文件系统,这正是我们所想要的,因为 LUKS 系统需要在创建文件系统前在您的分区上创建一个加密层。因此,在创建文件系统之前,就让我们在分区上先创建一个 LUKS 层吧,可以使用 cryptsetup 程序。如果您还没有安装 cryptsetup 的话,可以搜索您系统发布版本的仓库源,里面就有。下面就开始创建 LUKS 加密分区层:

# cryptsetup luksFormat /dev/sdb1

WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase: 

按照提示的操作,一定要确保记得您的密码!注意,这儿的“密码单词”不仅仅只表示一个单词。这只是一个习惯,因而得名,设置的越长越复杂,越难被破解。

一但上面的操作完成,就创建好了一个加密的分区,但它还没有被挂载或格式化。要做的第一步就是挂载分区,可以再一次使用 cryptsetup 工具:

# cryptsetup luksOpen /dev/sdb1 my_crypto_disk
Enter passphrase for /dev/sdb1:

当输入完密码后,您输入名字的设备就会像虚拟硬盘一样被挂载上。通常,它挂载在 /dev/mapper/设备名 的目录下,所以这个例子所示的分区就挂载到了 /dev/mapper/mycryptodisk 目录。

现在这个设备就可当做未加密的卷来访问了。 只要它一被挂载,就跟其它未加密的卷是一样的了,这就意味着您想要使用它的话就需要先建立文件系统:

# mkfs.vfat /dev/mapper/my_crypto_disk -n my_crypto_disk
mkfs.vfat 3.0.9 (31 Jan 2010)

现在磁盘的功能完备了,可以像其它磁盘一样正常挂载使用了。实际上,如果你使用的是现代的图形用户界面系统的话,只要你把 USB 驱动盘一插入计算机,将会提示您输入密码,然后就自动挂载上了。退出的时候跟普通盘一样,里面存储的数据会被加密,直到下次输入密码。在命令行里使用 cryptsetup 卸载以及重加密驱动盘也是很简单的:

# cryptsetup luksClose my_crypto_disk

这仅仅只是冰山一角

写这篇文章,我的目的是希望剥开加密后面的秘密。加密和解密单个文件很简单,要加密整个 USB 驱动盘也不是太困难(如果使用的是图形用户界面工具就更容易了)。对于大多数系统的发布版本来说,在安装过程中就可以对整个 home 目录进行加密。加密是对您的整个 home 目录起作用,然而有些问题就需要特别处理了。例如,您没登陆时就运行的任务在大多数情况下是不会访问您的 home 目录的,但如果您有调度任务需要访问 home 目录的话,应该进行修改,让其访问系统中其它目录的数据。我觉得在安全和便利之中平衡的中庸之道还是加密 USB 驱动盘,然后在上面存储个人资料。

我必须警告您,一但您考虑到安全的问题,就会想要把任何东西都加密起来。这不是什么坏的事情,但是像要对 home 目录加密这种情况,是会碰到一些问题的。如果您使用不同系统的话,跨平台访问也是个大问题。像这种情况,我强烈建议您使用 TrueCrypt。在前期的文章片段里我提到过 TrueCrypt,它是一款开源的,跨平台的加密系统软件。可以对文件、文件夹、分区等等进行加密,同时可以在任何系统中访问加密的数据。像 Windows、Mac 及 Linux 客户端都可以使用。社区也有大力的支持。(LCTT译注:悲惨的是,棱镜门事件之后,TrueCrypt的作者已经放弃了该产品,并且强烈建议大家也不要使用,具体可以参考本站的一些相关消息。所以痛失TrueCrypt之后,我们还有哪些替代品?)

希望对文件进行加密的目的并不是为了隐藏某些东西。就像即使您有个好邻居,最好夜里也得锁门一样,对您的个人数据进行加密也是个很正常的举动。如果您想在网上与大家分享你的 Whiskerton 先生戴着可爱的小豆豆帽子的照片的话,这是您的权利。但其它的人,比如他们索检你硬盘的时候,就不需要让他们看到了。


via: http://www.linuxjournal.com/content/encrypting-your-cat-photos

译者:runningwater 校对:wxy

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