Explicación del concepto: cifrado simétrico, cifrado asimétrico, clave pública, clave privada, firma, certificado

Cuña

Ahora la seguridad de la red se ha vuelto cada vez más importante: durante el proceso de desarrollo, los programadores encontrarán algunos términos relacionados, como clave pública, clave privada, cifrado y firma. Estos conceptos son confusos y fáciles de confundir. Vamos a ordenar el contenido de esta parte.

Cifrado simétrico

En la transmisión de información importante, las personas siempre esperan que la información no se espíe, manipule o falsifique. La gente ha estado trabajando duro para cumplir con este requisito.

El libro de códigos utilizado para el cifrado de telegramas es el método de cifrado utilizado por la primera generación de seguridad de la red. El uso es: traducir el contenido a texto cifrado al enviar un mensaje. La parte que recibe el telegrama puede usar el mismo libro de códigos para descifrar la información correcta; de lo contrario Vi un montón de personajes confusos.

Este método de cifrado tradicional se llama cifrado simétrico.

Los algoritmos utilizados para el cifrado simétrico incluyen: DES, 3DES, AES, DESX, Blowfish, RC4, RC5, RC6. Estos algoritmos pueden considerarse claves o entenderse como el libro de códigos anterior. Estos algoritmos también pueden denominarse: "algoritmo de cifrado simétrico" o "algoritmo de cifrado tradicional", una parte usa el algoritmo para cifrar, y luego la otra parte usa el mismo algoritmo para descifrar.

Tomemos como ejemplo al villano que apareció en el caso de The Dancing Villain en el Detective Sherlock Holmes.

Vemos que cada villano representa un carácter inglés, y la bandera en las manos del villano se usa para separar palabras, es decir, para representar el límite de una palabra. Al transferir información, reemplace la información con un villano y luego, cuando la otra parte vea al villano, analice el villano que aparece en el mensaje. Por cierto, la heroína en la obra es la hija del líder de la pandilla, y los prisioneros usaron a estos villanos para enviar mensajes a la heroína, amenazándola con regresar.

La correspondencia entre estos villanos y los caracteres ingleses es equivalente a una clave, que es equivalente a un cifrado simétrico. Debido a que tanto el remitente como el destinatario usan la misma clave, es decir, el significado del villano es el mismo.

Sin embargo, la seguridad del algoritmo simétrico depende mucho de la clave, y la filtración de la clave significa que cualquiera puede descifrar los mensajes que envía o recibe, por lo que la confidencialidad de la clave es crucial para la seguridad de la comunicación. Entonces, después de analizar el significado de estos villanos, Holmes los usó para enviar mensajes para atraer a los prisioneros. Por lo tanto, para este tipo de cifrado simétrico, la seguridad de la clave es extremadamente importante.

¿Cuáles son las ventajas y desventajas del cifrado simétrico?

Ventajas: pequeña cantidad de cálculo, velocidad de encriptación rápida, alta eficiencia de encriptación

Desventajas: 1. Es necesario pasar la clave, es difícil garantizar la seguridad de la clave. 2. Falta de función de firma, es decir, no se puede verificar la identidad del remitente

Cifrado asimétrico

En el cifrado simétrico, la confidencialidad de la clave (es decir, el algoritmo de cifrado utilizado, como la correspondencia entre el libro de códigos, el villano y los caracteres ingleses en lo anterior) es crucial. Durante la guerra, el libro de códigos del telégrafo debe transmitirse a través de canales manuales, para que ambas partes puedan usarlo con confianza.

Pero en la comunicación de red actual, obviamente es imposible usar canales manuales para pasar claves, y solo pasar a través de la red para ser eficiente y rápido. De esta manera, hay una contradicción: la clave se utiliza para garantizar la seguridad de transmisión de la red, y esta clave, que es esencial para la seguridad de la red, necesita que la red se la pase a la otra parte.

