I've been thinking a lot about password security these days, and have been becoming more and more hesitant to use services that have login forms that are not on HTTPS. As I was researching security, I played around with Cain & Abel on my local network to see how easy it really would be to run a man-in-the-middle attack on sites that don't use HTTPS. Unfortunately, it's pretty dang easy.
So I've been trying to think up ways to get around this. It's unrealistic to expect myself - and certainly the rest of the security-ignorant world - to simply stop using services that don't use HTTPS. There's too many of them that don't.
The plan that I'm most interested in right now utilizes a proxy system on an EC2 instance to do logins remotely, and then pass back the secured session/cookies. Essentially, the flow would look like this:
- User send username/password and domain cookies over SSL to an EC2 instance.
- EC2 instance uses cookies to imitate the user's session, and submits a login request.
- EC2 instance returns any new cookies to the user, as well as any redirects that may have been requested by the login server
- User sets cookies per the EC2 response, and either refreshes (if no redirects), or redirects to the specified URL.
The security here relies on the fact that EC2 instances are distributed and anonymous, making them fairly secure against man-in-the-middle attacks. Certainly there is still a possibility, but in my mind this vastly decreases the risks of sending passwords to non-SSL sites.
Are there any security holes here that I'm not seeing? Is there a real security benefit from doing logins this way?