Пользовательское шифрование звонков GSM

Можно ли поймать голосовой аудиопоток с помощью java (JME или Android), индивидуально зашифровать его, а затем отправить как обычный поток через обычный вызов GSM? И конечно расшифровать шифр на другом телефоне. Разрешено ли Java на уровне приложения перехватывать аудиопоток или он отключен на аппаратном уровне?

Есть ли уже приложения, которые это делают?


person ratko ratko    schedule 09.12.2012    source источник
comment
Я думаю, что это возможно только при рутировании вашего устройства.   -  person rekire    schedule 09.12.2012


Ответы (5)


Мобильные сети выполняют транскодирование с потерями на голосовых каналах, например, с

  • "Родное" кодирование / декодирование
  • эхоподавители,
  • генераторы шума или
  • кодек меняется.

Поэтому я сомневаюсь, что поток зашифрованных голосовых данных выживает при передаче через мобильную сеть таким образом, чтобы обеспечить дешифрование на принимающей стороне.

Простая аналогия: аудио -> зашифровать -> сжатие MP3 -> декодирование MP3 -> расшифровать -> аудио. Это может не сработать. Или: если вы сделаете эту работу, у вас есть возможность транспортировать зашифрованный поток через носитель голоса.

Вы можете сделать это на носителе данных, передавая зашифрованный голос через IP. Но для этого требуется отдельное приложение телефонии на мобильных устройствах.

person Bernd    schedule 09.12.2012
comment
Я не думаю, что здесь уместен пример mp3. mp3 - это сжатие, специфичное для сигнала. В GSM уже есть шифрование и сжатие (A51, если я помню), поэтому с вашей аналогией с mp3 GSM было бы невозможно. Я мог бы использовать тот же алгоритм, который использует GSM, только с МОИМ ключом. Главный вопрос: есть ли у меня интерфейс get / setStream () для канала GSM через JME / Android? - person ratko ratko; 09.12.2012
comment
GSM также выполняет специфическое сжатие сигналов, в этом вся суть моего примера с MP3. Передача сжатого MP3 через голосовую связь GSM не работает. Вы не можете использовать алгоритм GSM со своим собственным ключом, потому что сеть GSM расшифровывает в BSC, то есть это не сквозное шифрование. Вам нужно будет сообщить сети о вашем ключе. Даже если у вас есть get / setStream (), данные, которые вы здесь вводите, должны иметь свойства звука, то есть они должны работать с кодеками GSM. Зашифрованный звук, скорее всего, не будет работать. - person Bernd; 10.12.2012
comment
Вы не можете использовать алгоритм GSM со своим собственным ключом, потому что сеть GSM расшифровывает в BSC, это не сквозное шифрование. Таким образом, расшифровка не удастся, но это означает, что вызовы на стационарную телефонную связь не будет работать, но с другим сотовым телефоном, который его расшифровывает, он должен. Даже если у вас есть get / setStream (), вводимые вами данные должны иметь свойства звука, т.е. они должны работать с кодеками GSM. getStream () должен возвращать byte [], а setStream (byte [] stream) принимает двоичный поток в качестве аргумента, поэтому двоичный поток является двоичным потоком, не имеет значения, что это было в аналоговой области. - person ratko ratko; 10.12.2012
comment
readStream () возвращает byte [], а writeToStream (byte [] data), если быть более точным. - person ratko ratko; 10.12.2012
comment
Не гарантируется, что канал передачи будет прозрачным. Следовательно, ваш поток не будет надежно транспортироваться, независимо от того, является ли абонент B (вызываемый номер) фиксированным, мобильным или VoIP. - person Bernd; 10.12.2012

Согласно приведенным выше нескольким комментариям, уровень доступа к голосовым вызовам возможен только с рутированным телефоном, и даже в этом случае зависит от устройства. Лучшее, что вы могли бы сделать для обычного зашифрованного голосового приложения, - это приложение в стиле VOIP / SIP, которое будет использовать соединение для передачи данных.

Даже если бы вы могли это сделать, шифрование аналогового вызова было бы нетривиальным. Сжатие, используемое в кодеках GSM, оптимизировано для голоса и делает определенные предположения о характеристиках сигнала. Вы не могли просто использовать простой аналоговый -> цифровой -> зашифровать -> аналоговый -> телефонную сеть -> аналоговый -> цифровой -> дешифровать -> аналоговую цепочку сигналов.

Вы могли заметить, что я включил аналоговый в качестве шага, потому что все окончательное цифровое кодирование в сети GSM выполняется радиочипсетом GSM, к которому вы не получаете доступа ни с одного телефона, даже если он рутирован.

person PeterJ    schedule 09.12.2012
comment
Значит, нет интерфейсов getAudioStream () и setAudioStream () для канала GSM? (JME / Android) - person ratko ratko; 09.12.2012
comment
Нет, хотя технически они могут отображаться как поддерживаемые иерархией классов (не уверен), я уверен, что они фактически не будут работать практически на любом телефоне. - person PeterJ; 09.12.2012

Полноскоростной речевой кодек GSM работает со скоростью 13 кбит / с и использует кодек с регулярным импульсным возбуждением (RPE) - это означает, что обнаружение микрофона и речи в GSM оптимизировано для передачи по мультиплексированному «цифровому» каналу с временным разделением каналов, который затем модулируется. через радиоинтерфейс с использованием GMSK, схемы модуляции с частотной манипуляцией с непрерывной фазой.

Шумы, отличные от «среднего» речевого шаблона, сильно искажаются (или подавляются) - например, DTMF (тона) плохо воспринимаются устройством и должны передаваться ядром сети, но тона, предназначенные для людей с нарушениями слуха, работают хорошо. Голос формируется (фильтруется) при входе в кодек (конструкция микрофона) для лучшего обнаружения и воспроизведения кодека на другом конце.

В итоге - невозможно «перемодулировать» в системе GSM, потому что точка входа не является радио (эфирным интерфейсом) или даже доступом к цифровому кадру GSM. Ваш единственный доступ для голосового вызова - это кодек GSM, который ожидает голос в ограниченном звуковом спектре.

Однако - если вы можете создать голосовую форму волны для кодека GSM, у вас может быть путь вперед.

person user2314105    schedule 09.12.2014

Кодирование аналогового голоса на сайте динамика / микрофона более практично. Или вам нужно рутировать Android, чтобы изменить phone.APP. Прямо как AECall. Он шифрует и расшифровывает гарнитуру. http://mrhyper.blogspot.tw/2015/12/iphone-encrypt-phone-call_9.html

person Hyperencrypt    schedule 28.01.2016

Я знаю, что есть приложения, которые действуют как устройство смены голоса, где они изменяют ваш голос и передают его через голос GSM. Может быть, вы можете создать приложение, которое принимает голос, а затем модулирует его во что-то вроде фазовой манипуляции или цифрового радио монодиального типа, например, радиолюбителей, используемых в УКВ и ВЧ радиосвязи, и передает звук в GSM, а затем демодулирует его обратно в голос, но вместо прямого модуляционная демодуляция вы можете добавить pgp, aes или любое другое шифрование, которое вам нравится. Мне тоже интересно увидеть такой проект.

Я думаю, было бы также здорово, если бы вы могли использовать это для передачи данных через голосовой канал GSM, как модемы 56k в прошлом, вместо канала GPRS.

См. Ссылку

http://freedv.org/tiki-index.php

http://www.aprs.org
person Anonymous    schedule 09.12.2014