Qué es SSL/TLS/HTTPS, cifrado simétrico y asimétrico + certificado + CA

¿Qué es SSL/TLS?

descripción general

SSL (capa de conexión segura)

SSL (Secure Socket Layer) es un conjunto de protocolos de seguridad de datos de Internet desarrollados por Netscape, la versión actual es 3.0. El protocolo SSL se ubica entre el protocolo TCP/IP y varios protocolos de la capa de aplicación , lo que brinda soporte de seguridad para la comunicación de datos . SSL está en la capa de sesión de la quinta capa en el modelo OSI.

El protocolo SSL se puede dividir en dos capas: SSL Record Protocol (Protocolo de registro SSL): Se basa en un protocolo de transmisión confiable (como TCP) y brinda soporte para funciones básicas como encapsulación de datos , compresión y cifrado para alta resolución. protocolos de nivel. SSL Handshake Protocol (Protocolo de protocolo de enlace SSL): se basa en el protocolo de registro SSL y se utiliza para la autenticación de identidad , la negociación de algoritmos de cifrado y el intercambio de claves de cifrado antes de que comience la transmisión de datos real .

TLS (Seguridad de la capa de transporte)

TLS (Transport Layer Security) es un protocolo de capa de transporte seguro, su predecesor es SSL. Cuando Netscape lanzó la primera versión del navegador web , Netscape Navigator , en 1994 , lanzó el protocolo HTTPS , encriptado con SSL, que es el origen de SSL. El IETF estandariza SSL y publicó la primera versión del documento estándar TLS en 1999. Esto fue seguido por RFC 5246 (agosto de 2008) y RFC 6176 (marzo de 2011). Este protocolo es ampliamente compatible con aplicaciones como navegadores , buzones de correo , mensajería instantánea , VoIP y fax por Internet . Los principales sitios web, como Google , Facebook , etc. también utilizan este protocolo para crear conexiones seguras y enviar datos. Se ha convertido en el estándar de la industria para la comunicación segura en Internet .

Uno de los pasos más importantes para algunos negocios en línea (como el pago en línea) es crear un entorno de transacciones confiable que permita a los clientes realizar transacciones con tranquilidad. SSL/TLS lo garantiza. SSL/TLS se denomina certificado X.509 A documento digital que vincula la información del sitio web y de la entidad de la empresa a las claves criptográficas para realizar el trabajo. Cada par de claves (key pairs) tiene una clave privada (clave privada) y una clave pública (clave pública). La clave privada es única y generalmente se encuentra en el servidor. Se utiliza para descifrar los datos cifrados por la clave pública. El información; la clave pública es pública, y todos los que interactúan con el servidor pueden tener la clave pública, y la información cifrada con la clave pública solo puede ser descifrada por la clave privada.

X.509

X.509 es el formato estándar para los certificados de clave pública, un documento que asocia de forma segura las claves criptográficas con (individuos u organizaciones). Las principales aplicaciones de X.509 son las siguientes

  • SSL/TLS y HTTPS para navegación web autenticada y encriptada
  • Correo electrónico firmado y encriptado a través del protocolo S/MIME
  • Firma de código: se refiere al proceso de firma de aplicaciones de software mediante certificados digitales para su distribución e instalación seguras.

Mediante la firma digital del software con un certificado emitido por una autoridad de certificación pública conocida como SSL.com, los desarrolladores pueden asegurar a los usuarios finales que el software que desean instalar fue publicado por un desarrollador conocido y de confianza, y que después de firmar no ha sido manipulado o dañado

Explicación detallada de TLS

TLS se utiliza para proporcionar confidencialidad e integridad de datos entre dos aplicaciones que se comunican. TLS se compone de varios subprotocolos, como el protocolo de registro, el protocolo de enlace, el protocolo de advertencia, el protocolo de especificación de cambio de contraseña y el protocolo de extensión. Utiliza muchas tecnologías criptográficas de vanguardia, como el cifrado simétrico, el cifrado asimétrico y la autenticación de identidad.

Hasta ahora, ha habido tres versiones de TLS, 1.1, 1.2 y 1.3 Actualmente, la 1.2 es la más utilizada, por lo que la siguiente discusión se basa en la versión de TLS 1.2.

Notas de la versión y requisitos de seguridad

