Cifrado de datos RSA y firma digital

algoritmo RSA

RSA es un algoritmo de cifrado de clave pública asimétrica que utiliza una clave pública para cifrar datos y utiliza una clave privada para descifrar datos. Por lo general, la clave pública es pública y la clave privada se mantiene por sí misma y no se puede hacer pública. Por lo tanto, cuando se utiliza el algoritmo de cifrado RSA para la comunicación, el remitente de la información y el receptor de la información se transmiten la clave pública y los datos entre sí. .
Debe saber que tanto el cifrado de datos como la firma digital son por razones de seguridad. La diferencia entre los dos es que el cifrado de datos consiste en cifrar datos para evitar la fuga de datos, mientras que la firma digital genera una firma a partir de datos para evitar la falsificación de datos. con datos

cifrado de datos

Durante el proceso de cifrado de datos, la clave pública se usa para cifrar los datos y la clave privada se usa para descifrarlos.
Escenario 1:
A se comunica con B y A envía un mensaje a B. El proceso es el siguiente:

  • B publica su clave pública a A
  • A usa la clave pública de B para cifrar los datos que se enviarán
  • B recibe los datos cifrados enviados por A y utiliza su propia clave privada para descifrarlos

En el proceso de A->B enviando un mensaje, incluso si el mensaje de A y la clave pública de B son interceptados, el contenido real de A aún no se puede obtener.
inserte la descripción de la imagen aquí
En este escenario, la seguridad del mensaje está garantizada, pero existe la premisa de que lo que B quiere recibir es el mensaje de A. En este momento, un hacker C usa la clave pública publicada por B para falsificar un mensaje falso a B, o intercepta A. El mensaje, y luego manipula el mensaje, B no es identificable, por lo tanto, se necesita una firma digital .

firma digital

Una firma digital utiliza una clave privada para la firma y una clave pública para la verificación .
Escenario 2:
A envía un mensaje a B, el hacker C también envía un mensaje falso a B, porque B solo quiere el mensaje de A, por lo que el proceso es el siguiente:

  • A publica su propia clave pública, B obtiene la clave pública de A
  • A firma el mensaje con su propia clave privada (al mismo tiempo, el contenido del mensaje también se puede cifrar con datos), y luego envía la firma y el mensaje a B al mismo tiempo
  • B usa la clave pública de A para diseñar la firma, y ​​el contenido analizado es el mismo que el contenido real del mensaje, lo que puede probar que el mensaje fue enviado por A.

Durante este proceso, si C envía un mensaje falsificado a B y B usa la clave pública de A para verificar la firma del mensaje falsificado, debe fallar.
inserte la descripción de la imagen aquí
En resumen, el cifrado de datos y la firma digital tienen sus propias responsabilidades. Uno garantiza la seguridad de los datos y el otro garantiza la corrección de los datos . Por lo tanto, en el proceso de transmisión de mensajes, para garantizar la seguridad, puede considerar el uso de ambos.

clave RSA

formato de archivo clave

Solo hay dos formatos de claves (incluidas la clave privada y la clave pública), der y pem
der: un formato binario especial
pem: formato de texto sin formato codificado en base64 ASCII

archivo PEM

Dado que el archivo PEM es un archivo de texto sin formato, es obvio que se puede abrir directamente con software de texto, pero lo que ve es la información codificada . Si desea ver el contenido real, debe usar la herramienta openssl para abrir él.

openssl x509 -in baidu.crt -text -noout 

archivo DER

El archivo der es un archivo binario. Si lo abre con un editor de texto general como vim, se distorsionará. Debe usar el comando openssl para ver la información específica.

openssl rsa -inform der baidu.key -text -noout
software de texto abressl
archivo PEM inserte la descripción de la imagen aquí inserte la descripción de la imagen aquí
archivo DER inserte la descripción de la imagen aquí inserte la descripción de la imagen aquí

sufijo de archivo clave

extensiones de archivo comunes

  • .cer, .cert : archivos de certificados comunes bajo la plataforma de Windows, el formato puede ser der o pem, y solo contiene la clave pública
  • .crt : el archivo de certificado en la plataforma Linux, el formato es el mismo que el anterior y solo contiene la clave pública
  • .key : archivo de clave privada, el mismo formato que el anterior, solo contiene la clave privada

otras extensiones de archivo

  • .csr : archivo de solicitud de generación de certificado, generalmente utilizado para enviar el archivo de certificado generado a la institución CA
  • .pfx, .p12 : archivos de formato der comúnmente utilizados en la plataforma de Windows, incluida la clave pública y la clave privada
  • .jks : almacén de claves de Java, incluidas las claves públicas y privadas
  • .pem, .der : Es el formato de archivo, y también puede ser el sufijo del archivo .¿Qué sufijo significa el formato del archivo? Generalmente, la clave pública usa este sufijo

Cómo usar la llave

En general, la clave rsa debe usarse con **clave privada/certificado (no clave pública)**, lo que requiere tres pasos:

  1. Generar archivo de clave privada private.key localmente
  2. Si es un certificado autofirmado (es decir, no ha sido certificado por una organización de CA), solo necesita generar un certificado basado en la clave privada , y puede usarlo
  3. Si se trata de un entorno de producción, generalmente se requiere un certificado de CA, debe generar un archivo certificate.csr basado en la clave privada y luego enviar el archivo csr a la CA para generar un certificado, y puede usarlo.

PD: si necesita usar el archivo de clave pública, puede generar la clave pública en función de la clave privada

Diferencia entre clave pública y certificado

Dado que las firmas digitales y el cifrado/descifrado de la información se basan en claves públicas/privadas , ¿por qué necesitamos certificados?
El certificado obviamente contiene la clave pública y también contiene la información de la institución de la CA, etc., lo que indica que la clave pública es un certificado calificado certificado por una autoridad.
El certificado suele ser que la autoridad de certificación de CA firma digitalmente la clave pública del usuario con su propia clave privada.

Comandos comunes de openssl

funcionar comando abressl
generar clave privada openssl genrsa -out privkey.pem 2048
Generar un certificado autofirmado openssl req -new -x509 -key privkey.key -out cacert.pem -days 3650
Generar archivo CSR openssl req -new -key privkey.key -out cert.csr
generar clave publica openssl rsa -in privkey.key -pubout -out pubkey.pem
Ver el archivo clave openssl rsa -in private.key -text -noout
ver clave pública openssl rsa -pubin -in public.pem -text -noout
Ver el archivo del certificado en formato der openssl x509 -inform der -in certificate.cer -text -noout Agregue el comando -inform der para indicar el archivo
Ver el archivo del certificado en formato pem openssl x509 -in certificate.cer -text -noout omita la opción -inform
pem a der openssl x509 -in myserver.pem -outform der -out myserver.crt
der convertir pem openssl x509 -inform der -in myserver.der -out myserver.crt

Supongo que te gusta

Origin blog.csdn.net/qq_15098623/article/details/127761020
Recomendado
Clasificación