Introducción a las tecnologías de contraseñas comunes
La aplicación de la criptografía en la seguridad de la transmisión de redes
Con el rápido desarrollo del comercio electrónico y los pagos en línea en Internet, la seguridad en Internet se ha convertido en uno de los factores más importantes en la actualidad. Como ingeniero de desarrollo de software calificado, es necesario comprender cómo todo Internet garantiza la transmisión segura de datos. Este artículo brinda una breve introducción al sistema de seguridad de transmisión de la red y el conocimiento del algoritmo involucrado, espero que todos puedan tener una comprensión preliminar.
### Definición de criptografía
Una comprensión simple de la criptografía es una tecnología para compilar contraseñas y descifrarlas, que es lo que a menudo llamamos cifrado y descifrado. La estructura común se muestra en la figura:
Términos involucrados:
1. Clave secreta: clave de cifrado y clave de descifrado. Si los dos algoritmos de cifrado son iguales, se denominan simétricos. cifrado Los diferentes se denominan cifrado asimétrico
2. Texto sin formato: La información no cifrada en el texto original no se puede filtrar
3. Texto cifrado: No hay información de texto sin formato válida; se puede obtener de él después de cifrar la información. No se puede obtener información válida de texto sin formato;
4. Cifrado: el proceso de convertir texto sin formato en texto cifrado, la longitud del texto cifrado también aumentará según los diferentes algoritmos de cifrado;
5 .Descifrado: El proceso de convertir texto cifrado en texto sin formato;
6. Algoritmo de cifrado/descifrado: El método de cifrado y descifrado utilizado por el criptosistema;
7. Ataque: Interceptando el flujo de datos, phishing, troyanos, exhaustivos y otros medios para atacar el flujo de datos y, finalmente, obtener la clave y el texto sin formato.
### La criptografía está estrechamente relacionada con nuestro trabajo y nuestra vida.
En nuestra vida y trabajo diarios, la aplicación de la criptografía se puede ver en todas partes, especialmente en los sistemas de Internet. A continuación se muestran varias imágenes representativas y los conocimientos involucrados se explicarán más adelante.
1.12306 Cada vez que se accede a la versión anterior del sitio web, el navegador suele mostrar una advertencia. ¿Cuál es el motivo? ¿Cuáles son los riesgos de hacer esto?
2. Cuando navegue por un sitio web HTTPS en el navegador 360, haga clic en el pequeño icono de candado en la barra de direcciones y se mostrarán los detalles de cifrado. Por ejemplo, Baidu mostrará ``AES_128_GCM, ECDHE_RSA. ``. ¿Qué significan estos?
3. Hay muchos certificados raíz del sistema en la cadena de claves del sistema Mac y hay mucha información después de la expansión.
4. Cuando vayas al banco para activar el pago en línea, se adjuntará un escudo U. ¿Para qué sirve el escudo U?
##Cómo garantizar la seguridad de la transmisión de datos de la red
A continuación, partiremos del escenario real y tomaremos como ejemplo el cliente Cliente y el servidor Servidor más comunes para transferir archivos. y comprender paso a paso todo el sistema de seguridad.
####1. Confidencialidad
En primer lugar, el cliente debe enviar el archivo al servidor y no se puede enviar en texto claro; de lo contrario, será fácil para los piratas informáticos interceptar el flujo de datos y obtener el archivo completo. Es decir, los archivos deben mantenerse confidenciales, lo que requiere el uso de algoritmos de cifrado simétrico.
**Cifrado simétrico: **El cifrado y descifrado utilizando la misma clave secreta se denomina cifrado simétrico. Se caracteriza por su rápida velocidad y alta eficiencia, y es adecuado para cifrar grandes cantidades de datos. Los algoritmos de cifrado simétrico comunes incluyen DES, 3DES, AES, TDEA, RC5, etc. Echemos un vistazo a los algoritmos 3DES y AES más comunes:
**DES (Data Encryption Standard): **Desarrollado por IBM en Estados Unidos en 1972, su principio matemático es comprimir texto sin formato en 8 Agrupación de bytes (menos de 8 bits pueden tener diferentes patrones de complemento de relleno), el resultado del cifrado se obtiene mediante sustitución matemática y sustitución inversa, y la longitud del texto cifrado y el texto sin formato es básicamente la misma. La longitud de la clave secreta es de 8 bytes. Después de una transformación más segura, se utilizan tres claves para tres cifrados, es decir, cifrado 3DES.
**3DES:** Puede entenderse como un cifrado tres DES de texto plano, lo que mejora el nivel de seguridad.
** AES (Estándar de cifrado avanzado): ** Lanzado por los Estados Unidos en 2001, se convirtió en un estándar efectivo en 2002 y se convirtió en uno de los algoritmos de cifrado simétrico más populares en 2006. Está reemplazando gradualmente al algoritmo 3DES debido a su mayor nivel de seguridad. La longitud del grupo de texto sin formato es de 16 bytes y la longitud de la clave secreta puede ser de 16, 24, 32 (128, 192, 256 bits) bytes. Dependiendo de la longitud de la clave secreta, los algoritmos se denominan AES-128, AES-192. y AES respectivamente.
El algoritmo de cifrado simétrico es básicamente similar a los parámetros entrantes. Todos tienen tres parámetros, a saber, texto sin formato, clave secreta y modo. Puede realizar pruebas de simulación a través del sitio web: [/crypt3des](). Entre los modos, entendemos principalmente dos modos simples: ECB y CBC. Otros que estén interesados pueden comprobarlo por sí mismos.
** Modo ECB (libro de códigos electrónico): ** Este modo divide el texto sin formato en varios segmentos pequeños y luego cifra cada segmento pequeño por separado. Cada segmento pequeño no se afecta entre sí y se puede descifrar de forma independiente. Ciertos párrafos cortos de texto cifrado.
** Modo CBC (Cipher Block Chain): ** Este modo divide el texto sin formato en varios segmentos pequeños, y luego cada segmento usa el vector inicial (desplazamiento iv en la figura anterior) o el anterior. Una sección de texto cifrado se cifra después de realizar una operación XOR y una sección de texto cifrado no se puede descifrar por sí sola.
?** Relleno: ** Comúnmente utilizado en PKCS5Padding, donde la regla es que los bits faltantes serán seguidos por el número de bits faltantes. El descifrado también se invierte según esta regla. Nota: El texto sin formato de 8 bits debe ir seguido de 8 ````/x08```` adicionales.
####2. Autenticación
El cliente tiene una clave simétrica, lo que requiere considerar cómo enviar la clave al servidor. El problema es el mismo que el anterior: no puede. Se puede utilizar directamente. Transmitir en texto claro; de lo contrario, los piratas informáticos lo interceptarán. Aquí debe utilizar un algoritmo de cifrado asimétrico.
**Cifrado asimétrico: **Las claves de cifrado y descifrado son diferentes, llamadas clave pública (publicKey) y clave privada (privateKey) respectivamente. Los dos aparecen en pares, el cifrado de clave pública solo se puede descifrar con la clave privada y el cifrado de clave privada solo se puede cifrar con la clave pública. La diferencia entre los dos es que la clave pública es pública y se puede proporcionar a cualquier persona que desee, mientras que la clave privada debe mantenerse en secreto. Se caracteriza por una buena confidencialidad pero una velocidad de cifrado lenta. Los algoritmos de cifrado asimétrico comunes incluyen RSA, ECC, etc.; echemos un vistazo a los algoritmos RSA comunes:
** RSA (Ron Rivest, Adi Shamir, Leonard Adleman): ** 1977 por MIT Una combinación de tres personas, RSA son las letras iniciales de sus apellidos. Sus principios matemáticos se basan en la descomposición de grandes números. Similar a "100=20x5", si solo conoces 100, necesitarás muchos cálculos para probar los coeficientes 20 y 5. Si cambia 100 por un número muy grande, será difícil obtener el resultado real. El siguiente es un par de claves públicas y privadas generadas aleatoriamente:
Este es el resultado del cifrado con la clave pública:
Esta característica de RSA garantiza que el poseedor de la clave privada Autenticidad, después de que el cliente cifra el archivo con la clave pública, dado que no hay una clave privada, el pirata informático no puede descifrar el archivo incluso si los datos son interceptados.
** Consejo: **
** ¿Es posible cifrar y descifrar archivos directamente utilizando claves públicas y privadas RSA sin utilizar cifrado simétrico? **
Respuesta: No: La primera razón es que el cifrado RSA es docenas o incluso cientos de veces más lento que el cifrado simétrico, y la segunda razón es que la cantidad de datos cifrados mediante RSA aumentará.
** Genere una clave simétrica desde el servidor, cifrela con la clave privada y luego descifrela con la clave pública en el cliente para garantizar la seguridad de la clave simétrica. **
Respuesta: No, porque la clave pública es pública y cualquiera puede obtener la clave pública y descifrarla para obtener la clave secreta simétrica.
####3. Integridad
Cuando un cliente envía un archivo cifrado con una clave simétrica al servidor, si es interceptado por un hacker, no puede descifrar el archivo para obtener la clave simétrica. Pero un pirata informático puede usar la clave pública del servidor para cifrar una clave simétrica falsa y luego usar esta clave simétrica falsa para cifrar un archivo falso y enviarlo al servidor. De esta manera, el servidor seguirá pensando que fue enviado por el cliente. y no se dará cuenta de que la lectura El archivo recuperado ha sido descartado.
Resolver este problema requiere el uso de algoritmos hash, que también se pueden traducir en algoritmos hash, como MD4, MD5, SHA-1, SHA-2, etc.
** Algoritmo hash (algoritmo hash): ** En pocas palabras, es una función que comprime información de cualquier longitud en un resumen de información de longitud fija. Este proceso es irreversible y es imposible obtener el texto original a través de resúmenes.
** SHA-1 (Algoritmo Hash Seguro 1): **Propuesto por Estados Unidos, puede generar un resumen de mensaje de 20 bytes de longitud. En 2005 se descubrió un método de ataque eficaz contra SHA-1 que ya no es seguro. Después de 2010, se recomienda utilizar SHA-2 y SHA-3 en lugar de SHA-1.
* * SHA-2 (Secure Hash Algorithm 1): ** Propuesto por Estados Unidos, puede generar un resumen de mensaje de 20 bytes de longitud. * SHA-2 (Algoritmo Hash Seguro 2): ** Hay seis estándares de algoritmos diferentes: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA512/256 y SHA512/256. El número después de SHA-224 es la longitud del resultado del resumen. Cuanto mayor sea la longitud, menor será la probabilidad de colisión. 224 se utiliza de la siguiente manera:
El cliente puede obtener la información resumida del archivo a través del algoritmo hash anterior, luego cifrarlo con la clave privada del cliente y enviarlo al servidor junto con el archivo cifrado. Después de que el pirata informático intercepta los datos, no puede obtener la clave secreta simétrica sin la clave privada del servidor y no puede falsificar la información resumida sin la clave privada del cliente. Si volvemos al archivo de paquete anterior y el servidor recibe la información resumida descifrada y la compara, sabrá que el paquete ha manipulado el archivo.
Este proceso de cifrar la información del resumen con una clave privada se llama firma digital. No solo resuelve el problema de si el archivo ha sido manipulado, sino que también identifica al remitente. Generalmente se define como:
** Cifrado: ** Cifrar datos usando una clave pública se llama cifrado.
**Firma: **Cifrar datos usando una clave privada se llama firma.
####4. Confianza
Utilizamos un algoritmo de cifrado simétrico para cifrar el archivo, transmitimos la clave secreta simétrica mediante cifrado asimétrico y luego utilizamos un algoritmo hash para garantizar que el archivo no haya sido manipulado y la identidad del remitente. . ¿Es esto seguro?
La respuesta es no, porque la clave pública se envía a la otra parte a través de la red. Si algo sale mal durante este tiempo, es posible que la clave pública recibida por el cliente no sea la clave pública real del servidor. El **Man-in-the-Middle Attack** común es un ejemplo:
** Man-in-the-MiddleAttack MITM (Man-in-the-MiddleAttack): ** El atacante se disfraza él mismo como servidor proxy y envía la contraseña del atacante al lado del servidor manipulando el certificado de clave pública. Después de recibir los datos del cliente, los datos se descifran utilizando la clave privada del atacante y luego el certificado de clave pública del atacante se firma con la clave privada del atacante y se envía al servidor. De esta forma, el atacante puede engañar a ambas partes y obtener el texto claro.
Este riesgo requiere que el certificado de clave pública esté firmado digitalmente por una organización de CA para vincular la clave pública y la persona a quien pertenece la clave pública. Este es el sistema PKI.
**PKI (Infraestructura de gestión de privilegios): **Infraestructura que admite la gestión de claves públicas y puede admitir autenticación, cifrado, integridad y trazabilidad. Se puede decir que se garantiza que la transmisión de datos a través de Internet será segura a través del sistema PKI.
**CA (autoridad certificadora): **La organización CA es responsable de emitir certificados y es una organización emisora de certificados reconocida y autorizada. CA tiene un conjunto de estándares de gestión: solo pasando la certificación de auditoría de seguridad internacional de WebTrust se puede preinstalar el certificado raíz en los navegadores convencionales y convertirse en una autoridad de certificación confiable a nivel mundial. Organismo de certificación de confianza. Como GlobalSign, VeriSign, DigiCert en Estados Unidos y Entrust en Canadá. El aspecto financiero de la CA de mi país es administrado por la CFCA del Banco Popular de China, y la CA no financiera fue construida inicialmente por China Telecom.
Proceso de solicitud del certificado de CA: después de que la empresa envíe los materiales correspondientes, la organización de CA le proporcionará el certificado y su clave privada. Transfiere el emisor, la clave pública, el asunto, la validez desde, la validez hasta y otra información al certificado en texto sin formato, luego utiliza un algoritmo de huellas digitales para calcular el contenido de las huellas digitales de estos certificados digitales y usa su propia clave privada para cifrar la huella digital. y algoritmo de huellas dactilares. Dado que los navegadores básicamente tienen incorporado el certificado raíz de la organización CA, puede verificar correctamente la huella digital (verificación de firma) del certificado de su empresa sin advertencias de seguridad.
Pero: todas las empresas pueden emitir certificados, e incluso nosotros, como individuos, somos libres de emitir certificados. Sin embargo, dado que el navegador no tiene un certificado raíz incorporado, cuando el navegador del cliente recibe el certificado firmado por nosotros personalmente, no puede encontrar el certificado raíz para verificar la firma y el navegador mostrará directamente un mensaje de advertencia. También la advertencia que se informó al abrir el motivo 12306 anterior. El sistema puede configurar este tipo de certificado emitido personalmente como un certificado confiable para eliminar esta advertencia. Sin embargo, dado que es difícil confiar en la autoridad y seguridad de dichas autoridades certificadoras, es mejor no hacerlo.
Echemos un vistazo a la información del certificado de Baidu HTTPS:
La información más importante es:
Autoridad emisora: CA raíz de GlobalSign
;Fecha de validez: Disponible del 03-04-2018 al 26-05-2019;
Información de clave pública: cifrado RSA. 2048 bits;
Firma digital: SHA-256 con cifrado RSA (1.2.840.113549.1.1.11)
Vincular nombre de dominio: al realizar la verificación HTTPS nuevamente, si el nombre de dominio actual y certificado Si el nombre de dominio vinculado al nombre de dominio es inconsistente, también se mostrará una advertencia;
URI: dirección de administración en línea. Si la clave privada actual está en riesgo, la CA puede revocar el certificado en línea.
####5. No repudio
Puede parecer que todo el proceso es seguro, pero aún existen riesgos: ¿Qué pasa si el servidor se niega a reconocer la firma una vez firmada, achacándolo a un incumplimiento del contrato? ?
La solución es utilizar un servicio de marca de tiempo digital:
**DTS (Digital Timestamp):
**Lo que hace DTS (Digital Timestamp) es, Para que las aplicaciones de comercio electrónico tengan éxito, se requiere que todas las partes involucradas en la transacción no puedan negarla. En términos generales, el proceso de generación de marcas de tiempo digitales es el siguiente: el usuario primero usa un algoritmo hash para formar un resumen del documento que necesita una marca de tiempo y luego envía el resumen a DTS. DTS firma digitalmente el documento después de agregar la fecha de recepción del resumen del documento y la información del evento antes de entregarlo al usuario.
####6. Reautenticación
Contamos con certificados digitales para garantizar la autenticidad de la identidad y DTS para proporcionar no repudio. Sin embargo, todavía no podemos estar 100% seguros de que la persona que utiliza la clave privada sea el poseedor legítimo. Es posible que otros roben claves privadas para transacciones.
Resolver este problema requiere el uso de tecnologías como contraseñas seguras, token de autenticación OTP, tarjetas inteligentes, escudos USB o biometría para autenticar utilizando la clave privada del usuario actual para determinar su legitimidad. Echemos un vistazo breve al escudo en U, muy común.
** Llave USB (U Shield): cuando apareció por primera vez, la apariencia de ** se parecía más a un disco U y la función de seguridad era como un escudo, por lo que se llamó U Shield. Su área interna de solo escritura y no legible almacena la clave privada del usuario (también tiene un certificado de clave pública), y el banco también tiene una copia. Al realizar transacciones, todas las operaciones que involucran la clave privada se realizan dentro del U-Shield y la clave privada no se filtrará. Cuando se confirme la transacción, los datos detallados de la transacción se mostrarán en la pantalla de U-Shield. Una vez confirmada, la transacción se podrá confirmar con éxito a través de la clave física. Incluso si ocurre un problema, los piratas informáticos no pueden controlar la clave física del U-shield y los usuarios pueden cancelarla a tiempo para evitar pérdidas. Hay varios certificados dentro del escudo U que respaldan el algoritmo secreto nacional.
**Algoritmo Secreto Nacional:** La Administración Criptozoológica del Estado ha desarrollado una variedad de algoritmos Secreto Nacional para varios algoritmos. Específicamente, incluye el algoritmo de cifrado simétrico SM1, el algoritmo de clave pública SM2, el algoritmo de resumen SM3, el algoritmo de cifrado simétrico SM4, el algoritmo ZUC Zu Chongzhi, etc. Esto permite un mayor control de seguridad sobre la seguridad del firmware nacional y la seguridad de los datos.
## Análisis HTTPS
Con el conocimiento anterior, podemos intentar analizar todo el proceso de HTTPS y usar Wireshark para interceptar un mensaje HTTPS:
Cliente Hola: el cliente envía un saludo al puerto 443 del servidor, que contiene un número aleatorio, el algoritmo de cifrado admitido por el cliente, el número de versión TLS del cliente, etc.
Hola del servidor: el servidor responde al saludo del cliente, que contiene el conjunto de cifrado seleccionado por el servidor, el número aleatorio, etc.
Certificado: El servidor envía el certificado al cliente.
El servidor calcula la clave simétrica: La clave simétrica se obtiene mediante el algoritmo ECDH. Clave simétrica
El cliente calcula la clave simétrica: obtiene la clave simétrica a través del algoritmo ECDH
Utilice la clave simétrica para iniciar la transmisión de datos cifrados
Entre ellos, nos encontramos con un nuevo algoritmo: algoritmo DH
** DH (Diffie-Hellman):** En 1976, Whitefield y Martin-Hellman propusieron un notable protocolo de intercambio de claves secretas. La genialidad de este mecanismo es que permite a ambas partes obtener la misma clave de forma segura. Como se muestra en la figura, su cálculo matemático se basa en las propiedades de la raíz original:
**** El algoritmo DH no se utiliza para cifrar o descifrar información, pero se utiliza para intercambiar la misma de forma segura. clave entre las partes comunicantes. ***
**ECDH: **Algoritmo de intercambio de claves DH basado en ECC (Elliptic Curve Cryptosystem), cuya base matemática es el problema de logaritmos discretos sobre curvas elípticas.
** ECDHE: ** Literalmente falta una E, E significa temporal. Durante el proceso de protocolo de enlace, como lado del servidor, ECDH utiliza la clave pública del certificado en lugar de Pb y su propia clave privada en lugar de Xb. Este algoritmo se utiliza cuando el servidor no envía información de intercambio de claves del servidor, porque cuando se envía la información del certificado, el certificado en sí contiene la información de Pb.
##Resumen
| ¿Nombre del algoritmo? | Función | Cómo utilizar | Nombres de algoritmos comunes |
| | Rápido y eficiente | Para cifrado directo de archivos | 3DES, AES, RC4 |
| | Relativamente lento, pero seguro | Construyendo un sistema CA | RSA, ECC |
| Resumen computacional de longitud fija, irreversible | Evita la manipulación de archivos | >
| Algoritmo DH | Derivar claves simétricas de forma segura | Intercambiar claves simétricas |
----