La forma más segura de guardar la clave es no decirle a nadie y no pasarla, pero en el cifrado simétrico, la parte que descifra debe obtener la clave correspondiente, que requiere que se pase la clave, pero una vez que se pasa la clave, se perderá Riesgo Este problema de "la gallina pone huevos, los huevos ponen gallinas" siempre ha intrigado a las personas. Hasta que apareció un algoritmo: la clave generada por este algoritmo se divide en dos partes: clave pública y clave privada.

Este par de claves divididas tiene las siguientes características:

  • 公钥和私钥是一个算法中两个不同、但内在又相关联的参数集合,同时生成,但可以独立使用。
  • 公钥加密的数据只有对应的私钥才可以解密(公钥加密后公钥也不能解密)
  • 私钥加密的数据也只有对应的公钥才可以解密。

Algoritmos de cifrado asimétricos comunes: RSA, DSA, ECC, Diffie-Hellman, El Gamal, etc.

Descripción general del algoritmo RSA

Nosotros entendemos bien el modo de cifrado simétrico, pero las características anteriores del algoritmo de cifrado asimétrico nos hacen sentir increíbles. Primero veamos brevemente cómo se implementan matemáticamente estas características. RSA es el más utilizado entre los algoritmos de cifrado asimétrico. Presentemos RSA.

El origen del nombre RSA

El algoritmo RSA fue propuesto en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman, quienes trabajan juntos en el MIT. . RSA se compone de las tres letras de los tres apellidos.

El cifrado RSA aprovecha la solución de reenvío de "función unidireccional" es muy simple, la solución inversa es muy compleja. La idea es la siguiente:

  • 对两个质数相乘容易,而将其合数分解很难的这个特点进行的加密算法。 n=p1*p2,已知 p1、p2 求 n 简单,已知 n 求 p1、p2 困难。
  • (m^e)%n=c,已知 m、e、n 求 c 简单,已知 e、n、c 求 m 很难。

La seguridad del algoritmo RSA se basa en la dificultad del problema RSA, es decir, la dificultad de factorización basada en enteros grandes. Este algoritmo es muy confiable, cuanto más larga sea la clave, más difícil será descifrarla. Según la literatura publicada, la clave RSA más larga actualmente descifrada es de 768 bits binarios. En otras palabras, las claves de más de 768 bits no se pueden descifrar (al menos nadie lo anunció públicamente). Por lo tanto, se puede considerar que la clave RSA de 1024 bits es básicamente segura, y la clave de 2048 bits es extremadamente segura

El algoritmo de cifrado asimétrico es más complicado y requiere más tiempo que el cifrado simétrico: cuantos más dígitos, más tiempo. Por lo tanto, en el uso real, el proceso de cifrado asimétrico se usa generalmente para pasar primero la clave de cifrado simétrico, y luego se usa el cifrado simétrico para garantizar una comunicación posterior, de modo que la seguridad y la velocidad puedan alcanzar un equilibrio, que es lo que usa HTTPS. Este método se describirá en detalle más adelante.

Comunicación mediante cifrado asimétrico.

Con pares de claves públicas y privadas cifradas asimétricamente , solo la clave pública debe pasarse en la comunicación , e incluso la clave pública se puede abrir para todos. La persona que necesita enviarme un mensaje usa mi clave pública para cifrarlo y luego me lo envía. Solo yo puedo usar la clave privada para descifrar. Es imposible que otros aprendan el contenido de la información.

Esto es solo encriptación unidireccional, ¿qué pasa con la encriptación bidireccional? La otra parte también puede crear un par de claves pública y privada.

  • A 根据非对称加密算法生成自己的公私钥对(PUBLIC_A,PRIVATE_A);
  • B 也根据非对称加密算法生成自己的公私钥对(PUBLIC_B,PRIVATE_B);
  • A 和 B 可以公开的交换自己的公钥(私钥不需要发送,各自保存好即可);
  • A 使用 B 的公钥 PUBLIC_B 加密信息,发送给 B;
  • B 接收到消息后,使用自己保存的私钥 PRIVATE_B 解密就可以看到消息内容(这条消息即使被他人获得后也是不能解密的);
  • 同样,B 要发消息给 A 时,使用 A 的公钥 PUBLIC_A 加密发出;
  • A 收到消息后使用自己的私钥 PRIVATE_A 解密,这样就实现了双方加密的通信。

