我目前正在阅读 Cory Doctorow 的小说Little Brother,其中有一部分是关于加密消息的,甚至首先将消息包装在我的私钥中,然后是您的公钥。
我想尝试一下,但从我到目前为止用谷歌搜索的内容来看,这似乎是一个相当复杂的过程,需要安装几个程序组件,并且创建加密消息需要进行一些手动文件操作。
我很惊讶我找不到像 Firefox 插件那样将加密集成到 Gmail 中的东西。我看到有一个 Thunderbird PGP 插件,但我不使用 T-bird。我还看到了一篇博文,谷歌显然在 2009 年玩弄 PGP 支持,但在此期间什么也没有出现。
问题:
要对 Gmail 使用加密,是否有比在本地创建文件,然后加密该文件,最后将其附加到常规 Gmail 邮件更简单的方法?
假设我向 GPG/PGP 密钥添加了到期日期,然后由于某种原因我无法在其时间到期之前延长密钥的到期日期。
假设我仍然可以访问私钥(并且公钥只是过期,没有被撤销)我还能续订吗?
在 ssh-keygen 生成的公钥文件“id_rsa.pub”中,==后面的部分重要吗?
我问是因为当我将“root@somedomain.com”更改为“root”时,它似乎仍然有效。
更一般地说,我很好奇那一半的目的是什么。
我已经阅读了有关在客户端主机上生成 2 个密钥(私有和公共)并将公钥复制到服务器主机的信息。
据我了解,(如果我错了,请纠正我):服务器使用公钥加密数据并将其发送给客户端,客户端使用私钥对其进行解密。
但是如果我需要加密客户端上的数据以发送到服务器,它是如何发生的?
公钥加密客户端上的数据?但是如果服务器只有公钥,它如何解密呢?
SSH 加密如何工作?
我创建了一个公钥/私钥对:
ssh-keygen -t rsa -C "me@example.com"
Run Code Online (Sandbox Code Playgroud)
我给了一个与 id_rsa 不同的密钥文件名,因为我想从我的正常身份创建一个新的单独密钥。
我将此密钥提供给了我的托管服务提供商,以便我可以使用公钥身份验证登录到我的服务器。
我最初能够使用密钥登录并且一切正常。
ssh -i /path/to/key/file user@server.com
Run Code Online (Sandbox Code Playgroud)
我意识到我在密钥文件名中犯了一个拼写错误并重命名了公钥和私钥文件。如果密钥文件在我的客户端计算机上具有不同的名称,这是否会影响服务器端的任何内容?
如果您创建新的 GPG 密钥,默认情况下您将获得一个仅签名的主密钥对和一个仅加密的子密钥对。
pub 2048R/XXXXXXXX created: 2013-02-09 expires: 2014-02-09 usage: SC
sec 2048R/XXXXXXXX 2013-02-09 [expires: 2014-02-09]
sub 2048R/ZZZZZZZZ created: 2013-02-09 expires: 2014-02-09 usage: E
ssb 2048R/ZZZZZZZZ 2013-02-09 [expires: 2014-02-09]
Run Code Online (Sandbox Code Playgroud)
(输出组合自gpg --list-keys
和gpg --list-secret-keys
)
还建议不要使用您的主密钥进行常规签名(邮件/数据),而是创建另一个仅签名子密钥并将您的主密钥删除/备份到安全和离线位置,仅用于密钥签名.
这是有道理的,因为大多数加密端点是笔记本电脑/电话或其他始终在线的移动设备,它们会使您的私钥面临被盗或丢失的风险。使用安全存储的主密钥,您可以随时撤销此类丢失的子密钥,而不会丢失您的密钥签名。
因此,虽然主密钥 <-> 子密钥分离对我来说很清楚,但我不明白为什么要强调分离签名和加密密钥(即使它们都是子密钥)。有人可以解释为什么这是必要的,或者至少从安全或实用的角度解释有什么好处?
从技术上讲,创建签名和加密子密钥是完全可行的,并且由 GnuPG 支持。
pub 2048R/YYYYYYYY created: 2013-08-13 expires: 2014-08-13 usage: SCEA
sub 2048R/VVVVVVVV created: 2013-08-13 expires: 2014-08-13 usage: SEA
Run Code Online (Sandbox Code Playgroud) 是否有一些工具可以以人类无法理解的方式写出 GnuPG 公钥的实际内容?我的意思不仅是人类可以阅读和键入的 ascii-armor,而且是将数据真正分解为加密部分的大十进制数、UID 的字符串等等的东西?我真的很想看看里面有什么。
今天的实际应用:我有来自同一个人的两个密钥,在同一日期创建,但指纹不同。假设其中一个是通过某种转换从另一个创建的,可能是通过使用最新软件将旧密钥导入到钥匙串中。我想看看实际发生了什么变化。也许只是指纹算法发生了变化,但也许还有更多。
好吧,我不知道这是什么,但我刚刚收到一封电子邮件,里面有这个。
-----BEGIN PGP PUBLIC KEY BLOCK-----
[redacted]
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)
如果这意味着什么,有人可以为我解码吗?如果没有,那么有人可以告诉我它是什么吗?
如果有的话,SSH 密钥与用于其他目的(例如电子邮件签名)的非对称密钥有何不同?
我被提示问这个,部分是因为在 OS X 上,有可用于管理 SSH 密钥的应用程序(ssh-agent、SSHKeychain 等)以及旨在管理 GPG 密钥的应用程序(GPG Keychain Access 等),显然,两人从未见面。但是,我不认为这是 OS X 特定的问题。
这种关注点分离是因为密钥的种类完全不同,还是因为它们存储在不同的地方,还是出于其他原因或原因的组合,例如历史原因?
有人可以告诉我,使用SSH,为什么主机还需要有公钥和私钥?以及如何为自己生成公钥/私钥对?