Ahora SSL 2.0ya SSL 3.0han sido eliminados. Entre ellos TLS 1.0, TLS 1.1se TLS 1.2encuentra el mainstream actual, relativamente seguro.

Depende principalmente del algoritmo de cifrado. TLS 1.3Actualmente es la última versión del protocolo y también es relativamente la versión más segura.

Requisitos de la empresa: los protocolos SSL2.0 y SSL3.0 están prohibidos, el protocolo TLS1.0 solo se puede usar como legado, se recomiendan las versiones TLS1.1 y TLS1.2

Convención de nomenclatura TLS

Tomemos un ejemplo de TLS para ver la estructura de TLSECDHE-ECDSA-AES256-GCM-SHA384

¿Qué quiere decir esto? Estaba un poco confundido cuando lo leí por primera vez, pero en realidad hay rutinas, porque los conjuntos de cifrado de TLS están relativamente estandarizados, y el formato básico es un algoritmo de intercambio de claves-algoritmo de firma-algoritmo de cifrado simétrico-algoritmo de resumen. modo de agrupación,

Primero veamos lo que significa.
Use ECDHE para el intercambio de claves , use ECDSA para firma y autenticación , luego use AES como algoritmo de cifrado simétrico , la longitud de la clave es de 256 bits, use GCM como modo de agrupación y finalmente use SHA384 como el algoritmo de resumen .

TLS utiliza fundamentalmente ambas formas de cifrado simétrico y asimétrico.

Algoritmo de cifrado - confidencialidad de la transmisión de información

Antes de entender el cifrado simétrico, primero entendamos la criptografía. En criptografía, hay varios conceptos: texto sin formato, texto cifrado, cifrado y descifrado.

  • Por lo general, se considera que el texto sin formato es un conjunto de bits o caracteres significativos, o un mensaje que se puede obtener a través de una determinada codificación pública. El texto sin formato generalmente se denota por m o p
  • Texto cifrado (texto cifrado), después de algún cifrado de texto sin formato, se convierte en texto cifrado
  • Cifrado (Cifrar), el proceso de transformación de la información de convertir la información original (texto sin formato) en texto cifrado
  • Descifrado (Decrypt), el proceso de restauración de información cifrada en texto sin formato.

Cifrado simétrico

El cifrado simétrico, como su nombre lo indica, significa que se utiliza la misma clave para el cifrado y el descifrado. Siempre que se garantice la seguridad de la clave, todo el proceso de comunicación es confidencial.

Hay muchos algoritmos de cifrado disponibles en TLS, como DES, 3DES, AES, ChaCha20, TDEA, Blowfish, RC2, RC4, RC5, IDEA, SKIPJACK, etc. Actualmente los más utilizados son AES-128, AES-192, AES-256 y ChaCha20.

  • El nombre completo de DES es Estándar de cifrado de datos (Data Encryption Standard), que es un algoritmo de clave simétrica para el cifrado de datos digitales. Aunque su longitud de clave corta de 56 bits lo hace demasiado inseguro para las aplicaciones modernas, ha tenido una gran influencia en el desarrollo de la tecnología de encriptación.
  • 3DES es un algoritmo de cifrado derivado del Estándar de cifrado de datos (DES) original. Cobró mucha importancia después de la década de 1990, pero más tarde, debido a la aparición de algoritmos más avanzados, 3DES perdió importancia.
  • AES-128, AES-192 y AES-256 pertenecen a AES. El nombre completo de AES es Estándar de cifrado avanzado (Advanced Encryption Standard) . Amplios algoritmos de cifrado simétrico.
  • ChaCha20 es otro algoritmo de cifrado diseñado por Google. La longitud de la clave se fija en 256 bits. El rendimiento del software puro es mejor que el de AES. Solía ​​ser popular en los clientes móviles, pero después de ARMv8 también se agregó la optimización de hardware AES, por lo que ya no es más largo Tiene ventajas obvias, pero aún cuenta como un buen algoritmo.

paquete encriptado

El algoritmo de cifrado simétrico también tiene el concepto de un modo de grupo. Para el modo de grupo GCM, solo se puede usar con AES, CAMELLIA y ARIA, y AES es obviamente la opción más popular y ampliamente implementada. Permite que el algoritmo use un clave de longitud fija Cifre texto sin formato de cualquier longitud.
Hubo varios modos de agrupación como ECB, CBC, CFB y OFB al principio, pero se descubrió que todos tenían vulnerabilidades de seguridad una tras otra, por lo que básicamente no se usan mucho ahora. El último modo de agrupación se llama AEAD (Authenticated Encryption with Associated Data), que agrega la función de autenticación durante el cifrado.Los más utilizados son GCM, CCM y Poly1305.

