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 p>
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