Firma

Vimos anteriormente que con el par de claves pública-privada, parece resolver el problema de la comunicación encriptada. Pero hay un problema en el uso real, es decir, ¿cómo confirma A que el remitente es B y no un tercero después de recibir el mensaje? De hecho, también es muy simple, siempre que el proceso de cifrar información con su propia clave privada se realice una vez más antes de enviar un mensaje, esta vez el paso de cifrar información con su propia clave privada se llama firma .

La clave privada es mantenida solo por usted, y existe una correspondencia uno a uno entre la clave pública y la clave privada, es decir , la clave pública solo puede descifrar la información cifrada por la clave privada correspondiente , por lo que el proceso de cifrado de la clave privada puede usarse como un medio para verificar la identidad. De hecho, el método y el principio de cifrar datos por clave pública y clave privada son los mismos, pero se nombran de acuerdo con sus propósitos .

La clave pública generalmente se usa para el cifrado, y la clave privada se usa para la firma.

También use el ejemplo anterior para ver el proceso de comunicación después de usar el cifrado y la firma:

  • A 先使用自己的私钥 PRIVATE_A 对消息进行一遍加密(习惯性称作签名),再使用 B 的公钥 PUBLIC_B 加密信息,然后将加密结果发送给 B。
  • B 接收到消息后,使用自己保存的私钥 PRIVATE_B 解密,然后使用 A 的公钥 PUBLIC_A 再解密一遍,如果能解密成功,就可以确保这条消息不是伪造的。
  • 同样,B 要发消息给 A 时先使用自己的私钥 PRIVATE_B 对消息进行一遍加密(习惯性称作签名),再使用 A 的公钥 PUBLIC_A 加密后发出。
  • A 收到消息后使用自己的私钥 PRIVATE_A 解密,然后使用 B 的公钥 PUBLIC_B 再解密一遍,这样就实现了双方互相确认身份的加密通信。

由于非对称加密是复杂且耗时的,而且需要加密的内容越长就越耗时。在实际使用中一般经过摘要算法得到一串哈希值,然后使用私钥对哈希值进行加密。习惯性将这样对摘要使用私钥加密生成的文件叫做签名文件。

哈希值算法

生成摘要的哈希算法有如下特点:

  • 可以将任意长度的信息与一串固定长度的字符串建立对应关系,即哈希值定长
  • 哈希值算法将任意长度映射为有限长度,难免有碰撞(即,两个不同信息算出的摘要相同)。好的哈希值算法就是能够尽量减少碰撞的几率
  • 原始信息的任何一点修改都会导致计算出的哈希值的变化,从而可以用哈希值来确保消息体的完整性。
  • 哈希值算法是单向的,即只能从原信息计算出哈希值,不能由哈希值回算得到原信息。

但是有的人可能见过网上有破解哈希加密的,其实它并不是反向推理,而是使用"撞库"的方式。意思就是事先对大量不同的字符串进行哈希加密,然后再将原来的字符串和生成的哈希值保存起来。然后根据用户输入的哈希值来进行检索,这就是"撞库"。不过这一般都是比较简单的哈希加密(md5),而且没有加盐。

常见算法有 MD5、SHA1、SHA256、SHA512 等。

大部分网站对用户密码保护也是利用哈希值单向性这个特点。数据库只保存用户密码的哈希值,进行登录操作时,将此次输入的密码再次计算哈希值与数据库保存的哈希值对比,对比通过则认为密码正确。这样即使数据库泄露,黑客也无法获知用户的密码。

这样就演化出了目前实际使用的签名、加密过程:

  • A 先使用哈希算法将要发送的消息计算出摘要,再自己的私钥 PRIVATE_A 对摘要进行签名得到签名文件,然后将原始消息和签名文件打包到一起,使用 B 的公钥 PUBLIC_B 加密信息,发送给 B。
  • B 接收到消息后,使用自己保存的私钥 PRIVATE_B 解密,得到原始消息和一个签名文件。使用哈希算法对原始消息计算得到一个哈希值,再使用 A 的公钥 PUBLIC_A 对签名文件进行解密,得到消息的哈希值,将这两个哈希值进行对比,如果一致就可以认为这条消息是 A 发送的且未经过篡改。

