HTTPS: protocolo de enlace, certificado y negociación de claves
En segundo lugar, el nivel de protocolo HTTPS
SSL y TLS brindan soporte para la comunicación de datos segura.
3. Ideas de diseño de HTTPS
1. El servidor genera un par de claves públicas A y envía la clave pública y otra información a la CA para solicitar un certificado;
p>
2. La organización CA tiene su propio conjunto de pares de claves públicas. La organización CA genera un resumen digital a partir de la información y lo cifra con la clave privada. La organización CA tiene un conjunto de certificados en el sistema operativo donde se almacenan las claves públicas.
3.CA envía información y un resumen digital cifrado al servidor para generar un certificado;
4. Servidor
Al acceder a un sitio web https, el navegador primero. comprueba si el certificado ha sido revocado. Si el certificado ha sido revocado, se mostrará un mensaje de advertencia: "El certificado de esta organización ha sido revocado. Los problemas con el certificado de seguridad pueden indicar que alguien está intentando engañarlo o interceptar los datos que envía al servidor. Se recomienda que cierre esta página y no continúe navegando en el sitio web." ”
5.2. Cadena de confianza
La estructura organizativa de CA es una estructura de árbol. Hay múltiples midcas bajo una CA raíz, y un midca puede contener múltiples midcas.
Tanto la CA raíz como la CA intermedia pueden emitir certificados a los usuarios, que son certificados raíz y certificados intermedios, respectivamente. El certificado utilizado por el usuario final para verificar la clave pública se denomina certificado de usuario final.
Si el certificado de usuario final lo emite una CA intermedia, el certificado intermedio debe enviarse al cliente durante la fase de reconocimiento.
Proceso de verificación de la cadena de certificados:
6. Proceso de negociación de claves
Durante la fase de protocolo de enlace TLS, se determina el conjunto de cifrado utilizado por ambas partes.
(El acuerdo de claves, la verificación de certificados y el cifrado de datos son tres procesos independientes)
Por ejemplo:
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
DHE_RSA: Indica el Algoritmo de cifrado asimétrico utilizado en el proceso de protocolo de enlace (DHE se utiliza para el intercambio de claves, RSA se utiliza para certificados). Si solo hay uno con significa que se utiliza el mismo algoritmo para intercambiar información y certificados.
(Los algoritmos de intercambio de claves opcionales incluyen RSA, DH, ECDH y ECDHE. Los algoritmos de certificado principal opcionales incluyen: RSA, DSA y ECDSA. Los dos se pueden seleccionar de forma independiente y no entran en conflicto) p >
AES_256_CBC_SHA: Algoritmo de cifrado simétrico y algoritmo hash para canales cifrados.
?
7. Algoritmo de intercambio de claves
Durante el proceso de intercambio de claves, ambas partes determinan las claves para comunicaciones posteriores a través del algoritmo de intercambio de claves.
Algoritmos comunes de intercambio de claves: Algoritmos de intercambio de claves RSA y DH.
7.1, Proceso de intercambio de claves RSA:
a-& gt;B
b: Coloque la clave pública en el certificado.
a: Genera una clave usando un algoritmo de números aleatorios, la cifra con la clave pública y la envía a b.
Problemas que enfrenta RSA: una vez que se filtra la clave privada (la clave privada participa en el proceso de negociación), la clave puede descifrar todos los textos cifrados que ha escuchado antes (inseguridad directa) y la seguridad depende de la clave privada. Si la clave se mantiene intacta.
7.2. Algoritmo de intercambio de claves DH más seguro.
Los algoritmos de clave DH incluyen: DH, DHE, ECDH, ECDHE.
DH (algoritmo DH estático, siempre se selecciona la misma clave privada para el intercambio de claves, por lo que la clave privada es la misma cada vez).
DHE (Algoritmo DH temporal, cada conexión genera una clave DH temporal, por lo que la misma clave nunca se utilizará dos veces. Secreto hacia adelante)
7.3.DHE Una descripción simple de la clave algoritmo de intercambio (basado en el problema del logaritmo discreto):
a-& gt; B
a: genera un número aleatorio x (como su propia clave privada), donde a = g x mod p (g elevado a x módulo p), donde p es un número primo grande, g es un número generado y a se envía a b.
B: Genera un número aleatorio Y (como tu clave privada), B = g y mod p, envía B a A.
Respuesta: Calcula la clave 1 = b x mod p.
b: Calcular clave 2 = a y mod p.
Según la lógica matemática, clave1 = clave2, por lo que el intercambio de claves es exitoso.
La seguridad de DHE se refleja en el hecho de que sólo se transmiten A, B, P y G, sin las claves privadas X e Y de por medio. Cuando se conocen estos cuatro números, es difícil distinguir entre X e Y (dependiendo de la discreción), lo que garantiza la seguridad.
Ejemplo de cálculo de clave DH:
Supongamos g =10, p = 7, x = 3, a = 6, Y = 11, B = 5.
clave1 = ((g^x)mod p)^y mod p =((10^3)mod 7)^11 mod 7 =6
clave2 = ((g ^y)mod p)^x mod p =((10^11)mod 7)^3 mod 7 =6
7.4 Algoritmo de intercambio de claves basado en el problema del logaritmo discreto elíptico
a-& gt;B
Respuesta: Generar un número aleatorio ra, calcular Pa(x, y) = Ra * Q(x, y), Q(x, y ) es el punto base de un algoritmo de curva elíptica reconocido en todo el mundo. Envíe Pa(x, y) al servidor.
b: Genera un valor aleatorio Rb y calcula Pb(x, y) = Rb * Q(x, y). Envíe Pb(x,y) al cliente.
Respuesta: Calcular Sa(x, y) = Ra * Pb(x, y).
b: Calcular Sb(x, y) = Rb * Pa(x, y).
El algoritmo garantiza Sa =Sb = S y extrae el vector X de S como clave (clave previa a la maestra).