I'm researching a paper wallet system where I generate an HD xpub/xprv using an offline laptop. I write down the xprv by hand. I capture the xpub via QR code using my phone, to transfer to an online full node.
One potential attack vector is to replace the receiving addresses with addresses under the attacker's control. To combat this, I plan to print out the xpub as a QR code, and occasionally using the offline laptop (which has no state), scan it in and generate a new batch of receive addresses which I can then manually verify match those created by the full node.
But since the printed xpub QR code necessarily transited several untrustworthy (i.e. online) computers before reaching paper, how can I be sure it wasn't tampered with in transit?
Question: if I generate a single receive address (e.g. m/0/0), send some small amount of BTC to that address, create a PSBT withdrawal using the online node, then successfully sign that using the xprv on the offline node, is that sufficient to prove that the xpub is authentic?
In other words, is it feasible that an attacker could modify the xpub such that m/0/0 matches my xprv, but (e.g.) m/0/1 matches the attacker's xprv? (And if that is feasible, how might I validate that the printed xpub matches the xprv for all possible addresses?)