I've never understood why encryption isn't already built in to everything we do in modern technology. As far as I am concerned the network card in your computer should generic a one-time public/private key pair for EACH connection it is making or receiving. The public key is transmitted to the other network device which uses it to encrypt the data to get sent back. Once a connection is closed the keys, salts, and other information is destroyed.
It would take a little extra computation on the hardware to make it happen, but the storage requirements for keeping the keys is minimal since each key would, in theory on exist for a few minutes before a connection is closed, and in the case of web traffic, a few seconds.
We could do a way with all sorts of things, like OS level encryption if it was built in by default - or keep it, and add a 2nd level of complexity to the data.