Introducción a la función OpenSSL

1 Descripción general

OpenSSL es una biblioteca criptográfica de capa de conexión segura, que incluye los principales algoritmos criptográficos, funciones de administración de encapsulación de certificados y claves de uso común y protocolos SSL, y proporciona una gran cantidad de aplicaciones. para pruebas u otros fines.

OpenSSL es un conjunto de herramientas criptográficas que implementa los protocolos de red Secure Sockets Layer (SSL v2/v3) y Transport Layer Security (TLS v1) y los estándares criptográficos asociados que requieren.

OpenSSL: proyecto de código abierto

Tres componentes:

openssl: herramienta de línea de comandos multipropósito, paquete openssl

libcrypto: cifrado Biblioteca de algoritmos, paquete openssl-libs

libssl: biblioteca de aplicaciones del módulo de cifrado, implementa ssl y tls, paquete nss

Comando .openssl:

Dos tipos de operaciones Modo: modo interactivo y modo por lotes

opensslversion: número de versión del programa

Comandos estándar, comandos de resumen de mensajes, comandos de cifrado

Comandos estándar: enc, ca, req , ...

Consulta la ayuda: openssl?

Puedes crear una CA y emitir certificados a través de openssl. El artículo/7759574/1964754

tiene un. Introducción Este artículo solo presenta otras funciones comunes del kit de herramientas de openssl

2 Introducción del caso

2.1 Cifrado simétrico

Herramientas: openssl ?enc, gpg, artículo/. 7759574/ 1964887 Ya introducido

Algoritmos: 3des, aes, Blowfish, twofish

Comandos .enc:

Los comandos de cifrado simétrico permiten el uso de cifrado basado en contraseña o Claves proporcionadas explícitamente. Varios cifrados de bloque y flujo para cifrar o descifrar datos. La codificación o decodificación Base64 también se puede realizar por sí misma o mediante cifrado o descifrado.

Los comandos de cifrado simétrico permiten cifrar o descifrar datos utilizando varios cifrados de bloque y flujo utilizando claves basadas en contraseñas o la codificación o decodificación Base64 que también se puede realizar por sí sola o además del cifrado. o descifrado.

Ayuda: man enc

Ejemplo

Cifrado de archivos

El siguiente comando requiere ingresar una contraseña al descifrar Necesitas ingrese la misma contraseña para descifrar. El sufijo del archivo recién generado aquí no es necesariamente cifrado. Puede especificarlo usted mismo

openssl enc ?-e -des3 -a -salt -in testfile ? .cipher

Descifrar archivo

openssl ?enc ? -d -des3 -a -salt –in testfile.cipher -out testfile

2.2 Cifrado de clave pública

El cifrado de clave pública genera claves asimétricas

Algoritmos: RSA, ELGamal

Herramientas: gpg, openssl ?rsautl (man rsautl)

Digital firma:

Algoritmo: RSA, DSA, ELGamal

Intercambio de claves:

Algoritmo: dh

DSA: Algoritmo de firma digital

DSS: Estándar de firma digital

El algoritmo de cifrado de clave pública RSA fue desarrollado por Ron Rivest, Adi Shamir y Ron Rivest en 1977. Propuesto con Leonard Adleman. El nombre se combina con la primera letra del nombre para formar RSA

Las claves públicas y privadas RSA se utilizan principalmente para la firma digital (Firma digital) y la autenticación (Autenticación), lo que generalmente llamamos cifrado/descifrado asimétrico. .

2.2.1 Generando un par de claves

Ayuda: man genrsa

Generar una clave privada Se debe dominar el proceso de generación de una clave. >

openssl genrsa ?-out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

Después de generar el archivo de clave privada, se recomienda cambiar los permisos a 600 para protegerlo y que otras personas puedan ver la información de la contraseña

Si el archivo en la clave privada se obtiene y no está cifrado con la palabra clave des, será equivalente a texto sin formato

Cuando se ejecuta este comando, se se debe ingresar una contraseña de ocho dígitos. Debe ingresar una contraseña cuando use esta clave privada

(umask 077; openssl genrsa –out test.key ?–des 2048)

Los corchetes indican el proceso secundario. Después del final, umask restaurará el valor no predeterminado. El valor de umask evita que otras personas y grupos tengan permisos. Esto es para proteger la clave privada generada.

2 Extraiga la clave pública de la clave privada y exporte la clave pública

p>

La clave pública no puede derivar la clave privada, pero la clave privada puede derivar la clave pública

openssl? rsa ?-in PRIVATEKEYFILE –pubout ?–out PUBLICKEYFILE

Openssl ?rsa ? –in test.key ?–pubout ?–out test.key.pub

La clave pública es pública y no es necesario establecer permisos. Lo anterior es para generar la clave pública

2.2.3 Archivo cifrado con clave pública

