<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; gpg</title>
	<atom:link href="https://zohead.com/archives/tag/gpg/feed/" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>Keybase加密网络服务初步体验</title>
		<link>https://zohead.com/archives/keybase/</link>
		<comments>https://zohead.com/archives/keybase/#comments</comments>
		<pubDate>Sun, 27 Oct 2019 04:00:52 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[网络技术]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[KBFS]]></category>
		<category><![CDATA[Keybase]]></category>
		<category><![CDATA[PGP]]></category>
		<category><![CDATA[Stellar]]></category>
		<category><![CDATA[XLM]]></category>
		<category><![CDATA[加密]]></category>
		<category><![CDATA[加密货币]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1602</guid>
		<description><![CDATA[关于 Keybase 体验之前需要先了解 Keybase 到底是啥，维基百科上对 Keybase 的定义是基于 PGP 技术的社交网络平台，可以将用户的身份映射到公钥，反之亦然。最常见的用法就是 Keybase 做为公共的 PGP key server。Keybase 可以对用户的 Twitter、GitHub、Reddit 等社交网络账户提供身份验证功能。 做为开源项目，Keybase 提供的服务已经远不止这些了，除了在社交网络身份验证之外增加了域名、网站管理员以及比特币和 Zcash 加密货币地址的验证功能，目前还提供了不少扩展功能： 端对端加密聊天通讯； 类似 Slack 的加密团队聊天 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 id="about-keybase">关于 Keybase</h2>
<p>体验之前需要先了解 <a href="https://keybase.io/" target="_blank">Keybase</a> 到底是啥，维基百科上对 Keybase 的定义是基于 PGP 技术的社交网络平台，可以将用户的身份映射到公钥，反之亦然。最常见的用法就是 Keybase 做为公共的 PGP key server。Keybase 可以对用户的 Twitter、GitHub、Reddit 等社交网络账户提供身份验证功能。</p>
<p>做为开源项目，Keybase 提供的服务已经远不止这些了，除了在社交网络身份验证之外增加了域名、网站管理员以及比特币和 Zcash 加密货币地址的验证功能，目前还提供了不少扩展功能：</p>
<ul>
<li>端对端加密聊天通讯；</li>
<li>类似 Slack 的加密团队聊天和协作；</li>
<li>KBFS 加密文件存储服务，支持公共文件和私有文件，公共文件支持静态文件托管服务；</li>
<li>集成 Stellar（XLM）钱包（恒星币）功能，支持创建和导入 Stellar 账户，可以通过 Keybase 发送 XLM 给其它用户；</li>
<li>加密 Git 代码仓库托管服务，用户可以创建自己的私有仓库。</li>
</ul>
<h2 id="pgp-encrypt">PGP 加密</h2>
<p>还是从最基本的 PGP 加密说起，在 Keybase 官网注册账户并安装客户端之后，用户可以把自己的 PGP 公钥上传到 Keybase。Linux 下我一般使用系统自带的 gpg（GnuPG）来管理密钥，gpg 的知识网上有很多这里就不做详细介绍了，Keybase 做为公共 PGP key server 还是比较好用的。</p>
<p>例如，我的 Keybase 用户名是 <strong><a href="https://keybase.io/nocwat" target="_blank">nocwat</a></strong>，欢迎大家添加好友，我已经把自己的 PGP 公钥上传到 Keybase 了，如果你需要在 Linux 系统里导入我的公钥就很简单：</p>
<pre class="brush: bash; title: ; notranslate">
~$ curl https://keybase.io/nocwat/pgp_keys.asc | gpg --import
</pre>
<p>如果你已经安装了 Keybase 客户端，也可以这样导入：</p>
<pre class="brush: bash; title: ; notranslate">
~$ keybase pgp pull nocwat
</pre>
<p>导入公钥之后，就可以用 gpg 再做加密、解密、签名、验证之类的操作了。</p>
<p>当然 Keybase 客户端也是直接支持 PGP 的这些操作了，例如：</p>
<pre class="brush: bash; title: ; notranslate">
~$ keybase encrypt -i input -o output user
</pre>
<blockquote>
<p><strong>注意</strong></p>
<p>Keybase 可能觉得用户直接使用 PGP 的门槛太高太复杂，又自己搞了一套新的认证机制，可以参考这里：</p>
<p><a href="https://keybase.io/blog/keybase-new-key-model" target="_blank">Keybase’s New Key Model</a></p>
<p>新的认证机制使用 Keybase 设备密钥（device key）和 paper key（非常重要，可以更方便地认证 Keybase 设备），至于新的密钥系统则是基于 <a href="http://nacl.cr.yp.to/" target="_blank">NaCl</a> 新开发出来的 <a href="https://saltpack.org/" target="_blank">SaltPack</a>，具体可以看看 <a href="https://keybase.io/docs/crypto/overview" target="_blank">Keybase Crypto Documents</a>。</p>
</blockquote>
<p>对于 Keybase 这套新的认证机制，我不太好评价其优劣点。Keybase 用户的设备列表是所有用户都可见的，例如我的 <a href="https://keybase.io/nocwat/devices" target="_blank">Keybase devices</a>，这里包含了所有已认证的设备和 paper key。</p>
<p>在 <a href="https://keybase.io/nocwat/graph" target="_blank">Keybase graph</a> 里甚至还能看到 PGP key、device key、paper key 及其它已认证项目的对应关系图。从 graph 图里就能看到目前我还是最信赖自己的 PGP 密钥的。</p>
<blockquote>
<p><strong>提示</strong></p>
<p>Keybase 也提供 PGP 私钥托管保存功能，Keybase 声称 PGP 私钥必须通过用户的 passphrase 才能解密，解密是通过浏览器客户端本地完成，服务器并不会保存 passphrase。这个托管功能并不是强制的，上传与否要看你是否足够信任 Keybase 了。</p>
</blockquote>
<p>另外 Keybase 网页版也有一个 <strong><a href="https://keybase.io/encrypt" target="_blank">PGP Encrypt</a></strong> 页面提供 PGP 加解密等功能：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371721/keybase-pgp.png" alt="Keybase PGP Encrypt"></p>
<p>PGP 私钥托管之后确实会方便不少，如果你的 PGP 私钥跟我一样没有上传到 Keybase 上托管，那这个页面只能使用 Encrypt 加密发送消息和 Verify 功能，Decrypt 和 Sign 功能必须通过 PGP 或 Keybase 客户端来完成。</p>
<h2 id="encrypt-im">加密聊天通讯</h2>
<p>Keybase 端对端的加密聊天功能需要安装客户端才能使用，与其它聊天软件不同，即使其他人只有 Twitter、GitHub 等社交网络账户还没有注册 Keybase，你也可以通过 Keybase 发送消息给他们（直接指定社交网络账户名，而不需要知道 Keybase 账户名），待他们通过 Keybase 认证这些账户之后就能收到之前的消息。</p>
<p>你甚至可以直接通过 Keybase 发送消息给 PGP 公钥所有者，如果对方的 Keybase 账户添加验证了此 PGP 公钥就能收到消息。</p>
<p>Keybase 聊天的消息目前是基于 device key 和 paper key 进行加密的，而不是 PGP 密钥，Keybase 给出的解释是无需单独管理 PGP 密钥更有利于非技术人员使用。</p>
<p>Keybase 命令行 <code>keybase chat</code> 也可以进行简单的聊天，而且聊天功能还支持 JSON API 接口，可以很方便地实现聊天机器人之类的功能。</p>
<p>另外 Keybase 团队聊天同样也是端对端加密的，具体可以看看 <a href="https://keybase.io/docs/teams/crypto" target="_blank">Teams Crypto</a> 的介绍。由于 Keybase 代码是开源的，因此总体看起来 Keybase 似乎是一个比 Telegram 安全性更高的即时通讯软件。</p>
<h2 id="kbfs-storage">KBFS 文件存储</h2>
<p>KBFS（Keybase 文件系统）的介绍可以参考 <a href="https://keybase.io/docs/kbfs" target="_blank">Introducing the Keybase filesystem</a>，用户存入的所有文件都会自动签名加密。与聊天功能类似，所有 KBFS 数据都是基于 device key 和 paper key 进行加密的，而不是 PGP 密钥，因此 paper key 特别需要注意备份不能丢失。</p>
<p>KBFS 需要安装 Keybase 客户端才可以使用，Linux 下是基于 FUSE 实现的，Windows 则是基于常见的 Dokan 用户态文件系统了：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371495/keybase-dokan.jpg" alt="Keybase Windows Dokan Library"></p>
<p>Keybase 客户端的 Files 里可以直接看到 private、public 和 team 三个顶层目录，分别对应用户私有、用户公共和团队文件：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371494/keybase-files.jpg" alt="KBFS 文件系统"></p>
<p>我的私有文件在 Linux 上的访问路径是类似这样：<code>/keybase/private/nocwat</code>，Windows 上则是：<code>k:\private\nocwat</code>，公共目录则是：<code>/keybase/public/nocwat</code>。</p>
<p>你也可以创建一个只有几个特定用户能访问的私有目录，类似这样：</p>
<pre class="brush: plain; title: ; notranslate">
/keybase/private/nocwat,xxx,yyy
</pre>
<p>对于公共目录，Keybase 还提供了 <a href="https://keybase.pub/" target="_blank">Keybase.pub</a> 网站方便其它用户访问使用，例如我的公共目录地址就是：<a href="https://keybase.pub/nocwat/" target="_blank"><code>https://keybase.pub/nocwat/</code></a>。</p>
<p>Keybase.pub 还提供了静态文件托管网站功能，例如你可以直接访问下面的地址查看我放到公共目录的 Wiki 知识库：<a href="https://nocwat.keybase.pub/wiki/" target="_blank"><code>https://nocwat.keybase.pub/wiki/</code></a>。其实这个地址就相当于访问我的 <code>/keybase/public/nocwat/wiki</code> 公共目录。</p>
<p>目前 Keybase 给每个用户提供了 250 GB 的 KBFS 存储空间，目前 KBFS 用户量还不是很多可能存在不稳定的问题，最好注意备份数据。</p>
<p>KBFS 文件系统可以直接看到空间使用情况：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371722/keybase-kbfs.png" alt="KBFS 空间使用"></p>
<h2 id="stellar-wallet">Stellar 钱包</h2>
<p>Stellar 是基于 Ripple 修改而来的支付网络系统，用户使用 Lumen（XLM）作为基础货币，可以通过 XLM 转账任意一种货币（可以是各国法定货币或者其它加密货币），其交易确认速度也非常快，有关恒星币的详细内容还请自行了解哦。</p>
<p>Stellar Lumens 加密货币（恒星币）的钱包功能同样必须安装客户端才能使用，目前所有 Keybase 用户都可以使用：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371721/keybase-wallet.jpg" alt="Keybase Stellar 钱包"></p>
<p>Keybase 将聊天功能和钱包功能进行整合，你可以直接通过 Keybase 用户名而不是很长的 Stellar 钱包地址进行转账操作，当然也可以通过 Keybase 客户端转账给其它未使用 Keybase 的 Stellar 钱包地址。</p>
<p>目前 Keybase 正在搞 Stellar 空投活动，一共会发送 20 亿个 Lumens，只要 Keybase 账户的条件合格就可以每个月领到 Lumens，详情请参考 <a href="https://keybase.io/airdrop" target="_blank">The Big Stellar Space Drop</a> 页面的介绍。</p>
<h2 id="git-repo">Git 代码仓库</h2>
<p>不得不说 Keybase 新推出的 Git 私有仓库托管服务才是我使用的原因，你可以通过 Keybase 客户端建立自己的私有仓库，也可以为团队建立代码仓库。Keybase 为每个用户和团队提供了 100 GB 的仓库存储空间，实际已经足够用了。Git 代码仓库同样是端对端加密的，只有自己或团队的密钥才能解密。</p>
<p>Keybase 的仓库托管服务是基于 Git 的 remote helpers 功能来实现的，因此仓库地址和常见的 GitHub 不太一样。例如下面是我建立的一个名为 <code>ssicd</code> 的私有代码仓库：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371498/keybase-git.jpg" alt="Keybase Git 代码仓库"></p>
<p>使用 Keybase Git 仓库的机器上必须安装 Keybase 客户端（通过 <code>git-remote-keybase</code> 程序来实现），我就可以通过命令行来 clone 仓库：</p>
<pre class="brush: bash; title: ; notranslate">
~$ git clone keybase://private/nocwat/ssicd.git
</pre>
<p>接下来的使用方法就和其它 Git 仓库没什么区别了，只是 push 等操作时需要使 Keybase 客户端保持运行状态。</p>
<p>另外还有一个小窍门就是 Keybase Git 代码仓库中的文件是可以直接通过 KBFS 进行访问的，这样无需 clone 整个仓库就能下载其中的某个文件，例如上面我的私有仓库目录路径就是：</p>
<pre class="brush: plain; title: ; notranslate">
/keybase/private/nocwat/.kbfs_autogit/ssicd
</pre>
<p>路径中的 <code>.kbfs_autogit</code> 是表示 Git 仓库的特殊目录名，不过需要注意直接列举 <code>/keybase/private/{user}</code> 并不能看到这个目录，需要在目录路径中特别指定。</p>
<p>你甚至可以通过 KBFS 直接访问仓库的某个分支，路径形式如下：</p>
<pre class="brush: plain; title: ; notranslate">
/keybase/private/nocwat/.kbfs_autogit/ssicd/.kbfs_autogit_branch_develop
</pre>
<p>路径中的 <code>.kbfs_autogit_branch_</code> 后面跟 Git 分支名称即可。</p>
<p>你如果想直接访问具体某个 commit 的数据，也可以指定 KBFS 路径：</p>
<pre class="brush: plain; title: ; notranslate">
/keybase/private/nocwat/.kbfs_autogit/ssicd/.kbfs_autogit_commit_XXXXXX
</pre>
<p>路径中的 <code>.kbfs_autogit_commit_</code> 后面跟 commit 的完整 hash 值。</p>
<h2 id="summary">总结</h2>
<p>Keybase 做为一个开源项目，基于 PGP 技术做了很多身份验证之外的扩展和改进，增加了很多加密相关的服务，例如端对端加密的聊天、协作、存储、钱包、Git 仓库等功能确实降低了用户使用门槛。我这段时间用下来还是比较方便的，不过国内某些网络下 Keybase 可能访问速度很慢或者干脆被墙了。</p>
<p>不过 Keybase 设计了新的认证机制而不是直接使用成熟的 PGP 可能会引起一些争议，另外可能由于集成了太多功能导致 Keybase 客户端稍显臃肿，现在 Windows 客户端安装包体积就已经有 180 多 MB 了。其实我倒希望 Keybase 能发布一个体积更小的纯命令行版本，或者能可选安装图形程序（我可能也只需要图形界面的聊天功能）。</p>
<p>目前 Keybase 我使用最多的场景就是 PGP key server、KBFS 文件存储和私有 Git 代码仓库功能了，由于基本没有添加好友，端对端加密聊天功能基本没有用到。</p>
<p>最后我写这篇文章时 Stellar（XLM）价格为 $0.06（0.000006 BTC）还非常低廉，哈哈，欢迎大家通过 Keybase 用户名 <strong><a href="https://keybase.io/nocwat/sigchain#2e5759ea8c98e03c36c49b04282dbef7728a75d39c2b10a31ffe118761a098c022" target="_blank">nocwat</a></strong> 或者 <strong><a href="https://steexp.com/account/GBJZINB72KUDGZQSGJP6BQCQHBNQWXBAS6VQ2H4VTAZRPK5MRCP6DSR3" target="_blank">Stellar 钱包地址</a></strong> 给我打币。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/keybase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
