LINUX.ORG.RU

Своё «Шифрование» tcp/udp тсрафика

 , , , ,


0

1

За советом пришёл, в общем третий день делаю приложение для мобилки, с хоста (домашний ПК) идёт tcp/udp трафик, голый и ничем не прекрытый, в трафике звук. Не хочу тащить зависимости для https/ssl/etc или типа того и подумалось так.

  • ПК (сервер) на UI морде лица показывает код например RX0BGF
  • Мы этот код вводим на (мобилке)
    • Мобилка делает XOR данных и кода RX0BGF
      • Сервер делает обратный XOR обрабатывает
      • И так по кругу.

Раз в N времени сервер вместе с данными шлёт заксореный новый код и теперь оба ксорят/дексорят уже на основе него. И так по кругу.

То есть нам в начале надо ввести руками в клиент код. А затем от раз в N времени или раз в N размера передаваемых данных будет менятся.

Сразу заранее ответы на вопросы.

  • Почему XOR
    Хочется быстро и просто

  • Зачем «шифровать» Ну звук сырой в сеть идёт пусть не криптоанархично, но случайный клиент будет получать белиберду вместо звука и вообще не подключится так как должен вернуть отксореный ответ, а не вернёт обрыв соединения.

  • Зачем такое ПО вообще? Ну там сидеть в наушниках поотдаль от пк фильм смотреть, никому не мешая, а у наушников проводок не длинный, музыку включить на пк, а слушать с телефона или как у меня сломался звук на ПК нахрен вообще.

  • Уже есть такое ПО под андроиды Да есть Simple Protocol Player NG и ещё кучка , ну NIH синдром и в целом задолбало что там звук отваливается

Пойдёт такое? В качестве минимального шифрования трафика? Ничего особенного, никаких мировых секретов просто звук с ПеКа, но хочется огородить трафик хотя бы на минималках. Мне кажется норм ибо данные для XORа трафика (коды/ключи как хочется называйте) будет довольно часто и автоматически обновляться. Ну правда если вычислить первый код/ключ то всё сразу можно расшифровать конечно, ну тут можно некий механизм генерации независимый сверху пришлёпнуть по типу кодов Steam на основе времени например. Но это уже так нахлобучки и мысли в слух

Поругайте. Стоит ли оно вообще того, приложеньку я попозже выложу.

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от Bad_ptr

Придётся тащить на android и билдить. Я делаю на love2d и как бы хочется что-бы оно из коробки работало, для тех кто захочется просто .love файл запустить хоть на ПК хоть на чём. Ну в идеале. А шаг в сторону и привет SDK/NDK и иже с ними для тех кто захочет что-то поменять. Нууу, не знаю. Не хочу зависимостей.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от master_0K

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

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

Даже в love2D есть, в 12той ветке гита есть HTTPS, но там ещё всё так себе. Оно ещё не вышло, и работать будет только либо в apk или appimage готовых, а вот просто взять запустить как есть не получится пока. Смысл тогда мне был писать на скриптухе ради которой надо конпелять =). Хочется написать и забыть. И если уж кто возьмёт что-бы просто работало, а если надо просто взял и правки внёс и оно снова просто работало. Можно присобачить, но так скажем работать будет не у всех, вот я и гляжу на кустарные способы. Всё тяжёлое кроме ксора.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Подключение к шифрованию прямо не относится. Если твой звук в неизвестном «васян-клиенту» кодеке, то считай защифровано.

«механизм авторизации» даже международным консорциумам удается далеко не всегда.

master_0K
()

Пойдёт такое?

Вообще нет, даже ругать время тратить жалко.

t184256 ★★★★★
()

