首页 > 解决方案 > 在 linphone 的 SRTP 中实现 AES CM

问题描述

我试图了解如何在 linphone 应用程序上实现 srtp。当我在手机上激活 srtp 功能时,将使用 AES-ICM 加密方法保护数字数据通信。但我在它的实现中发现了一些有趣的东西。

AES-ICM 方法中的加密过程使用密钥流后缀和 RTP 数据包有效载荷(明文)之间的异或运算来生成密文。加密密钥用于 aes 操作以生成后缀密钥流。然后这个密文将从发送者发送到接收者。

在 SRTP 的实现中,我显示了发送方和接收方使用或生成的明文、密钥和密文。我发现了发送方和接收方中每个数据包的密文和密钥之间的区别。当使用特定密钥对明文进行加密并在发送方、接收方产生密文时,接收到的密文和使用的密钥是有区别的。然而,我发现奇怪的是,在接收方解密明文的结果与在发送方加密的明文是相同的。而传来的声音传来,谁能解释一下这是为什么?

显示文本的代码:https ://pastelink.net/1re6m

记录端点 1:https ://pastelink.net/1re93

记录端点 2:https ://pastelink.net/1re9c

然后,我尝试使用 srtp_protect_mki 和 srtp_unprotect_mki 模块中的 srtp_cipher_decrypt 模块中的 srtp_cipher_encrypt 代码来停用加密功能。是不是好像它没有像实现 Null Cipher 那样加密有效载荷?但是,发现相同的是密文和明文,它们与发送者和接收者没有任何共同之处,以及扬声器上的声音包含噪音而无法识别正在发送的内容。任何人都可以解释一下吗?

例如,第一个端点用于加密的明文是:“d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d ......” 生成密文:“7c8fb6c2f783e5fdb34116bb5d5ce27475bf400b4 ........”

然后在充当接收者的端点 2 处,收到的第一个密文是“e2bd90a5275e44ac2d4fc332cfff138e743c39c80b ......”生成明文:“d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5 .......”

谢谢

标签: encryptionaesvoiplinphone

解决方案


我从另一个论坛找到答案。在我的情况下,这是因为我正在使用 Asterisk 的 VOIP 服务器将解密每个传入的数据包以进行处理,然后再将其发回。然后这个包将被 Asterisk 重新加密,然后被发送到它的最终目的地。每个进入的数据包都将被解密,而退出星号的数据包将被重新加密。所以,就我而言,这是因为使用了 voip 服务器技术。


推荐阅读