我试图理解如何在linphone应用程序上实现srtp。当我激活电话上的srtp功能时,将使用AES-ICM加密方法保护数字数据通信。但我在它的实现中发现了一些有趣的东西。
AES-ICM方法中的加密过程使用密钥流后缀和RTP分组有效载荷(明文)之间的xor运算来生成密文。在aes运算中使用加密密钥来生成后缀密钥流。然后,该密文将从发送者发送到接收者。
在SRTP的实现中,显示了发送方和接收方使用或生成的明文、密钥和密文。我发现了发送者和接收者中每个包的密文和密钥之间的差异。当使用特定密钥加密明文并在发送者、接收者、接收到的密文和使用的密钥中生成密文时,明文具有差异。然而,奇怪的是,我发现接收方对明文的解密结果与发送方加密的结果是相同的。传来的声音传来了,谁能解释这是为什么?
显示文本的代码:https://pastelink.net/1re6m
日志端点1:https://pastelink.net/1re93
日志端点2:https://pastelink.net/1re9c
然后,我尝试使用srtp_unprotect_mki模块的srtp_protect_mki和srtp_cipher_decrypt模块中的srtp_cipher_encrypt代码来停用加密功能。这不是好像它没有像实现Null Cipher那样加密有效负载吗?但是,相同的发现是密文和明文,它们与发送者和接收者没有任何共同之处,以及扬声器上的声音包含噪声,但无法识别正在发送的内容。有人能解释一下这个吗?
例如,在端点1用于加密的第一个明文是:"d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d……“生成密文:"7c8fb6c2f783e5fdb34116bb5d5ce27475bf400b4 .“
然后,在充当接收器的端点2处,接收到的第一个密文是"e2bd90a5275e44ac2d4fc332cfff138e743c39c80b .“生成明文:"d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5 .“
谢谢
发布于 2020-07-17 23:21:57
我从另一个论坛找到了答案。在我的例子中,这是因为VOIP服务器(我使用的是Asterisk )将解密每个传入的数据包进行处理,然后再将其发回。然后,在发送到最终目的地之前,此包将由Asterisk重新加密。进入的每个包都将被解密,退出星号的包将被重新加密。因此,在我的例子中,这是因为使用了voip服务器技术。
https://stackoverflow.com/questions/62740157
复制相似问题