公钥与证书

从上边的流程来看,似乎一切都完美了,但黑客也是绞尽脑汁的,他们还是从中找到了破绽。那就是我们对 A 的身份识别是建立在相信 PUBLIC_A 的公钥确实是 A 的,然而黑客可以轻易的发布自己的公钥宣称这是 A 的公钥来欺骗我们,那我们又怎么样区分呢?这就需要一个结构来保证了,这个机构把 A 提供的公钥和 A 的相关信息放在一起组合成一份证书,这样你从这个机构获取证书,就可以得到有权威机构背书的公钥与 A 的对应关系。

这个机构叫做 CA,发布的证书叫做 CA 证书。

证书授权中心 CA

CA 证书授权(CertificateAuthority)中心是数字证书发行的唯一机构。

CA 中心又称 CA 机构,即证书授权中心(Certificate Authority),或称证书授权机构,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA 中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA 机构的数字签名使得攻击者不能伪造和篡改证书。在 SET 交易中,CA 不仅对持卡人、商户发放证书,还要对获款的银行、网关发放证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。

CA 证书是逐级保证安全的,最终的根证书内置在操作系统中。由操作系统来保证,这部分下文中会进行介绍。

CA证书链如下图:

HTTPS 的安全传输过程

HTTPS 中的 S,就是 Secure(安全)的意思,这就是比 HTTP 多出的一份安全保证,浏览器验证了网站的证书后会在地址栏的左边显示绿色的锁的标志,标志该网站是安全可信任的官网。

对称加密与非对称加密的联合使用

由于非对称加密是耗时的,如果在每一次 HTTPS 的数据传输中都使用非对称加密是不合适的。实际上的做法是在第一次建立 HTTPS 连接时使用一次非对称加密传递对称加密的密钥,然后就使用对称加密来保证接下来的通信过程。

HTTPS 的通信过程如下:

  • 浏览器发出 HTTPS 请求。
  • 服务器返回本网站的证书。
  • 浏览器基于内置在操作系统中的CA证书链对网站证书的有效性进行校验。校验通过后使用证书中的公钥加密一份对称加密的密钥信息,发送给服务端。
  • 服务端收到信息后使用自己的私钥解密信息,得到浏览器提供的用于对称加密的密钥信息。之后的通信过程就使用这个对称加密的密钥来保护。

Android 的安全启动过程(SecureBoot)

上一小节可以看到 HTTPS 的证书有效性还是要基于内置在操作系统中的 CA 根证书的。

那操作系统又是如何保证系统自身以及系统内包含的 CA 根证书不被篡改的呢?我们以 Android 来举例,因为相较于 PC 而言,手机厂商的安全性目前做的更好。

手机厂商建立了手机内部处理器与手机操作系统的绑定关系(也就是说开启 SecureBoot 功能的手机是不能刷非官方系统的),一旦刷入第三方系统后,手机则会不开机。这也是利用上文提到的公钥、私钥实现的,来具体看一下:

  • 手机的处理器内部存在一块只能写一次数据的 OTP 区域,出厂时会将厂商的公钥写入。物理上就保证了这部分不可更改。
  • 手机操作系统固件会使用厂商的私钥进行加密。
  • 手机处理器的第一部分启动程序(这部分程序也是固化在处理器内部的不可更改)会使用 OTP 中的公钥对操作系统进行解密,解密成功才可以启动,否则立马变"砖"。

这个过程就叫做安全启动,即 SecureBoot 。实际过程中为了加快校验速度也使用了哈希值算法,但此处仅用于说明加密启动的过程,忽略了部分细节。

电脑端 Intel 处理器中其实也存在类似的机制,但一般情况下 PC 都希望能够灵活的安装系统,因此默认没有开启 Intel 芯片中的 SecureBoot 功能。

Supongo que te gusta

Origin www.cnblogs.com/traditional/p/12693249.html
Recomendado
Clasificación