我计划开发 Android 应用程序,它将加密/解密语音数据,以便各方可以使用安全通道进行通信。所以问题是:如何在 GSM 通话期间截取语音/音频数据?有没有可能?我应该使用 Android NDK 还是其他东西?
6 回答
在 GSM 中,由于信道特性,不可能对语音进行加密并通过语音信道发送。通过语音通道发送的信号必须是(类似于)人声,因为声码器(CELP)用于通道编码。
因此,即使您可以访问低级库并使用它来加密语音以直接通过语音通道发送,被叫方也无法接收和解密信号。
然而,加密语音可以通过数据通道作为数据发送。
这是在操作系统的底层发生的事情。您将无法在应用程序级别访问此信息。
我建议您像 SipDroid 一样研究 VOIP。我敢打赌,您将能够将其设置为轻松使用加密。(srtp 而不是 rtp)
即使您的 SipDroid 不支持此功能,它也是开源的,因此您可以添加此功能。
Android 上尚无法进行通话录音。请参阅此功能请求。
您可以从麦克风录制您的声音,但您不能录制对方的声音。如果您只想录制语音,请使用 android.media.MediaRecorder.AudioSource.MIC
简单的回答,不!
如果您能够访问低级库并使用它来加密语音以直接通过语音通道发送它,那么被叫方将不可能接收和解密信号,但是如果您调制加密的语音数据并转换它语音数据转换成语音波形并通过GSM语音通道发送,那么对方肯定会接收和解密语音。
我知道有些应用程序可以像语音转换器一样改变你的声音并通过 gsm 语音传输。也许您可以制作一个应用程序来接收语音,然后将其调制为相移键控或数字无线电单拨号,例如在甚高频和高频无线电通信中使用的火腿并将音频传输到 gsm,然后将其解调回语音,而不是直截了当调制解调,您可以添加 pgp、aes 或任何您喜欢的加密。我也很想看到这样的项目。
我认为如果您可以使用它通过语音 gsm 通道(如过去的 56k 调制解调器而不是 gprs 通道)传输数据,那将是非常棒的。