LINUX.ORG.RU

Авторизация клиент-клиент

 , ,


0

3

Пишу тут как хобби мессенджер с end-point шифрованием и возможностью защищенной работы при захвате сервера.

Хочу реализовать следующие фичи:
* Отсутствие базы на сервере
* Как следствие - отсутствие авторизации на сервере
* Передача public ключа между пользователями физически («на флешках»), чтобы избежать его палева по сети.

Пока уперся в следующую проблему:
Алиса хочет послать сообщение Бобу.
Алиса шифрует сообщение своим приватным и публичным Боба
Алиса шлет сообщение на сервер с пометкой «Бобу»
Сервер видит, что у него залогинено три Боба.

Дальше два варианта развития событий:
1. Сервер шлет сообщение Алисы всем Бобам, ведь все равно расшифровать его сможет только тот, кому адресовано.
2. Сервер запрашивает у Бобов образец сообщения (например текущее время, шифрованное с публичным ключом Алисы), потом шлет все эти сообщения Алисе и после того как Алиса скажет кто из них кто отсылает сообщение нужному Бобу.

Первой вариант - плохо, потому что требует выслать всем Бобам «лишние» сообщения. Если их 100, то они будут получать непрерывный поток хлама, адресованный не им.
Второй вариант - плохо, потому что если Бобов 100, то это займет очень много времени.

Как такую задачу уже решили? Хочу авторизацию через клиентов и чтобы на сервере не было публичных ключей пользователей.

★★★★★

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

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

Сервер хранит пары Логин-Сокет.

Алиса знает что под этим идентификатором именно учетка Боба.

Чтобы значть надо со всеми 100 Бобами обменяться.

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

Сервер хранит пары Логин-Сокет.

А смысл? Или хранит имеется в виду то время, пока клиенты подключены? Иначе я вижу несоответствие с утверждениями что на сервере нет базы и идентификации.

Чтобы значть надо со всеми 100 Бобами обменяться.

В смысле? Вы пишете «Передача public ключа между пользователями физически («на флешках»), чтобы избежать его палева по сети.» То есть если я собираюсь писать вам - мы обмениваемся ключами и плюс какими-то идентификаторами, по которым можно отправить сообщение. Ну как обмен номерами телефонов.

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

имеется в виду то время, пока клиенты подключены

Да

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

Да, я говорю, что я Боб666 и даю свой public ключ. Вы говорите что вы Алиса777 и даете свой public ключ.

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

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

Кстати, вот ваша схема без идентификации - тут есть минус: я зная ваш идентификатор и зная идентификатор какого-то человека, могу представиться для сервера этим «третьим» получателем, тем самым у меня будет доказательство того что вы общаетесь. Может из-за шифрования я и не прочту ваши сообщения, но все это большая дыра в приватности вашего сервиса.

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

Потому что на сервере может быть две сотни Бобов666. Потому что сервер никого не авторизует.

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

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

а в случае когда появляется еще один боб, он должен делать такой же DH с первым бобом и синсить все данные с него
в случае DH с алисой это уже будет не боб

anonymous
()
Ответ на: комментарий от PPP328

Ну с Бобами понятно, если я говорю что я 379be120-0a73-11e8-9eba-e4a7a0c9b247-379be7f6-0a73-11e8-9eba-e4a7a0c9b247 и вы это сохраняете в своем клиенте (указав «Боб» как псевдоним), а потом отправляете на сервер (ну и я «представляюсь» серверу этим же идентификатором) какая разница сколько пользователей еще на сервере? Чем больше мешанины и символов в этом идентификаторе тем меньше вероятность коллизий.

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

А потом зайдет кто другой и скажет что он тоже 379be120-0a73-11e8-9eba-e4a7a0c9b247-379be7f6-0a73-11e8-9eba-e4a7a0c9b247

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

Раз такой умный, покажи по шагам, как должны зайти на сервер Боб, Алиса и лжеБоб. И что будет когда Алиса отправит сообщение Бобу.

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

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

micronekodesu ★★★
()

