Skip to content

slavashell/dht-messenger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dht-messenger

Простой мессенджер на базе DHT Kademlia.

Все сообщения распределённо хранятся на нодах участников сети, при этом система переживает выходы участников и перераспределяет нагрузку при добавлении новых.

Приницип работы

Допустим Bob и Alice хотят обмениваться сообщениями:

  1. Bob и Alice обмениваются своими публичными ключами pkbob и pkalice
  2. Alice хочет отправить первое зашифрованное сообщение - она кладет его на адрес h(pkalice, pkbob)
  3. Alice добавляет в сообщение адрес её следующего сообщения
  4. 1st message = (key=h(pkalice, pkbob), encrypt(message(text1, next_key=h(key, text1), ts=t1)))
  5. Alice отправляет второе сообщение по сгенерированному адресу
  6. 2nd message = (key=next_key, encrypt(message(text2, next_key=h(next_key, text2), ts=t2)))
  7. Образуется цепочка сообщений Alice, которую могут читать как Alice, так и Bob
  8. Bob аналогично пишет сообщения в цепочку, начиная с адреса h(pkbob, pkalice)
  9. Для восстановления диалога Alice или Bob считывают обе цепочки, начиная с генезисных ключей, и мержат по timestamp-ам

Развертывание

  1. Поднимаем dht ноду на сервере, до которого смогут достучаться остальные участники сети
cd messenger
uvicorn server:app
  1. Подключаемся к ноде консольным клиентом
cd app
python3 app.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published