XMPP加密通讯-简明教程

信息安全
教程

#1

注:本帖根据“最成熟的邦联式即时通信系统——XMPP 简介”缩略后编写,主要面向初次使用XMPP的萌新以及宣传材料之用。详细技术问题还请参见原帖。

本教程的PDF版本下载:XMPP教程.pdf (243.2 KB)


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

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

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

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

二、注册XMPP账号

互联网上有很多开放的 XMPP 服务, https://list.jabber.at/ 有一个列表;在正式尝试在服务器上注册帐号之前建议用 xmpp 观测站服务(https://xmpp.net/https://check.messaging.one/ )检查一下服务器的特性。我们测试过的主要有 xmpp.is、404.city、chinwag.im 、jabber.cat、jabb3r.orgxabber.orgjabjab.de、yax.im 等,不过不建议同志们在这几个服务器上扎堆,以免被针对封锁。

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

在此强调:xmpp 账户不是邮箱地址,只是形式类似。

请妥善保管账号和密码,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 能用的即时通信服务基本上都是圆形监狱。所以,如果您是烂苹果的受害者,马列之声只好建议您卖掉 iThing 这个烂苹果的禁脔,换更便宜也更自由的 android 设备了。


四、客户端的使用

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

Xabber的使用

1.登录

用户名一栏填写自己的JID,取消选中第二个勾,如果登录时提示安装某play,点忽略。登陆成功。
注意:xabber 未实现通过 xmpp 协议直接注册新账号的功能,因此对大部分未实现 web 注册接口的服务器您可能需要用另一个支持注册新账号的客户端(如 Pidgin)来完成注册的步骤。

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启用后,默认的自动聊天记录归档会对该会话禁用(可通过插件的选项配置)。如仍需对该会话归档,请使用“对话”菜单中的“另存为”功能。

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


附:欢迎成功使用的同志,进入我们的接待室: 9773@conference.chatme.im

密码是该贴的题目


如何投身到一些切实的运动中去?
空谈误国,实干兴邦
#2

以下开放答疑

有关 xmpp 的疑问欢迎在此以跟帖形式提出,但提问前请确保自己满足了版规,否则可能遭到以惩前毖后,治救人为目的、以讽刺为主要形式的轻微惩罚。
我们不惯伸手党。


#3

请问如何进入接待室啊?


#4

请仔细阅读本版版规及本教程顶端注释。


#5

同志,我尝试连接了一下,结果会议离线


#6

您用的是哪个服务器?


#7

007jabber


#8

我也是这个原因才问的,抱歉我没说清楚


#10

007jabber.com 的配置不规范(详情见),建议换用其他的服务器。


#11

好吧……
谢谢同志


#12

您这多半是聊天室名和/或密码不对,请检查。


#13


换了404.city,依旧是离线


#14

检查一下聊天室密码再试试,另外有可能是 404.city 暂时无法解析 chatme.im 的域名。


#15

至少据我测试,404.city 上的账户可以正常连入接待室。


#16

未授权什么意思?


#17

密码(口令)一致,聊天室才授权您接入。


#18

会议显示离线,换了好几个地址还这样 包括404.city…


#19

404.city 上的用户接入接待室毫无问题——只要密码正确。


#20

同志,会议名称是什么


#21

请回去看本版版规和顶楼。