端到端加密

端到端加密（，縮寫：E2EE），是一種只有参与通讯的用户可以读取信息的通信系统。它可以防止潜在的窃听者——包括电信供应商、互联网服务供应商以及该通讯系统的提供者——获取双方通信的明文。此类系统被设计为可以防止潜在的监视或篡改企图。举例来说，使用端到端加密的通讯提供商，无法解密用户的消息，更无法将其客户的通讯消息提供给当局。

 密钥交换 
在一个端到端加密的系统中，用于加解密的密钥必须被、且仅被参与通讯的各方掌握。为实现这一目的，端到端加密系统可以使用事先预定好的一串字符（称为“预共享密钥”）来加密数据（如PGP），也可以使用该字符串生成一次性密码来进行加密（如）。此外，参与通讯的各方还可以通过协商（迪菲-赫尔曼密钥交换协议）创建密钥（如OTR）。

 现代的用法 
直到2016年，典型的基于中心服务器的通信系统尚不包括端到端加密功能。此类系统只能保证客户端到服务端之间的通讯受到保护。这意味着通讯双方必须信任服务端的运营者，因为他可以阅读通讯的全部明文内容。例如微信，使用者到微信的服务器的连接使用 MMTLS 加密，但仅仅加密于使用者和服务器之间，消息在服务器上传递时服务器会解密消息到原始文本。

相比之下，端到端加密被认为是更安全的。密钥是为最终用户分发的，比如如果在微信实现端到端加密，通信中的任意一方首先以另一最终用户的公钥加密文本，然后再以 MMTLS 的公钥加密，有两次加密，微信的服务器仅能解密第一重，只可以看到密文，而明文仅仅出现于通信两端用户的设备上。

对于使用普通即时通讯（IM）产品的用户，通常可以选择使用第三方客户端或加解密插件，以便在非E2EE协议的通讯中实现端到端加密。

一些非E2EE的通讯系统，例如拉维毕特和 Hushmail 宣称提供了端到端加密，但实际上并没有。 而另一些系统，例如Telegram和谷歌Allo，由于没有默认启用端到端加密而受到了批评。

 挑战 
 中间人攻击 

端到端加密能确保数据安全保密地传输于通讯的两端之间。但对于不怀好意的窃听者而言，与其尝试破解加密，不如冒充的消息接受方（例如，在密钥交换期间冒名顶替，或是设法将收件人公布的公共密钥替换成自己的）来得方便，因为此后，发信人发出的信息将以一个窃听者掌握的密钥进行加密。在获取解密的信息后，监听者还可以冒充发信人，与实际的接收者进行密钥交换、发送讯息，以避免通讯双方察觉异常。由于攻击者处在通讯双方之间，因此这种攻击方式被称为中间人攻击。

 身份验证 

大多数端到端加密协议都设计了某种形式的终端认证机制，专门用来防御中间人攻击，例如依靠数字证书认证机构或信任网络进行验证。其他的技术包括的针对用户公钥或预共享密钥生成密码哈希（设备指纹）。通讯各方可以通过外部（out-of-band）通信渠道来校验这一指纹，便可确认通讯的完整性和真实性（但不能保证机密性），之后再展开真实对话。如果指纹匹配的话，理论上可以确认不存在中间人攻击。

为了方便人工检查，指纹通常会显示为十六进制字符串。这些字符串通常会编排成特定格式并编组，以提高可读性。例如，128位MD5指纹会显示如下：
 43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8
在一些协议中，指纹会被显示成自然语言。这是通过在指纹块与文字之间建立一对一的映射来实现的，因此不会有熵损失。有些协议还能匹配地显示为用户的母语（如参照设备的语言设定）。 但是，在跨语言的环境下这种技术会带来一些问题。 为了提高本地化程度，一些协议选择将指纹显示为十进制字符串，而不是十六进制或自然语言串。 现代化的通讯应用也可以把指纹显示为二维码，供用户使用其他设备扫描读取。

 终端安全 

端到端加密并不能避免终端本身的安全风险。每个用户的计算机等设备上仍然存在密钥被盗（以进行中间人攻击），或是是被解密的信息被读取的可能性。即使是最完美的加密通信，他的安全性仍然受制于两端“信箱”的安全性。提升端点安全性的手段主要有：将密钥的产生、储存和加解密操作独立到一个小的智能卡上，例如Google Project Vault。Julie Bort, Matt Weinberger "Google's Project Vault is a tiny computer for sending secret messages" , Business Insider, NYC May 29, 2015 然而，由于明文输入和输出仍然对于用户设备来说依旧是可见的，因此恶意软件仍然可以实时窃听用户的对话。一个更强大的方式是将所有敏感数据隔离到一台由网闸完全限制的计算机上。Whonix Wiki "Air Gapped OpenPGP Key" 一些专家已经建议将PGP用于此目的： 

然而，正如布鲁斯·施奈尔所指出的，美国和以色列开发的“震网”病毒成功地通过离线渠道进入并瘫痪了伊朗在纳坦兹建设的核设施。Bruce Schneier "Air Gaps" , Schneier on Security, October 11, 2013 为了避免恶意软件导致的密钥泄漏、一种方法是将可信计算基分散在两个单向连接的计算机上，以避免恶意软件感染及其导致的敏感数据泄漏。

 后门程序 

一些公司还可能还会自觉不自觉地在他们的软件中引入后门，导致密钥协商机制被破坏，或是加密被绕过。在2013年，爱德华·斯诺登披露的信息显示，Skype有一个后门允许微软将其用户的信息泄漏给美国国家安全局，尽管在公开渠道Skype宣称其使用了端到端加密。

参见
 即时通讯软件：即时通讯软件列表、即时通讯软件比较
 VoIP軟體的比較
 客戶端加密


参考文献

延伸阅读


Category:密码学
Category:电信
Category:保密通信
Category:网络隐私