Clave pública, clave privada y criptografía asimétrica
En este artículo, hemos introducido los conceptos de claves públicas, claves privadas y los principios de la encriptación asimétrica. Hemos comparado sus pros y contras en relación con la encriptación simétrica, así como las diferencias en sus escenarios de uso.
Es posible que hayas escuchado acerca de claves privadas y claves públicas en muchos contextos, pero ¿realmente sabes qué son?
Criptografía asimétrica vs criptografía simétrica
Las claves privadas y las claves públicas son conceptos en la criptografía asimétrica (también conocida como criptografía de clave pública, PKC).
La criptografía asimétrica se refiere a un método de cifrado o firma de datos utilizando dos claves diferentes (clave privada + clave pública), que corresponde a la necesidad de descifrado o verificación de firma. La clave pública es visible para cualquiera, mientras que la clave privada solo está disponible para el propietario de la clave. Puedes deducir fácilmente por el nombre de las claves.
De manera similar, probablemente puedas adivinar que la criptografía simétrica se refiere al método de cifrar y descifrar datos utilizando la misma clave.
Por lo tanto, utilizamos una anotación simple para mostrar el proceso de cifrado/descifrado de la criptografía simétrica y asimétrica.
Es importante notar que las funciones de cifrado/descifrado en los algoritmos de cifrado simétrico y asimétrico son diferentes y a menudo utilizan diferentes algoritmos. Los algoritmos de cifrado simétrico comunes incluyen DES, AES, RC2, RC4 y otros, mientras que los algoritmos de cifrado asimétrico comunes incluyen RSA y EC.
Logto utiliza el algoritmo EC para el cifrado y descifrado de transmisión de datos ya que es más eficiente y seguro que RSA, puedes leer este artículo para obtener más detalles. Logto también va a soportar RSA en la próxima versión para una mejor compatibilidad con algunos sistemas heredados.
¿Por qué utilizar criptografía asimétrica?
La criptografía asimétrica aborda el problema de la distribución de claves en la criptografía simétrica.
Dado que el cifrado simétrico utiliza la misma clave, la distribución de la clave a través de una conexión de red insegura puede correr el riesgo de exponer la clave a terceros malintencionados. Un tercero malintencionado podría utilizar la clave robada para acceder a cualquier información cifrada con esa clave, representando un riesgo significativo de seguridad.
Dos casos de uso comunes de la criptografía asimétrica
Enviar datos cifrados
El remitente puede utilizar la clave pública del destinatario para cifrar la información, y el destinatario utiliza su clave privada para descifrar la información.
Dado que las claves públicas están teóricamente disponibles para muchas personas, en un escenario ideal, el destinatario puede recibir información cifrada de muchos remitentes. Además, múltiples remitentes no pueden saber qué tipo de información han enviado otros remitentes al destinatario, ya que solo el destinatario (el titular de la clave privada) puede descifrar y recuperar la información.
Las claves públicas y privadas a menudo se generan simultáneamente. Lo que mencionamos anteriormente es la generación de claves privadas y públicas en una parte, y luego distribuir la clave pública a sus usuarios. Si necesitas garantizar una comunicación segura entre ambas partes, entonces ambas partes necesitan generar sus propias claves privadas y públicas, y luego intercambiar sus respectivas claves públicas. De esta manera, ambas partes tienen las claves públicas del otro, y pueden utilizar sus propias claves privadas y la clave pública de la otra parte para cifrar y descifrar.
Usar una firma para asegurar la fidelidad de los datos
En la criptografía asimétrica, la parte que posee la clave privada puede firmar los datos que envía. Posteriormente, el destinatario con la clave pública puede verificar la consistencia de los datos y la firma al recibir los datos, asegurando que los datos no hayan sido manipulados durante la transmisión.
Utilizando la anotación que definimos en la sección anterior, la firma y la verificación de la firma se pueden representar de la siguiente manera:
La verificación de la firma digital demuestra que la parte que genera la firma conoce la clave privada correspondiente.
Probablemente encuentres estos dos casos de uso mencionados anteriormente muy familiares. En nuestra vida diaria, casi todos los servicios con arquitectura cliente-servidor utilizan criptografía asimétrica para asegurar la seguridad de los datos.
Como un marco de identidad de usuario en rápido crecimiento, Logto también utiliza extensivamente PKC para asegurar la seguridad de los datos de los usuarios. Después de que los usuarios completen el proceso de inicio de sesión, Logto emite un token de acceso a los usuarios para otorgarles permisos específicos para acceder a los recursos requeridos. La clave pública publicada de Logto se utiliza para verificar que el token de acceso realmente fue emitido por Logto y no ha sido alterado por atacantes malintencionados.
Desventajas de la criptografía asimétrica
En general, la longitud de clave para el cifrado simétrico es de 128 o 256 bits, mientras que la longitud de clave para el cifrado asimétrico puede alcanzar los 4,096 bits. Esto se debe a que la clave privada y la clave pública están matemáticamente relacionadas y son pares de claves únicas. En teoría, conocer la clave pública permite calcular el valor de la clave privada, pero debido a la complejidad de los algoritmos involucrados, a menudo toma una cantidad considerable de tiempo. Para hacer que la tarea de "romper" la clave privada sea "imposible", utilizar longitudes de clave más largas es un enfoque directo.
Conclusiones
La encriptación asimétrica consume más recursos computacionales y tiempo en comparación con la encriptación simétrica durante los cálculos discutidos en la sección anterior. En aplicaciones donde la comunicación es frecuente, el uso generalizado de la criptografía asimétrica puede afectar el rendimiento y la experiencia del usuario.
En escenarios de negocios, la encriptación simétrica y asimétrica a menudo se utilizan juntas para equilibrar el rendimiento y la seguridad de los datos. Al construir tu propio servicio, puedes considerar los requisitos de seguridad de datos en cada etapa y seleccionar los algoritmos de cifrado adecuados en consecuencia.