Por ejemplo, ECDHE_ECDSA_AES128_GCM_SHA256 significa que tiene una clave de 128 bits y AES256 significará una clave de 256 bits. GCM significa modo de operación de Cifrado de datos asociados autenticados modernos (AEAD) con un cifrado de bloque de 128 bits.

Hablamos sobre el cifrado simétrico anteriormente. Tanto la parte de cifrado como la parte de descifrado del cifrado simétrico usan la misma clave, es decir, la parte de cifrado debe cifrar los datos originales y luego entregar la clave a la parte de descifrado para descifrar antes. se puede descifrar datos, ¿qué problemas causa esto? El cifrado simétrico no puede garantizar la seguridad de la transmisión de la clave en sí.

Hay varias soluciones al problema de distribución de claves de la siguiente manera :

  1. clave previamente compartida
  2. centro de distribución de llaves
  3. Intercambio de claves Diffie-Hellman
  4. cifrado asimétrico

Cifrado asimétrico

El cifrado asimétrico también se denomina cifrado de clave pública. Comparado con el cifrado simétrico, el cifrado asimétrico es un método de cifrado nuevo y mejorado. La clave se intercambia a través de la transmisión de la red, lo que puede garantizar que la clave se intercepte a tiempo y que la información de los datos no quede expuesta. Hay dos claves en el cifrado asimétrico, una es la clave pública y la otra es la clave privada.La clave pública es pública, pero la clave privada debe mantenerse por sí misma.

La clave pública y la clave privada son un par de claves. Si encripta datos con una clave, debe usar la otra clave para descifrarlos. No, ya que la clave pública es pública).

Bajo el cifrado asimétrico, dos partes deben tener cuatro claves para la comunicación.

Volviendo al ejemplo de ahora, Xiaoming y Xiahong descubrieron a través de la investigación que el cifrado asimétrico puede resolver el problema de seguridad de su comunicación, por lo que hicieron lo siguiente:

  1. Xiao Ming ha determinado su clave privada mPrivateKey y su clave pública mPublicKey. Guarde la clave privada para usted y envíe la clave pública mPublicKey a Xiaohong

  2. Xiaohong ha determinado su clave privada hPrivateKey y su clave pública hPublicKey. Guarde la clave privada para usted y envíe la clave pública hPublicKey a Xiaoming

  3. Xiao Ming envía un mensaje "Nos vemos abajo en Soho T1 el sábado a las 10 am" y lo encripta con la clave pública hPublicKey de Xiaohong.

  4. Xiaohong usa su clave privada hPrivateKey para descifrar el mensaje después de recibirlo. Luego responda "Entendido, no llegue tarde" y cifre con la clave pública mPublicKey de Xiaoming.

  5. Xiao Ming usa su clave privada mPrivateKey para descifrar el mensaje después de recibirlo. Después de leer el mensaje, pensé: ¿Aún me recuerdas que no llegue tarde? Siempre llegas tarde, ¿verdad?

El proceso anterior es una solicitud y respuesta completa. A través de este ejemplo, clasificamos el proceso de cifrado y descifrado asimétrico de una transmisión de información:

  1. El receptor del mensaje prepara la clave pública y la clave privada

  2. El receptor guarda la clave privada y publica la clave pública al remitente del mensaje.

  3. El remitente del mensaje cifra el mensaje con la clave pública del receptor.

  4. El destinatario del mensaje descifra el mensaje con su propia clave privada

La clave pública solo se puede utilizar para el cifrado de datos. Los datos cifrados con una clave pública solo se pueden descifrar con la clave privada correspondiente. Este es el concepto central del cifrado asimétrico .

