【转载】XMPP加密通讯简明教程

一、什么是XMPP以及我们为什么要使用XMPP

简而言之,XMPP(又称为Jabber)是一种开放的互联网实时通讯协议。很多流行的聊天软件都是XMPP的封装应用,比如Google Hangout、Facebook Message、AOLChat、米聊、人人桌面和陌陌等。很多网络游戏的内部聊天用的也是XMPP协议。

与通常我们使用的集中式架构的通讯软件(如QQ、微信)不同,采取邦联式架构的XMPP客户端与服务器、服务器之间的通信使用的是公开而标准化的协议——这保证了任何人都可以参考这些标准开发出可以和系统中其他组件互操作的组件,甚至可以自己搭建服务器,为自己提供服务。通过XMPP所支持的“不留记录即时通讯协议(Off-the-Record Messaging,缩写为OTR,原理见https://hardenedlinux.github.io/cryptography/2018/02/01/pidgin_xmpp_otr_debian.html),可以实现端到端通讯的加密,从而保障“私聊”的真正“私密”性质和通讯的安全性。

我们推广XMPP是希望推动这种开放的聊天协议和自由软件的使用,用XMPP配合OTR或OMEMO的端对端加密聊天,替代传统封闭的、有隐私泄漏风险的私权软件。

二、注册XMPP账号

互联网上有很多开放的 XMPP 服务, https://list.jabber.at/ 有一个列表;在正式尝试在服务器上注册帐号之前建议用 xmpp 观测站服务(https://xmpp.net/https://check.messaging.one/ )检查一下服务器的特性。

有些XMPP服务器在网页上提供注册功能(后面标注registration),不过最常使用的还是通过客户端直接注册(可惜xabber无此功能)。注册时需要选定一台服务器、填写用户名和密码后,就可以得到形式和电子邮件地址类似——“用户名@服务器”的身份标识——JID了(有些客户端如pidgin甚至使用同一个界面来操作“创建新账号”和“添加现有账号”的功能,仅仅通过类似“在服务器上创建此账号”的选项来区分)。

请妥善保管账号和密码,XMPP账号不支持密码找回服务。

三、安装客户端

支持XMPP的客户端有很多,且大部分是自由软件。在此马列之声仅推荐两个经过我们测试之后认为比较好的客户端,基本能满足同志们多数场景的通讯要求。

PC 客户端:推荐使用 Pidgin,GNU/Linux 发行版可通过包管理器搜索“pidgin”来安装,也可以从 https://pidgin.im 下载源码包编译安装。Windows 可前往 https://pidgin.im 网站下载安装。

移动客户端:Android 系统推荐 Xabber。首先前往 https://f-droid.org 下载安装 F-Droid 市场,然后更新包缓存,之后就可以搜索并安装 Xabber了。

iOS 系统?chatsecure 的 iOS 版可能算半个,不过并不好用,往往会丢消息,只有越狱并设法禁止自动挂起网络才能彻底解决这个问题——因为苹果通过一系列恶心的设计把为 iOS 用户提供邦联化的即时通信服务这个本应仅仅需要一条持久 TCP 连接和客户端断线时重连的工作变得难如登天——基本上想为 iOS 实现即时通信服务就必须在一定程度上放弃邦联化,开发者还必须接受烂苹果的盘剥才能保证其用户能及时收到消息——这使得 iOS 能用的即时通信服务基本上都是圆形监狱。所以我们建议您换用更便宜也更自由的 android 设备。

四、客户端的使用

安装好客户端后,接下来就是登录了。同时,我们需要对客户端进行一些基本的调整设置,以便更好地使用XMPP的加密功能。

Xabber的使用

1.登录

用户名一栏填写自己的JID,取消选中第二个勾,如果登录时提示安装某play,点忽略。登陆成功。

2.设置

Xabber设置中建议打开的有:

“(个别账户)/连接设置”中,“TLS/SSL 用法”设为“在连接服务器时要求 TLS 加密”;勾选“使用压缩”;

”通知”下的“任务栏图标”;

“连接”下的“保持Wi-Fi唤醒”和“防止睡眠模式”以保证随时能接受消息

“安全”中的“检查服务器证书”。

“联系人列表”、“聊天”、“通知”等选项组则可根据个人需要酌情调整。

pidgin的使用

1.安装插件

pidgin 使用插件架构支持各种协议及其扩展,将插件文件(主体部分为动态链接库——在 windows 上即为 dll)放入插件所在的目录(pidgin 的安装目录下的一个叫 plugins 的子目录),重新启动程序,即可在“工具”菜单下的“插件”对话框中启用并配置之。

使用pidgin之前,请先安装两个插件:

(1)OTR 插件

用于实现上文所述的 OTR 加密协议。

下载 https://otr.cypherpunks.ca/index.php#downloads 中的 https://otr.cypherpunks.ca/binaries/windows/pidgin-otr-4.0.2.zip ,并将其全部内容放入 pidgin 的插件目录,插件名为 Off-the-Record Messaging,有额外选项。

(2)消息反馈插件

用于得知消息成功送达对方(以及成功解密,在使用 OTR时),启用后成功送达的消息后面会出现对勾。

下载 https://app.assembla.com/spaces/pidgin-xmpp-receipts/documents 中的 xmpp-receipts.dll 放入 pidgin 的插件目录即可,插件名为 XMPP Receipts,无额外选项。

2.登录

Pidgin 支持很多协议。如欲添加 xmpp 账号,请在“管理账号”对话框中点“添加”,“协议”选 xmpp、“用户名”填@之前的部分,“域”填@之后的部分,再输入密码。

注册新账号和添加已有账号靠下方的“在服务器上创建此账号”选项区分。

3.设置

强烈建议将账户配置的“高级”选项卡中的“连接安全性”选项设置为“需要加密”。并启用上述两个插件。

五、添加好友,无限畅聊

在最基本的情况下,知道对方的 JID 就可以和对方用 XMPP 通信了,当然更方便的做法是将对方添加为自己的联系人。不过对方有可能不在线,因此你往往需要向对方提出申请,让他的客户端主动告知你他的在线状态(虽然大部分客户端都可以在将对方添加为联系人时自动向对方提出申请,同时自动向对方启用告知自身的在线状态,但还是有少数场景需要手动提出申请)。

聊天时,在Xabber上,请在聊天页面点击右下方的锁状图标,启用OTR加密(对方若不在线,则无法加密聊天)。在 pidgin 上,请在开启 OTR 插件后,于聊天页面最上面一栏最右侧点击小人头像启动私密聊天。

注意,pidgin上的OTR启用后,默认的自动聊天记录归档会对该会话禁用(可通过插件的选项配置)。如仍需对该会话归档,请使用“对话”菜单中的“另存为”功能。

加密聊天建立后,还可以通过保密问题或直接验证指纹的方式对对方身份进行验证(这一步可选,但如有条件,请尽量实践)。

我们再补充一些有关 blabber.im 和 omemo 加密的内容:

Android 系统也可以使用 blabber.im,支持 omemo 加密。可以直接访问 https://f-droid.org/en/packages/de.pixart.messenger/ 下载 blabber.im, 这样只能安装到网页提供的 blabber.im 版本,不能及时更新 blabber.im。更推荐的做法是先下载 f-droid 的客户端,并通过 f-droid 客户端下载 blabber.im。

blabber.im 可以在初次登录时,在登录界面的右下角点击“创建新帐号”,然后写上用户名,并通过“选择您的 jabber 提供商”来选择服务器。如果 blabber.im 默认提供的注册服务器没有您喜欢的,也可以选中“使用自己的服务器”,然后在填写用户名处以“用户名@服务器”的格式填写您需要的 JID 实现注册。密码需要在下一界面填写。

blabber.im 的使用

登录

初次登录时,在登录界面的右下角点击“我已有帐号”,然后输入 JID 和密码后点击下一步,昵称和头像设置可保持默认。登录如果失败,请检查JID是否完整,一个完整的JID应是 xxx@xxx,例如 suibianjugelizi@dismal.de ,检查登录时是否正确输入。

设置

需要在“开始会话”界面(左上角会显示这四个字),点击右上角的三个竖点,找到“设置”。

blabber.im 设置中建议进行的操作有:

I.打开“专家模式”中的“启用多个账户”;
II.打开“专家模式”中的“使用 DNSSEC 验证主机名”;
III.关闭“安全和数据保护”中的“显示位置预览”;
IV.打开“用户界面”里的“彩色名称显示对方状态”(如果不选择“隐藏联系人”)。

如果您已经“启用多个帐号”,那么点击右上角的三个竖点,会出现“管理账户”,在“管理账户”界面,点击右上角带“+”的小人进入一个新界面,以“用户名@服务器”的格式填写您需要的 JID ,输入您需要的密码,选中或不选中“在服务器上注册新账户”,可进行注册或者多用户登录。