Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Criptografía
● Criptografía simétrica
También conocida como criptografía de clave secreta o criptografía de una clave. Su nombre
se debe a que este método emplea la misma clave tanto para el cifrado como el descifrado
de un mensaje. Por lo que el emisor y el receptor deben estar previamente de acuerdo y en
conocimiento de la clave a utilizar. Toda la seguridad está centrada en la clave. Por lo que
debe ser secreta y que no sea fácil de adivinar por una tercera persona.
● Criptografía asimétrica
uso de una fórmula matemática muy compleja para crear un par de claves: la clave privada y
la clave pública. A través de estas claves se establece un canal de comunicación seguro
entre las partes, en el que tanto el emisor como el receptor deben usar criptografía asimétrica
con un mismo algoritmo definido, que les permitirá crear un juego de claves único e
irrepetible para cada uno. En ese proceso de comunicación, el emisor y el receptor
comparten entre ellos sus claves públicas; estas claves cifrarán posteriormente los mensajes
que intercambien entre ellos. Y las claves privadas descifrarán esos mensajes para poder ver
su contenido.
Algoritmo RSA
El RSA es un sistema criptográfico que permite enviar mensajes cifrados sin tener que
intercambiar una clave privada y es el más utilizado para este fin. También permite realizar
firmas digitales y es un sistema que se basa en un problema matemático llamado
«factorización de números enteros».
RSA, al ser un cifrador asimétrico, trabaja con dos claves, una pública y una privada. Todo el
contenido de texto plano, o contenido sin cifrar, que se haya encriptado con la clave pública,
podrá ser descifrado mediante la clave privada, y viceversa, todo contenido cifrado con la
clave privada podrá ser descifrado mediante la clave pública.
La criptografía RSA puede aplicarse para convertir datos, un texto o incluso un archivo de
imagen a través de un algoritmo y hacerlo así irreconocible. Sin la clave RSA privada, el
archivo correspondiente queda ilegible y no puede ser descifrado ni por un programa. Los
datos subyacentes se convierten primero en números naturales y posteriormente se
encriptan con la ayuda de la clave RSA pública. Tanto la clave RSA pública como la privada
consisten en un par de números, de los cuales uno es idéntico. Este número se llama módulo
RSA.
Los dos números restantes se llaman exponente de cifrado y exponente de descifrado. Estos
dos exponentes se forman a partir de números primos seleccionados al azar que tienen
aproximadamente la misma magnitud, pero no deben estar demasiado cerca unos de otros. A
continuación, los números se calculan mediante varias fórmulas matemáticas. El método de
encriptado informático es de acceso público y, por lo tanto, puede ser fácilmente
comprendido. Sin embargo, para volver a hacer legible el texto cifrado, se necesita la clave
RSA privada además de la pública. Hasta ahora, no ha habido ningún algoritmo que
descomponga de forma fiable un número en sus factores primos.
Confidencialidad
El principal conjunto de funciones de este tipo de cifrado está relacionado con proteger el
contenido y la integridad del mismo. Se busca, principalmente, que sea ininteligible para un
tercero y, asimismo, que el algoritmo de encriptación sea imposible de romper en la práctica.
El cifrado de infraestructura de clave pública o cifrado asimétrico no es una medida suficiente
por sí sola para garantizar la seguridad del contenido. Por eso, se debe combinar con más
herramientas y estrategias de cifrado. Además, se debe tener presente que de nada sirve
tener el sistema de encriptación más seguro si se descuidan otros aspectos de la
ciberseguridad, como la posibilidad de un ataque de ingeniería social.
No repudio
Con la expresión "no repudio" se hace referencia a la capacidad de afirmar la autoría de un
mensaje o información.
El no repudio o irrenunciabilidad provee garantía al receptor de una comunicación en cuanto
que el mensaje fue originado por el emisor y no por alguien que se hizo pasar por este.
Además, previene que el remitente o emisor del mensaje afirme que él no envió el mensaje.
Integridad
Los mensajes o datos que envían y reciben los dispositivos y los servidores no sufren
modificaciones.
La necesidad de la firma digital
1. Para resolver el problema de que cifrar datos con RSA únicamente, es muy lento
2. Para tener un mecanismo que permita corroborar la integridad del mensaje recibido
Ojo que la firma digital solita todavía no es suficiente para dar confianza
Firma digital
La firma digital es una herramienta tecnológica que permite verificar su integridad, así como
identificar jurídicamente la vinculación de forma clara al autor con el documento electrónico.
Es la prueba fidedigna de que el suscriptor de un documento es la persona que dice ser.
La firma digital consiste en una secuencia de caracteres (datos electrónicos) que se obtienen
mediante un algoritmo de una forma matemática (llamado cifrado asimétrico).
La firma digital es un recurso que permite a las personas suscribir una amplia variedad de
documentos (electrónicos), entre los que se encuentran los contratos comerciales, facturas,
invitaciones, transacciones monetarias, notificaciones judiciales, gestiones de crédito y, en
algunos casos, hasta votar por internet.
¿Por qué PKI?
Para administrar las llaves privadas de forma segura
● Generación segura de llaves privadas (autoridades certificadoras, usuarios finales, …)
● Publicación confiable de llaves públicas
● Verificación de llaves
● Lidiar con llaves que se vuelven inseguras
● Regulación de uso de las llaves (autenticación, cifrado, firma digital, etc.)
CONFIANZA
Certificados digitales
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Verificación vs validación
SIN HSM
https://jamielinux.com/docs/openssl-certificate-authority/introduction.html
ROOT CA
mkdir /root/ca
b) Crear directorios
cd /root/ca
mkdir certs crl newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial
d) Generar llaves
e) Crear el certificado
f) Verificar el certificado
INTERMEDIATE CA
https://jamielinux.com/docs/openssl-certificate-authority/create-the-intermediate-pair.html
g) Crear directorio para CA dentro de la raíz
mkdir /root/ca/intermediate
h) Crear directorios
cd /root/ca/intermediate
mkdir certs crl newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial
echo 1000 > /root/ca/intermediate/crlnumber
j) Generar llaves
k) Crear el CSR
l) Firmar el CSR
m) Verificar el certificado
cat intermediate/certs/intermediate.cert.pem \
certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
chmod 444 intermediate/certs/ca-chain.cert.pem
a) Crear llaves
b) Crear CSR
CRL
a) Modificar el archivo de configuración para agregar crl
b) Crear la CRL
c) Verificar la CRL
FIRMAR DOCUMENTO
Firmar archivo
Validación de firma
openssl rsautl -encrypt -inkey publickey.pem -pubin -in file2.txt -out file3.txt
CON HSM
Generalidades
openssl version
wget
https://github.com/OpenSC/libp11/releases/download/libp11-0.4.12/libp11-
0.4.12.tar.gz && tar xvf libp11-0.4.12.tar.gz
5. Se debe inicializar un token tanto para la CA de políticas como a la emisora. A cada uno
se le debe agregar su respectiva etiqueta.
cd /etc/pki/
mkdir policies_ca
mkdir issuing_ca
CA de políticas
sudo echo 1000 > serial && echo 1000 > crlnumber
[ CA_default ]
dir = /etc/pki/ca/policies_ca
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = cRLSignkey, keyCertSign
sudo echo 1000 > serial && echo 1000 > crlnumber
[ CA_default ]
dir = /etc/pki/ca/issuing_ca
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = cRLSign, keyCertSign, digitalSignature, noRepudiation
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, nonRepudiation
crlDistributionPoints =
URI:http://172.16.202.27/crls_files/issues_crls/ca_intermediate_entities
_issuing.crl
[ server_cert ]
basicConstraints = CA:FALSE
nsCertType = server
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
authorityInfoAccess = OCSP;URI:http://172.16.202.27
[ ocsp ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, digitalSignature
extendedKeyUsage = critical, OCSPSigning
13. Crear un par de llaves cifradas que se requieren para que el responder de OCSP firme
la respuesta que envía a la parte solicitante.
sudo openssl genrsa -aes256 -out ocsp.issuing.com.key.pem 4096
2. Ajustar el firewall
<!DOCTYPE html>
<html>
<head>
<style id="mceDefaultStyles" type="text/css">
img:-moz-broken {
-moz-force-broken-image-icon: 1;
min-width: 24px;
min-height: 24px
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" id="u0"
href="https://es.rakko.tools/tools/129/lib/tinymce/skins/ui/oxide/content.min.css">
<link rel="stylesheet" type="text/css" id="u1"
href="https://es.rakko.tools/tools/129/lib/tinymce/skins/content/default/content.min.css">
</head>
🔑🔐
style="color: rgb(22, 145, 121); font-size: 36pt;"
data-mce-style="color: #169179; font-size: 36pt;"><strong> </strong></span></h1>
<p><span style="color: rgb(22, 145, 121);" data-mce-style="color: #169179;"><strong><br
data-mce-bogus="1"></strong></span></p>
<p><span style="color: rgb(22, 145, 121);" data-mce-style="color: #169179;"><strong><br
data-mce-bogus="1"></strong></span></p>
<h3 data-mce-style="text-align: center;" style="text-align: center;"><span style="color: rgb(22, 145, 121);"
data-mce-style="color: #169179;"><strong>II Semestre 2022<br
data-mce-bogus="1"></strong></span></h3>
<p><span style="color: #169179;" data-mce-style="color: #169179;"><strong><br
data-mce-bogus="1"></strong></span>
</p>
<p><span style="color: rgb(22, 145, 121);" data-mce-style="color: #169179;"><strong><br
data-mce-bogus="1"></strong></span></p>
</body>
</html>
https://sectigostore.com/blog/ocsp-vs-crl-whats-the-difference/
https://www.keyfactor.com/blog/what-is-a-certificate-revocation-list-crl-vs-ocsp/
● Response Format
● The response received by the client is very different with CRLs and OCSP:
○ CRLs: The responder (the CA) lists the serial numbers of all the certificates the
CA revoked. The client browser downloads the whole list and searches for the
serial number of the certificate of the website it is trying to connect to. If that
serial number is not on the list, the browser considers that the certificate is not
revoked and allows the connection. Since updated CRLs aren’t required to be
published right away, it means that a certificate could be revoked a few hours
after the last CRL update and your browser wouldn’t know it.
○ OCSP: The OCSP responder sends the revocation status of the specific TLS
certificate requested by the browser — “good,” “revoked,” or “unknown.”
These revocation status checks are done on a connection-by-connection
basis, so the information is as up to date as possible.
● Speed and Resources
○ The CRL method requires the browser to download the list of all the revoked
certificates and parse it to look for the certificate serial number. As such, it can
take longer to come up with a result than it does to request a single
certificate’s revocation status with OCSP. Downloading the CRL also uses more
network resources than downloading the response for a single website, so
OCSP is less resource intensive.
● Support for Multiple Certificates
○ OCSP is fast and efficient when requesting a single certificate’s revocation
status. But for servers catering to multiple clients trying to access different
websites, CRLs are more efficient as it’s possible to verify the status of multiple
websites by downloading a single list. There’s no need to send multiple
requests, provided the websites have the same CA. However, if the websites
are certified by different CAs, OCSP is the better choice.
● Real-Time Updates
○ The CA/Browser Forum (CA/B Forum) says in its SSL/TLS Baseline
Requirements that CRLs must be “regularly updated” — but those intervals
vary depending on the issuing CA and other specific considerations. For
example, they could be updated every hour, every 24 hours, or even just once
a week, so there can be a time lag between the last update and the client
request.
○ If a website certificate is newly revoked after a CRL has been published, the
browser could end up connecting to an insecure site. OCSP provides real-time
updates and doesn’t have this issue.
● Network Failure
○ We’ve all faced situations where our networks fail. So, what happens when the
responder’s network is down? With OCSP, connections will likely be dropped
as the responder will provide an “unknown” response. However, because
CRLs are stored offline once downloaded, the browser can refer to it again and
again without having to repeatedly connect to the CA.
● Disadvantages
○ Support for OCSP Stapling is not yet supported by all browsers. If either the
browser or the web server do not support or have OCSP Stapling enabled,
then it simply is not used and validity status lookup will automatically revert to
OCSP checking directly with the CA.
Link de como habilitar el stapling
https://www.keycdn.com/support/ocsp-stapling
https://www.digicert.com/kb/ssl-support/apache-enable-ocsp-stapling-on-server.htm
https://www.digitalocean.com/community/tutorials/how-to-configure-ocsp-stapling-on-apa
che-and-nginx