El diseño de algoritmos de cifrado asimétrico es mucho más difícil que el de algoritmos simétricos (no hablaremos de métodos de cifrado específicos), comunes como DH, DSA, RSA, ECC, etc.
Entre ellos, el algoritmo de encriptación RSA es el más importante y el más famoso. Por ejemplo DHE_RSA_CAMELLIA128_GCM_SHA256. Su seguridad se basa en la descomposición de enteros, utilizando el producto de dos números primos súper grandes como material para la generación de claves, es muy difícil deducir la clave privada de la clave pública.
ECC (criptografía de curva elíptica) también es un tipo de algoritmo de cifrado asimétrico. Se basa en el problema matemático del logaritmo discreto de curva elíptica. Utiliza ecuaciones de curva específicas y puntos base para generar claves públicas y privadas. ECDHE se utiliza para el intercambio de claves y ECDSA se utiliza para la firma digital.

cifrado híbrido

TLS utiliza un método de cifrado híbrido de cifrado simétrico y cifrado asimétrico para lograr la confidencialidad.

En comparación con el cifrado simétrico, el cifrado asimétrico tiene las siguientes características:

1. El cifrado asimétrico resuelve el problema de la distribución de contraseñas

2. La velocidad de procesamiento del cifrado asimétrico es solo unas pocas centésimas de la del cifrado simétrico. No apto para cifrar mensajes muy largos.

3. Las aplicaciones nuevas no deben utilizar RSA de 1024 bits. Al menos RSA de 2048 bits.

RSA resuelve el problema de distribución de contraseñas, pero es menos eficiente. Entonces, a veces, según las necesidades, el cifrado simétrico y asimétrico se pueden usar juntos para formar un criptosistema híbrido, cada uno con sus propias ventajas.

La velocidad de operación de RSA es muy lenta, mientras que la velocidad de cifrado de AES es relativamente rápida y TLS utiliza este método de cifrado híbrido. Al comienzo de la comunicación, utilice algoritmos asimétricos, como RSA y ECDHE, para resolver primero el problema del intercambio de claves. Luego use el número aleatorio para generar la clave de sesión (clave de sesión) utilizada por el algoritmo simétrico y luego cifre con la clave pública. La otra parte descifra el texto cifrado con la clave privada y extrae la clave de sesión. De esta forma, las dos partes realizan el intercambio seguro de claves simétricas.

Algoritmo de resumen - Firma digital - Integridad del intercambio de datos

Ahora que usamos cifrado híbrido para lograr la confidencialidad, ¿podemos transmitir datos de forma segura? No basta, sobre la base de la confidencialidad, hay que sumar las características de integridad y autenticación de identidad para lograr una seguridad real. El medio principal para lograr la integridad es el algoritmo de resumen (Digest Algorithm)

Envíe los datos originales y la firma digital al receptor. Después de recibir la firma digital, el receptor utiliza el mismo algoritmo hash para calcular el valor de resumen del mensaje y luego descifra el mensaje con la clave pública del remitente. El valor de resumen del se compara el texto. Si son iguales, significa que el mensaje es efectivamente del remitente reclamado y no ha sido manipulado.

MD5 (algoritmo de resumen de mensaje 5)

Si no conoce el algoritmo de resumen, debe conocer MD5. Es un tipo de algoritmo hash criptográfico. MD5 se puede usar para crear un valor de cadena de 128 bits a partir de una cadena de cualquier longitud.

Aunque MD5 es inseguro, todavía se usa en la actualidad. MD5 se usa más comúnmente para verificar la integridad de los archivos. Sin embargo, también se utiliza en otros protocolos y aplicaciones de seguridad como SSH, SSL e IPSec. Algunas aplicaciones mejoran el algoritmo MD5 saltando el texto sin formato o aplicando la función hash varias veces.
¿Qué es la sal? En criptografía, un salt es un elemento de datos aleatorios que se utiliza como entrada adicional a una función unidireccional para cifrar datos, contraseñas o contraseñas. La sal se utiliza para proteger las contraseñas almacenadas.

¿ Qué es unidireccional ? Es decir, este algoritmo no tiene clave para descifrar y solo puede realizar un cifrado unidireccional. Los datos cifrados no se pueden descifrar y el texto original no se puede revertir.

Volvamos a la discusión del algoritmo de resumen. De hecho, puede entender el algoritmo de resumen como un algoritmo de compresión especial, que puede comprimir datos de cualquier longitud en una cadena de longitud fija, que es como agregar un bloqueo.

SHA1 (algoritmo hash seguro 1)

