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
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.
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.
- 1. ¿Cómo cambiar un objeto serializado?
- 2. Extensión de archivo para un objeto serializado
- 3. Objeto como clave hash
- 4. Encontrar serialVersionUID del objeto serializado
- 5. intercambio de clave pública/privada en PKCS n. ° 1 OAEP cifrado/descifrado
- 6. valores clave clave de intercambio sql
- 7. Usando un objeto como clave para NSDictionary
- 8. Clave de Apple clave privada/pública cuestión
- 9. Serialización de XML: objeto no serializado
- 10. ¿Cómo puedo averiguar el serialVersionUID de un objeto Java serializado?
- 11. Almacenar un objeto serializado en la base de datos MySql
- 12. ¿Cómo combinar una clave privada y una clave pública de un secreto compartido en Java
- 13. Llamar a inicializar al cargar un objeto serializado con YAML
- 14. ¿Qué es un objeto "serializado" en la programación?
- 15. de clave pública (generado como seckeyref en iPhone) al servidor (en Java)
- 16. Aclaración sobre la clave pública de Android?
- 17. Usar un objeto como una clave de diccionario genérica
- 18. Usar un objeto como clave de propiedad en JavaScript
- 19. ¿Cómo obtener la clave pública usando PyOpenSSL?
- 20. Encriptación de la clave AES con la clave pública RSA
- 21. uso como objeto personalizado Diccionario Clave
- 22. ¿Cómo configuro la Autenticación de clave pública?
- 23. Error de Heroku: "Permiso denegado (clave pública)"
- 24. ¿Cómo encriptar usando la clave pública?
- 25. cómo funciona la criptografía con clave pública
- 26. Cómo almacenar clave privada y clave pública en KeyStore
- 27. Lectura de clave pública/privada de la memoria con OpenSSL
- 28. ¿Cómo extraer la clave pública usando OpenSSL?
- 29. iOS SecKeyRef (clave pública) enviarlo al servidor
- 30. Permiso denegado (clave pública, teclado interactivo)
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
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