A variant of phishing involves subverting an Internet access point, often
used for mobile computing. Malware can route user requests for bank
websites into a phisher's private network, with fake bank websites
(pharming). The user can have a "mobile password" at the bank. When she
connects from an access point, she sends a hash, found from the password,
starting at some position in it. The bank returns a hash, found from the
same password, starting at another position in it. Each can verify the
other. We protect both from a man in the middle attack. By hashing a web
page and the mobile password, and inserting the hash into the page that
is sent, the recipient can verify that the page is untampered. We use an
anonymizer, external to the access point. A user pre-establishes a
password with the anonymizer. At the access point, she and the anonymizer
use a zero knowledge protocol to verify each other, based on the
password. Then, the password encrypts communication between them. From
the anonymizer, she logins elsewhere. The anonymizer is our man in the
middle, to defeat a man in the middle attack. W extend earlier
antiphishing methods, to attack pharms for non-existent banks, or that
are unauthorized websites for actual companies. We show how to use a
plug-in to let websites share several two factor implementations. This
reduces the cost and inconvenience to consumers, who might otherwise have
to carry and use a different two factor gadget, for each of their bank
accounts or other corporate websites that mandates the usage of two
factor authentication. By expanding the scope of two factor usage, we
improve the security of e-commerce, without having to use a public key
infrastructure.