Además del algoritmo de cifrado MD5 de uso común, SHA-1 también es un algoritmo de cifrado de uso común, pero SHA-1 también es un algoritmo de cifrado inseguro, que está prohibido en TLS. La recomendación TLS actual es la sucesora de SHA-1: SHA-2.

SHA2 (algoritmo hash seguro 2)

Presentado en 2001, SHA-2 ha realizado modificaciones significativas sobre la base de SHA-1. La serie SHA-2 contiene seis funciones hash cuyos resúmenes (valores hash) son 224, 256, 384 o 512. Bits: SHA-224, SHA-256, SHA-384, SHA-512. Capaz de generar resúmenes de 28 bytes, 32 bytes, 48 ​​bytes y 64 bytes, respectivamente.

Con la protección de SHA-2, se puede lograr la integridad de los datos. Incluso si cambia un signo de puntuación o agrega un espacio en el archivo, el resumen del archivo generado será completamente diferente, pero SHA-2 es un método de encriptación basado en texto sin formato Todavía no es lo suficientemente seguro, entonces, ¿qué debo usar?

HMAC (Código de autenticación de mensajes basado en hash)

Un método de encriptación más seguro es usar HMAC Antes de comprender qué es HMAC, debe saber qué es MAC.

El nombre completo de MAC es Message Authentication Code, que se genera a partir del mensaje y la clave a través del algoritmo MAC. El valor MAC permite al verificador (que también tiene la clave secreta) detectar cualquier cambio en el contenido del mensaje, por lo que protegiendo la integridad de los datos del mensaje.

HMAC es una extensión adicional de MAC. Utiliza la combinación de valor MAC + valor hash. Cualquier función hash cifrada se puede utilizar en el cálculo de HMAC, como SHA-256.

Autenticación - Ataque Man-in-the-Middle - Certeza de la identidad del comerciante

verificación de firma

Ahora que hemos resuelto el problema de la integridad, solo queda un problema que es la autenticación ¿Cómo se realiza la autenticación?

En el proceso de envío de datos al servidor, los piratas informáticos (atacantes) pueden pretender ser cualquier parte para robar información. Puede hacerse pasar por usted para enviar información al servidor, o puede hacerse pasar por un servidor para aceptar la información que envía. Entonces, ¿cómo resolver este problema?

¿Cómo determina la autenticación su propia singularidad? Hemos visto el concepto de cifrado de clave pública y descifrado de clave privada en el proceso de descripción anterior. La clave privada mencionada solo es de su propiedad, y puede distinguir la unicidad, por lo que podemos invertir el orden para que se encripte con la clave privada y se descifre con la clave pública. Usando una clave privada más un algoritmo de resumen, se pueden implementar firmas digitales para lograr la autenticación. —— Firma de clave privada, verificación de clave pública.

La verificación de firma puede verificar la identidad del remitente, evitar ataques de intermediarios y ataques de falsificación de identidad entre dominios CSRF.

Hasta ahora, hemos implementado el cifrado, la autenticación de datos y la autenticación mediante el uso integral de cifrado simétrico, cifrado asimétrico y algoritmos de resumen, entonces, ¿es seguro? No, también hay un problema de autenticación de firma digital. Debido a que la clave privada es suya y cualquiera puede publicar la clave pública, debe publicar la clave pública certificada para resolver el problema de confianza de la clave pública .

Problemas con la distribución de claves públicas

El "servidor" quiere liberar la clave pública al mundo exterior, entonces, ¿cómo envía el "servidor" la clave pública al "cliente"? Nuestra primera reacción puede ser los siguientes dos métodos:

  • a) Coloque la clave pública en una dirección de descarga en algún lugar de Internet y entréguesela al "cliente" para que la descargue por adelantado.

  • b) Cada vez que se inicia la comunicación con el "cliente", el "servidor" envía la clave pública al "cliente".

Pero estos dos métodos tienen ciertos problemas. Para el método a), el "cliente" no puede determinar si la dirección de descarga es emitida por el "servidor". ¿Por qué cree que la descarga desde esta dirección es emitida por el "servidor" en lugar de ¿Qué pasa con los falsificados de otras personas, qué pasa si se descarga uno falso? Además, no es realista exigir que todos los "clientes" descarguen la clave pública antes de la comunicación.

Para el método b), también hay problemas, porque cualquiera puede generar un par de clave pública y clave privada por sí mismo, y puede pretender ser un "servidor" siempre que envíe su propia clave privada al "cliente". La indicación es la siguiente:

