什么是端到端加密 (E2EE)?

什么是端到端加密?

端到端加密 (E2EE) 是一种消息传递类型,它使消息对所有人保持私密,包括消息传递服务。使用 E2EE 时,消息仅在发送消息的人和接收消息的人面前以解密形式出现。发送者是对话的一个“端”,而接收者是另一个“端”;因此得名“端到端”。

将端到端加密想象成一封信,它在密封的信封中进行邮寄。发信的人可以阅读它,收信的人可以打开信封并阅读它。邮政服务员工无法阅读这封信,因为它仍然密封在信封中。

与其他类型的加密相比,端到端加密有何独特之处?

许多消息传递服务提供加密通信,但并不是真正的端到端加密。消息在从发送者到服务的服务器的过程中,以及从服务器到接收者的过程中是加密的,但是当它到达服务器时,它会短暂解密,然后再重新加密。(常见的加密协议 TLS 就是这种情况,请阅读下文了解更多信息。)

想象一下,如果有一家邮政服务机构,在接受某人的投递信件后,打开信封并将信件转移到一个新信封中,然后再将其递送给收件人。这封信的内容可能会暴露给邮政服务的员工。

该服务可以承诺不会阅读解密形式的邮件——就像上面示例中的邮政服务可能承诺其员工在将信件转移到新信封时永远不会阅读一样。但是发送消息的人只能被迫相信消息服务会信守承诺。

E2EE 是“端到端”的,因为中间的任何人都不可能解密消息。用户不必去信任他们正在使用的服务不会阅读他们的消息:服务根本无法做到。想象一下,如果有人不是用信封寄信,而是把它放在一个只有他们有钥匙的锁着的盒子里寄出。现在,除了预期的收件人之外,任何人都无法阅读这封信。这就是 E2EE 的运作方式。

加密是如何运作的?

加密的运作原理是更改数据,以便只有拥有特定知识(即密钥)的人才能解释数据。假设 Alice 向 Bob 发送了一条消息,但 Chuck 在消息到达 Bob 的途中窃取了该消息。如果 Alice 使用她和 Bob 都拥有的密钥对消息进行加密,Chuck 就无法读取它,而 Alice 的消息仍然是安全的。相反,如果消息到达 Bob 处,Bob 能够使用他拥有的密钥解密消息,然后他可以阅读消息。

密钥可以在不同的环境中采用不同的形式。在上面的示例中,密钥可能就是一组用于解密 Alice 消息的指令,十分简单。对于互联网上的通信,密钥是一串位元,它在用于加密和解密数据的复杂数学方程式中发挥作用。

使用 E2EE,可以加密和解密消息的密钥仍然保存在用户的设备上。如果 Alice 和 Bob 使用一个 E2EE 消息传递应用程序,该应用程序会在 Alice 的手机上保存一个密钥,在 Bob 的手机上保存一个密钥。Alice 的手机用密钥加密她的消息,然后将加密的消息传输到 Bob 的手机。Bob 的手机会自动应用密钥并解密消息,从而允许 Bob 阅读它。

E2EE 使用什么样的加密方式?

端到端加密使用一种专门的加密形式,称为公钥加密(有时也称为 非对称加密)。公开密钥加密使双方能够进行通信,而不必通过不安全的渠道发送密钥。

公钥加密使用两个密钥而不是一个:一个公钥和一个私钥。虽然包括消息传递服务在内的任何人都可以查看公钥,但只有一个人知道私钥。用公钥加密的数据只能用私钥(不是公钥)解密。这与对称加密形成对比,对称加密只使用一个密钥来加密和解密。

假设 Alice 和 Bob 需要更改他们用来加密通信的密钥。Alice 是否应该简单地向 Bob 发送一个新密钥?不,因为 Chuck 可能会在传递给 Bob 的途中窃取并复制新密钥,然后他可以解密他们未来的所有通信。相反,Alice 和 Bob 决定使用公钥加密。Alice 为自己保留了一个私钥,并将公钥发送给 Bob ——这样一来,Chuck 是否在传输过程中窃取了密钥并不重要,因为只有 Alice 拥有私钥。

E2EE 和 TLS 有什么区别?

传输层安全 (TLS) 是一种加密协议,与 E2EE 一样,它使用公钥加密并确保没有任何中间方可以读取消息。

但是,TLS 是在用户和服务器之间实行的,而不是在两个用户之间实行。这可以保证数据在进出服务器的传输过程中是安全的,但服务器本身上的数据是解密的形式。这通常是必要的——例如,如果用户正在使用 Web 应用程序,则服务器需要访问他们的数据才能使应用程序运行。但是,从隐私的角度来看,这并不适用于所有情况。例如,如果用户想要互相发送消息,他们可能不希望服务提供商能够看到他们的消息。

端到端加密如何支持隐私?

E2EE 确保除了正在相互通信的两个人之外,没有人可以看到消息(前提是他们使用的设备没有遭到入侵或被盗)。如果实施得当,它不需要用户相信服务会正确处理他们的数据。因此,E2EE 让人们可以完全控制谁可以阅读他们的消息,从而使他们能够保持消息的私密性。

端到端加密有哪些限制?

E2EE 确保消息在传输过程中的安全(当它们从一个人传递到另一个人时)。但是一旦消息到达目的地,它就不会再保护它们。

假设 Alice 和 Bob 正在使用 E2EE 应用程序,但 Chuck 偷了 Bob 的手机。现在 Chuck 可以看到 Alice 给 Bob 的消息了。如果 Chuck 不想费心去偷 Bob 的手机,他也可以偷偷溜到 Bob 身后,越过他的肩膀查看 Alice 的信息。或者,他可以尝试用恶意软件感染 Bob 的手机,以窃取 Alice 的消息。不管怎样,仅 E2EE 并不能保护 Bob 免受此类攻击。

