I’m a developer in the cryptocurrency space, dealing with private keys (PK) linked to wallets containing money and I’m interested to see if this system I plan to use is secure or if I’m missing something. **I define secure as the chance of the PK being obtained by a bad actor being extremely low/negligible. Is this system secure or is there something I need to do to make this more secure?**
1. (PC1) Laptop. Was at one point connected to the internet but will be reformatted, then will probably boot into some Linux distribution through USB like [Tails OS](https://tails.boum.org/) and potentially be [Air Gapped](https://en.wikipedia.org/wiki/Air_gap_(networking)).
2. (PC2) Development PC connected to internet. Won’t come into contact with private keys that have any large amount of money, just enough to develop with.
3. (PC3) Ubuntu server hosted through [Digital Ocean](https://www.digitalocean.com/) and will be locked down through [Digital Ocean Cloud Firewall](https://docs.digitalocean.com/products/networking/firewalls/) and [How To Secure A Linux Server](https://github.com/imthenachoman/How-To-Secure-A-Linux-Server) as a guide. Disk and swap partition will be encrypted. Required to be connected to the internet.
On PC 2 I download a chosen Linux system (probably Tails as it leaves no trace on exit) onto a clean USB along with official software for the chosen blockchain used for creating PK’s. PC 1 boots into that Linux system through the USB. PC 1 generates a new PK for a wallet (one that will actually be used and will store money) and that key will be written down on paper. PC 3 is running a program I have written that interacts with the blockchain automatically and to sign transactions for me, it requires the PK of the wallet it’s interacting from. This wallet is the one created before that has the money. The program doesn’t pull the PK from any file, on startup of the program it will ask to type in the PK manually.
– **This is where I think the biggest point of failure is** an attack at the point of entering in the PK in the program startup in PC 3. This is the only point in time the PK is exposed. My plan was to SSH in through PC 2 into PC 3 and start the program that way, but then any keylogger on PC 2 will catch me typing in the PK as well as any other passwords. I was thinking of maybe using PC 1 to SSH in, but that would require it to no longer be airgapped but at the same time if I use Tails OS could I not technically delegate a fresh ‘session’ to creating the airgapped PK then make another session that’s not airgapped to SSH in, but never mix the two activities?
– PC 2 has malware that gets its way onto the USB and somehow messes with PC 1. Is there anyway I can make the USB transition from non airgapped PC 2 to airgapped PC 1 more secure?
– Potential for a bad actor to get access to my Digital Ocean account and add their IP to PC 3’s firewall, allowing them to get one layer into PC 3, however they are still stuck behind the other protection methods (SSH key, data encryption, etc…)
Other than someone finding the piece of paper I wrote the PK on, is this system secure or is there something I need to do to make this more secure? Thanks!