"Cliente" -> "Hacker": Hola //Hacker intercepta el mensaje enviado desde "Cliente" a "Servidor"

"Hacker" -> "Cliente": Hola, soy el servidor, esta es mi clave pública//El hacker genera un par de clave pública y clave privada por sí mismo, envía la clave pública al "cliente" y se queda con la clave privada para sí mismo

"Cliente" -> "Hacker": Demuéstrame que eres el servidor

"Hacker" -> "Cliente": Hola, soy el servidor {Hola, soy el servidor} [clave privada del hacker|RSA] //Después de recibir la información encriptada por el "hacker" con la clave privada, el cliente se puede descifrar con la clave pública enviada por el "hacker", de manera que se confunde al "hacker" con el "servidor"

Por lo tanto, el "hacker" solo necesita generar un par de clave pública y clave privada por sí mismo, y luego enviar la clave pública al "cliente", y mantener la clave privada por sí mismo, para que el "cliente" pueda usar el clave pública del pirata informático para descifrar el contenido cifrado por la clave privada del pirata informático, el "cliente" creerá que "hacker" es "servidor", lo que causa problemas de seguridad. La raíz del problema aquí es que todos pueden generar una clave pública y un par de claves privadas, pero es imposible confirmar quién es el par de claves públicas. Si puede determinar quién es la clave pública, no tendrá este problema. Por ejemplo, si recibe una clave pública enviada por un "hacker" que se hace pasar por un "servidor", después de algún tipo de inspección, sería genial si pudiera encontrar que la clave pública no pertenece al "servidor".

Para resolver este problema, aparecieron los certificados digitales, que pueden resolver nuestros problemas anteriores. En primer lugar, veamos qué es un certificado digital, un certificado contiene el siguiente contenido específico:

  • autoridad emisora ​​de certificados
  • El período de validez del certificado.
  • Llave pública
  • Propietario del certificado (sujeto)
  • el algoritmo utilizado para la firma
  • Huellas dactilares y algoritmos de huellas dactilares

La explicación detallada del contenido del certificado se explicará en detalle más adelante, aquí solo debemos aclarar que el **certificado digital puede garantizar que la clave pública en el certificado * digital* es efectivamente el propietario del certificado ( Asunto), o el certificado se puede utilizar para confirmar la identidad de la otra parte . En otras palabras, obtenemos un certificado digital y podemos determinar de quién es el certificado digital.

En cuanto a cómo juzgar, se explicará en detalle más adelante cuando se analicen los certificados digitales en detalle.

Autoridad de certificación CA (Autoridad de certificación)

Por lo tanto, se introduce CA. El nombre completo de CA es Certificate Authority, una autoridad de certificación de certificados. Debe permitir que CA emita una clave pública certificada para resolver el problema de confianza de la clave pública.

Existen pocas CA certificadas en el mundo, y han emitido tres tipos: DV, OV y EV respectivamente, la diferencia radica en el grado de credibilidad. DV es el más bajo, solo es confiable a nivel de nombre de dominio, EV es el más alto, se ha sometido a estrictos controles legales y de auditoría y puede probar la identidad del propietario del sitio web (el nombre de la empresa se mostrará en el navegador barra de direcciones, como Apple, sitio web de GitHub). Instituciones de diferentes niveles de confianza forman una relación jerárquica entre sí.

Por lo general, un solicitante de un certificado digital generará un par de claves que consta de una clave privada y pública y una solicitud de firma de certificado (CSR). Una CSR es un archivo de texto codificado que contiene la clave pública y otra información que se incluirá en el certificado (como el nombre de dominio, la organización, la dirección de correo electrónico, etc.). La generación de pares de claves y CSR generalmente se realiza en el servidor donde se instalará el certificado, y el tipo de información contenida en el CSR depende del nivel de verificación del certificado. A diferencia de la clave pública, la clave privada del solicitante es segura y nunca debe mostrarse a la CA (ni a nadie más).

Una vez generado el CSR, el solicitante lo envía a la CA, la cual verifica que la información que contiene es correcta, firma digitalmente el certificado con la clave privada emitida y se lo envía al solicitante.

Supongo que te gusta

Origin blog.csdn.net/q863672107/article/details/126473517
Recomendado
Clasificación