подсмотри что используются в шифровании GSM/Bluetooth - то и возьми. В мобилке «ис коропки» должны быть соотв.библиотеки оптимизированные под железо. Даже с простым но самодельным XOR есть шанс затормозить/заикать звук.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Уже заикается :( Ох ладно, наверное и правда стоит прикрутить luasec на сервере и love-https на клиенте (там С/С++ реализации) и всё, плюс вариант сырого трафика для тех кто уверен в своей локалке. Подумаем, хотя париться особо не хочется, всем спасибо.

LINUX-ORG-RU ★★★★★
() автор топика

Реализация Chacha20 занимает всего 1 страницу кода и её можно безо всяких зависимостей засунуть в прогу. Но лучше конечно к ней добавить ещё блочный шифр типа AES или Кузнечика, они уже побольше кода требуют, но всё ещё довольно мало.

firkax ★★★★★
()

тебе нужен поточный шифр или блочный? Как звук берется

bad_master
()
Ответ на: комментарий от LINUX-ORG-RU

Придётся тащить на android и билдить.

Нууу, не знаю. Не хочу зависимостей.

В какой-то момент Вы мне заявили что Вы не программер. Как-то оно не особо вяжется с вышесказанным.

bugfixer ★★★★★
()
Ответ на: комментарий от MKuznetsov

GSM/Bluetooth

это используют на канальном уровне и к GSM доступа у андроида вообще нет - все «варится» сильно ниже. К синезубу может и есть, но какой в этом смысл? Есть алгоритмы шифрования уровня приложения, их и надо использовать.

aiqu6Ait ★★★★
()
Ответ на: комментарий от aiqu6Ait

это используют на канальном уровне и к GSM доступа у андроида вообще нет - все «варится» сильно ниже. К синезубу может и есть, но какой в этом смысл? Есть алгоритмы шифрования уровня приложения, их и надо использовать.

не поверю что в android sdk нет оптимизированного A5/1 в библиотеках (специально глянул чем поточно шифруется gsm).

у ТС более очевидна проблема с jitter (раз звук заикается) - не успевает где-то (при отправке и/или приёме) быстро перекладывать/обрабатывать пакеты и появляются разрывы по времени.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

не поверю что в android sdk нет оптимизированного A5/1 в библиотеках (специально глянул чем поточно шифруется gsm).

не надо верить, посмотри просто предоставляемые алгоритмы

https://developer.android.com/reference/kotlin/javax/crypto/Cipher

A5/1 анроиду строго говоря не нужен. Операционная система в общем случае не перешифровует пакеты, т.к. это процесс реального времени, в мобиле есть цифровая часть радиотракта, которая всем этим занимается. Андроиду должны быть доступны только регистры управления (и то наверняка не напрямую).

джиттер можно победить сделав очередь на воспроизведение по-длиннее и читать из буфера. Другой вопрос - зачем делать троллейбус из буханки хлеба. Что мешает завернуть поток аудио в RTCP? Там и шифрование имеется.

aiqu6Ait ★★★★
()
Последнее исправление: aiqu6Ait (всего исправлений: 1)

свое шифрование всяко лучше! чем поделки вроде gnutls - который тебе сразу дает tls1.2 на сокете с анонимным шифрованием…

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

На Android у тебя почти целая стандартная библитека Java, а в ней есть куча криптографии. AES/RSA есть инфа 100%.

KivApple ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Мы на лабах DES на Делфи реализовывали.

urxvt ★★★★★
()

А чем собсна пульса не угодила? Ее для этого и делали.

pekmop1024 ★★★★★
()

Если у тебя рандомный секретный ключ с длиной большей или равной длине сообщения, и он используется ровно один раз, твой XOR-шифр будет полностью секьюрным. Иначе см. правило №1:

  1. Don’t roll your own crypto.

можно некий механизм генерации независимый сверху пришлёпнуть по типу кодов Steam на основе времени например

Это называется TOTP.

theNamelessOne ★★★★★
()

Лучше все-таки взять openssl и прикрутить TLS/DTLS. HTTPS никто использовать не заставляет.

annulen ★★★★★
()
Ответ на: комментарий от theNamelessOne

Если у тебя рандомный секретный ключ с длиной большей или равной длине сообщения, и он используется ровно один раз, твой XOR-шифр будет полностью секьюрным.

Это называется Шифр Вернама. Для практического использования нужны два независимых канала передачи данных - по одному гонится широтекст, по другому ключ.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)

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

alysnix ★★★
()

Ща придёт товарищ майор и навалит гору песцов. Шифроваться он вздумал, посмотрите на него.

Кодек какой? Если пцм то шум ещё добавь, чтобы црушники всякие не использовали этот канал для пробития изоляции

DumLemming ★★★
()
Ответ на: комментарий от imatveev13

Так websocket не святым духом шифрует, а тем же самым openssl’ем. Плюс оверхед на проткол, по сравнению с чистым TCP/TLS

annulen ★★★★★
()

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

а дело было так. крендель решил хату подломить, дождался отъезда хозяина, все по науке. замок ковырял и так и эдак, и тем и этим, десять раз вспотел, стопицот раз нехорошие слова сказал - ничего не помогло. старушка соседка в глазок увидала как он там кряхтит и бьется как моль об стекло - стуканула в 02. менты приехали и повязали кренделя на горячем.

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

olelookoe ★★★
()
Ответ на: комментарий от bugfixer

В какой-то момент Вы мне заявили что Вы не программер. Как-то оно не особо вяжется с вышесказанным.

Я не программист. Просто любитель.

LINUX-ORG-RU ★★★★★
() автор топика

Всем спасибо за ответы.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от imatveev13

Согласен, зато websocket дает готовый, простой API для lua.

У LuaSocket тоже простой API. Разница между ними только в том, что WebSocket автоматически разбивает TCP-поток на сообщения, тогда как с LuaSocket их нужно разделять самому (или использовать UDP). Ну и возможность коммуникации с браузером может быть жирным плюсом в некоторых случаях.

annulen ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Поверь если случайный Васян внезапно реально захочет влезть в твой трафик, то первым делом он сделает обратный XOR. Это если он не кали-какер конечно, а так чисто ради маскировки вполне пойдёт.

Dr64h ★★★
()
Последнее исправление: Dr64h (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.