BIG DISCLAIMER: This is post from a software engineer who is interested in the cryptocurrencies area but not an expert. I am not a cryptographer and the following advice may be inaccurate and even wrong in some important way. Having said that, it is written with the best of the intentions and to the best of my knowledge. Comments, suggestions and corrections are welcome.
Cryptocurrencies and other security oriented distributed systems (PGP keys management, SSH keys, SQRL, KeeypassXC password manager, etc) rely on some sort of secret that users must keep safe and outside of the reach of others as a foundation of their security model. As our world increasingly moves towards digital, these keys are becoming more and more valuable and we need to make sure we manage them responsibly.
Human brain is bad at storing many precise pieces of information.
Provide a model that can be used to recover the secret in case of emergency (natural disaster, serious injury or even the death of the individual).
Individuals must be able to decide exactly who can access to the secret and under which circumstances.
Being able to operate without relying on any third party. Third parties may break the interfaces over the years or even disappear. They can also limit access to the secret or even become evil and not trustworthy.
If possible, it should be based on well-known mechanisms and algorithms which guarantee that the secret can be recovered after years if the specific tooling used to create it is lost or not functioning anymore in the future.
In this post, I want to present my tool to generate Shamir scheme secrets reducing the risk of them being exposed or hacked. It consists in a single purpose ISO that can be used to start a VM or boot your PC from it once you burn it into a CD or a USB stick (preferred option).
In our day to day environment, we tend to install a significant amount of software and use it for activities that may have compromised our installation even without being aware of it. A malicious site may have been able to use a browser’s vulnerability to implant some malware, for example.
In our digital life, there are specific pieces of information that require very cautious handling. Access to them by malicious actors can result in big inconveniences or even financial loses. Some examples of this may be passphrases you may use for encryption, crypto wallets seed phrases, etc.
This tool helps you running in a minimal ephemeral environment which is more trustworthy.
I’m happy to introduce you to a new way to do user authentication in the web. Over the years, we techies have been culprit of introducing patterns and technologies that are sound when a system is analysed in isolation, but which don’t work so well when they are adopted at scale. One classical example is the public key infrastructure where we end up trusting blindly all kind of entities around the globe. Really, our browsers trust any cert from organizations like this one (I’m not saying they are not trustworthy, just that I have no idea of who they are):
A similar situation has happened with usernames and passwords. We’ve been years looking at our systems and securing them by assuming a user can provide us with some secret piece of information that only she knows. That has been an input of our system, we have taken it for granted and moved on making the rest of the system secure. We have spent great effort to store that secret so we can validate it the next time that user come to us again. Then we can go and ask: “Tell me that thing only you and me know so I can verify that you are who you are saying?”. If there is a breach in our system and someone else gets to know that piece of secret information, he can fool our system impersonating our beloved user. What it is worse, if our user has used that same secret in other systems, those are compromised as well. Last but not least, our user needs to make sure the device is not compromised, the connection is secure, no one is looking over his shoulder, etc. It is overwhelming.
It’s been a long time since I decided to focus this blog on technology issues and I haven’t manage to start posting regularly. I’m sorry for that, but reading and listening to different positions on current net neutrality issues I felt the need to write down my position on this issue and it’s a good oportunity to kick off this new stage.
After the small preface, let’s get into today’s topic. When I hear debates about net neutrality, arguments gather around two camps: the big business camp which argue that they defend net sustainability and the freedom camp which argue that proposed messures effectively kill the Internet as we know it. From my view both arguments are right, but none of the solutions proposed by either camps are valid. What I feel is that big bussiness camp utilises a particular problem around bandwith usage to change the whole model under which the Internet works without worring about (wanting to) put in place technical solutions to tackle it. The freedom camp doesn’t want to tackle it as it might bring the debate into technical proposals that might look too similar to big bussinesses’ ones from a non-technical perspective.