Notas sobre criptozoología
Si alguien más usa la clave pública de A para cifrar la información transmitida, solo la clave privada de A puede descifrarla. Se garantiza la seguridad de la información transmitida.
La información cifrada por A utilizando la clave privada de A puede ser descifrada por otros utilizando la clave pública de A. Se puede demostrar que esta información debe ser transmitida desde A.
***Clave secreta compartida (cifrado simétrico): Es rápido, pero no se puede garantizar la seguridad de la clave secreta durante la transmisión entre el cliente y el servidor.
y clave pública (cifrado asimétrico): seguro, lento.
1. El cliente solicita comunicación SSL (Secure Sockets Layer) y el mensaje contiene la versión de SSL, el algoritmo de cifrado, etc. que admite.
2. El servidor responde con su propio certificado de clave pública, versión SSL negociada y componentes de cifrado.
3. El cliente abre el certificado de clave pública del servidor basándose en su clave pública de CA local confiable y obtiene la clave pública del servidor. El cliente genera una secuencia de código aleatoria, la cifra con la clave pública del servidor y la envía de regreso al servidor.
4. Después de que el servidor descifra la cadena con la clave privada, la cifra y la envía de vuelta al cliente.
5. Después de que el cliente confirma la identidad del servidor, genera un algoritmo de cifrado simétrico y una clave secreta compartida, la cifra con la clave pública del servidor y la transmite al servidor.
6. Posteriormente, ambas partes utilizan algoritmos de cifrado simétrico para cifrar los datos para su transmisión.
En el proceso anterior, se utilizan uno o dos para obtener la clave pública del servidor legal, y tres o cuatro se utilizan para confirmar si el servidor es el verdadero poseedor de la clave privada (porque cualquiera puede obtener la clave pública del servidor). llave).
Usar una secuencia de números verdaderamente aleatoria que sea tan larga como la secuencia de bits de texto plano para el cifrado es absolutamente seguro, porque todo el espacio de la clave secreta se puede obtener después de un descifrado exhaustivo, lo cual no tiene sentido.
Un algoritmo criptográfico que procesa datos en grupos se llama cifrado en bloque.
Usando la red Feistel.
Tomando 64 bits como unidad de cifrado, primero divídalo en dos partes, cada una de 32 bits.
El proceso de cifrado dura varias rondas. En cada ronda, la subclave y los datos de la derecha se utilizan para generar una secuencia a través de la función de ronda, y luego se realiza XOR con el lado izquierdo.
Después de cada ronda, se intercambian los lados izquierdo y derecho.
Las estructuras de cifrado y descifrado son las mismas, con cualquier número de rondas y cualquier función.
Utiliza las claves 1, 2 y 3 para cifrar, descifrar y cifrar el texto plano, lo que se denomina triple DES.
El proceso de descifrado es por compatibilidad con versiones anteriores de DES. Si las claves 1, 2 y 3 son iguales, se convierte en DES normal.
Si las claves 1 y 3 son iguales pero la 2 es diferente se llama DES-EDE2.
Las claves 1, 2 y 3 son diferentes y se denominan DES-EDE3.
Se utiliza el algoritmo de Rijndael y la estructura SPN.
El grupo de entrada es de 128 bits (16 bytes) y la longitud de la clave se puede seleccionar entre 128 y 256 bits en unidades de 32 bits.
El algoritmo consta de múltiples rondas, de 10 a 14 rondas.
En una ronda:
SubBytes, separe la entrada por bytes, use cada byte como índice, busque la tabla para encontrar el valor y reemplace.
ShiftRows (desplazar filas), por byte, codifica la salida anterior.
MixColumns (columnas mixtas), 4 bytes, operación de bits.
XOR con la tecla redonda.
Cifrado en bloque: Cada vez que se procesa un dato de una longitud específica.
Cifrado de flujo: para el procesamiento continuo de flujos de datos, es necesario mantener el estado interno y registrar el progreso.
Una vez cifrado el grupo de texto sin formato, se convierte directamente en el grupo de texto cifrado.
Características: El atacante puede manipular el texto plano sin descifrarlo.
El grupo de texto sin formato se realiza mediante operación XOR con el grupo de texto cifrado anterior y se cifra para obtener su propio grupo de texto cifrado.
El bloque de texto cifrado anterior del primer bloque se reemplaza por un vector de inicialización (secuencia de bits aleatoria).
Al cifrar, es necesario empezar desde cero.
Porque es necesario realizar una operación XOR con el grupo de texto cifrado.
Al descifrar, descifre el grupo de texto cifrado y directamente XOR con el grupo de texto cifrado.
Para un mismo grupo de texto sin formato, los valores de texto cifrado pueden no ser iguales.
Los paquetes de texto cifrado pueden corromperse, afectando partes.
Faltan los bits de agrupación del texto cifrado, lo que afecta a todo.
El grupo de texto cifrado anterior se utiliza para obtener una secuencia de bits a través del algoritmo de cifrado, que se denomina flujo de claves.
XOR el grupo de texto sin formato con el flujo de claves para obtener su propio grupo de texto cifrado.
Durante el descifrado, el algoritmo de cifrado cifra el grupo de texto cifrado para obtener el flujo de claves, al que se aplica una operación XOR con el texto cifrado para obtener el texto sin formato.
Ataque repetido: Supongamos que la clave secreta es la misma. Se envían cuatro paquetes y el atacante guarda los últimos tres. Al día siguiente, envía 4 paquetes más y el atacante reemplaza los últimos tres paquetes. Después de que el receptor los descifra, solo el paquete número 2 es incorrecto.
Para cada grupo, después de cifrar el vector de inicialización, se obtiene el flujo de claves. Después de aplicar XOR al texto sin formato con el flujo de claves, se obtiene el texto cifrado.
Es rápido, el flujo de claves se puede generar con anticipación o el proceso de generación de claves puede ser paralelo a la operación XOR.
Cifrar cada contador para obtener el flujo de claves. XOR el flujo de claves con el grupo de texto sin formato para obtener el grupo de texto cifrado.
El número generado por el contador consta de una secuencia aleatoria nonce + un número creciente a partir de 1.
Para cada grupo, el contador se incrementa y luego se cifra para obtener el flujo de claves.
Los grupos se pueden procesar en cualquier orden porque se puede calcular la secuencia inicial de números necesarios para el cifrado.
Para garantizar la seguridad, existen limitaciones geográficas y se requieren diferentes claves para comunicarse con diferentes personas, lo que hace que compartir sea engorroso.
Cada empleado tiene su propia clave y el centro de distribución de claves utiliza la clave personal, envuelve la clave de sesión temporal y la distribuye a cada empleado.
Texto cifrado = texto plano elevado a la potencia de E MOD N
E y N son las claves utilizadas para el cifrado RSA, es decir, la combinación de E y N es la pública llave.
Texto plano = Dth potencia del texto cifrado MOD N
La combinación de D y N es la clave privada.
Encuentra dos números primos muy grandes p y q, y multiplícalos para obtener N
L es el mínimo común múltiplo de p-1 y q-1
Números aleatorios El generador sigue generando números hasta que se cumplan las siguientes condiciones:
1 < E < L
El máximo común divisor de E y L es 1
Según E, calcula D
1 < E < L
E × D MOD L = 1
Asegúrate de que E y L sean primos relativos, entonces D debe existir.
Es fácil encontrar logaritmos, pero es difícil encontrar logaritmos discretos
Los humanos no han encontrado un algoritmo eficiente para la factorización prima de un número grande
Usando MOD La dificultad de encontrar el logaritmo discreto en N
Después del cifrado, la longitud del texto cifrado se duplica
Se utiliza la dificultad de encontrar la raíz cuadrada en MOD N
La implementación criptográfica se realiza realizando multiplicaciones especiales en puntos específicos de la curva elíptica.
Aprovechando que la operación inversa de este tipo de multiplicación es muy difícil
La función hash unidireccional también se conoce como función de resumen de mensajes, función hash y función hash
El mensaje de entrada también se llama imagen original
El valor hash también se llama resumen del mensaje y huella digital
La integridad también se llama consistencia
La longitud del valor hash calculado en función de cualquier mensaje es fija
Lleva poco tiempo
Diferentes mensajes tienen diferentes valores hash
Unidireccional
MD significa resumen de mensaje
Puede generar valores hash de 128 bits, pero su resistencia a la colisión se ha roto
Valor hash SHA-1 la longitud es de 160 bits y la fuerte resistencia a las colisiones se ha roto
El resto se denomina colectivamente SHA-2 y la longitud del valor hash es el número después de cada
versión de la UE
No. SHA de tercera generación
El límite superior del mensaje es 2^64 bits.
La longitud del mensaje debe ser un múltiplo entero de 512 bits. Estos 512 bits se denominan paquete de entrada.
Proceso:
Agregar 1 al final del mensaje
Luego agregar 0 hasta la posición de 448 bits del último paquete
> Los últimos 64 bits Es necesario guardar la longitud del mensaje original
Calcule 80 valores de 32 bits para cada grupo.
Proceso:
Divida 512 bits en grupos de 32 bits × 16, llamados W0~W15
Tome 4 grupos de los 15 grupos de acuerdo con las reglas y realice la operación XOR El resultado se gira 1 bit hacia la izquierda para obtener otro grupo. Repita esto para obtener un total de 80 grupos.
ABCDE cinco buffers de 32 bits, guardando el estado interno del mensaje de 160 bits.
El estado interno se mezcla con cada paquete de entrada de 512 bits en 80 pasos.
Finalmente se obtiene el estado interno final de 160bit.
Cracking por fuerza bruta: búsqueda por fuerza bruta de archivos con el mismo valor hash que el contrato de 100 millones de yuanes
Ataque de cumpleaños: prepare dos contratos de 100 millones de yuanes con el mismo valor hash p>
Puede identificar la manipulación, pero no puede identificar el disfraz, por lo que también se necesita tecnología de autenticación
La tecnología de autenticación incluye un código de verificación de mensajes y una firma digital
Código de verificación de mensajes: puede garantizar al interlocutor de comunicación que el mensaje no ha sido manipulado
Firma digital: puede garantizar a cualquier persona que el objeto de comunicación no ha sido manipulado
código de autenticación del mensaje, denominado MAC.
Equivalente a una función hash unidireccional utilizando una clave compartida
SWIFT: Responsable de las transacciones interbancarias Antes del uso de la criptografía de clave pública, las claves se distribuyen manualmente.
IPsec: Agrega seguridad al protocolo IP, mediante código de autenticación de mensajes.
SSL/TLS: Protocolo utilizado en compras online y otros escenarios.
Proceso:
La clave se completa hasta el tamaño del grupo de entrada requerido por la función hash unidireccional
La clave completa es la misma que la del ipad ( hexadecimal 36 Bucle continuo) /p>
Combínelo con el valor hash obtenido anteriormente para calcular un nuevo valor hash, que es el valor MAC final
Demostrar a terceros
Evitar la denegación
Debido a que solo hay dos partes que conocen la clave, el tercero no puede estar seguro de poder obtener la clave legal y no puede calcular el valor MAC legal por sí mismo
RSA : el que aprovecha la dificultad de la descomposición de factores primos
ElGamal: El que aprovecha la dificultad de encontrar logaritmos discretos. La firma digital tiene lagunas. Ahora solo se utiliza para criptografía de clave pública.
DSA: Una variante del algoritmo de Schnorr y método ElGamal, sólo puede usarse para firmas digitales
Rabin: Aprovechando la dificultad de encontrar la raíz cuadrada de MOD N, se puede utilizado para firmas digitales y criptografía de clave pública
Por ejemplo, el negocio de certificación de Verisign se divide en tres niveles A, cuanto mayor sea el nivel, más estricto
Las especificaciones X.509 formuladas por La Unión Internacional de Telecomunicaciones de la UIT y la Organización Internacional de Normalización ISO son las siguientes
Generalmente incluyen el siguiente contenido:
Certificado antes de firmar: varios mensajes del objeto de firma
Algoritmo de firma digital: el algoritmo utilizado al firmar
Firma digital: la firma digital obtenida
PKI: una serie de normas y especificaciones desarrolladas para el uso efectivo de claves públicas
Los componentes de PKI son los siguientes
Dos métodos: uno lo genera la autoridad de certificación y el otro El certificado lo generan los propios usuarios de PKI
La autoridad de certificación tiene una CRL (Lista de Revocación de Certificados) con una firma digital que registra el número del certificado que ha sido revocado.
Al autenticarse, de arriba (certificado raíz) a abajo
Para la clave, la clave es el tamaño del espacio de claves
La longitud real del Clave DES (es decir, la longitud después de excluir los bits con errores de paridad) 7 bytes
La longitud real de DES-EDE2 es de 14 bytes y la longitud real de DES-EDE3 es de 21 bytes
AES La longitud de la clave se puede seleccionar entre 128, 192 y 256 bits
Clave de sesión: una clave que se usa solo una vez en cada comunicación
Clave maestra: siempre reutilizada
CEK: Clave de cifrado de contenidos
KEK: Clave de cifrado de claves
Métodos de administración de claves en cada paso
Dos métodos:
Utilice números aleatorios para generar claves: utilice un generador de números pseudoaleatorios impredecible para generar números aleatorios
Utilice contraseñas para generar claves: generalmente se utiliza, contraseña + una Una cadena de números aleatorios llamada sal, y sus. los valores hash se utilizan como claves (este método se llama: contraseña basada en contraseña)
Comparta la clave secreta con anticipación
Centro de distribución
Uso público Claves
Intercambio de claves Diffie-Hellman
Renovación de claves: una técnica para mejorar la confidencialidad de las comunicaciones
Principio:
Al comunicarse mediante una clave compartida, cámbiela periódicamente.
Ambas partes utilizan el mismo método para hacer hash de la clave actual y usarla como la siguiente clave
Ventajas:
Seguridad hacia atrás: evita descifrar contenido pasado p>
Cifre la clave y luego guárdela
Significado:
Cifrar varias claves al mismo tiempo puede reducir la cantidad de claves para guardar
P es un número primo muy grande, G es el generador de P
El propósito es enviar implícitamente la información del número aleatorio A a B
El propósito es enviar implícitamente la información del número aleatorio B a A
Método de cálculo: Clave = (G ^ B MOD P) ^ A MOD P = G^ (A × B) MOD P
Método de cálculo: Clave = (G ^ A MOD P) ^ B MOD P = G^(A × B) MOD P
Para un número primo P, solo cuando su generador realiza G ^ x MOD P, el resultado puede cubrir todos los números desde 0 ~ P-1
Propósito: se utiliza para almacenar claves de forma segura
Origen:
En primer lugar, se genera la clave de sesión CEK y el mensaje se cifra
En segundo lugar, la clave de sesión CEK debe mantenerse en secreto y la clave de cifrado de clave KEK se utiliza para mantener la clave de sesión en secreto
Tres ahora necesitan mantener la KEK en secreto y elegir usar una contraseña para generar la KEK
La cuestión de la confidencialidad se reduce en última instancia a mantener la clave de forma segura, pero no podemos recordarla.
Por lo tanto, se selecciona una función hash unidireccional para generar un valor hash para la contraseña como clave.
No es necesario guardar esta clave. Podemos obtenerla en cualquier momento a través de la contraseña. La contraseña no se puede revertir y la contraseña es fácil de recordar.
Por cierto, para evitar ataques de diccionario, al generar valores hash de contraseña, debe usar contraseña + salt (secuencia de números aleatorios)
Método de ataque con una lista de candidatos preparada de antemano
Aleatoriedad
Imprevisibilidad
Invisibilidad
Estas tres propiedades se vuelven más estrictas a medida que desciendes. Se llaman respectivamente:
Números pseudoaleatorios débiles (no se pueden usar en criptografía)
Números pseudoaleatorios fuertes
Números aleatorios verdaderos
El generador de números pseudoaleatorios es público y la semilla es secreta.
Asegurar la imprevisibilidad de las semillas es más fácil.
La semilla se utiliza para inicializar el estado interno del generador de números pseudoaleatorios
R1 = (A × R0 + C) MOD M
Datos limitados , no se puede utilizar en criptografía
La naturaleza unidireccional de la función hash unidireccional es la base para respaldar la imprevisibilidad de la secuencia de números pseudoaleatorios
Utilice claves simétricas como como AES para realizar el cifrado del estado interno
A partir de la hora actual, utilice el algoritmo de cifrado para obtener la máscara de la hora cifrada (debido a que la clave es desconocida, otros no pueden inferir la información de la máscara)
XOR con el estado interno, salida después del cifrado y obtención de la secuencia de números pseudoaleatorios
Después de cifrar la secuencia de números pseudoaleatorios, se utilizará como el siguiente estado interno
Software criptográfico para situaciones extremas, con todas las funciones.
TLS se compone del protocolo de registro TLS y del protocolo de protocolo de enlace TLS.
Responsable del cifrado, compresión y autenticación de los mensajes
Acordar el algoritmo y clave de cifrado utilizados por el cliente y el servidor
Responsable de entregar la señal a cambiar la contraseña
Notificar a la otra parte cuando ocurre un error
Transmitir datos