最后,E2EE 不能保证是面向未来的。如果实施得当,现代加密方法足以抵抗来自世界上最强大的计算机的加密破解工作。但未来计算机可能会变得更强大。量子计算机如果得到发展,将能够破解现代加密算法。使用 E2EE 目前能够保证消息的安全,但可能无法永久保证消息的安全。

什么是端到端加密后门程序?

在网络安全中,后门程序是绕过系统正常安全措施的一种方式。想象一栋完全安全的建筑物,所有门上都有多把锁,只有后面的一扇隐藏门没有上锁,而且只有少数人知道这扇门。加密后门程序有点像这样;这是一种访问已被加密“锁定”的数据的秘密方式。一些加密后门程序实际上是故意内置到服务中的,以允许服务提供商查看加密数据。

曾经有过这么一些案例,服务声称提供安全的 E2EE 消息传递,但实际上已经在其服务中构建了后门程序。他们可能出于多种原因这样做:访问用户消息并扫描它们是否存在欺诈或其他非法活动,或者全面监视他们的用户。如果用户希望将消息保密。

一些人认为,E2EE 服务提供商应在其加密中建立后门程序,以便执法机构在必要时可以查看用户信息。数据隐私倡导者往往不同意,因为后门程序会削弱加密并减少用户隐私。

文章来源:
https://www.cloudflare.com/zh-cn/learning/privacy/what-is-end-to-end-encryption/

[1.8.5] 修复了编译后的一个重大问题导致栈奔溃的问题。 [1.8.3] 优化了 E2EE 内存中同进程库的加载机制,更加可靠。 E2EE程序在内存中永远只保留一个版本,无论何种方式调用E2EE,只要是同进程都使用外层服务器所使用的E2EE版本,不会进行重复加载。 [网站服务器] 重构了 取配置文本() 。剔除了英文命名,加入了获取JSON形式的文本。可通过参数 是否为JSON 获取。 加入了 取验证器(验证器文件)。可通过验证器文件名载入验证器。 优化了 服务器日志处理。当打开日志文件失败(日志文件为只读等情况)时,可顺利启动服务器。 [其它] 创建文本() 修复了“``”时无法转换为双引号的问题。 重新处理了 E2EE通用服务模块。 把网站做成服务时,请不要调用 网站.初始化() 方法。资源或者依赖路径的初始化,请放在“网站.订阅初始化函数”对应的回调函数中。 [1.8.2] [数据库连接池] 加入了 输出执行SQL 和 执行时间 到日志的功能。对应的方法“是否输出SQL”和“置是否输出SQL”。可随时开启和关闭(线程安全)。 [网站服务器] 加入了 等待结束 方法。等待服务器运行直到停止或者结束。如果服务器在运行中,则此操作会一直等待并且会阻塞当前线程 加入了 清除页面缓存 方法。可通过请求相对路径,清除服务器上的 静态文件缓存 和 动态请求缓存 中的缓存数据。 修复了 大文件(2G以上) 获取尺寸无效的问题。这个是因为之前为网站打包工作做改造时,统一使用了32位数据长度的文件信息获取方法,32位有符号的数值无法描述2G以上的文件尺寸,会产生越界。 !!! 此功能影响到 网站打包 功能,所以可能需要新版的网站打包功能做支持。或者手动调用  网站打包  功能对网站进行打包。 [1.8.0] SSL部分加入了苹果ATS(强制HTTPS)支持。开发小程序对接微信等方面更加友好。E2EE服务器现已支持PFS完全前向保密机制。 [网站服务器] 加入了 动态缓存页 请求数据缓存的功能。 修复了 文件上传尺寸过大等情况下,还能获取上传成功的消息状态。 上传 在配置中 最大上传尺寸 单位改成了 KB 上传 文件类型加入了白名单模式。 如果只限定范围内的文件类型,上传文件类型只要填写后缀即可,例如:jpg;gif;png;webp(此时只允许这几种后缀的文件上传) 如果允许上传大部分类型,而只限定不允许某些类型,则可以使用 * 来代替所有,之外的后缀都不允许。例如:*;exe;com;bat;msi(此时除了exe...msi之外的所有类型都允许上传) 修复了 某些情况下,静态缓存文件无法准确响应 gzip 的问题。 [服务器请求] 加入了 验证参数() / 验证所有参数() 功能。自动匹配和验证 远程服务/视图函数 的参数。响应验证器设置。 [存取键值表/存取列表] 修复了 键值表/列表 在某些特定环境下可能解析JSON或创建小数类型对象崩溃的问题(D-OWL)。 [对象工厂] 加入了 创建时间戳() / 载入时间戳() 功能。能够生成和载入秒或毫秒级的时间戳。 修复了 创建文本从时间() / 创建时间从文本() 中的国际时间转换问题。 重写了 创建文本从时间() 和 创建时间从文本()。不会再因为格式不匹配阻塞或者崩溃。 优化了 Base64解码 函数,可兼容包含换行等号空格等情况。 [网站客户端] !!! 重要更新:返回信息头如果有多个,将不会再转换为存取列表,而是会不停的追加多行文本,一行表示一条数据。 修复了 键值表 作为POST参数时可能引起的访问失败问题。 加入了 自动跳转时,获取每次服务器返回的信息头。 修复了 代理设置无效的问题。可正常使用代理服务器。 [网页内容解析器] 修复了标签和属性中出现“-”和“_”无法完整解析名称的问题。 [加解密对象] 修复了 RSA 加解密签名时,设置输出小写十六进制文本始终为大写的问题(番茄) [数据验证器] 字母中文等验证条件加入了扩展字符支持。允许在字母等验证时可包含自定义字符“空格”“中划线”等。 jimstone
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值