Choosing USB vs QR Code

Since launching Cypherock X1, a lot of users requested us to support airgap operation through QR codes. Our conclusion is that air-gapped communication offers little-to-no added hardware wallet security while degrading the user experience. QR codes have similar threat models as that of USB communication. Here are some points that were considered while choosing to move forward with USB connectivity:
  1. 1.
    QR codes compromise a lot on UX when there are a lot of input UTXOs. For hardware wallets to make secure transactions, all of the transaction hashes of spendable outputs need to be verified in the hardware which could be in multiple kilobytes. Wallets that do not fetch this and do not verify this on the hardware are compromising on security. So QR code-based wallets will take a lot of time to transfer all of this data from the mobile app to the hardware. Whereas, this is 100 times faster through USB.
  2. 2.
    QR codes can be vulnerable to phishing attacks or other forms of social engineering, where an attacker tricks the user into scanning a malicious address that steals their Crypto assets. While using QR codes, the user usually does not verify the recipient's address manually.
  3. 3.
    Performing firmware updates with QR codes is not feasible, there will be a requirement to either connect with USB or utilize SD cards for updates - which can be cumbersome from a user experience standpoint. In some ways, if the user has to use the USB or SD card for a firmware update, that means the promise of the hardware wallet being completely air-gapped through the QR code becomes null and void.