Software is insecure in many scenarios because endpoint security is abysmal. Of course, a USB stick with fingerprint reader cannot be secure but there is no way around hardware-based cryptography with independent key entry if you need real security. Then again, this won't help you if the secrets are transferred to the insecure endpoint anyway.