Алиса отправляет серверу шифрованное сообщение и открытый ключ Боба. Сервер находит у себя кому принадлежит этот открытый ключ и передает ему сообщение

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

без серверная авторизация с сервером по средине ?
для начала поделитесь своей травой со всеми что бы этот бред можно было понять
а о том что это тот же боб а не лже боб придумано еще за долго DH в цифровых подписях

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

anonymous
()
Ответ на: комментарий от r0ck3r

И любой, кто получает доступ на сервер получает все открытые ключи и может все читать. Теряется весь смысл отсутствия ДБ на сервере.

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

без серверная авторизация с сервером по средине ?

Ну давай, покажи как надо без сервера посередине выпрыгивать из одного ната и запрыгивать в другой.

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

я уже достаточно здесь показал своего кунфу (с) Из Парижа с любовью
теперь давай сам мозг по напрягай
самые гнилые пользователи лора, те которые пытаются самообучаться через троллинг на слабо,
типа а покажи и расскажи раз ты такой умный
я давайте вы сами будете напрягать свой мозжечок ?

anonymous
()
Ответ на: комментарий от PPP328

И любой, кто получает доступ на сервер получает все открытые ключи и может все читать.

Что он может читать? Это же открытые ключи.

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

своих малолеток на районе будешь на слабо брать, понял ?

мамка в школу тебя отдавала что бы ты на форумах слюнявил ?
иди доучись малыш

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

anonymous
()

Алиса шифрует слово «ping» ключём боба и это маленькое сообщение рассылается всем, тот боб который ответит зашифрованным алисиным ключём «pong» и становится участником переписки, остальные отсекаются и более к ним широковещательных запросов нет.

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

ну зачем? я ж еще за пивом с сухариками не сбегал

anonymous
()
Ответ на: комментарий от Deleted

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

Но из-за этого оба пира должны быть онлайн. Для диалогов, идентифицируемых роутингом, store-and-forward не сделаешь.

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

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

anonymous
()
Ответ на: комментарий от iliyap

Но из-за этого оба пира должны быть онлайн.

Не проблема, устанавливаем тайминги для нашего протокола, ping посылается раз в период времени N, ответ должен придти в зависимости от настроек ожидания N*2 е примеру, если ответа нет считаем что боб офлайн (ну спит человек). Размер N может быть например 30 секунд для интернетов и 3 секунды для локальной сети.

Дабы снизить трафик над ping делается обёртка в виде бинарного сжатия сообщения и упаковки в gzip.

Дополнительной альтернативой так же может быть протокол который работает отдельно и сообщает что пир в сети, что-то широковещательное, что бы не отсылать запросы тем кого нет.

В итоге, каждый клиент появляющийся в сети пишет в широковещательную сеть я Боб я онлайн, алиса читает из него сколько бобов есть в онлайне, алиса формирует очередь запросов к бобам на соединение, с одним из них происходит обмен ping-pong и данные данные о прямом соединении, они начинают писать друг дружке любовные сообщения, или иодин из бобов не отвечает значит нужного боба нет. Алиса волнуется и берёт телефон, набирает Бобу и говорит - «Боб ты чего месенджер не включил, мы чё тут этой фигнёй с шифрованиями зря занимались, я вот задолбалась перепечатывать твой ключ шифрования в окно приложения, ты чё не мог сделать так что бы файл можно было скинуть кудато и всё, и воообще нафига всё это нужно, блин там даже картинки нельзя передать, я тут такой тортик сделала хотела показать, а тут блиин ваще ничё нельзя, Боооооб давай мы просто ДругВокруг установим и не будем всеё этой фигнёй страдать я конечно всё понимаю и старалась тебя поддерживать видя как у тебя глаза горят когда твоя программа работает, но блин Бобик, ню дявай иногда просто переписыватся ладна, а не каждый день под камень друг дружке у дома подкладывать флешки с новыми ключами, ну, просто бабушки местные как то на меня не так уже смотрят, Бооооб ну Боооооб » =))))))))))))))))

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.