2010-01-05 73 views
6

Para mi aplicación de iPhone, Apple quiere saber si mi cifrado de contraseña (md5) es mayor que simétrico de 64 bits o superior a 1024 bits simétrico. No he podido encontrarlo en línea, así que me pregunto si alguien sabe la respuesta. Además, ¿se considera esto que es una tecnología de encriptación apropiada para las contraseñas, o debería usar algo diferente?¿El cifrado Md5 es simétrico o asimétrico?

¡Gracias por cualquier ayuda!

Respuesta

32

MD5 es una función hash, por lo tanto, por definición no es reversible. Este no es el caso para el cifrado (simétrico o asimétrico), que debe ser reversible para ser útil.

Para ser más precisos, los hash son funciones unidireccionales, ya que un número infinito de entradas se puede asignar a una única salida, por lo que es imposible obtener la entrada exacta, con certeza, que dio como resultado una salida determinada.

Sin embargo, puede que sea posible encontrar una entrada diferente que tenga el mismo resultado. Esto se llama colisión .

Generalmente, las contraseñas hash en lugar de almacenar el texto sin formato (incluso encriptado) son una buena idea. (Aún mejor si se usa una sal) Sin embargo, MD5 tiene debilidades conocidas (y grandes colecciones de tablas de arcoiris que ayudan a encontrar colisiones), por lo que sería una buena idea cambiar a algo como SHA-1 o uno de los SHA-2 familia de hashes.

Sin embargo, para responder a su pregunta original, realmente no hay manera de comparar MD5 o cualquier hash contra ningún tipo de cifrado; no tienen equivalentes porque es como comparar manzanas y naranjas.

+3

Hola Peter: ¿Esto significa que mi aplicación no "contiene cifrado"? – PF1

+1

Estrictamente hablando, no. Usar MD5 o cualquier otra función hash para que la contraseña real no se almacene a veces se conoce como "encriptación unidireccional", aunque el uso del término encriptación es un nombre inapropiado: (Obligatorio enlace de Wikipedia: http: //en.wikipedia .org/wiki/One-way_encryption) – Peter

+0

Sé que esto es tarde, pero solo para agregar ... En lugar de usar SHA-1 o SHA-2, también podría intentar salar un hash o incluso usar tanto MD5 como SHA -1. –

7

md5 no es en realidad cifrado simétrico o asimétrico porque no es reversible ni de forma simétrica ni asimétrica. Es un algoritmo Message Digest (hash seguro).

2

Es cifrado NOT en absoluto.

5

No es cifrado, es un resumen. Si no lo sal, no es particularmente seguro, pero te están haciendo una pregunta incorrecta.

¿Qué estás haciendo exactamente con MD5 y contraseñas? Aquí hay formas estándar de hacer las cosas, y siempre es mejor usar una, pero sin saber lo que quiere hacer, es difícil señalarle un estándar relevante.

0

Creo que MD5 se usa para una mejor seguridad ... si hablamos de cualquier algoritmo de cifrado o descifrado, solo sirven para convertir cualquier texto simple en texto cifrado ... pero, por otro lado, MD5 proporciona una singularidad en ese texto simple que sería enviado por cualquier fuente (Alice) ... por lo que podemos decir que para una mayor seguridad o para proporcionar envolvente en texto sin formato MD5 se debe utilizar antes de usar algothim algothim (simétrico o asimétrico).

0

Como han mencionado otros muchachos aquí presentes, MD5 no es un algoritmo simétrico o asimétrico.

En su lugar, pertenece a una rama diferente de la criptografía. Es uno de los algoritmos hash más pequeños disponibles en el marco .Net. A solo 16bytes para sus keysizes, que deberían ser 128 bit. Algo con lo que aprendes tu pan y mantequilla.

Así que sí es mayor que 64 bits, que tiene solo 8 bytes de tamaño.

El tamaño de clave máximo que utilizan los symm 'enc' algs comunes es de 256 bits (administrado por Rijndael).

Si desea buscar tamaños de claves mayores que eso, entonces puede utilizar el RC2 symm 'enc' algs que admite tamaños de clave variable. Algo con lo que puedes experimentar?

Si quieres más de 1024 bits, entonces necesitas mirar Asymm 'Enc' Algs como la clase RSACryptoServiceProvider que admite tamaños de clave de hasta 16K en Bits, ¿no?

Si quiere usar contraseñas, entonces necesita usar Keyred Hashing Algs, como cualquier cosa HMAC ', deberían ser Keyed Hashing Algorithms o MacTripleDes. Todos estos utilizan claves secretas para encriptar el hash que se genera a partir de los datos que proporciona. Las claves se crean utilizando contraseñas y valores de sal a través de la clase RFC2898DerivesBytes. < - No olvide que RC2, Rijndael, AES, DES y todos pueden configurarse para usar contraseñas para ayudar a derivar las claves secretas. En caso de que esté pensando que la frase de apertura de este párrafo es un poco engañosa. Así que agregué esto solo para estar seguro de que el hashing no es lo que necesita en conjunto.

* RECUERDE QUE HAY JERARQUÍAS DE HERENCIA ÚNICAS EN .net Cryptography NameSpace. Entonces, MD5 es la clase abstracta de base de la cual se derivan todas las clases derivadas de MD5. .Net proporciona una de esas clases derivadas que se llama clase MD5CryptoServiceProvider. Que es esencialmente una clase contenedora gestionada que hace que la llamada a las ventanas no se administre Crypto-Libraries API. MD5 es conocido en los libros de texto oficiales de MS bajo el término general como Algoritmo hashing no-clave. *

Hay muchas opciones disponibles para usted.

:) ¡Disfrútalo!

2

Apple formula la pregunta sobre el uso de MD5 para contraseñas de hash para ver si requiere autorización para exportar del Departamento de Comercio/Oficina de Industria y Seguridad.

La respuesta para este propósito es que el uso de MD5 para protección de contraseña no se controla como cifrado fuerte (como algoritmos simétricos de más de 64 bits) de acuerdo con la Nota técnica 15 CFR parte 774, Suplemento 1, ECCN 5A002, el párrafo a.1, que describe el uso de cifrado para la protección con contraseña. Sin embargo, aún puede controlarse bajo ECCN 5A992.

http://www.bis.doc.gov/encryption/ccl5pt2.pdf

Las otras respuestas no son útiles en el contexto de por qué se hizo la pregunta.

Además, es posible que desee llamar al Departamento de Comercio/Oficina de Industria y Seguridad al 202-482-0707 y preguntar acerca de su aplicación específica.

1

La función hash la mayoría de las veces es una forma de comprimir sus datos. Son funciones hash unidireccionales, lo que significa que son difíciles de revertir (teniendo la función hash = resumen de un mensaje es difícil encontrar el mensaje original que se convierte al valor hash específico). Por otro lado, son muy fáciles de implementar porque no hay necesidad de ningún tipo de clave.

No es un algoritmo simétrico o asimétrico. Este tipo de algoritmos se utilizan para cifrar y no para copiar datos. El cifrado se usa por razones de confidencialidad para proteger los datos de los atacantes cuando intentan leer los de alguien.

Los algoritmos de encriptación o cifrado necesitan claves para realizar sus tareas, a diferencia de los hash, donde no necesitan ningún tipo de clave. Los hash no se usan por razones de confidencialidad, sino por razones de integridad, incluso si no tienen la fuerza suficiente.MD5 es un tipo de función hash donde existen muchas otras porque MD5 no es lo suficientemente fuerte

Cuestiones relacionadas