¿Cuál es la diferencia entre algoritmos de cifrado simétrico y algoritmos de cifrado asimétrico?
(1) Criptografía simétrica
El cifrado simétrico es el método de cifrado más rápido y simple. Se utilizan los mismos métodos de cifrado y descifrado, este método se denomina algoritmo de cifrado simétrico. criptografía. Existen muchos tipos de algoritmos de cifrado simétrico. Debido a que son muy eficientes, se utilizan ampliamente en el núcleo de muchos protocolos de cifrado.
El cifrado simétrico suele utilizar claves relativamente pequeñas, generalmente inferiores a 256 bits. Porque cuanto mayor sea la clave, más fuerte será el cifrado, pero más lento será el proceso de cifrado y descifrado. Si solo usa 1 bit para esta clave, los piratas informáticos pueden intentar descifrarla con 0 primero, y si eso no funciona, use 1 para descifrarla, pero si su clave tiene 1 MB de tamaño, es posible que los piratas informáticos nunca puedan descifrarla; Pero el proceso de cifrado y descifrado lleva mucho tiempo. El tamaño de la clave debe tener en cuenta tanto la seguridad como la eficiencia. Es una compensación.
El 2 de octubre de 2000, el Instituto Nacional Americano de Estándares y Tecnología (NIST--American National Institute of Standards and Technology) seleccionó el algoritmo Rijndael como el nuevo Estándar de Cifrado Avanzado (AES--Advanced Encryption Standard ). .NET incluye el algoritmo Rijndael y el nombre de la clase es RijndaelManaged. Aquí hay un ejemplo.
Proceso de cifrado:
cadena privada myData = "hola";
cadena privada myPassword = "OpenSesame";
byte privado[ ] cipherText;
byte privado[] salt = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0};
private void mnuSymmetricEncryption_Click(remitente del objeto, RoutedEventArgs e)
{
var key = new Rfc2898DeriveBytes(myPassword, salt);
// Cifrar los datos.
var algoritmo = new RijndaelManaged();
algoritmo.Key = key.GetBytes(16);
algoritmo.IV = key.GetBytes(16); ;
var sourceBytes = new System.Text.UnicodeEncoding().GetBytes(myData);
usando (var sourceStream = new MemoryStream(sourceBytes))
usando (var destinoStream = new MemoryStream())
usando (var crypto = nuevo CryptoStream(sourceStream, algoritmo.CreateEncryptor(), CryptoStreamMode.Read))
{
moveBytes(crypto, destinoStream);
cipherText = destinoStream.ToArray();
}
MessageBox.Show(String.Format("Datos :{0}{1}Cifrado y codificado:{2}", myData, Environment.NewLine, Convert.ToBase64String(cipherText)));
}
private void moveBytes( Fuente de la transmisión, Destino de la transmisión)
{
byte[] bytes = nuevo byte[2048];
var recuento = fuente.Read(bytes, 0, bytes.Length);
while (0 != recuento) p> p>
{
destino.Write(bytes, 0, recuento);
recuento = fuente.Read(bytes, 0, bytes.Longitud); p>
}
}
Proceso de descifrado:
privado void mnuSymmetricDecryption_Click(objeto remitente, RoutedEventArgs e)
{
if (cipherText == null)
{
MessageBox.Show("¡Cifrar datos primero!");
return;
}
var key = new Rfc2898DeriveBytes(myPassword, salt);
// Intenta descifrar, mostrando así que se puede realizar un viaje de ida y vuelta.
var algoritmo = new RijndaelManaged();
algoritmo.Key = key.GetBytes(16);
algoritmo.IV = key.GetBytes(16); p>
usando (var sourceStream = new MemoryStream(cipherText))
usando (var targetStream = new MemoryStream())
usando (var crypto = new CryptoStream(sourceStream, algoritmo CreateDecryptor(), CryptoStreamMode.Read))
{
moveBytes(crypto, DestinationStream);
var decryptedBytes = DestinationStream.ToArray();
var decryptedMessage = nuevo UnicodeEncoding().GetString
(
decryptedBytes);
MessageBox.Show(decryptedMessage
}
}
Cifrado simétrico; Uno de los principales inconvenientes es la gestión y distribución de claves. En otras palabras, cómo hacer llegar las claves a las personas que necesitan descifrar sus mensajes es un problema. En el proceso de envío de la clave, existe un alto riesgo de que los piratas informáticos intercepten la clave. En realidad, la práctica común es cifrar asimétricamente la clave de cifrado simétrica y luego transmitirla a la persona que la necesita.
(2) Criptografía asimétrica
En 1976, los académicos estadounidenses Dime y Henman propusieron una nueva clave para resolver el problema de la transmisión pública de información y la gestión de claves. El protocolo de intercambio permite a las partes comunicarse. en medios inseguros para intercambiar información y llegar de forma segura a una clave acordada. Este es un "sistema de clave pública". En relación con el "algoritmo de cifrado simétrico", este método también se denomina "algoritmo de cifrado asimétrico".
El cifrado asimétrico proporciona un método muy seguro para cifrar y descifrar datos. Utiliza un par de claves, una clave pública y una clave privada. La clave privada solo puede ser conservada de forma segura por una de las partes y no se puede filtrar, mientras que la clave pública se puede enviar a cualquiera que la solicite. El cifrado asimétrico utiliza una de las claves del par para el cifrado, mientras que el descifrado requiere la otra clave. Por ejemplo, si solicita una clave pública al banco y el banco se la envía, y usted utiliza la clave pública para cifrar el mensaje, entonces sólo el banco, el poseedor de la clave privada, puede descifrar su mensaje. A diferencia del cifrado simétrico, los bancos no necesitan enviar claves privadas a través de la red, por lo que la seguridad mejora considerablemente.
El algoritmo de cifrado asimétrico más utilizado en la actualidad es el algoritmo RSA, que fue inventado por Rivest, Shamir y Adleman en 1978, cuando todos estaban en el MIT.
También existe un algoritmo RSA en .NET; consulte el siguiente ejemplo:
Proceso de cifrado:
byte privado[] rsaCipherText;
privado void mnuAmetricEncryption_Click(objeto remitente, RoutedEventArgs e)
{
var rsa = 1;
// Cifrar los datos.
var cspParms = new CspParameters (rsa );
cspParms.Flags = CspProviderFlags.UseMachineKeyStore
cspParms.KeyContainerName = "Mis claves"
var algoritmo = nuevo RSACryptoServiceProvider(cspParms) ;
var sourceBytes = new UnicodeEncoding().GetBytes(myData);
rsaCipherText = algoritmo.Encrypt(sourceBytes, true);
MessageBox.Show( String. Format("Datos: {0}{1}Cifrado y codificado: {2}",
myData, Environment.NewLine,
Convert.ToBase64String(rsaCipherText))) ;
}
Proceso de descifrado:
privado void mnuAmetricDecryption_Click(remitente del objeto, RoutedEventArgs e)
{
if (rsaCipherText==null)
{
MessageBox.Show("¡Cifrar primero!"
return
); }
var rsa = 1;
// descifra los datos.
var cspParms = new CspParameters(rsa); .Flags = CspProviderFlags.UseMachineKeyStore;
cspParms.KeyContainerName =
"Mis claves";
var algoritmo = new RSACryptoServiceProvider(cspParms);
var unencrypted = algoritmo.Decrypt(rsaCipherText, true
MessageBox.Show); (new UnicodeEncoding().GetString(unencrypted));
}
Aunque el cifrado asimétrico es muy seguro, es muy lento en comparación con el cifrado simétrico, por lo que todavía tenemos que cifrar simétrico. se utiliza para transmitir mensajes, pero la clave utilizada en el cifrado simétrico se puede enviar mediante cifrado asimétrico. Para explicar este proceso, observe el siguiente ejemplo:
(1) Alice necesita realizar una transacción en el sitio web del banco. Su navegador primero genera un número aleatorio como clave simétrica.
(2) El navegador de Alice solicita la clave pública del sitio web del banco.
(3) El banco envía la clave pública a Alice.
(4) El navegador de Alice utiliza la clave pública del banco para cifrar su propia clave simétrica.
(5) El navegador de Alice envía la clave simétrica cifrada al banco.
(6) El banco utiliza la clave privada para descifrar y obtener la clave simétrica del navegador de Alice.
(7) Alice y el banco pueden usar claves simétricas para cifrar y descifrar el contenido de la comunicación.
(3) Resumen
(1) El cifrado simétrico utiliza la misma clave para cifrar y descifrar, por lo que es rápido, pero debido a que la clave debe transmitirse a través de la red, es seguro El sexo no es elevado.
(2) El cifrado asimétrico utiliza un par de claves, una clave pública y una clave privada, por lo que tiene alta seguridad, pero la velocidad de cifrado y descifrado es lenta.
(3) La solución es cifrar la clave de cifrado simétrica utilizando la clave pública de cifrado asimétrica y luego enviarla. El receptor utiliza la clave privada para descifrarla para obtener la clave de cifrado simétrica, y luego ambas. partes La comunicación se puede realizar mediante cifrado simétrico.
Puedes probar Super Encryption 3000 en tu ordenador. Dispone de funciones como cifrado de archivos, cifrado de carpetas, destrucción de datos, ocultación completa de particiones del disco duro, prohibición o uso de solo lectura de dispositivos de almacenamiento USB, etc. . ¡Bloques de velocidad criptográfica! También cuenta con funciones anticopia, antimovimiento y antiborrado. No es necesario volver a cifrar una carpeta o un archivo cifrado cada vez que lo utilice. También es muy cómodo de usar. Después de instalar el software, simplemente haga clic derecho en la carpeta que desea cifrar y seleccione súper cifrado o protección de carpeta.