假设 MTProto 不安全,Telegram 秘密聊天是否安全?

信息安全 加密 diffie-hellman 即时通讯
2021-09-10 22:20:55

对于那些不知道的人:Telegram是一个部分开源的 Whatsapp 替代方案(服务器是封闭源代码),它提供秘密聊天和普通聊天。秘密聊天使用 Diffie-Hellman 密钥交换进行加密,并且是端到端加密的。可以使用条形码验证他的同伴的签名。普通聊天不是端到端加密的,但具有在一个设备之间同步的好处。

Telegram 因使用全新的协议MTProto而受到广泛批评。MTproto 是否真的安全不在这个问题的范围内,让我们假设它是不安全的。

由于 DH 用于秘密聊天,MTProto 的妥协是否会破坏秘密聊天?DH 和 MTproto 是否以这样一种方式耦合,即如果 MTProto 失败,DH 也会失败?或者它是分层的,因此两者必须失败才能使秘密聊天变得脆弱?

简而言之,如果一个人不信任 MTProto,那么感谢 DH,人们还能信任秘密聊天吗?

注意:MTProto 也使用 DH 进行设备注册,这是无关的。

有用的官方文件:

MTProto的详细描述

技术常见问题解答

秘密聊天

更新:

Anton Garcia Dosil 表示,DH 只是一种分发密钥的方式,本身并不是一种加密方法。这绝对是真的,我很抱歉在这里有点含糊。我的问题的一个更清晰的表述是:一旦两个对等方交换 DH 密钥并开始端到端加密,MTProto 是否使用已知安全的加密方法?还是它使用另一种自制的加密方案?如果它确实使用已知的加密方法 X 进行秘密聊天,那么 X 和 MTproto 是否以这样的方式耦合,即如果 MTProto 失败,X 也会失败?或者它是分层的,因此两者必须失败才能使秘密聊天变得脆弱?

2个回答

Diffie-Helmann 的目标(我猜他们以某种方式验证 DH)只是密钥分发。

MTProto 的目标是加密。

可以说,Diffie-Helmann 向 MTProto 提供密钥。它处于更高的水平。尽管 MTProto 已“损坏”,但仍会建立安全密钥。因此,DH 实际上并没有在其目的(密钥分发)上失败。

话虽如此,如果您能够通过以某种方式暴力破解密钥来破坏 MTProto(例如密钥长度很小),那么问题仍然在于 MTProto 而不是 DH。

该协议与其最薄弱的环节一样强大。在这种情况下,如果我们认为 MTProto 不可靠,那么整个协议就是不可靠的。

编辑: 查看MTProto中的规范。我不确定完全理解这个问题,但我相信您会问 MTProto 的“原子”元素是否会因耦合不良而降低有效性。

  • AES-256 用于加密,这是可以接受的。

  • 目前可以接受 SHA1 作为哈希函数。

  • 密钥建立的 Diffie-hellman 可以(只要有身份验证)。稍后建立的密钥派生出一个用于加密的具有新鲜度(时间和序列号)的密钥,以提供实体身份验证。

对于这个协议,我能看到的唯一问题是 DH 是否没有经过身份验证。如果不是这种情况,任何人都可以生成加密密钥(包括在 MITM 中获得的共享密钥和明文传输的新鲜源)。

对于端到端,他们也使用 AES-256。指纹看起来有点蹩脚(并重复使用加密密钥)。

摘要 = md5(key + iv) 指纹 = substr(digest, 0, 4) XOR substr(digest, 4, 4)

此外,他们似乎在 ECB 模式下使用 AES,这也很糟糕,但总体而言,该协议对于普通用户来说似乎“还可以”。如果您是斯诺登或阿桑奇,也许可以使用其他东西以防万一;)

他们在 IGE 模式下使用 AES,而不是在 ECB 模式下使用。但尽管如此,对于普通用户来说应该没问题,而且总比没有分组密码模式好。

数据使用 256 位密钥 aes_key 和 256 位初始化向量 aes-iv 进行加密,使用具有无限乱码扩展 (IGE) 的 AES-256 加密

通过电报