Collab.Land Proxy Account Signing For Security Reasons [Solana] #56
Replies: 7 comments
-
Acceptance criteria
|
Beta Was this translation helpful? Give feedback.
-
So embarrassingly enough I deleted some of my code while rebasing. Fortunately I took a screen shot so the code can be typed back into the correct file.
|
Beta Was this translation helpful? Give feedback.
-
Front end code pushed to branch 'origin/509-Solana-Proxy' in the collab-connect project
|
Beta Was this translation helpful? Give feedback.
-
Final Thoughts: Signing the signatures on local host is a very tech heavy ask but the point is to allow those who are paranoid and knowledgable to protect their assets. Obviously a website that lets you create a proxy like epsproxy.com is more convenient however it faces the challenge that if it were to become more popular scammers would start to duplicate their website and then those creating a proxy would face the same challenge of trying to understand who to trust. Some future upgrades include the idea that any service which is read only could adopt a proxy signature but only if we come up with an accepted standard format. Is there one? What services accept epsproxy.com? Also since collab.land is all gas less signing the thought of having to pay 0.005 ETH to delegate a proxy seems limited as well as annoying because it would be chain specific authorization. The big vision pitch is that wallets like metamask could automatically create proxy accounts for every single user so that for read only operations only proxy accounts are ever used so that it becomes quite clear that a user is or is not intending to transfer funds or interact with a smart contract. This wallet specific integration would be a huge win but is also contingent on services honoring the proxy relationship. The solana team asked after the hackathon if we would consider any wallet specific integrations on Solana to help with security. If phantom were to generate a proxy account for every account created and tell the user when they are signing a message vs enacting a transaction that would be super helpful.
|
Beta Was this translation helpful? Give feedback.
-
Current status: MVP proved out the process & it's quite simple. What would be next is researching a proxy signing standard, comparing ours to epsproxy.com, spitballing in wallet proxy generation, and implementing the MVP of proxy signature acceptance in Collab.Land (current code does not communicate well from the front end to the back end, unit tests on the back end for decoding would be super valuable to add as well) |
Beta Was this translation helpful? Give feedback.
-
It's a similar concept as https://support.argent.xyz/hc/en-us/articles/360022631992-About-guardians. |
Beta Was this translation helpful? Give feedback.
-
We can use Verifiable Credential as the standard to represent the authorized proxy address.
|
Beta Was this translation helpful? Give feedback.
-
Story
As a user I am scared of signing collab.land transactions with my cold wallet because there are numerous scams & attack vectors.
I've heard of friends losing assets by signing bad transactions.
While I understand the collab.land website is correct and secure there are many ways that impersonators can hack cookies, incorrect urls, incorrect signatures, etc.
What I want is a way to delegate alternative accounts who can sign on my behalf.
That way if one of these delegator accounts is compromised the hacker will not have the ability to transfer expensive assets from my original account.
In order to securely sign a proxy delegation I would like a github project that I can clone, download, and use to sign a specific message locally. (this project may already exist) I would avoid using an online website to do this signing because then signing a proxy delegation would be open to the same attack vectors as signing for wallet verification.
After signing a proxy delegation I want that signature to be presented to me so I can verify its data & then save it in my local machine/ password manager/ etc. This message could be save on chain however that is completely unnecessary, expensive, and public.
When I login to collab.land I want an option to sign with proxy signature.
Passing the proxy signature and then using the proxy account to sign a time stamped message & passing those messages to collab.land. Collab.land can then verify that the proxy signature is valid & includes address of the account that signed the 2nd collabland specific message. If that validation passes then collab.land can save the address of the Original account & check for it's assets.
Ultimately the proxy account doens't need any funds or NFTs and any bogus signatures taken by hackers would be useless.
One thing to consider is that if a proxy accounts private keys are compromised there should be a way for the original account to invalidate the original signature so that a hacker cant impersonate your assets on discord... since these transactions are off chain that's hard. Alternatively if the signatures are saved in 1 contract then the owner of the original account could delete that signature - this is a lot more overhead and cost & collab.land is proud to be a gasless signing method so on chain transactions are out... maybe the signature data can be saved with a nonce & old signatures will not be validated by collab.land and signatures with a higher nonce will over ride (higher nonce from a new account not the same account - nonce in this terms is something collab.land adds to the proxy signature so that only one proxy account can be used per wallet at a time)
Once proven on Solana this method can be take to other chains.
There is also a similar consideration for multisig contracts however since contracts cannot sign transactions this is a different challenge.
https://github.com/orgs/abridged/discussions/55
Tasks
Changes to Collab.Land Login Website
Changes to Collab.Land backend Logic / Jobs Server
3rd Party Onboarding
Acceptance Criteria
Beta Was this translation helpful? Give feedback.
All reactions