created by 杨金彪
什么是端到端加密?
信息安全领域的大多数专家都承认,端到端加密是确保数据交换安全的最可靠方法之一。按照这种方法,在端到端加密应用之间传送的消息只能由这些应用的用户读取,任何第三方都无法读取。通过使用唯一密钥进行数据加密和解密,可以实现此类功能。只有终端用户可以生成和存储这些密钥。
端到端加密系统旨在确保,即使不法分子得以访问传输的数据,其也无法破译数据内容。端到端加密的这项与众不同的特征还体现在所发送的消息可能存储到的服务器上。
由于服务器并不参与密钥生成过程,因此服务器所“看到”的只是在相互通信的用户间传送的加密消息。所以,即使在服务器端泄露了数据,也没有人能够读懂数据的具体内容。
我们来详细了解一下端到端加密的工作原理,以便更好地理解这种加密方式如何保证数据安全。(端到端加密技术详解请见《移动端安全通信的利器——端到端加密(E2EE)技术详解》)
端到端加密的工作原理
按照端到端加密方法,当聊天会话开始时,每个用户所使用的应用都会生成两个加密密钥。此类密钥可以使用PGP(Pretty Good Privacy,是一个基于RSA公钥加密体系的邮件加密软件)加密应用加以生成。自1991年PGP首次发布以来,至今尚无证据显示其被破解过。
1第一个密钥是公钥
端到端加密应用相互之间会交换这种密钥。
2第二个密钥是私钥
私钥并不会从设备中发送出去。利用公钥,用户只能对消息进行加密。要想解密这种经过加密的消息,按照端到端加密方法,应使用对应的私钥。
如果第三方可以获得公钥也无妨,因为公钥只能用于端到端数据加密。正因为此,你大可以通过开放的通信信道来传送公钥。
webrtc (m74) 的代码竟然有端到端加密的接口。
// E2EE Custom Video Frame Encryptor (optional)
FrameEncryptorInterface* const frame_encryptor_ = nullptr;
看了一天代码 找到了
frame_encryptor_->Encrypt(
cricket::MEDIA_TYPE_VIDEO, first_packet->Ssrc(), additional_data,
rtc::MakeArrayView(payload_data, payload_size),
encrypted_video_payload, &bytes_written) != 0) {
哈哈哈哈哈哈哈哈哈哈
自己直接实现一个替换了就行了.