Basic glossary about Cryptography

AES "Advanced Encryption Standard". Block cipher technique.
https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
https://www.google.com/search?ei=-WL-XLWPDMLlgweo7bmgAw&q=AES+C%2B%2B+source+code+site%3Aedu&oq=AES+C%2B%2B+source+code+site%3Aedu&gs_l=psy-ab.3..0i71l8.0.0..58437...0.0..0.0.0.......0......gws-wiz.-ZMf-Hyi1aw
AutoFirma Software to sign files with DNIE. It can generate CAdES signatures.
https://firmaelectronica.gob.es/Home/Descargas
CA "Certification Authority". Autoridad de Certificación.
https://digicert.com/
https://godaddy.com/
https://letsencrypt.org/
http://cacert.org/
CAdES signature It can be generated with the software AutoFirma.
https://firmaelectronica.gob.es/Home/en/Ciudadanos/Formatos-Firma.html
certificate Un certificado es básicamente un fichero con algunos datos de un sujeto (Subject) junto con la clave pública de dicho sujeto, todo ello firmado con la clave privada de un emisor (Issuer). Estos certificados pueden publicarse. Hay otro tipo de certificados que contienen además la clave privada del sujeto que no deben publicarse (la clave privada debería ser usada solamente por el sujeto).
To get the certificate from a SSL website (https://FQDN/..), we can use the following.
openssl s_client -connect FQDN:443 < /dev/null 2> /dev/null | openssl x509 > CERTIFICATE.crt
To show the certificate:
openssl x509 -in CERTIFICATE.crt -text
openssl x509 -in CERTIFICATE.crt -text -noout
certificate, self signed Certificado autofirmado.
https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309
certlm_msc certlm.msc. Programa para gestionar los certificados del contenedor de certificados local de Windows.
certmgr_msc certmgr.msc. Programa para gestionar los certificados del contenedor de certificados de usuario de Windows.
certutil Programa que permite mostrar información de un certificado, incluyendo la fecha de caducidad del certificado.
certutil -dump certificate.pfx
code signing certificate Certificado de firma de código.
https://www.google.com/search?biw=1920&bih=916&ei=ni_6XPGNG4noUeGEqYAG&q=code+signing+certificate&oq=code+signing+certificate&gs_l=psy-ab.3..0i71l8.0.0..3876...0.0..0.0.0.......0......gws-wiz.ekDwlEppnAY
criptografía asimétrica También llamada criptografía de clave pública (public key cryptography) o criptografía de dos claves ​(two-key cryptography).
https://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica
CRL "Certificate Revocation List".
https://en.wikipedia.org/wiki/Certificate_revocation_list
CSR "Certificate Signing Request".
https://en.wikipedia.org/wiki/Certificate_signing_request
DER, formato "Distinguished Encoding Rules". Reglas de codificación distinguidas.
DES "Data Encryption Standard". Block cipher technique.
https://en.wikipedia.org/wiki/Data_Encryption_Standard
DNIE DNI Electrónico (Spain).
https://www.dnielectronico.es/
Google Domains Google Domains is a domain registration service offered by Google.
https://domains.google/
https://en.wikipedia.org/wiki/Google_Domains
Hash function
HTTPS "Hypertext Transfer Protocol Secure".
https://en.wikipedia.org/wiki/HTTPS
https://developers.google.com/web/fundamentals/security/encrypt-in-transit/enable-https
IPsec "Internet Protocol Security".
https://en.wikipedia.org/wiki/IPsec
jarsigner Java tool to sign and verify jar files. See keytool.
// Sign jar
jarsigner -storetype pkcs12 -keystore CERTIFICATE.pfx -storepass "STORE_PWD" .\FILE.jar "ALIAS"
jarsigner -storetype pkcs12 -keystore xformulas.net.pfx -storepass "STORE_PWD" gas_app.jar "1"
jarsigner -tsa http://timestamp.digicert.com -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts" -storepass "STORE_PWD" .\FILE.jar "ALIAS"
jarsigner -tsa http://timestamp.digicert.com -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts" -storepass "STORE_PWD" -keypass "PWD" -digestalg SHA-256 .\FILE.jar "ALIAS"
// Verify signed jar
jarsigner -verify .\FILE.jar
jarsigner -verify gas_app.jar
jarsigner -verify -verbose .\FILE.jar
jarsigner -verify -verbose gas_app.jar
jarsigner -verify -verbose -certs .\FILE.jar
jarsigner -verify -verbose -certs gas_app.jar
"PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
If you get this warning, see keytool.
key, public To get the public key from a certificate we can use the following command.
openssl x509 -pubkey -noout -in CERTIFICATE.crt > PUBLIC.key
keytool Java tool to manage certificates of the Java keystore. See jarsigner.
// Import CA certificate (ERG2332.crt)
keytool -importcert -trustcacerts -alias "CA_ALIAS" -file CA_CERTIFICATE.crt -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts"
keytool -importcert -trustcacerts -alias "erg2332" -file ERG2332.crt -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts"
"Certificate was added to the keystore" BUT NOT AS a CA certificate (ALTHOUGH I HAVE USED THE PARAMETER "-trustcacerts")
"jarsigner -verify FILE.jar" says:
"PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
In theory, the signed jar contains the certificate "xformulas.net.crt", and "xformulas.net.crt" is signed with the private key corresponding to "ERG2332.crt" (certificate configurable as CA certificate according to cryptographic tools of OPENSSL and MICROSOFT).
This works without problems, for example, with OPENSSL. Also, using the same incoming file ERG2332.crt and the tools certmgr.msc and certlm.msc of MICROSFT, I can see the new CA corresponding to "ERG2332.crt", and I can see the .exe files signed correctly in the tab "Digital Signatures" of their properties in Windows.
I am still looking for the solution to this problem. The help page of this option of keytool does not show information related to this problem.
keytool -importcert -help
// Import certificate (signed by a CA)
keytool -importcert -file CERTIFICATE.crt -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts" -alias "ALIAS"
keytool -importcert -file xformulas.net.crt -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts" -alias "xformulas_net" [THIS SHOULD NOT BE NECESSARY, BECAUSE (IN THEORY) THE XFORMULAS CERTIFICATE (SIGNED BY ERG2332) IS INCLUDED IN THE JAR FILES]
// Delete certificate with alias "erg2332" from the keystore ("C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts")
keytool -delete -alias "erg2332" -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts"
keytool -delete -alias "erg2332" -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts" -storepass "STORE_PWD"
// Show all the certificates of the Java keystore ("C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts") and their aliases
keytool -list -v -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts"
keytool -list -v -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts" -alias "ALIAS"
// Show the certificate of a .pfx file and its alias
keytool -list -v -storetype pkcs12 -keystore CERTIFICATE.pfx
// Change Java keystore password
keytool -storepasswd -keystore "C:\Program Files\Java\jre1.8.0_192\lib\security\cacerts"
MD5 Es un tipo de hash.
openssl dgst -md5 FILE
NIST "National Institute of Standards and Technology".
https://www.nist.gov/topics/cryptography
OCSP "Online Certificate Status Protocol".
https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol
OpenSSL OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
https://www.openssl.org/
https://slproweb.com/products/Win32OpenSSL.html
openssl version -a
openssl genrsa -out ERG.key 2048 // CREA CLAVES RSA PUBLICA Y PRIVADA EN UN FICHERO
openssl rsa -text -in ERG.key -noout // DECODIFICA Y MUESTRA CLAVES
openssl rsa -in ERG.key -pubout -out ERG_PUBLIC.key // CREA FICHERO SOLO CON LA CLAVE PUBLICA
openssl rsa -in ERG.key -out ERG_PRIVATE.key // CREA FICHERO SOLO CON LA CLAVE PRIVADA
openssl req -x509 -new -nodes -key ERG.key -sha256 -days 710 -subj \"/C=ES/ST=Madrid/L=Madrid/O=Eduardo Reyes (erg2332@gmail.com, erg2332@hotmail.com)/OU=https:\/\/fb.com\/erg2332/CN=Eduardo Reyes (erg2332@gmail.com, erg2332@hotmail.com)\" -out ERG.crt // CREA CERTIFICADO
// Country Name (2 letter code) [AU]:ES
// State or Province Name (full name) [Some-State]:Madrid
// Locality Name (eg, city) []:Madrid
// Organization Name (eg, company) [Internet Widgits Pty Ltd]:Eduardo Reyes (erg2332@gmail.com, erg2332@hotmail.com)
// Organizational Unit Name (eg, section) []:https://fb.com/erg2332
// Common Name (e.g. server FQDN or YOUR name) []:Eduardo Reyes (erg2332@gmail.com, erg2332@hotmail.com)
openssl x509 -in ERG.crt -text // MUESTRA DATOS DEL CERTIFICADO
////
openssl genrsa -out xformulas.net.key 2048 // CREA CLAVES RSA PUBLICA Y PRIVADA EN UN FICHERO
openssl rsa -text -in xformulas.net.key -noout // DECODIFICA Y MUESTRA CLAVES
openssl rsa -in xformulas.net.key -pubout -out xformulas.net_public.key // CREA FICHERO SOLO CON LA CLAVE PUBLICA
openssl rsa -in xformulas.net.key -out xformulas.net_private.key // CREA FICHERO SOLO CON LA CLAVE PRIVADA
openssl req -new -key xformulas.net.key -subj \"/C=ES/ST=Madrid/L=Madrid/O=XFORMULAS.NET/OU=https:\/\/fb.com\/erg2332/CN=Eduardo Reyes (erg2332@gmail.com, erg2332@hotmail.com)\" -out xformulas.net.csr // CREA FICHERO CSR (FORMATO PEM)
// Country Name (2 letter code) [AU]:ES
// State or Province Name (full name) [Some-State]:Madrid
// Locality Name (eg, city) []:Madrid
// Organization Name (eg, company) [Internet Widgits Pty Ltd]:XFORMULAS.NET
// Organizational Unit Name (eg, section) []:https://fb.com/erg2332
// Common Name (e.g. server FQDN or YOUR name) []:Eduardo Reyes (erg2332@gmail.com, erg2332@hotmail.com)
openssl req -text -in xformulas.net.csr -noout -verify // VERIFICA Y MUESTRA LOS DATOS DEL CSR
////
openssl x509 -req -in xformulas.net.csr -CA ERG.crt -CAkey ERG.key -CAcreateserial -out xformulas.net.crt -days 710 -sha256 // CREA CERTIFICADO .crt FIRMADO POR CA CON EL FICHERO .csr (también crea ERG.srl)
openssl x509 -in xformulas.net.crt -text // MUESTRA DATOS DEL CERTIFICADO
openssl pkcs12 -export -inkey xformulas.net_private.key -in xformulas.net.crt -out xformulas.net.pfx // CREA CERTIFICADO EN FORMATO .pfx A PARTIR DE CERTIFICADO .crt (se pide contraseña "pwd")
//openssl pkcs12 -export -inkey xformulas.net_private.key -in xformulas.net.crt -certfile more_certificates.crt -out xformulas.net.pfx // CREA CERTIFICADO EN FORMATO .pfx A PARTIR DE CERTIFICADO .crt (se pide contraseña "pwd") incluyendo more_certificates.crt [SEE_THIS]
openssl pkcs12 -help
////
openssl s_client -connect xformulas.net:443 < /dev/null 2> /dev/null | openssl x509 -pubkey -noout > PUBLIC_KEY.txt // obtiene la clave pública del certificado SSL del sitio web (https) xformulas.net
openssl s_client -connect xformulas.net:443 < /dev/null 2> /dev/null | openssl x509 > CERTIFICADO.crt // obtiene el certificado (SSL) del sitio web (https) xformulas.net
openssl x509 -in CERTIFICADO.crt -text -noout // MUESTRA DATOS DEL CERTIFICADO
PEM, formato "Privacy-enhanced Electronic Mail". Correo de privacidad mejorada. Certificado DER codificado en Base64, encerrado entre "-----BEGIN CERTIFICATE-----" y "-----END CERTIFICATE-----".
pfx certificate Tipo de certificado que se puede usar para firmar código en Windows.
PKI Public Key Infrastructure. Infraestructura de clave pública. Sistema para distribuir y gestionarclaves públicasde manera segura. Elementos: certificados, autoridad de certificación, mecanismo de almacenamiento, mecanismo de distribución, mecanismo de revocación de certificados.
RSA The RSA cryptosystem is the most widely-used public key cryptography algorithm in the world.
https://en.wikipedia.org/wiki/RSA_(cryptosystem)
https://www.di-mgt.com.au/rsa_alg.html
S/MIME certificate Usados para servicios de correo electrónico firmado y cifrado, que se expiden generalmente a una persona física.
SHA Es un tipo de hash.
SHA-256 Es un tipo de hash.
openssl dgst -sha256 FILE
SHA-512 Es un tipo de hash.
openssl dgst -sha512 FILE
Signature, digital See also the software AutoFirma to generate signatures with the DNIE.
openssl dgst -sha256 -sign PRIVATE.key -out SIGNATURE FILE // crea fichero SIGNATURE conteniendo la firma del fichero FILE usando PRIVATE.key
openssl dgst -sha256 -verify PUBLIC.key -signature SIGNATURE FILE // verifica que el fichero SIGNATURE es la firma del fichero FILE usando PUBLIC.key
SignTool Herramienta que permite firmar ejecutables en Windows.
// SIGN ejecutable.exe WITH .pfx CERTIFICATE PROTECTED WITH PASSWORD "pwd"
// set Path=%Path%;C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool
// signtool sign /f certificate.pfx /p "pwd" ejecutable.exe // FIRMA ejecutable.exe CON EL CERTIFICADO certificate.pfx PROTEGIDO CON CONTRASEÑA "pwd"
signtool sign /debug /f certificate.pfx /p "pwd" ejecutable.exe // FIRMA ejecutable.exe CON EL CERTIFICADO certificate.pfx PROTEGIDO CON CONTRASEÑA "pwd" (el parámetro "debug" muestra más información si no se puede realizar la operación)
////
signtool sign /n "REYES GUZMAN, EDUARDO (FIRMA)" ejecutable.exe // firma ejecutable.exe con el DNI ELECTRÓNICO (se pide el pin del DNI ELECTRÓNICO)
signtool sign /n "xformulas.net" ejecutable.exe // firma ejecutable con el certificado "xformulas.net" del contenedor de certificados (ver certmgr.msc)
////
"SignTool Error: No certificates were found that met all the given criteria."
https://docs.microsoft.com/en-us/dotnet/framework/tools/signtool-exe
https://docs.microsoft.com/es-es/dotnet/framework/tools/signtool-exe
https://stackoverflow.com/questions/22946399/signtool-error-no-certificates-were-found-that-met-all-given-criteria-with-a-wi
SSH "Secure Shell".
https://en.wikipedia.org/wiki/Secure_Shell
SSL "Secure Sockets Layer".
SSL certificate Usado habitualmente para tener un sitio web seguro (HTTPS). Ver HTTPS.
SSLCertificateFile Directiva de Apache HTTP Server. Indica el fichero de certificado X.509 codificado con formato PEM de un servidor web.
SSLCertificateKeyFile Directiva de Apache HTTP Server. Fichero de clave privada codificada en formato PEM.
TLS "Transport Layer Security".
https://en.wikipedia.org/wiki/Transport_Layer_Security
Triple DES Block cipher technique.
https://en.wikipedia.org/wiki/Triple_DES
https://xformulas.net/images/Triple_DES.jpg
VALIDe To verify CAdES signatures created with DNIE.
https://valide.redsara.es/
X_509 (X.509) Estándar para PKI. Especifica, entre otras cosas, formatos estándar para certificados de claves públicas y un algoritmo de validación de la ruta de certificación.
X_509 certificate Certificado X.509. Contiene datos del titular y del propio certificado (incluyendo el nombre de la CA), la clave pública del titular y el algoritmo usado para crearla (por ejemplo RSA), y la firma de la CA usando su clave privada.
XOR cipher Example with C++ code.
https://xformulas.net/source_code/cpp/xor_cipher.cpp.php

Generated on 20190924_165513