自定义加密 GSM 通话
Posted
技术标签:
【中文标题】自定义加密 GSM 通话【英文标题】:Custom encrypt GSM calls 【发布时间】:2012-11-27 01:23:08 【问题描述】:是否可以使用 java(JME 或 android)捕获语音音频流,对其进行自定义加密,然后通过常规 GSM 呼叫将其作为常规流发送?当然,在其他手机上解密密码。是否允许应用程序级别的 java 拦截音频流或在硬件级别禁用它?
是否已经有应用程序可以做到这一点?
【问题讨论】:
我认为这只有通过你的设备生根才能实现。 【参考方案1】:根据上面的几个 cmets,语音呼叫的访问级别只能通过 root 电话实现,甚至特定于设备。对于通用加密语音应用程序,您可以做的最好的事情是使用数据连接的 VOIP/SIP 风格的应用程序。
即使您可以通过模拟呼叫进行加密也并非易事。 GSM 编解码器中使用的压缩针对语音进行了优化,并对信号的特性做出了某些假设。您不能只使用简单的模拟 -> 数字 -> 加密 -> 模拟 -> 电话网络 -> 模拟 -> 数字 -> 解密 -> 模拟类型的信号链。
您可能会注意到我已经将模拟作为一个步骤包含在内,因为 GSM 网络的所有最终数字编码都是由 GSM 无线电芯片组执行的,即使您已获得 root 权限,您也无法从任何手机访问。
【讨论】:
那么GSM频道没有getAudiostream()和setAudioStream()接口吗? (JME/Android) 不,虽然它们可能在技术上显示为受类层次结构支持(不确定)我相信它们实际上不会在任何手机上工作。【参考方案2】:移动网络在语音信道上执行有损转码,例如使用
“本机”编码/解码 回声消除器, 噪音发生器或 编解码器更改。因此,我怀疑加密的语音数据流是否能够通过移动网络以允许接收端解密的方式幸存下来。
简单的类比:音频 -> 加密 -> MP3 压缩 -> MP3 解码 -> 解密 -> 音频。这可能行不通。或者:如果您完成这项工作,那么您就有机会通过语音载体传输加密流。
您的选择是在数据载体上执行此操作,通过 IP 传输加密语音。但这需要在移动设备上安装单独的电话应用程序。
【讨论】:
我认为 mp3 示例与此处无关。 mp3 是特定于信号的压缩。在 GSM 已经有加密和压缩(如果我记得的话,A51)所以用你的 mp3 类比 GSM 是不可能的。我可以使用与 GSM 相同的算法,只需使用 MY 密钥。 主要问题是我有没有通过 JME/Android 获得 GSM 频道的 get/setStream() 接口。 GSM 也可以进行信号特定压缩,这就是我的 MP3 示例的重点。无法通过 GSM 语音传输压缩的 MP3。您不能将 GSM 算法与您自己的密钥一起使用,因为 GSM 网络在 BSC 中解密,即这不是端到端加密。您需要让网络知道您的密钥。即使您有 get/setStream(),您在此处注入的数据也必须具有音频属性,即它们必须与 GSM 编解码器一起使用。加密的音频可能不起作用。 你不能用你自己的密钥使用 GSM 算法,因为 GSM 网络在 BSC 中解密,这不是端到端加密。 所以解密会失败,但是这仅意味着呼叫固定电话不起作用,但使用其他解密它的手机,它应该。 即使你有 get/setStream(),你在这里注入的数据也必须有音频属性,即它们必须与 GSM 编解码器一起工作。 getStream() 应该返回 byte[],而 setStream(byte [] stream) 以二进制流为参数,因此二进制流是二进制流,与模拟域中的内容无关。 readStream() 返回 byte[],更准确地说是 writeToStream(byte[] data)。 传输通道不保证透明。因此,无论 B 用户(被叫号码)是固定的、移动的还是 VoIP,您的流都不会被可靠地传输。【参考方案3】:GSM 全速率语音编解码器以 13 kbits/s 的速度运行,并使用常规脉冲激励 (RPE) 编解码器 - 这意味着 GSM 中的麦克风和语音检测针对通过时分复用“数字”通道进行传输进行了优化,然后使用 GMSK(一种连续相位频移键控调制方案)通过空中接口进行调制。
“平均”语音模式以外的噪声严重失真(或抑制) - 例如 DTMF(音调)在设备上接收效果不佳,必须由网络核心传输,但音调专为听障人士设计运作良好。声音在进入编解码器(麦克风设计)时被整形(过滤),以便在另一端实现最佳编解码器检测和再现。
总而言之 - 不可能在 GSM 系统中“重新调制”,因为入口点不是无线电(空中接口),甚至无法访问 GSM 数字帧。您唯一的语音呼叫访问权限是 GSM 编解码器,它在有限的音频频谱中期待语音。
但是 - 如果您可以为 GSM 编解码器创建类似语音的波形,那么您可能有前进的道路
【讨论】:
【参考方案4】:我知道有些应用程序的作用类似于语音转换器,它们可以改变您的声音并通过 gsm 语音传输该声音。也许您可以制作一个应用程序来接收语音,然后将其调制为相移键控或数字无线电单拨号,例如在甚高频和高频无线电通信中使用的火腿并将音频传输到 gsm,然后将其解调回语音,而不是直截了当调制解调,您可以添加 pgp、aes 或任何您喜欢的加密。我也有兴趣看到这样的项目。
如果您可以使用它通过语音 gsm 通道(如过去的 56k 调制解调器而不是 gprs 通道)来传输数据,我认为这也很棒。
见参考
http://freedv.org/tiki-index.php
http://www.aprs.org
【讨论】:
【参考方案5】:在扬声器/MIC 站点对模拟语音进行编码更实用。或者,你必须root Android才能修改phone.APP。 就像AECall一样。它加密和解密耳机。 http://mrhyper.blogspot.tw/2015/12/iphone-encrypt-phone-call_9.html
【讨论】:
以上是关于自定义加密 GSM 通话的主要内容,如果未能解决你的问题,请参考以下文章
Android技术分享| Android 自定义View多人视频通话控件
Android技术分享| Android 自定义View多人视频通话控件