can't an observer possibly encrypt many possible and likely short messages (like, "hey!" or "lol") with the public keys of some users of value and sniff the network for matches?
no. the same message does "never" encrypt to the same cypher:
It's a header with a version number and the ID of the receivers key that the message was encrypted with. Base64-decode and hexdump those messages and look for 54483646 (one of the subkeys of F8669BB7). The encrypted message is after that and would look random.
The format is defined in http://tools.ietf.org/html/rfc4880
edit: It's not encrypted with the primary key, but one of the subkeys.
Interesting, thanks for the overview. I'll have a poke around the doc :) I've been meaning to look into more about how these things work. I understand the very high level stuff and the very low level (how to use the tools roughly and some of the maths behind it all) but not so much in-between.
no. the same message does "never" encrypt to the same cypher: