¿Cuál es la diferencia entre el cifrado SHA y AES? [cerrado]

Respuestas:

121

SHA no es cifrado, es una función hash unidireccional. AES (Advanced_Encryption_Standard) es un estándar de cifrado simétrico.

Referencia AES

skaffman
fuente
86

SHA es una familia de "algoritmos hash seguros" que han sido desarrollados por la Agencia de Seguridad Nacional. Actualmente hay una competencia entre docenas de opciones para quién se convertirá en SHA-3 , el nuevo algoritmo hash para 2012+.

Utiliza funciones SHA para tomar un documento grande y calcular un "resumen" (también llamado "hash") de la entrada. Es importante darse cuenta de que este es un proceso unidireccional. No puede tomar un resumen y recuperar el documento original.

AES , el estándar de cifrado avanzado es un algoritmo de bloque simétrico. Esto significa que toma bloques de 16 bytes y los cifra. Es "simétrico" porque la clave permite tanto el cifrado como el descifrado.

ACTUALIZACIÓN: Keccak fue nombrado ganador de SHA-3 el 2 de octubre de 2012.

Jeff Moser
fuente
65

SHA y AES tienen diferentes propósitos. SHA se utiliza para generar un hash de datos y AES se utiliza para cifrar datos.

Aquí hay un ejemplo de cuando un hash SHA le resulta útil. Supongamos que desea descargar una imagen ISO en DVD de alguna distribución de Linux. Este es un archivo grande y, a veces, las cosas salen mal, por lo que debe validar que lo que descargó es correcto. Lo que haría es ir a una fuente confiable (como el punto de descarga de distribución oficial) y generalmente tienen el hash SHA para la imagen ISO disponible. Ahora puede generar el hash SHA comparable (utilizando cualquier número de herramientas abiertas) para sus datos descargados. Ahora puede comparar los dos hash para asegurarse de que coincidan, lo que validaría que la imagen que descargó es correcta. Esto es especialmente importante si obtiene la imagen ISO de una fuente que no es de confianza (como un torrent) o si tiene problemas para usar el ISO y desea verificar si la imagen está dañada.

Como puede ver en este caso, el SHA se utilizó para validar datos que no estaban dañados. Tiene todo el derecho a ver los datos en la ISO.

AES, por otro lado, se usa para cifrar datos o evitar que las personas vean esos datos sabiendo algún secreto.

AES utiliza una clave compartida, lo que significa que se utiliza la misma clave (o una clave relacionada) para cifrar los datos que se utiliza para descifrar los datos. Por ejemplo, si cifré un correo electrónico usando AES y le envío ese correo electrónico, usted y yo necesitaríamos conocer la clave compartida que se usa para cifrar y descifrar el correo electrónico. Esto es diferente a los algoritmos que utilizan una clave pública como PGP o SSL.

Si quisiera juntarlos, podría encriptar un mensaje usando AES y luego enviar un hash SHA1 del mensaje no encriptado para que cuando se desencriptara el mensaje pudieran validar los datos. Este es un ejemplo algo artificial.

Si desea saber más sobre estos, algunos términos de búsqueda de Wikipedia (más allá de AES y SHA) que desea probar incluyen:

Algoritmo de clave simétrica (para AES) Función hash criptográfica (para SHA) Criptografía de clave pública (para PGP y SSL)

Robert Horvick
fuente
1
Entiendes la antigüedad de esta respuesta cuando ves la palabra DVD ...
Klesun
9

SHA es una función hash y AES es un estándar de cifrado. Dada una entrada, puede usar SHA para producir una salida que es muy poco probable que se produzca a partir de cualquier otra entrada. Además, parte de la información se pierde al aplicar la función, por lo que incluso si supiera cómo producir una entrada que produzca la misma salida, esa entrada probablemente no sea la misma que se utilizó en primer lugar. Por otro lado, AES está destinado a proteger de la divulgación a terceros cualquier dato enviado entre dos partes que comparten la misma clave de cifrado. Esto significa que una vez que conozca la clave de cifrado y la salida (y el IV ...) podrá volver sin problemas a la entrada original. Tenga en cuenta que SHA no requiere que se aplique nada más que una entrada, mientras que AES requiere al menos 3 puntos: lo que está cifrando / descifrando, una clave de cifrado y el vector de inicialización (IV).

em70
fuente
7

SHA son las siglas de Secure Hash Algorithm, mientras que AES son las siglas de Advanced Encryption Standard. Entonces, SHA es un conjunto de algoritmos hash. AES, por otro lado, es un cifrado que se utiliza para cifrar. Los algoritmos SHA (SHA-1, SHA-256, etc.) tomarán una entrada y producirán un resumen (hash), esto se usa típicamente en un proceso de firma digital (produce un hash de algunos bytes y firma con una clave privada) .

François P.
fuente
3

SHA no requiere que se aplique nada más que una entrada, mientras que AES requiere al menos 3 cosas: lo que está cifrando / descifrando, una clave de cifrado y el vector de inicialización.

chen
fuente
1
[Esto se marcó como una "respuesta tardía a una pregunta anterior, proporcionada por un nuevo usuario. Mi comentario está en ese contexto.] Esto no parece agregar información sobre lo que ya se proporcionó en otras respuestas a esta pregunta.
danfuzz
Eso está mal. No necesita un vector de inicialización (IV) para usar AES. Algunos modos de operación para AES requieren un IV (que es totalmente diferente).
Hilder Vitor Lima Pereira