Git Product home page Git Product logo

dandelion-message-service's People

Contributors

4zm avatar ahltorp avatar ollibolli avatar palletorsson avatar pelagisk avatar sliem avatar vojd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

vojd sparvnastet

dandelion-message-service's Issues

Restrictions on message content?

Should we add any restrictions on message contents?

We could e.g. strip html / js to avoid attacks if that data is presented in a browser, but is this really desired?

Allow more specific pull requests

Modify the protocol so that clients can request messages that have particular senders or receivers only.

This might be useful to reduce traffic in case a database gets filled with spam. It will however also make the entire distribution model fail if all clients behave completely egoistically.

Message timestamp

There is no notion of time (or even a partial order) in the distributed message DB. Introduce a timestamp field in the messages that clients can choose to fill out to give a hint to GUI's. Note: the time of different computers will differ so there is still no strict partial order.

Better random data

Use the cryptographically safe random generator in the pycrypto library (Crypto.Random) rather than the python built in.

Permanent vs. transient connections

Implement two connection modes. One permanent (connect - sync - wait -sync - ... ) and one transient (connect - sync - disconnect).

Update the protocol with new commands for the permanent connection type: TURN, WAIT, ALIVE CHECK

Update the protocol document.

Implement in a way that:
A) Re-uses the same code for a single direction sync in all cases
B) Is oblivious of the underlying data transfer mechanism (tcp/ip, bluetooth, etc.)
C) Introduces a minimum amount of state in the client server connection.
D) Is resilient to denial of service by resource (connection & thread) exhaustion.

IPv6 support

Support use of local IPv6 address and sync with remote IPv6 server.

Check data structures and library calls.

Pre RSA encryption transform (OAEP)

Implement message data transform and padding prior to RSA encryption to make it secure.

Use the RSAES-OAEP padding schema from PKCS#1 or something like that.

Password protect private identities

Currently private identities (private key components) are stored in the data base as plain data. That's no real security at all.

Add a symetric crypto step that uses a password + salt to encrypt the key components.

IPv6 LAN discovery

Add an additional discovery mechanism: IPv6 LAN discovery (ping6 -c4 -I eth0 ff02::1)

When to - encrypt from

Encrypt the sender identity in messages that have a receiver. Currently, only the message text is encrypted.

Parallel synchronization

Parallelize the synchronization process (spawn multiple clients to sync with different data bases).

An impl. would probably use a small thread pool (2-10 threads).

Note: Must document thread safety constraints of different modules.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.