¿Cómo puedo cifrar algo proporcionado por el usuario sin riesgo de que la clave esté expuesta?

0

Entonces, digamos que tengo un servicio teórico. El usuario tiene algún texto que quiere cifrar. Me lo pasan y lo cifro. Entonces, solo yo podré descifrarlo después. Otro kicker, debe usar una clave común. La clave puede cambiar ocasionalmente, pero no ser específica del usuario ni nada de eso.

¿Qué puedo hacer para evitar que las personas analicen los resultados cifrados de un texto conocido para encontrar la clave? Sé que hay cosas como ataques de extensión de longitud. ¿Qué algoritmo de cifrado sería el más seguro?

    
pregunta Earlz 25.02.2013 - 05:35
fuente

2 respuestas

2

Si un algoritmo de cifrado es susceptible a ataques de texto sin formato conocidos, entonces se rompe con bastante severidad. ¿Hay alguna razón por la que no utiliza un esquema de cifrado de clave pública / privada? Entonces, el usuario podría realmente cifrarlo antes de la transmisión y usted sería el único que podría descifrarlo. Lo más ideal es que realmente desee que elijan una clave, cifren los datos (simétricamente) con la clave, cifren la clave con su clave pública, le envíen los datos cifrados y la clave cifrada, luego, si necesita usar una clave común, puede descifrar los datos y volver a cifrarlos con su propia clave. Esto le brindaría protección mientras el archivo está en tránsito. (Alternativamente, si se trata de un servicio web, simplemente el uso de SSL para la transferencia hará lo mismo).

¿Hay alguna razón en particular por la que necesite usar la misma clave para cada usuario? Este es un gran punto de inseguridad, ya que resulta en un único punto de falla.

    
respondido por el AJ Henderson 25.02.2013 - 15:22
fuente
2

Primero, los ataques de extensión de longitud se aplican a funciones hash, no a algoritmos de cifrado. No tienes que preocuparte por ellos aquí.

Para responder a su pregunta, los algoritmos de cifrado estándar (como CBC) son seguros contra los ataques de texto sin formato seleccionados, por lo que de hecho están diseñados de manera explícita para estar seguros en este tipo de escenario: la capacidad de encriptar los textos de su elección bajo una clave desconocida no le da a un atacante información útil sobre esa clave (o sobre otros textos cifrados).

Si existe la posibilidad de que un atacante pueda manipular los textos cifrados (por ejemplo, los está enviando a través de un canal no autenticado o almacenándolos en un almacenamiento no confiable), entonces debe seguir los consejos de CodesinChaos y también buscar cifrado autenticado. Busque GCM o HMAC.

Dijiste que estarías dispuesto a aceptar esta respuesta si la moviera de un comentario, pero te animo a que también eches un vistazo a la respuesta de AJ Henderson. Los requisitos inusuales de este servicio teórico vagamente definido me hacen sentir un poco desconfiado de hacer recomendaciones específicas, pero si su sugerencia es práctica, probablemente sea el camino a seguir.

    
respondido por el Seth 25.02.2013 - 22:32
fuente

Lea otras preguntas en las etiquetas