Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
Yes it is similar in the UK. I was trying to convey that sort of difference in my answer. There's a big difference between saying "web servers are often vulnerable to SQL injection like blah" and "This site has a vulnerability that can be exploited with an SQL injection such as this and you can then steal all their credit card details". I hope that came across in my answer.
One of the points of using public/private keys is that you don't need to worry about encrypting the public key. Having a shared secret AES key to encrypt this part would be pointless. Otherwise your system looks like a common key exchange system such as SSL. Is there a reason why you're rolling your own? Adding that to the question may fend off some 'just use <blah>' answers.
This is true. I went to a talk by the gentleman who developed the encryption for the GSM standard (A5/1). His remit was to make an encryption standard that didn't require powerful chips (mobile phone companies wanted cost/power to be low) and would last 20-25 years. It lasted that long before it was finally cracked.
The thing you "have" is the private key (the public key is put onto the server you're logging into). The attacker shouldn't have this part of the key pair; hence something you "have". It is the private key that would be on a dongle/card. Only the private key can sign things that can then be decoded using the public part of the pair (thus proving you are who you say you are). I believe I haven't got myself muddled here though I always have to think hard about the details of PKI.
You can set ssh to allow you access only if you have the key and type in the password. You "have" the key on your computer and you are presenting it to the other side when authenticating. Smartcards et al. simply embed the key into an external device.