Vaya mira, una de las soluciones q te daria si no quieres ofuscar tu codigo es:
1 - Lo puedes hacer Web (que seria lo ideal), ya q de esa manera cualquier usuario estando en cualquier maquina puede acceder a sus credenciales en lo sitios, imaginate ha salido de su casa donde tiene el programa, solo necesita acceder a una computadora al sitio y poder adminsitra via web sus contraseñas. Siento que seria el mejor enfoque para tu aplicacion que tiene muy buena idea. Ojo tambn ganas portabilidad en cualquier plataforma, no tiene q ser necesariamente Windows, (a excepcion de Mono en Linux para correr app en .NET), estando en al Web, no importa si esta en un SmartPhone, Tablet, iPad, Tele Inteligente, o OS, siempre vas a poder acceder, asi q ganas un buen numero de beneficios alli
2 - Bueno, pero si quieres mantener la aplicacion Desktop, buena una solucion para la "Key" de las cuentas podria ser utilizar una "Encriptacion de Maquina".
Los pasos serian asi:
- Creas una nueva cuenta de usuario, pides su Nickname, password, y Key de cifrado.
- La "Key" proporcianada por el usuario, la encriptas utilizando la clase ProtectData. Link de ayuda: http://msdn.microsoft.com/es-es/library/system.security.cryptography.protecteddata.aspx
- La encriptacion en ese modo significa que solo puede ser Desencriptada en tu Computador, si intentas desencriptar en otra computador, te va a dar otro valor.
- Y cada vez que necesites desencriptar una credencial, debes de desencriptar la Key, y pasarsela a tu funcion para desencriptar la contraseña de la cuenta que desea ver.
Ojo con ese metodo tienes sus pros y sus contras.
- Solo vas a poder desencriptar en la maquina que utilizas, (podrias crear un metodo adicional por si el usuario se cambia de PC, pueda volver a encriptar sus Password, en la nueva maquina)
- Nadie podria llevarse tus credenciales, ya que para ver tus contraseñas es OBLIGACION q lo vea desde tu maquina, ya q no podria desencriptar en otra maquina que no fuera la tuya.
- Puede ser un problema si el usuario anda el programa en un USB de una maquina para otra.
Aunq en resumido, la mejor opcion sigue siendo lo de la Web, te ahorras varias problemitas como estos, ya que solo en tu servidor estaria el almacen de datos, asi q es mas dificil que llegen al almacen. En cambio tu almacen de datos cualquiera puede llegar a la informacion.
Pero bueno, ambos tienes sus pro y contras. Y para finalizar, podrias "ofuscar" tu aplicaciones, para q no se puede Decompilar el Exe tan facil.!
MSDN tiene muy buenos tutoriales y otros metodos que pueden ser mejor que lo q yo te planteo, puedes echar un vistazo en MSDN:
http://msdn.microsoft.com/es-es/library/fkytk30f(v=vs.80).aspx y empezar a ver otra opcion que se adapte mejor a tus necesidades
NOTA:Si quieres algo un poquito mas completo, puedes utilizar el Algoritmo Asimetrico RSA, (hasta donde me acuerdo haber visto en clase, es el mas seguro), el algoritmo utiliza Llave Privada y Llave Publica para desencriptar el contenido (Este algoritmo utiliza Amazon en su servicio de Web Services), lo que hace es q tu puedes darles a todos tu llave Publica, para que puedan encriptarte contenido, y solo tu puedas desencriptar con tus llaves privadas y tu llave publica. Ojo la llave publica solo es para q las demas personas puedan encriptarte y mandarte a ti contenido encriptado. Y las llaves privadas (que solo tu tienes) te sirven para desencriptar. Podrias leer un poquito mas sobre ver como implementar el algoritmo en tu aplicacion.
te dejo un ejemplo que encontre para pasar a XML tu calve privada y publica de RSA:
http://topicos-seguridad.blogspot.com/2009/04/creacion-de-llaves-publicas-y-privadas.html