openssl rsautl -encrypt -in input.file -inkey. pubkey.pem -pubin -out output.file

-in especifica el archivo cifrado

-inkey especifica el archivo de clave pública cifrado

-pubin parece ser cifrado con un archivo de clave pública pura

-out especifica el archivo cifrado

Ejemplo:

openssl rsautl -encrypt -in ftpback -inkey test.key.pub -pubin -out ftpssl

2.2.4 Archivo de descifrado de clave privada

openssl rsautl -decrypt -in input.file -inkey key.pem -out output.file

-in especifica el archivo a descifrar

-inkey especifica el archivo de clave privada

- out especifica el archivo descifrado

Ejemplo:

openssl rsautl -decrypt -in ftpssl -inkey test.key -out ?ftpdec

2.3 Cifrado unidireccional

El cifrado unidireccional significa obtener un resumen

Herramientas: md5sum, sha1sum, sha224sum, sha256sum…

openssl dgst

dgst: salida de la función de resumen El resumen del mensaje o la forma hexadecimal del archivo proporcionado. También se pueden utilizar para firmas y verificaciones digitales.

Las funciones de resumen generan el resumen del mensaje de un archivo o archivos proporcionados en formato hexadecimal. También se pueden usar para firma y verificación digitales.

Comando .dgst:

Ayuda: man dgst

openssl ?dgst ?-md5 [-hex predeterminado] ?/PATH/SOMEFILE

openssl dgst ?-md5 testfile

El comando anterior genera un valor de resumen de longitud fija a partir del archivo. El algoritmo es md5 y el tamaño es 128 bits

md5sum /PATH/TO/SOMEFILE

Los resultados obtenidos por lo anterior. dos md5 son iguales

.MAC: Código de autenticación de mensajes, una aplicación extendida de cifrado unidireccional (hash), utilizada para implementar un mecanismo para garantizar la integridad de los datos transmitidos en las comunicaciones de red

Código de autenticación de mensajes MAC, el método de construcción puede basarse en hash o algoritmo de cifrado simétrico. HMAC es un código de autenticación de mensajes basado en hash. Los datos y las claves se utilizan como entrada y la información resumida se utiliza como salida, que a menudo se utiliza para la autenticación.

Documento fuente

2.4 Generar contraseña de usuario

comando passwd:

Ayuda: man sslpasswd

openssl? passwd ?-1 -salt SALT

-1 corresponde al algoritmo md5 de hash

SALT: Aquí está el valor salt, que se especifica artificialmente para que se generen los valores de cifrado por la misma contraseña son diferentes Máximo 8 dígitos Más de 8 dígitos no tiene sentido. Por ejemplo, si los primeros 8 dígitos son iguales y los siguientes dígitos son diferentes, los valores de contraseña generados serán los mismos.

openssl ?passwd ?-1 –salt centos

grub-md5-crypt también genera contraseñas cifradas md5, centos es el valor salt

Por ejemplo, siempre ingreso 123 para La contraseña aquí, pero los valores de sal son diferentes. Uno es centos y el otro es centos6, y el valor de cifrado generado es diferente

2.5 Generando números aleatorios

Ayuda. : man sslrand

El comando rand genera num después de reproducir el generador de números aleatorios una vez con bytes pseudoaleatorios. Al igual que otras herramientas de línea de comando de openssl, las semillas PRNG usan el archivo $HOME/.rnd o .rnd además del archivo proporcionado en la opción -rand. Si se obtiene suficiente información de estas fuentes, se reescribirá un nuevo archivo $HOME/.rnd o .rnd.

El comando rand genera num bytes pseudoaleatorios después de inicializar el generador de números aleatorios una vez. Como en otras herramientas de línea de comandos de openssl, la inicialización PRNG utiliza el archivo $HOME/.rnd o .rnd además del archivo. archivos proporcionados en la opción ?-rand. ?Se reescribirá un nuevo archivo $HOME/.rnd o .rnd si se obtuvo suficiente semilla de estas fuentes ?.

openssl ?rand -base64|-hex. NUM

Especifique un número para generar un número aleatorio. Si es el valor después de -hex, como 6, entonces la longitud generada es de 12 dígitos, porque el número aleatorio generado por hexadecimal es un número de combinación hexadecimal. , y el número después de hexadecimal es el número de bytes, un número hexadecimal ocupa 4 bits, medio byte

Se pueden generar contraseñas aleatorias después de base

Base64 genera números aleatorios, puedes use cualquier carácter, o La imagen se puede guardar en formato base64 y la imagen generada a través de base64 se puede restaurar usando base64

NUM: representa el número de bytes cuando -hex, cada carácter es hexadecimal; equivalente a un binario de 4 dígitos y el número de caracteres que aparecen es NUM*2

3 Resumen

Hay muchos usos de openssl. Este artículo solo presenta brevemente algunos de ellos. más uso, utilice ayuda man openssl para ver