Yes, it's a technical limitation. Sending by bitcoin address enters the transaction into the network and the recipient discovers it from the network. You don't connect directly with them and they don't have to be online at the time.
I very much wanted to find some way to include a short message, but the problem is, the whole world would be able to see the message. As much as you may keep reminding people that the message is completely non-private, it would be an accident waiting to happen.
Unfortunately, ECDSA can only sign signatures, it can't encrypt messages, and we need the small size of ECDSA. RSA can encrypt messages, but it's many times bigger than ECDSA.
Satoshi was wrong here.
Though ECDSA can't encrypt messages itself but ECDH can do it!
So if I will get public key from any (most of) bitcoin transaction, then I can encrypt any message with shared_private_key = receiver_public_key*my_private_key. This message can only be decrypted by me and
by owner of receiver_private_key (if I send him my_public_key)This algorithm can be easily implemented in bitcoin client as private-message system.
What do you call the receiver private key? It's the private key of the message receiver? Why would you need to send him your public key? If he's the message receiver it's him who need to send you his own public key, no?