Seguridad: ¿Cómo almacenar Llave de encriptación localmente?

04/01/2007 - 19:05 por Néstor Sánchez A. | Informe spam
Hola,
tengo la siguiente duda respecto a seguridad y quisiera saber cuál es la
mejor práctica.
Para una aplicación WinForms C/S se requiere almacenar la Llave de
encriptación localmente.
¿cómo se podría almacenar la llave para que fuera accedida sólo por la
aplicación WinForms y no un usuario malicioso?
Alternativas:
- Un archivo: La clave tendría que a su vez estar encriptada para que no
fuera visible a simple vista.
- En duro en la aplicación: El problema es que el programa se puede
decompilar (incluso si está ofuscado).
- ¿Depender de un servicio del Sistema Operativo u otro ente externo?
Gracias de antemano,

Néstor.
 

Leer las respuestas

#1 Alberto Poblacion
04/01/2007 - 19:31 | Informe spam
"Néstor Sánchez A." wrote in message
news:
¿cómo se podría almacenar la llave para que fuera accedida sólo por la
aplicación WinForms y no un usuario malicioso?

Alternativas:
- Un archivo: La clave tendría que a su vez estar encriptada para que no
fuera visible a simple vista.



No resuelve nada. Vuelves a tener el problema de cómo almacenas la clave
que sirve para desencriptar el archivo.

- En duro en la aplicación: El problema es que el programa se puede
decompilar (incluso si está ofuscado).



Cierto. Viene a ser lo mismo que almacenarla en un archivo.

- ¿Depender de un servicio del Sistema Operativo u otro ente externo?



El sistema operativo tiene un servicio para esto, que se llama DPAPI
(Data Protection API).

Otra alternativa: Utilizar criptografía de clave pública. La aplicación
cliente tiene (en un archivo sin encriptar) la clave pública (pero no la
privada) del servidor. Cuando tiene que comunicarse con éste, genera al azar
una clave de criptografía simétrica, la cifra mediante el algoritmo de clave
pública y se la envía al servidor. Nadie más la puede descifrar, ya que para
ello se necesita la correspondiente clave privada, que solo está en el
servidor. El servidor usa la clave privada para decodificar la clave
simétrica generada al azar, con lo que sólo él y el cliente tienen dicha
clave simétrica. Una vez completados estos preliminares, la comunicación
cliente/servidor se realiza empleando esta clave simétrica, que en ningún
momento ha estado grabada en ningún sitio del PC.

El proceso se puede sofisticar más si es necesario, por ejemplo, se puede
usar un certificado (en lugar de un simple fichero) para contener la clave
privada del servidor, para que no pueda ser falsificada.

Preguntas similares