elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Criptografía (Moderador: kub0x)
| | | |-+  Proteger par de claves RSA
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Proteger par de claves RSA  (Leído 7,824 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Proteger par de claves RSA
« en: 29 Marzo 2016, 15:06 pm »

Buen dia foro. Estoy viendo las alternativas para proteger el par de claves RSA.

Tengo este programa en el que estoy trabajando, un projecto personal.

El programa genera el par de claves RSA de 1024 o 2048 con la API de libgcrypt, ya puedo cifrar y firmar los archivos con dicha clave.

El programa es mas o menos autonomo, he visto que normalmente se trabaja con un password para cifrar las claves con AES o algun otro algoritmo de cifrado simetrico, y asi solo la persona que conoce el password tiene acceso al par de claves.

Pero como mi programa es autonomo estoy buscando una alternativa mis idias son las siguientes.

  • Buscar un tipo de UUID en la maquina y usar su sha256 de password
  • Generar un archivo random y usar su sha256 de password
  • hardcodear el password en la aplicacion (mala idea) pero es una opcion

¿Alguna otra?

¿Que suguieren ustedes?

Saludos.


En línea

~

Desconectado Desconectado

Mensajes: 85


Ver Perfil WWW
Re: Proteger par de claves RSA
« Respuesta #1 en: 29 Marzo 2016, 17:32 pm »

Aplicar SHA3-512 a la contraseña y recalcularla cada vez que se desencripte para comparar. No almacenar ese hash ni la contrasea.


En línea

Donar con PayPal para que siga trabajando:
https://www.ebay.com/usr/udocproject3

Streams en vivo de programación:
PC 1 - PC 2

http://www.youtube.com/@AltComp126/streams
arget

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Proteger par de claves RSA
« Respuesta #2 en: 31 Marzo 2016, 22:58 pm »

~ (así te llamas), eso no sirve, porque según entiendo pretende que su programa no dependa del usuario, es decir, que el usuario no tenga que lidiar con este en ningún momento. Esto exige claramente que el programa tenga los medios para obtener la clave. Esto es un grave problema, es equivalente a cerrar la puerta y dejar la llave al lado y (prácticamente) a la vista, cualquiera que acceda al ordenador tendrá acceso al archivo cifrado y su clave, aunque la clave se encuentre escondida o dentro del programa o donde sea, o incluso si la clave se genera en tiempo de ejecución, se puede reversear el programa para ver cómo se genera y obtenerla. Sin embargo, solo se me ocurren dos opciones:
La primera es mandar la clave a un servidor remoto con contraseña, esta contraseña podría ser la misma que la contraseña de login del usuario o una derivada de esta, la contraseña del usuario podrás arreglártelas lidiando con el sistema operativo para tener acceso a ella (se me puede ocurrir quizá en lugar de usar la contraseña en sí, usar una derivación del hash almacenado en /etc/shadow o en C:/WINDOWS/System32/config/*, no emplees el hash en sí, porque aunque sea el hash se puede intentar atacar si alguien lo captura on air, por supuesto la conexión con el servidor remoto debe ser segura, como SSH).
La segunda sería generar la contraseña en tiempo de ejecución de manera aleatoria, esto es, al ejecutar el programa por primera vez este aleatoriamente creará un algoritmo de generación de contraseña, este será codificado biinariamente de una manera que solo tu programa conocerá, en un archivo con los mismos permisos que el shadow, cuando se vuelva a ejecutar el programa, este leerá e interpretará el algoritmo escrito en dicho archivo, cogerá la variable del sistema necesaria para ejecutarlo (como bien dices puede ser el UUID de una partición en la máquina), completará el algoritmo a partir de esta variable y obtendrá la contraseña (evidentemente todos los datos confidenciales se deberán borrar inmediatamente mediante una función memset modificada para ello).
Todo esto solo molestará un poquito a cualquier atacante, sin embargo puedes y debes ofuscar el código (existen programas para eso). Eso fastidiará bastante más, de todas formas, solo retrasa lo inevitable. Todo esto dejando de lado que tu programa será de código cerrado, si es de código abierto todo será en vano.
Yo lo que te he propuesto es una forma de ofuscar el código, por supuesto lo puedes hacer todo mucho, muchísimo más lioso, pero esto es anticriptográfico, anti-principios de Kerkchoffs, la seguridad de un sistema no debe depender de que su diseño permanezca en secreto.

En realidad la solución más simple y correcta sería pedir una contraseña al usuario o emplear la contraseña de login del usuario obtenida tal cual (en texto plano) de la forma que veas (en relación con el SO), o su hash del shadow.
En línea

La gestión manual de bloques de memoria en C es como hacer malabarismos con pastillas de jabón en la ducha de la prisión: todo diversión hasta que cometes un fallo.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Proteger par de claves RSA
« Respuesta #3 en: 1 Abril 2016, 20:14 pm »

Buenas Alberto,

he posteado en cryptostackexchange una pregunta relacionada con tu cuestión -> https://crypto.stackexchange.com/questions/34155/storing-rsa-private-key

Si sólo necesitaras implementar un protocolo de comunicación segura basada en criptografía híbrida (AES + RSA/DH/ECC) te recomendaría DHE o ECDHE pero veo que tienes que firmar no te queda otra que guardar la privada.

Saludos!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Proteger par de claves RSA
« Respuesta #4 en: 2 Abril 2016, 23:23 pm »

Lo óptimo sería guardar la clave privada RSA cifrada con AES-GCM ya que GCM provee de aunteticación e integridad. De esta forma también puedes detectar modificaciones sobre el ciphertext.

Otras alternativas serían crear dos claves simétricas, una para AES-CBC y otra para CMAC, ambas derivadas de una MasterKey mediante una PRF (SHA-256 preferiblemente). Pero con GCM te ahorras el usar dos keys, es como aplicar un MAC al cifrado, todo en uno.

Saludos!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Proteger par de claves RSA
« Respuesta #5 en: 3 Abril 2016, 02:01 am »

muchas gracias kub0x, voy a leer sobre los metodos de cifrado que comentas, te comento que apenas estoy aprendiendo de esto y todavia no entiendo todos los terminos, aun asi aprendo rapido.
En línea

arget

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Proteger par de claves RSA
« Respuesta #6 en: 3 Abril 2016, 20:36 pm »

Kub0x, yo no sé si no he entendido su pregunta, pero creo que el busca almacenar de manera segura su clave privada. Es evidente que es necesario cifrarlo mediante un algoritmo simétrico, sin embargo, como comento arriba, si el texto cifrado y la clave se encuentran en el mismo sistema la seguridad es casi nula. Supongo que sería más pertinente hablar de la manera de almacenar de manera segura la contraseña simétrica en lugar de hablar de en qué algoritmo hay que emplearla.

Si me he perdido algo explicádmelo, por favor.
En línea

La gestión manual de bloques de memoria en C es como hacer malabarismos con pastillas de jabón en la ducha de la prisión: todo diversión hasta que cometes un fallo.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Proteger par de claves RSA
« Respuesta #7 en: 3 Abril 2016, 23:43 pm »

Buen dia.

Al final he decidido guardarlas cifradas con AES128 utilizando un subconjunto del sha256 du uno de los archivos para password y otro para IV.

al final no hay tanto problema si alguien decompila el programa y deduce que subconjunto y que archivos son los que use y decifra las claves aun asi no podran hacer mucho el servidor esta mas protegido y el programa solo recive actualizaciones que vengan cifradas y firmadas por el servidor.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[MOD] Proteger CD
Software
darth davers 1 5,067 Último mensaje 25 Mayo 2005, 19:31 pm
por el-brujo
Proteger mi CD please
Software
Leodark 1 3,060 Último mensaje 28 Mayo 2005, 00:08 am
por + enrique ZP
Proteger DVD
Multimedia
SatDio 1 2,697 Último mensaje 15 Agosto 2005, 13:57 pm
por Songoku
Proteger DVD
Multimedia
clopezar 0 1,833 Último mensaje 11 Marzo 2006, 04:51 am
por clopezar
Generador en Java : Crea claves seguras WPA y WPA2 para proteger tu red WiFi
Noticias
wolfbcn 1 4,657 Último mensaje 14 Febrero 2012, 16:14 pm
por MauroMasciar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines