I’m writing a piece of open-source client software that can connect to web services on behalf of a user. The user enters his username and password, and the software connects using those credentials.
For convenience purposes, I have an option for the software to save the user’s credentials so that they don’t need to be entered again in the future.
However, since this is open-source, I’m not sure how I can store the credentials in a reasonably secure way. It strikes me that any method I use to encrypt the password could easily be reversed and used to decrypt the password. I realize that perfect security is impossible, but is there a better practice than using ROT13 like I’m currently doing?
There’s a pretty good treatment of saved passwords in an open-source client by the Pidgin developers; the same reasoning would apply to a web service client.
Executive summary: