2011-05-09 15 views
5

Cómo cambiar la clave pública al lugar del cliente. He cifrado un documento (archivo de texto) usando el algoritmo RSA usando una clave privada y luego he almacenado la clave pública como un objeto java.security.Key en un archivo usando la serialización. Deseo saber sobre la integridad del objeto de la clave pública serializada si es una opción segura de hacer o cualquier otra opción disponible.intercambio de clave pública como un objeto serializado

Respuesta

2

Una clave pública se suele intercambiar como texto. Luego se importa a un almacén de claves. El método exacto de hacerlo depende de la implementación (siempre he usado PGP).

No exponer la clave como una forma serializada de java.security.Key porque no es realmente estándar. La clave en su forma simple es la forma estándar de intercambio.

Al exponer la clave como descarga: es pública, por lo que no hay nada que un intruso pueda hacer descargando la clave. Lo único que podría salir mal es que alguien podría falsificar su servidor y alojar una clave diferente. Luego, firme con la llave privada de esa llave y pretenda ser usted. Por supuesto, podría tener el mismo problema si se lo envió por correo a alguien. Pero al menos sabrías a quién lo enviaste.

El enfoque más seguro es repartir la llave fuera de límites. Como en un dispositivo USB.

Dependiendo de su causa, creo que puede vivir con el riesgo.

0

Joeri ha respondido sobre los aspectos de seguridad - No tengo nada que agregar al respecto.

El principal problema que puede tener es la representación serializada que cambia entre las versiones de la biblioteca, que es un problema potencial con el uso de la serialización de Java.

Por supuesto, hay otras maneras de hacerlo. La clave pública RSA debe tener una codificación estándar de la industria a la que pueda acceder utilizando el método getEncoded(). Esto le proporciona una matriz de bytes que puede write a FileOutputStream. Entonces es realmente fácil.

+0

Esto es cierto, pero para ser realmente útil: dado que tengo los bytes codificados, ¿cómo puedo construir una clave pública de ellos otra vez? – Suma

+0

Parece que la respuesta está en X509EncodedKeySpec - Supongo que es posible que desee incluir esto en la respuesta. Código de ejemplo disponible en http://v1.dione.zcu.cz/java/docs/tutorial/security/apisign/vstep2.html – Suma

Cuestiones relacionadas