How does one verify that the address of, say “Foodmart”, which the sales person is telling me to send the payment to is actually the address of “Foodmart” not that of that salesman himself? To be specific, how does the blockchain prevent address masquerading attacks?
As I understand, you have two options:
- Ask foodmart to give you payment request instead of only a bitcoin address. A SignedPaymentRequest bundles a PaymentRequest with a digital identity and signature, so you can be sure that you are paying the correct person or merchant. This was introduced in BIP70 and supported by these major bitcoin wallets
- Use another decentralized chain to store and verify identity. You can use NAMEID that is based on namecoin
Bitcoin provides no protection against such attacks. It is up to each user to verify that an address belongs to the person they really want to send money to.