Creación dunha Infraestructura de chave pública (PKI): Diferenzas entre revisións
Liña 79: | Liña 79: | ||
<ol start='2'><li>''Persoalización de '''''openssl.conf''''': Copiamos o ficheiro ''/etc/ssl/openssl.conf'' dentro da carpeta PKI, para poder persoalizalo. As liñas importantes a modificar son: |
<ol start='2'><li>''Persoalización de '''''openssl.conf''''': Copiamos o ficheiro ''/etc/ssl/openssl.conf'' dentro da carpeta PKI, para poder persoalizalo. As liñas importantes a modificar son: |
||
[ CA_default ] |
[ CA_default ] |
||
dir = /root/PKI/CA # Where everything is kept |
dir = /root/PKI/CA # Where everything is kept |
||
certs = $dir/certs # Where the issued certs are kept |
certs = $dir/certs # Where the issued certs are kept |
||
crl_dir = $dir/crl # Where the issued crl are kept |
crl_dir = $dir/crl # Where the issued crl are kept |
||
database = $crl_dir/index.txt # database index file. |
database = $crl_dir/index.txt # database index file. |
||
#unique_subject = no # Set to 'no' to allow creation of |
#unique_subject = no # Set to 'no' to allow creation of |
||
# several ctificates with same subject. |
# several ctificates with same subject. |
||
new_certs_dir = $dir/newcerts # default place for new certs. |
new_certs_dir = $dir/newcerts # default place for new certs. |
||
certificate = $dir/ca.pem # The CA certificate |
certificate = $dir/ca.pem # The CA certificate |
||
serial = $dir/serial # The current serial number |
serial = $dir/serial # The current serial number |
||
crlnumber = $crl_dir/crlnumber # the current crl number |
crlnumber = $crl_dir/crlnumber # the current crl number |
||
# must be commented out to leave a V1 CRL |
# must be commented out to leave a V1 CRL |
||
crl = $crl_dir/crl.pem # The current CRL |
crl = $crl_dir/crl.pem # The current CRL |
||
private_key = $dir/private/ca.key # The private key |
private_key = $dir/private/ca.key # The private key |
||
RANDFILE = $dir/private/.rand # private random number file |
RANDFILE = $dir/private/.rand # private random number file |
||
== Funcionamento == |
== Funcionamento == |
Revisión como estaba o 4 de outubro de 2013 ás 20:37
Introducción
Tradicionalmente a seguridade se garantizaba co segredo. O habitual era o uso dunha chave segreda que únicamente coñecían as partes involucradas na comunicación (chave compartida, ou shared key) que se utilizaba para cifrar e descifrar a información (cifrado simétrico). Hoxe en día, cos PIN e as passwords utilizamos tamén unha chave compartida entre nos e o equipo ou servizo ao que accedemos para obter os permisos necesarios. Estas chaves compartidas precisan de completa confianza entre as partes que se comunican, xa que no caso de que a chave quede exposta por calqueira dos dous lados se perdería completamente a seguridade na comunicación.
Hoxe en día, existen alternativas, como as baseadas nas infraestructuras de chave pública ou PKI (Public Key Infraestructure). PKI utiliza criptografía asimétrica de chave pública; con este sistema, as partes involucradas na comunicación necesitan unha parella de chaves de xeito que a información cifrada con unha das chaves únicamente poda ser descifrada pola outra. A chave que se utiliza para cifrar non serve para descifrar. Unha das chaves é para uso único do seu propietario e é mantida en segredo (chave privada, ou Private Key), e a outra se distribúe a todo o mundo que queira manter co usuario unha comunicación confidencial (chave pública ou Public Key).
Deste xeito, si un usuario cifra un documento ou unha parte de él (normalmente un hash obtido a partir do contido do documento) coa chave privada (firma dixital) , os receptores do mesmo poden estar seguros de quen é remitente, xa que únicamente a chave pública do mesmo é capaz de descifrar o documento. Si por outra parte, un usuario cifra un documento coa chave pública, únicamente o propietario da chave privada poderá acceder á información (cifrado). A PKI nos proporciona a posibilidade de firma dixital e de cifrado de información.
A principal debilidade deste sistema atópase na distribución das chaves públicas. Si un usuario malicioso distribúe unha chave pública atribuíndoa a un terceiro (por exemplo, un banco), o resto dos usuarios poden chegar a pensar que están realizando unha comunicación segura co banco, cando en realidade a información está sendo decodificada polo falsificador. Para evitar esto, se utilizan os certificados.
As autoridades de certificación firman con varios niveis de seguridade (fortaleza a hora de comprobar a identidade real do autor da solicitude do certificado), que van de o 1 (menos comprobacións) ao 3 (comprobacións máis exhaustivas). E posible conseguir firmas de certificados de nivel 1 por autoridades de certificación recoñecidas como www.startssl.com de modo gratuito. Nun último nivel, depende do propio usuario aceptar ou rexeitar o uso dun certificado a partir da reputación do firmante do mesmo.
E posible tamén que unha autoridade de certificación (CA Raíz) delegue en outras autoridades subordinadas o firmado de algúns tipos de certificados.
As compoñentes máis habituais dunha PKI son:
As autoridades de certificación (CA) (raíz e subordinadas): Son as encargadas de emitir e revocar certificados, dando lexitimidade á relación dunha chave pública coa identidade real dun usuario ou servizo. A fortaleza desa relación parte da confianza que o usuario teña na autoridade certificadora.
A autoridade de rexistro (RA): Depende da autoridade de certificación e é a responsable das comprobacións necesarias para verificar a relación entre a chave pública dun certificado e a identidade dos seus titulares.
A autoridade de validación: Mantén o repositorio de listas de revocación de certificados. As listas de revocación de certificados (CRL) almacenan os certificados que por algún motivo deixaron de ser válidos antes da súa data de caducidade. Normalmente proporcionan un servicio de validación on-line a través do protocolo OCSP.
Os usuarios e entidades finais: Os usuarioson aqueles que poseen unha parella de chaves asimétricas e un certificado asociado a súa chave pública. As entidades finais son todos aqueles que aceptan e confían na validez dos certificados dixitais emitidos.
Os certificados dixitais máis utilizados polas PKI seguen o estándar X.509, e deben conter a seguinte información:
- Número de serie do certificado
- Nome, Dirección e Domicilio do suscritor.
- Identificación do suscriptor.
- Nome,Dirección e Localidade da autoridade de certificación emisora.
- Data de emisión e Data de caducidade do certificado.
- Chave pública do suscritor.
- Métodos para a comprobación da validez do certificado (URL do OCSP)
- Versión do formato
- Número de serie otorgado pola entidade emisora
- Parámetros e identificador do algoritmo de firma
Un exemplo de PKI de uso común en España é o DNIe
Instalación e Configuración
Crearemos unha autoridade de certificación que nos permitirá expedir certificados dixitais para os distintos servizos ofrecidos pola rede, como a Web ou o Correo.
- Creación da estructura de ficheiros: Existen varias alternativas, pero a estructura máis común e similar a da figura:
Dentro do directorio PKI gardaremos unha copia de /etc/openssl.conf que persoalizaremos ao noso gusto.
O Directorio CA almacenará a infraestructura que consistirá en:
- O certificado da autoridade de certificación (CA) que contén a súa chave pública.
- A carpeta private, que almacenará a chave privada da autoridade de certificación.
- A carpeta clr, que almacenará a infraestructura de revocación de certificados.
- A carpeta certs, que almacenará os certificados asinados pola CA e as solicitudes correspondentes.
- O ficheiro 'serial', para levar o control do número de serie para os certificados asinados
A infraestructura de revocación almacenada en clr conterá:
- O ficheiro 'clrnumber', que levará a conta das revocacións
- O ficheiro 'index.txt', que almacenará a base de datos dos certificados revocados.
- O 'certificado da autoridade de revocación'
- Persoalización de openssl.conf: Copiamos o ficheiro /etc/ssl/openssl.conf dentro da carpeta PKI, para poder persoalizalo. As liñas importantes a modificar son:
[ CA_default ]
dir = /root/PKI/CA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $crl_dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/ca.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $crl_dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $crl_dir/crl.pem # The current CRL
private_key = $dir/private/ca.key # The private key
RANDFILE = $dir/private/.rand # private random number file
Funcionamento