RGB-Tools / rgb-proxy-server

MIT License
3 stars 1 forks source link

ECDH Encryption with Carbonado #1

Open cryptoquick opened 7 months ago

cryptoquick commented 7 months ago

Carbonado can be used to encrypt consignment bytes. It's recommended that consignments are decoded before put into Carbonado format, and to specify c7 format (compression, encryption, stream verification, without error correction codes, because RGB proxy does not require durability), then transmitted and stored as binary.

Carbonado keys are derived using NIP-06, which makes wallet support easier.

This doesn't actually require much of the proxy server since this would just be an end to end encryption standard between wallets, just that it can receive and store files in binary and not just text, and perhaps it might need to associate or communicate the ECDH PK.

What does everyone think? If folks think it's a good idea, I can write up a spec PR.

fedsten commented 7 months ago

I think that an encrypted proxy server is very needed and desirable, but I would work on it as a separate project rather than changing the current one. A simpler unencrypted proxy is still useful for testing and for people that wish to self host their server, so since RGB supports multiple transfer protocol I believe the best way is to first define a new encrypted transfer protocol, and then create a new project that implements it.

22388o commented 7 months ago

Interesting idea. It is not necessary run Carbonado node to e2e? The proxy will receive information automatically?

22388o commented 7 months ago

I think that an encrypted proxy server is very needed and desirable, but I would work on it as a separate project rather than changing the current one. A simpler unencrypted proxy is still useful for testing and for people that wish to self host their server, so since RGB supports multiple transfer protocol I believe the best way is to first define a new encrypted transfer protocol, and then create a new project that implements it.

Make sense. I guess we can create separate project and see how works.