
By Simple Signer
A secure in-browser transaction signer
The Simple Signer project has one clear objective in mind: Reduce cognitive complexity to enter the Stellar ecosystem by providing a secure way to sign for Stellar transactions without installing a browser extension, and without providing your private key to the website that generates the transaction.
In order to operate with the Stellar network, a user must: Create a stellar account, buy XLM, and either install a browser extension or use their private key directly on the website where they wish to spend their assets. With many people still hampered by tech-illiteracy (or specifically crypto-illiteracy), the concept of installing a browser extension can be daunting: “Go into BrowserExtension website and create another account which will hold the keys for the Stellar account you just created, then install this browser extension and enter the details of your BrowserExtension account. You will use this browser extension to sign for transactions on other websites”, most users would find this user experience to be too convoluted. It is complex workflows like these that, in part, deter users from getting started in their Stellar journey.
However, “Enter your password to complete this operation” is very well understood by any user who has ever done any financial transaction online (including mainstream online banking). The only way to implement this workflow today is to use the private key directly on the website that generates the transaction, but users can’t be certain of what the website will actually do with their private key.
People are familiar with passwords; they have been around for a very long time, and anyone with internet access has had to use their password to authenticate at some point. Stellar Secret Keys are passwords in themselves (with the caveat that they cannot be changed). The cognitive load is greatly reduced if people simply enter their private key into a website, but at the same time exposes them to a security problem. What if the website is malicious? It could then use their private keys to perform unwanted transactions.
The Simple Signer is a simple, yet secure approach that tackles this problem. Hosted in a trusted website, the Simple Signer comes in the form of an HTML widget that takes a transaction and offers the user to sign it inside the widget using their private key. The Widget will then return the signed transaction to the requesting website, never exposing the user’s private key. The Simple Signer HTML Widget will be open-source to ensure transparency and auditability.
The Simple Signer Widget is a great entry point for crypto newbies to get started with the Stellar network; for the tech-savvy, it is no suitable replacement for browser extensions. Browser extensions are still extremely convenient as they allow multi-account handling and other advanced functions which are outside of the scope of this project (such as providing liquidity directly from the extension, as is the case with Albedo). Today there are many wallets for Stellar; Albedo, Freighter, Rabet, etc., and developers have to integrate their projects with each one of them in order to provide the best range. The Simple Signer will initially allow users to sign with their private key, but just as easily, it can allow users to connect their favourite wallet directly from the widget, and abstract the complexity of integrating with each individual wallet for Stellar developers, thus helping the community market their products faster.
The technical implementation that makes the Simple Signer is rather trivial. In its simplest form, by using an <iframe> that serves the Widget in a bespoke domain, the parent website cannot access its content or modify it as the communication happens from child to parent, meaning the Simple Signer Widget can communicate with the parent, but not vice-versa. The HTML Widget would take an XDR as a GET parameter, exactly like Stellar Laboratory and would present a user-friendly explanation of the operations that are happening inside that transaction. Finally, it will ask users to sign it and once done, invoke the window.parent.__handleSignedTransaction method and pass in the signed transaction as a parameter. In this way, the private key is never leaving the Widget’s site.
$10.0K

No other submissions.