Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
 Re: Авторизация без сервера  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4487
mayton
Хм. В твоей схеме шифрование-то вобщем не нужно.

В момент регистрации когад клиент как-то получает логин/пароль - сервер получает публичный ключ
клиента. Подписывает его. И сохраняет в свою базу. И с этого момента все участники чата если
обращаются на сервер могут получить образ этой базы и кешировать его так-же как браузер
хранит "печенюшки". Основываясь на TTL каждой записи. (Помним что сертификаты имеют
срок годности).

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

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

    но естественно ключи должны быть адекватной длины
  • 31 дек 18, 00:36    [21777062]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    WebSharper
    Member

    Откуда:
    Сообщений: 422
    https://crypto.stackexchange.com/questions/12479/how-to-perform-authentication-without-central-server-in-p2p там правда ссылка на проект битая.

    Ещё можно использовать https://en.m.wikipedia.org/wiki/Public_key_fingerprint для идентификации.
    31 дек 18, 10:52    [21777105]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    mayton
    Вобщем сумбурно.

    Это разные части одной большой системы, но к теме это не относится.
    31 дек 18, 11:50    [21777112]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    kealon(Ruslan)
    mayton
    Хм. В твоей схеме шифрование-то вобщем не нужно.

    В момент регистрации когад клиент как-то получает логин/пароль - сервер получает публичный ключ
    клиента. Подписывает его. И сохраняет в свою базу. И с этого момента все участники чата если
    обращаются на сервер могут получить образ этой базы и кешировать его так-же как браузер
    хранит "печенюшки". Основываясь на TTL каждой записи. (Помним что сертификаты имеют
    срок годности).

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

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

    но естественно ключи должны быть адекватной длины

  • ИМХО Сервер выступает в роли удостоверяющего центра, просто подтверждает своей подписью валидность сертификата внутри которого указан логин и его открытый ключ.

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

    В общем я пришел к выводу что надо задействовать полноценное шифрование. Делаем один сервер подписывающий сертификаты (логин, открытый ключ, срок действия), т.е. УЦ, а дальше логины как угодно могут общаться, любыми каналами.

    PS Велосипед проиграл :(
    31 дек 18, 19:43    [21777216]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 40512
    Дима. Ты когда нибудь с этой штукой разбирался?

    Должна поверх UDP работать на порту 4672
    6 янв 19, 00:48    [21779021]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    mayton
    Дима. Ты когда нибудь с этой штукой разбирался?

    Должна поверх UDP работать на порту 4672

    Не разбирался. Судя по ссылке - это классический P2P. Обмен файлами. Интересно порешана проблема обхода законодательства об авторских правах )))

    Что по теме топика, то, как понял, там доступ открыт всем желающим, т.е. никому не интересно Алиса ты или Боб.
    6 янв 19, 08:26    [21779049]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 40512
    Dima T
    mayton
    Дима. Ты когда нибудь с этой штукой разбирался?

    Должна поверх UDP работать на порту 4672

    Не разбирался. Судя по ссылке - это классический P2P. Обмен файлами. Интересно порешана проблема обхода законодательства об авторских правах )))

    Что по теме топика, то, как понял, там доступ открыт всем желающим, т.е. никому не интересно Алиса ты или Боб.

    Обмен файлами это уже финал. И это не интересно. Интересно как работает DHT.

    (Параллельно меня интересовало как работает ZooKeeper, и как вообще реплицировать настройки
    в распределенной среде (интернет) где нет централизованного управления)

    Кое-что я начал писать для себя и собирать сведения.
    +
    автор
        // Port(s) 	Protocol 	Service 	 Details 	Source
        // =======================================================================
        // 1900     udp         aMule
        // 52263    udp         aMule
        // 4665     udp         aMule        eDonkey2000  eDonkey2000 Server Messaging Default Port,
        //                                   Container Client Message Service, AudioReQuest
        // 4672     udp         aMule        eMule - often used (unofficial)
        //                                   Extended eMule protocol, Queue Rating, File Reask Ping,
        //                                   Kad. Kad will be 'firewalled' if NAT (Network Address Translation)
        //                                   remaps this port number.
        // 4662     tcp         aMule        Client-to-client transfers.
        //
        // 3246 	udp 	    kademlia 	 Kademlia P2P (mlnet)
        //
        // 4661 TCP (outgoing):              Port on which a server listens for connection (defined by server).
        //
        //
        // 5351 	tcp,udp 		         NAT Port Mapping Protocol -
        //                                   client-requested configuration
        //                                   for inbound connections through
        //                                   network address translators (official)
        //
    
        // 23705
        // 51413 	tcp,udp 	p2p 	     Commonly used by Transmission BitTorrent Client.
        //
        //
    
    
        //        4711 TCP: WebServer listening port.
        //        4712 TCP: External Connection port. Used to communicate between aMule and other applications such as aMule WebServer or aMuleCMD.
        //
        //
        // $ tcpdump -i enp7s0 udp port 4665 or port 51413 -vv -X
        // $ tcpdump -i enp7s0 udp portrange 1000-65536 -vv -X
        // $ tshark -i enp7s0 -f "udp port 51413"
        // $ tshark -i enp7s0 -R "bittorrent" -any_other_options
        // $ tcpdump -Xs 0 -ni enp7s0 `cpp -P tcpdump-gre-utp.cpp`
        // ed2k://|file|eMule0.42f-Sources.zip|2407949|CC8C3B104AD58678F69858F1F9B736E9|/
        //
        public static void main(String[] args) throws Exception {
    


    Основной API этого протокола содержит всего 4 команды PING, STORE, FIND_NODE, FIND_VALUE.
    Благодаря им узлы обмениваются сведениями и ищут и что характерно находят информацию по хешу.
    Это настоящая магия, чувак.

    Здесь 21768887 один господин выкладывал полноценный Torrent клиент. Но он меня не интересовал.
    Мне была нужна только та часть клиента которая оперирует с DHT.

    Если тебе интересна тема распределенных хеш таблиц и поиска - можем поднять отдельный топик.
    6 янв 19, 12:49    [21779084]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    mayton
    Это настоящая магия, чувак.

    Это хрень. Там ни слова про надежность. Ну не смог скачать ты сейчас кинчик который искал, ну и ладно, скачай другой. Лично меня интересует гарантированная доступность искомых данных, а тут никаких гарантий, носители куска скачиваемого недоступны - обломись. Для обмена кино-аудио сгодится, но не более того.

    PS Повторю: они порешали проблему обхода авторских прав. Ни одна их нод не хранит файл целиком, т.е. не предъявить незаконное копирование. Это основная мысль той системы
    6 янв 19, 20:14    [21779221]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    mayton
    Если тебе интересна тема распределенных хеш таблиц и поиска - можем поднять отдельный топик.

    Неинтересна. Это понижение надежности. Распределяем данные на 2 узла, надежность получения данных снижается в два раза.

    Мне интересна тема как записать сообщение на несколько (минимум) узлов и получить гарантированную возможность получения сообщения в любой момент.
    6 янв 19, 20:35    [21779224]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 40512
    Dima T
    mayton
    Это настоящая магия, чувак.

    Это хрень. Там ни слова про надежность. Ну не смог скачать ты сейчас кинчик который искал, ну и ладно, скачай другой. Лично меня интересует гарантированная доступность искомых данных, а тут никаких гарантий, носители куска скачиваемого недоступны - обломись. Для обмена кино-аудио сгодится, но не более того.

    PS Повторю: они порешали проблему обхода авторских прав. Ни одна их нод не хранит файл целиком, т.е. не предъявить незаконное копирование. Это основная мысль той системы

    Ну... DHT - то вообще не про файлы. Это про обмен ключей и значений в распеделённом интернете.
    Где половина хостов в любой момент времени могут быть выключены или недоступны. Где в сеть заходят
    новые машины за NAT, proxy и vpn. Где непрерывно идет репликация и появляются и исчезают новые ключи.

    Вобщем если захочешь - продолжим отдельным топиком. Меня в этой модели интересует вариант
    как быстро (после публикации) ключ станет доступен в условиях этой неопределённой доступности
    хостов.
    6 янв 19, 21:35    [21779248]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 40512
    Dima T
    mayton
    Если тебе интересна тема распределенных хеш таблиц и поиска - можем поднять отдельный топик.

    Неинтересна. Это понижение надежности. Распределяем данные на 2 узла, надежность получения данных снижается в два раза.

    Мне интересна тема как записать сообщение на несколько (минимум) узлов и получить гарантированную возможность получения сообщения в любой момент.

    Ну... это вообще не про надёжность. Это про ... Криптономикон что-ли.
    6 янв 19, 21:36    [21779249]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    exp98
    Member

    Откуда:
    Сообщений: 1624
    Dima T
    тема как записать сообщение на несколько (минимум) узлов и получить гарантированную возможность получения сообщения в любой момент.
    Опаньки!! Уж полночь близится, снова на работу скоро, а они всё о своём ...
    Не смог удержаться: может это в сторону кодирования с автоматическим исправлением ошибок? хэмминг и т.п.? вспомнились раиды, где можно на лету выдёргивать не только диск из общей кучи, но и процессор ...
    Но это заведомая избыточность записи, чудес не бывает.
    6 янв 19, 23:45    [21779287]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 40512
    exp98
    Dima T
    тема как записать сообщение на несколько (минимум) узлов и получить гарантированную возможность получения сообщения в любой момент.
    Опаньки!! Уж полночь близится, снова на работу скоро, а они всё о своём ...
    Не смог удержаться: может это в сторону кодирования с автоматическим исправлением ошибок? хэмминг и т.п.? вспомнились раиды, где можно на лету выдёргивать не только диск из общей кучи, но и процессор ...
    Но это заведомая избыточность записи, чудес не бывает.

    В блокчейн писать можно. В FreeNet или DarkNet Не помню точно где есть репликация контента по машинкам
    юзеров. Можно публиковать ресурс на torrent-ах, и надеятся что кто-то пару раз скачал. AWS S3. Google Drive.
    Microsoft Drive. Или просто купить любой жлобский хостинг для хомяка.
    7 янв 19, 00:05    [21779293]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dimitry Sibiryakov
    Member

    Откуда:
    Сообщений: 47394
    Dima T
    Это понижение надежности. Распределяем данные на 2 узла, надежность получения данных снижается в два раза.

    Наоборот, она повышается. Это RAID уровня 1, а не 0.
    7 янв 19, 14:53    [21779431]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    Может я невнимательно прочитал, понял что куски файлов по нодам рассовываются. Не важно.
    Все-равно речь о протоколе P2P для хранения файлов, а это другое, не то что нужно мне.

    Меня интересует обмен сообщениями, которые никак хранить не надо. P2P в моем случае это прямая отправка между получателем и отправителем. Есть отдельная подтема оффлайн доставки при недоступности получателя, но ее можно пока не рассматривать.

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

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

    От P2P мне нужна только передача данных между клиентами, где все будет быстро и без ограничений, хоть гигабайты бэкапов гоняй.
    7 янв 19, 19:14    [21779561]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13634
    И блокчейн не особо интересен. Да, туда можно внести логины клиентов с их открытыми ключами. Но это не все функции центра.
    Т.к. это UDP, то одна из задач сервера определить внешний IP:порт клиента и сообщить тому кто захочет с ним связаться. Т.к. связаться в одностороннем порядке не получится из-за NAT, из-за брэндмауэра, то кто-то третий должен сообщить клиенту что с ним хотят связаться с такого-то IP:порт. Нужен центр.
    7 янв 19, 19:29    [21779570]     Ответить | Цитировать Сообщить модератору
     Re: Авторизация без сервера  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 40512
    Dima T
    Может я невнимательно прочитал, понял что куски файлов по нодам рассовываются. Не важно.
    Все-равно речь о протоколе P2P для хранения файлов, а это другое, не то что нужно мне.

    Меня интересует обмен сообщениями, которые никак хранить не надо. P2P в моем случае это прямая отправка между получателем и отправителем. Есть отдельная подтема оффлайн доставки при недоступности получателя, но ее можно пока не рассматривать.

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

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

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

    Коробочное решение - Infinispan. Посмотри. Возможно сойдет.
    http://infinispan.org/
    7 янв 19, 21:44    [21779628]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
    Все форумы / Программирование Ответить