README.md.backup 2.5 KB

12345678910111213141516171819202122232425262728293031323334
  1. # Riddle
  2. A system for finding application peers and resolving names over mesh-like networks
  3. TODO:
  4. - Verify CertifiedNameInfo against system trust
  5. - Create a NameInfoStore, along with a FilesystemNameInfoStore and maybe a memory one too
  6. - Build propogation mechanism
  7. - Add propogation rate limit
  8. - Build tooling for generating and propogating NameInfo
  9. - Peer auto-discovery using LAN multicast, known seed servers, and optionally Yggdrasil nodeinfo (although this may not actually be needed)
  10. - Riddle (callback) mode, removing `CHALLENGE` requests.
  11. - OpenPGP domains, in the form `[fingerprint].rns` i.e. "c3a6-5e46-7b54-77df-3c4c-9790-4d22-b3ca-5b32-ff66.rns"
  12. - Server class should implement (or inherit) a "Service" class, with another implementation being "DaemonClient" when a Riddle Daemon is implemented
  13. ## Riddles v2
  14. - Sent with `RIDDLE` request, accepted with `OK`
  15. - Responded to with `CALLBACK` request
  16. - Callback accepted with `SOLVED` reply
  17. - `RIDDLE` arguments: group id, ttl, expiry, reply port
  18. - `RIDDLE` items: checksum/id, riddle public key, reply public key, author public key, riddle data, n*challenge tokens
  19. - `CALLBACK` arguments: riddle checksum/id
  20. - `CALLBACK` items: n*signed tokens, answer data, connecion info public key
  21. - `SOLVED` arguments: none
  22. - `SOLVED` items: encrypted and signed IP/port data
  23. - Riddles are sent to peers who are in the correct group
  24. - Peers receive the riddle and then forward onto other peers in the group - holding on to the riddle ID and metadata
  25. - When a peer is reached that can solve the riddle, it encrypts its answer with the `reply public key` and then signes the encrypted answer with the private key derrived from the riddle matching the `riddle public key`.
  26. - Thet peer then sends a `CALLBACK` request to the peer it received the riddle from.
  27. - The peer servicing the `CALLBACK` request verifies the riddle with the public signature, and if correct forwards the request to the peer it received the riddle from.
  28. - The originating peer once receiving and verifying the `CALLBACK` request, encrypts its IP/Port information with the `connection info public key` and then signs the encrypted data using the `author private key` from the riddle. The peer then replys with `SOLVED` and the encrypted/signed data.
  29. - Intermediate peers verify the `SOLVED` reply by verifying the encrypted data against the `author public key` of the riddle before passing back the reply.
  30. - At any point in the chain, if a peer is not happy it can reply with `NOT-ACCEPTED` and codes in the 1xx range.