什么是端到端加密传输
端到端加密是一种数据传输方式,除了原始发送者和目标设备外,任何人都无法读取数据。原始发送设备和目标设备是“端到端”链中的“端”。
中间服务器或设备只能看到加密的字节(或密码),它们看起来就像随机的噪音。没有任何一方或第三方服务能够重建或还原原始数据。
端到端加密的重要性
端到端加密使得服务无法在其服务器上以集中方式读取或处理数据。这消除了大规模数据泄露的风险,并降低了潜在攻击者的价值。
许多服务仅对“传输中”或“静态”的数据进行加密,这意味着服务本身可以在任何时间读取和处理数据。这意味着任何有权访问服务内部系统的人都可以访问数据。过去十年,我们都听说过一些最大公司的数据泄露事件。每当数据被集中存储或存储在一起时,它都是一个高风险的、高价值的攻击目标。
端到端加密与“传输中”或“静态”加密的区别
当数据经过端到端加密并传输到服务时,服务无法读取和处理数据。只有原始设备和最终目标设备才能解密、读取和处理发送的数据。这与“传输中”或“静态”加密相比要私密得多且安全得多。
那些对“传输中”或“静态”数据加密的服务只能防止未经授权的第三方读取或处理数据。服务本身或任何有权访问服务内部系统的人随时都可以读取和处理未加密的数据。
端到端加密的例子
以使用DROP.space从一部智能手机(A)向另一部智能手机(B)发送照片的简化示例:
- A手机访问DROP.space,创建一个新空空间和可共享空间链接。可共享链接的秘密钥匙只被A手机知道,不会被发送到远程服务器。
- A手机添加一张照片。它在本机上完全加密,然后加密的字节(密码)被传输到远程服务器进行持久化。远程服务器无法看到或从密码重建原始照片。
- A手机与B手机共享可共享空间链接,类似于DROP.space/s/abcd#1234链接中#后面的部分(片段或哈希)是一个“秘密钥匙”,只被A和B手机知道。
- 浏览器被要求不要将#后面的部分发送到服务器。所以,DROP.space的服务器永远不会看到或知道秘密钥匙。
- B手机打开链接,连接到DROP.space/s/abcd,并下载照片的加密版本。
- 现在,B手机可以使用可共享空间链接的秘密钥匙#1234来解密照片,并在浏览器中显示它。
在任何时候,DROP.space或DROP.space团队的服务器都不知道或需要知道秘密钥匙或原始照片的未加密信息。以保护隐私的方式安全共享并不需要很复杂。
DROP.space使用的加密类型
- DROP.space对所有传输中的数据使用SSL/TLS。
- 存储在我们的RDBMS中的数据在静态和传输中都是加密的。
- 所有端到端加密操作都使用libsodium 库。每个项目的名称和相关内容都是使用XSalsa20-Poly1305与秘密钥匙加密的。
- 每个文件都是通过libsodium的秘密流算法ChaCha20Poly1305-IETF以≈4MB的块进行加密的。
- DROP.space内的不同实体都有一对公私钥,用于加密和/或签名。加密密钥对使用X25519和XSalsa20-Poly1305。签名密钥对使用Ed25519。
- 每个设备生成两对公私钥,一对用于加密,一对用于签名,私钥永远不会离开设备。
- 每个空间都有一对公私钥,用于加密并密封每个项目的秘密钥匙。
- 当一个设备被添加到空间时,空间的私钥被加密为设备的公钥,并发送给那个设备。
- 当一个项目被添加到空间时,项目的秘密钥匙被加密为空间的公钥,然后密码与空间的所有成员共享。
- 每个可共享空间链接:有一对用于加密和密封空间私钥的公私钥。有一个用于加密链接私钥的秘密钥匙。