Firmas digitales y certificados digitales
La firma digital es un medio para verificar la autenticidad e integridad de la información. Un conjunto de firmas digitales incluye dos operaciones: firma y verificación. A continuación se muestra un diagrama simple de una firma digital.
Las firmas digitales utilizan tecnología de cifrado asimétrico. Todo el mundo tiene un par de claves: la clave privada solo la conoce la persona, la clave pública es pública, la clave privada se utiliza para la firma y la clave pública se utiliza para la verificación de la firma.
Al transmitir información, el remitente de la información utiliza la clave privada para generar una firma y envía la clave pública junto al destinatario de la información, y el destinatario utiliza la clave pública para verificar la firma. En el proceso anterior, se verifica la integridad de la información, pero es imposible saber si la identidad del remitente es legítima (porque cualquiera puede afirmar que es legítimo), por lo que se introduce una agencia de autenticación de identidad.
La autoridad de certificación de identidad es una institución en la que el receptor de la información puede confiar, y todas las claves públicas deben estar registradas en esta institución. Después del registro, la autoridad de certificación de identidad emite un certificado digital al remitente. Después de firmar el archivo, el remitente envía el certificado digital junto con el archivo y la firma al destinatario de la información, y el destinatario verifica con la autoridad de certificación de identidad si el archivo está realmente firmado con la clave del remitente.
Un certificado digital es un fichero electrónico utilizado para acreditar la identidad del propietario de una clave pública. Este archivo contiene la información de la clave pública, la información de identidad del propietario (el sujeto) y la firma digital de la autoridad de certificación digital (el emisor) en el archivo.
La esencia de un certificado es agregar una firma digital a la clave pública. La autoridad de certificación utiliza su propia clave privada para firmar digitalmente la clave pública de la persona (u organización) que necesita ser certificada y. generar un certificado.
Necesitamos comprender los siguientes tipos de certificados
Certificados autofirmados
Los usuarios pueden generar certificados digitales por sí mismos, pero no están firmados por nadie de confianza. Este tipo de certificado autofirmado, que se utiliza principalmente para pruebas a pequeña escala, no suele ser muy confiable y es posible que encuentre advertencias de seguridad en el software de la computadora al usarlo.
Certificado raíz
Los certificados raíz son ampliamente reconocidos y suelen estar preinstalados en diversos software (incluidos sistemas operativos, navegadores, software de correo electrónico, etc.). cadena de confianza, desde Se implementa ampliamente en diferentes software a través de rigurosos procedimientos de verificación con agencias gubernamentales reconocidas y confiables, empresas de autoridad de certificación, organizaciones sin fines de lucro, etc. con los principales proveedores de software. Dado que el procedimiento de implementación es complejo y requiere mucho tiempo, y requiere autorización del personal administrativo y verificación de la identidad legal de la organización, un certificado raíz puede tener una validez de más de veinte años. Algunas empresas también pueden instalar certificados raíz autofirmados en computadoras internas para admitir software de nivel empresarial en la intranet; sin embargo, es posible que estos certificados no sean ampliamente reconocidos y solo sean aplicables dentro de la empresa;
Certificado intermediario
Una tarea importante de las autoridades de certificación es emitir certificados para los clientes. Aunque las autoridades de certificación ampliamente reconocidas ya tienen certificados raíz, las claves privadas correspondientes se pueden utilizar para firmar otros certificados. , pero debido a consideraciones administrativas y de gestión clave, generalmente se emite un certificado intermediario antes de la firma digital para los clientes. El período de validez del certificado intermediario será más corto que el del certificado raíz y puede haber diferentes certificados intermediarios para diferentes tipos de clientes.
Certificado de servidor TLS
Cuando un sitio web proporciona servicios en Internet, el nombre de dominio es el asunto en el certificado del servidor y el nombre de la organización relevante está escrito en la organización o columna de unidades. El certificado y la clave privada se instalarán en el servidor. El software del cliente (como un navegador) ejecutará el algoritmo de validación de la ruta de certificación para garantizar la seguridad. Si no está seguro de si el canal cifrado es seguro (por ejemplo, el nombre del sujeto en el certificado no corresponde al nombre de dominio del sitio web). o el servidor utiliza un libro de firma automática, o el algoritmo de cifrado no es lo suficientemente fuerte), es posible que se advierta al usuario.
Certificado de cliente TLS
Los certificados de cliente contienen direcciones de correo electrónico o nombres personales en lugar de nombres de host. Los certificados de cliente son menos comunes porque, considerando el umbral técnico y los factores de costo, el proveedor de servicios generalmente verifica la identidad del cliente en lugar de depender de una agencia de certificación externa.
Por lo general, los servicios que requieren el uso de certificados de cliente son software de nivel empresarial en la intranet. Configurarán sus propios certificados raíz internos y el personal técnico de la empresa instalará los certificados de cliente pertinentes en las computadoras de la empresa para su uso. En la Internet pública, la mayoría de los sitios web utilizan contraseñas de inicio de sesión y cookies para autenticar a los usuarios, en lugar de certificados de cliente.
El certificado raíz (certificado autofirmado), el certificado intermediario y el certificado de entidad final (servidor/cliente TLS) forman la siguiente cadena de confianza
Los certificados generalmente cumplen con el formato X.509 especificación
p>Los certificados se pueden almacenar en formato binario o Base64. Las extensiones de archivo comunes son .cer, .crt, .der y .pem. Si almacena el certificado y la clave privada juntos, puede utilizar el formato PKCS#12 (.p12).
Cuando escribimos la API externa, hacemos el siguiente diseño para la seguridad de la transmisión de información.
Usamos SHA256withRSA para la firma. El siguiente es un ejemplo simple de Java.