La entrada del blog de Pascal muestra algunos puntos débiles, algunos de los cuales se recuerdan en aviso de ownCloud , pero No recordaron lo peor.
El almacenamiento de claves de cifrado como archivos en /tmp
ya es bastante malo, especialmente porque /tmp
es un verdadero directorio basado en disco en muchos sistemas operativos Linux y * BSD (normalmente configuro mi /tmp
para que sea un sistema de archivos basado en memoria, pero este no es el predeterminado). Por lo tanto, algunas claves de cifrado lo harán al almacenamiento físico. Y es bien sabido que la eliminación de un archivo no borra los datos; simplemente marca los bloques correspondientes como reutilizables. Los datos no se escriben hasta que se crean algunos archivos nuevos. Por lo tanto, se puede suponer que algunas claves se perderán si el servidor sin alimentación es robado.
La peor debilidad es sobre la generación de claves. Pascal lo dice como:
El cálculo de la entropía general, y por lo tanto el esfuerzo por adivinar una clave, se deja al lector ... Sin mencionar la cantidad máxima alcanzable de 4 * log 2 (99999-10000 + 1 ) = 65.8 bits de entropía, que están lejos del valor mínimo recomendado de 80 bits.
El bit sobre "65.8 bits" es engañoso: significa que la forma en que ownCloud genera claves implica una entropía máxima de esa cantidad ... suponiendo que el PRNG involucrado es perfecto. Pero no lo son. El 65.8 proviene de la producción clave como cuatro enteros en el rango 10000..99999. Pero provienen de un PRNG Mersenne twister, que se siembra con otro PRNG, que a su vez se siembra a partir de la hora actual y el identificador de hilo. El tiempo es llevado al microsegundo; Supongamos que el atacante sabe ese tiempo con una precisión de un segundo. Supongamos también un identificador de hilo de 16 bits. Eso es, en el mejor de los casos, 36 bits de entropía. Un mero PC pasará a través de eso en cuestión de, en el peor de los casos, unas pocas horas (el cifrado usa Blowfish, que tiene un programa de claves bastante caro, pero no es tan caro).
Por supuesto, ya que hay una contraseña involucrada, atacar la contraseña probablemente sea incluso más fácil, pero esta generación de claves de baja entropía evita el fortalecimiento de una contraseña grande y aleatoria. Esto es bastante inútil. Si se reemplazara el tornado Mersenne por un PRNG decente, criptográficamente fuerte con una siembra apropiada (por ejemplo, simplemente leyendo de /dev/urandom
), entonces las otras debilidades serían una fuente de gran preocupación, pero la débil siembra triunfa sobre todo .