-
Notifications
You must be signed in to change notification settings - Fork 18
Technical Specification
hai-ko edited this page Jan 26, 2022
·
16 revisions
- Send signed messages to an account (ENS Domain or hex address)
- Create a X25519_XSalsa20_Poly1305 key and publicize it as ENS text record
- End to end encryption of messages using the X25519_XSalsa20_Poly1305 key pairs
- Notifications
- Use the public key derived from the registration transaction or from an EIP 619 entry to encrypt messages (in combination with a MetaMask Snap)
- Perfect Forward Secrecy
- Decentralized message storage and transport
- Tokenization
- Alice enters Bob's ENS Name
- Bob's ENS name is resolved to an ethereum address
- Alice submits a message
- Alice is asked to sign the message via MetaMask
- Alice sends the message via the ENS Mail Storage and Transport Service
- The service checks the signature
- The message including the signature is stored in a DB controlled by the service
- Bob's ENS Mail Dapp queries for new messages
- The message from Alice is received and checked if the message matches the signature
- The message is displayed
Same as "Alice Sends Signed Message to Bob" but with the following additional steps:
- 3.1 Alice requests the
eth.ensmail.X25519_XSalsa20_Poly1305
text record of Bob's ENS name - 3.2 Alice uses Bob's public key to encrypt the message
-
- Alice is asked to sign the encrypted message via MetaMask
- 10.1 Bob is asked to decrypt the message via MetaMask (
eth_decrypt
)
I didn't dive deep into PFS until now. So this may not work but I want to document this first idea anyway.
- Alice types the message and clicks send
- The message is stored locally in the Dapp
- The exchange of the ephemeral session key is done over the same channel the actual message would be sent (e.g. over the ENS Mail Storage and Transport Service)
- After the key is exchanged Alice encrypts the message and sends it.