Explicar la seguridad frente al rendimiento a un superior no técnico

4

Mi SO no técnico me encargó la implementación de algún tipo de codificación / decodificación basada en contraseña en una aplicación de Android. También me mostró esta lista de proveedores de seguridad de Android . Naturalmente, eligió el que tiene la mayoría de las siglas y los números más altos ( PBEWITHSHA256AND256BITAES-CBC-BC ) para ir con.

¿Cómo le explico a él (en términos sencillos) que el proveedor es bastante exagerado para la aplicación, y podría resultar en un impacto en el rendimiento?

    
pregunta Community 25.12.2011 - 15:46
fuente

4 respuestas

9

El cifrado basado en contraseña, con el cifrado de los datos y una firma para probar que nadie puede haber modificado los datos sin tener la contraseña, usar claves más largas, es una buena opción.

PBE = cifrado basado en contraseña. ¿No es esto lo que necesitas?

WITHSHA256 = SHA-256 es un algoritmo hash moderno, y se usa para probar que nadie puede haber modificado los datos sin tener la contraseña a mano. Los hashes de 256 bits son el estándar moderno, con hashes de 512 bits para aquellos de nosotros que queremos un poco más de tranquilidad. La familia SHA-2 de funciones hash es el resumen estándar más reciente del NIST.

AND256BITAES = AES-256 es un algoritmo de cifrado moderno. El tamaño de la clave de 256 bits es para aquellos de nosotros que queremos un poco más de confianza, aunque un tamaño de clave de 128 bits puede ser suficiente para muchos usos. La familia de funciones AES son los cifrados de bloque estándar más recientes del NIST.

CBC = El modo CBC para el cifrado es la opción predeterminada para convertir un cifrado de bloque en un cifrado de flujo. Los cifrados de flujo son necesarios cuando uno tiene un flujo de datos de longitud arbitraria para ser cifrados. AES en modo CBC es una opción más moderna que RC4.

BC = La opción de la biblioteca del proveedor de cifrado. Elija una biblioteca criptográfica confiable y de rendimiento. BouncyCastle se implementa en Java, por lo que el JIT puede ser capaz de optimizarlo. OpenSSL se implementa en C y el proveedor de cifrado puede tener enlaces a las funciones C, pero el JIT no puede optimizar las funciones C.

Si hay una necesidad de cifrar, entonces hay una necesidad equivalente de cifrar con algoritmos y técnicas modernas. Utilícelos, a menos que haya una razón específica, demostrable y probada en contra.

    
respondido por el yfeldblum 25.12.2011 - 20:13
fuente
2

Sin más información, no es posible para nosotros decir si ese algoritmo es una exageración. Puede ser justo. Es necesario tener en cuenta los requisitos de rendimiento y riesgo para determinar el algoritmo. Y esos requisitos deben acordarse entre la empresa y la seguridad: el compromiso determinará los requisitos de TI.

    
respondido por el Rory Alsop 25.12.2011 - 16:22
fuente
2

" PBEWITHSHA256AND256BITAES-CBC-BC " no es una mala elección (consulte la respuesta de @Justicia). No le dice a todo lo que se hará a nivel criptográfico; a saber, "PBE" significa "Cifrado basado en contraseña", lo que implica que una contraseña se transformará en una clave de cifrado (una clave de 256 bits, ya que el sistema de cifrado es AES-256) mediante una función hash. Dicha transformación está sujeta a algunos parámetros configurables (recuento de iteraciones, sal ...) y hay un amplio margen para los problemas. Sin embargo, SHA-256 y AES-256 son opciones de sonido. AES-128 es algo preferible ya que ya es lo suficientemente seguro contra tecnología no extraterrestre, y es aproximadamente un 29% más rápido que AES-256, pero esa mejora de la velocidad solo está en condiciones ideales, cuando el cifrado simétrico en bruto es el cuello de botella. y todo lo demás en la aplicación de software es rápido y resbaladizo; esto rara vez sucede. En la lista de algoritmos a los que se vincula, esto representaría un caso para PBEWITHSHA256AND128BITAES-CBC-BC .

El problema real es que su SO no técnico parece ser un chimpancé: toma decisiones de seguridad basadas en la belleza de las siglas. Todavía lo hará bien de vez en cuando, aunque solo sea por pura suerte, como en este caso específico. Sin embargo, en general, esto es preocupante. En cuanto a convencerlo para que modifique sus elecciones, es poco probable que los argumentos científicos racionales sean efectivos: la ciencia solo funciona en personas que ya se están sometiendo a su grandeza, y alguien que acude al acrónimo de apariencia más mala no es no Listo para aceptar que aplica la ciencia. Le sugiero que trate de darle un plátano en su lugar. En su caso, la fruta sabrosa tomaría la siguiente apariencia: emita la hipótesis de que AES-128 reduciría los costos en (hasta) 29%; eso es una mentira descarada (los asuntos financieros están muy poco vinculados con la velocidad de encriptación en bruto), pero al menos es brillante.

(Para ser justos con su SO, es muy posible que solo intente apaciguar a otro simio ubicado más arriba en la jerarquía. Esto no cambia realmente la situación.)

    
respondido por el Tom Leek 26.12.2011 - 21:48
fuente
-1

Es posible que desee intentar demostrarle que es mucho más lento que básicamente cualquier otro algoritmo en esa lista.

Simplemente ejecuta cada algoritmo un millón de veces y muéstrale la diferencia horaria. Luego explica que el más rápido es perfectamente seguro.

    
respondido por el soandos 25.12.2011 - 15:51
fuente

Lea otras preguntas en las etiquetas