windingtree / win-stays

🏆 win.so
GNU General Public License v3.0
3 stars 3 forks source link

Implement `waku` message protocol for data exchange (issue to be linked in `videre` repo) #90

Closed mfw78 closed 2 years ago

mfw78 commented 2 years ago

Problem

Electing to exchange personally identifiable information via waku. Need to address:

  1. Privacy - PII sent should only be readable by the receiver.
  2. Ephemeral - PII should not be stored on any intermediate platform, even if encrypted. It should only reside at both the sender and receiver.

Solution

Alice books a stay at Bob's guesthouse. After Alice makes the deal, and pays for her stay, she sends her personal details directly to Bob so that they can remain in contact.

  1. Alice fills out a form with her contact information.
  2. Alice's information, along with the stub to which the information belongs to, is placed in a PII protobuf message.
  3. The PII message is encrypted with Bob's public key, and placed in the payload of a PIIESend message.
  4. Alice's signature of the unencrypted PII protobuf is placed in the PIISend message.
  5. Alice encrypts with Bob's public key a random content topic for which Bob can acknowledge receipt of the personal information.
  6. The entire PIIESend message is sent to Bob who is listening on content topic /videre/stays/1/piie/<service provider id>/proto
  7. Bob receive's Alice's PIIESend message, and decrypts the payload with his private key.
  8. Bob verifies the payload is correct against the signature from which he recover's Alice's address.
  9. Bob check's that Alice's address owns the stub that she is accertaining the private information for.
  10. Bob decrypts the ackTopic with his private key, and send a PIIEAck message to Alice, confirming that he received her PII.