720 likes | 971 Views
Barcelona 4 Mayo 2004. Amsterdam, Holanda 29 junio – 2 julio. ¡Adéntrate! . El evento definitivo de Microsoft en Europa sobre creación, implantación, protección y gestión de soluciones conectadas. ¡Regístrate antes del 14 de mayo y ahórrate 300 €!. Firma digital en la plataforma Windows.
E N D
Barcelona 4 Mayo 2004
Amsterdam, Holanda29 junio – 2 julio ¡Adéntrate! El evento definitivo de Microsoft en Europa sobre creación, implantación, protección y gestión de soluciones conectadas ¡Regístrate antes del 14 de mayo y ahórrate 300 €!
Firma digital en la plataforma Windows Santiago Núñez Technical Consultant Microsoft
Agenda • Introducción a la firma digital • Firma electrónica • Firma digital • Firma digital cualificada • Firma digital en plataforma Windows • Arquitectura de los servicios criptográficos • Inclusión de firmas en aplicaciones propias • Aplicaciones preparadas
Firmas digitalesUtilidad • Las firmas digitales permiten migrar procesos basados en papel (que requerían firmas) a formato electrónico. • Documentos en papel que requieren una firma de aprobación • Necesidad de asegurar que el contenido no se ha modificado • Necesidad de asegurar la identidad de la persona que firmó • Existe una normativa que exige aprobaciones mediante firmas
Firma electrónicaPrimera aproximación • Datos electrónicos adjuntos a un documento para mostrar “intención” de firma
Firma digitalVinculando los datos al firmante • “Firma electrónica avanzada” (según la ley de firma digital) • Firma electrónica con las siguientes características: • Vinculada al firmante • Vinculada a los datos • Permite detectar modificaciones
Bob genera un mensaje y quiere asegurarse de que Alice sabrá que el mensaje es auténtico Alice verifica que el mensaje no ha sido alterado y que fue generado por Bob Hash Hash Mensaje Mensaje Mensaje Clave Privada de Bob Clave Pública de Bob Firma digital Firma Digest Digest ¿iguales? Firma Digest
Firma digitalFormatos de firmas digitales • Existen diferentes formatos para almacenar una firma digital. • La mayoría encapsula en un sobre los datos, la identidad del firmante y la firma. • Algunos ejemplos de formatos son: • Privacy-Enhanced Mail (PEM) – RFC 1421 • PKCS#7 • S/MIME – RFC 2634 • ISO 9796-2 • XMLDsig • XAdES
Firma digitalFormato de Sobre PKCS#7 • PKCS #7: Cryptographic Message Syntax Standard • Estándar desarrollado por RSA Laboratories Inc. • Define varios formatos de mensajes: • Data, EnvelopedData, SignedData, etc. SignedData ::= SEQUENCE { version Version, digestAlgorithms DigestAlgorithmIdentifiers, contentInfo ContentInfo, certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos }
Signer Info 1 Signer Info 2 PKCS #7 Signer Info 3 Version Digest Algorithm Signer Info Content Version Certificates Serial Number CRLs Digest Algorithm Signer Infos Authenticated Attributes Unauthenticated Attributes Digital Signature Firma digitalPKCS#7 SignedData
Firma digitalFirma Digital XML • XMLDSIG: Propuesta conjunta de estándar IETF/W3C • RFC 3075 • http://www.w3.org/Signature/ • La versión 1.0 de .NET Framework incluye el soporte para firmas XMLDSIG en: • System.Security.Cryptography.XML • Define un mecanismo para firmar: • Documentos XML • Fragmentos de un documento XML
Firma digitalFirma Digital XML • Proporciona tres métodos de firma: • “Wrapped”, el formato de firma incluye el contenido • “Detached”, la firma está separada del contenido • “Embedded”, la firma es parte del contenido firmado • El formato XMLDsig no requiere infraestructura de certificados • Se incluye información de la clave • Se reserva espacio para proporcionar información del certificado
Firma digitalFormato de Firma XMLDsig xmlns:ds="http://www.w3.org/2000/09/xmldsig#" <element name="Signature" type="ds:SignatureType"/> <complexType name="SignatureType"> <sequence> <element ref="ds:SignedInfo"/> <element ref="ds:SignatureValue"/> <element ref="ds:KeyInfo" minOccurs="0"/> <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="Id" type="ID" use="optional"/> </complexType>
Firma digital cualificadaAñadiendo garantías legales • “Firma electrónica reconocida” (según la ley de firma digital) • Firma digital con las siguientes características: • Basada en un certificado cualificado (reconocido) • Certificado emitido por un proveedor acreditado • Utilizando un dispositivo seguro de firma (SSCD) • Utilizando una aplicación segura de firma (CSA)
Firmas digitalesEscenarios avanzados • Firma cualificada con validez a largo plazo • Se necesita incluir un sello de tiempo cualificado • Útil cuando la validez “en el tiempo” es importante • Firmas digitales de grupos • Garantizan la integridad del mensaje • Garantizan que la firma ha sido generada por un miembro del “grupo” • No permiten conocer la identidad del firmante a partir de la firma • Útil en escenarios dónde es importante el “anonimato”: NGSBC.
Agenda • Introducción a la firma digital • Firma electrónica • Firma digital • Firma digital cualificada • Firma digital en plataforma Windows • Arquitectura de los servicios criptográficos • Inclusión de firmas en aplicaciones propias • Aplicaciones preparadas
Firmas digitales en WindowsObjetivos • Conocer la arquitectura • Útil para los administradores IT: integración, solución de problemas, etc. • Fundamental para los desarrolladores: integrar firmas digitales en desarrollos, prácticas recomendadas • Usar firmas digitales: • Mediante aplicaciones preparadas • Adaptando desarrollos internos
Firmas DigitalesNecesidad de Certificados • Los certificados enlazan la clave pública con la identidad digital • Se pueden realizar firmas sin infraestructura PKI • Normalmente se utilizará una infraestructura PKI para facilitar la gestión de certificados • Windows Server 2003 incluye servicios de certificación.
Windows Certificate Services Características • Dos modos de funcionamiento: • CA Enterprise: • Online • Integrada con Active Directory • Standalone • Offline • Estándares de seguridad • ITU: X.509v3 • RSA: PKCS 1,7,9,10,12 • IETF: RFC2459, CMC
CA Root CA Intermedia CA Emisoras Windows Certificate Services Características • Interoperabilidad con otras PKI • Puede formar parte de una jerarquía de CAs • Distribución de CRLs mediante URL • HTTP, LDAP, FTP • Bajo coste de implantación y administración • Registro y emisión de Certificados • Distribución de Certificados
Windows Certificate ServicesIntegración con Active Directory • Es una opción de la instalación de los Servicios de Certificación • AD es la base de datos de registro de usuarios • AD para la gestión de usuarios • AD para la distribución de certificados raíz • AD como servicio de publicación de la PKI • Certificados de usuario • CRLs • Servicios de CA • Como conectarse • Que tipo de certificados se emiten
Windows Server 2003Novedades de Certificate Services • Subordinación cualificada (Qualified subordination) • Certificación cruzada (cross certification) • Plantillas de certificados editables • Almacenamiento y recuperación de claves • Emisión y renovación automática de certificados de equipos y de usuarios • Delta CRLs • Separación de roles de PKI • Administrador del servicio • Administrador del certificado • Auditor
Subordinación CualificadaWindows Server 2003 Certificate Services • Creación de certificados de CA con restricciones • Tipos de restricciones • Nombres de certificados permitidos / prohibidos • Política de emisión • Cómo se realiza la emisión • Política de aplicación • Para que aplicaciones se pueden usar los certificados • Limita el alcance de la confianza con organizaciones externas • No es una confianza incondicional
Plantillas PersonalizablesWindows Server 2003 Certificate Services • Personalización de las políticas de emisión • Autorización del certificado • Autenticación en el dominio • Otros certificados • Firma de un agente de emisión • Creación de la clave privada • Tipo de clave, CSP, tamaño • Contenido del certificado • Validez, políticas de emisión y aplicación, usos de la clave, almacenamiento de clave
Archivo de ClavesWindows Server 2003 Certificate Services • Las claves se generan en el cliente • Se utiliza el protocolo de emisión CMC • RFC 2797 - Certificate Management Messages over CMS • Claves almacenadas en la CA • Las claves se almacenan protegidas por los certificados de los agentes de recuperación (KRA) • La política de certificados determinas los KRA
Emisión AutomáticaWindows Server 2003 Certificate Services • Emisión y renovación automática para usuarios • Mecanismo común para los equipos • Validez del certificado o cambio de política • Se dispara en el inicio de sesión • En el arranque de equipos • RA Automática • Firmando la petición de renovación con el certificado existente
Agenda • Introducción a la firma digital • Firma electrónica • Firma digital • Firma digital cualificada • Firma digital en plataforma Windows • Arquitectura de los servicios criptográficos • Inclusión de firmas en aplicaciones propias • Aplicaciones preparadas
Plataforma WindowsArquitectura de servicios criptográficos • Las aplicaciones no se preocupan de los detalles relacionados con la criptografía • El Sistema Operativo ofrece los servicios criptográficos a las aplicaciones • CryptoAPI proporciona una capa de abstracción para el uso de estos servicios • Interfaz común para todas las aplicaciones • Los CSPs (Cryptographic Service Providers) son los que realmente realizan las funciones criptográficas • Los proveedores de hardware criptográfico (Smart Cards, HSM, acceleradores) deben proporcionar su CSP
Applications Authenticode® Network APIs Smart Card Services CryptoAPI Certificate Management Services Msg stds (PKCS) SSPI Secure Channel Crypto Services Reader Hardware CSP Software CSP Servicios CriptográficosArquitectura
Servicios CriptográficosCryptoAPI • Proporciona servicios a los desarrolladores para crear aplicaciones que utilicen criptografía. • Codificación y decodificación ASN.1 • Hashing (resúmenes de mensajes) • Clave simétrica • Clave pública • Gestión de certificados digitales • Gestión de mensajes PKCS#7 • NO se trata de una librería criptográfica.
Cryptographic API (CryptoAPI) Arquitectura Applications Certificate Store Functions Simplified Message Functions CryptoAPI Cert Storage Certificate Encode/Decode Functions Low-level Message Functions Crypto Services Custom CSP #3 Microsoft RSA base CSP #1 SmartCard CSP #2 Key Database Key Database Key Database
Servicios CriptográficosCryptographic Service Provider (CSP) • Los CSPs contienen las funciones criptográficas • CryptoAPI proporciona el interfaz común de acceso a los CSPs • Los CSPs deben estar firmados digitalmente por Microsoft para ser cargados en Windows • Se incluyen algunos en el sistema operativo: • RSA base CSP • DSS Diffie-Hellman
Plataforma WindowsUtilización de servicios criptográficos Applications Network APIs CAPICOM XENROLL System.Security.Cryptography CryptoAPI 2 x509 Chaining Validation Storage Revocation Checking CryptoAPI 1 Signature Creation and Viewing SSPI Hashing Secure Channel Encryption and Decryption Certificate Selection, Viewing and Management Random Numbers PKCS Messaging 7,10,12 Hardware Integration
CAPICOMInterfaz COM de acceso a CryptoAPI • CAPICOM permite a los desarrolladores acceder de manera sencilla a los servicios criptográficos • Firmas digitales • Cifrado • CAPICOM 2.0 está soportado en las siguientes plataformas: • Windows NT 4.0 SP4 o superior • Windows 2000 • Windows XP • Windows Server 2003 • Windows 98,Windows ME con IE 5 o superior • NO se trata de una nueva librería criptográfica. • NO se trata de una extensión de CryptoAPI.
CAPICOM 2.0Instalación • Un único fichero • 249 KB de tamaño • Control ActiveX • No incluido, se debe instalar • Se puede distribuir con aplicaciones propias • regsvr32 capicom.dll • En aplicaciones web se puede descargar, instalar y registrar de forma automática • <OBJECT width="1" height="1" classid="clsid:E38FD381-6404-4041-B5E9-B2739258941F" codebase="capicom.dll#version=2,0,0,0" ID="Object1" VIEWASTEXT> </OBJECT>
CAPICOM 2.0Funcionalidades disponibles • Firma digital • Con claves software, en smart card, o en un token USB • Utiliza PKCS#7 • Verificación de firmas digitales • Cifrado de datos • Con contraseña o clave simétrica • Con clave pública en “sobres” • Accesos a los almacenes de Certificados • Se puede usar como complemento a otras herramientas o interfaces
Ejemplo (CAPICOM) • Firma de un texto Private Sub Command1_Click() Dim sd As New SignedData sd.Content = Text1 'sign the data Text2 = sd.Sign End Sub
Agenda • Introducción a la firma digital • Firma electrónica • Firma digital • Firma digital cualificada • Firma digital en plataforma Windows • Arquitectura de los servicios criptográficos • Inclusión de firmas en aplicaciones propias • Aplicaciones preparadas
Firmas en Aplicaciones Propias Aclarar el entorno • Aclarar las razones para firmar: • Garantizar la integridad del contenido • Garantizar la identidad del firmante • Número de firmantes necesarios • Razones legales • Se debe cumplir alguna normativa concreta • Aclarar los datos que se van a firmar • Ficheros • Datos estructurados • Aclarar cómo se quiere generar la firma • Sólo con certificados de un emisor concreto • Con Smart Cards u otros dispositivos
Firmas en Aplicaciones PropiasConsideraciones de Diseño • Firma • Seleccionar el certificado a usar • Realizar la firma • Almacenar la firma • Añadir más firmas • Verificación • Validez de la firma • Validez de la identidad firmada • Verificar la revocación
Firmas en Aplicaciones PropiasSelección del Certificado • Cualquier certificado válido • El usuario lo seleccionará • Certificados concretos • Emitidos por una Autoridad de Certificación concreta • Correspondientes a un Sujeto concreto • Con algún dato, propósito o extensión concreta • En base a la clave privada • Firmar utilizando Smart Card • Firmar utilizando token USB
Firmas en Aplicaciones PropiasRealizar la firma • Firmar todo el documento o fichero • Enlazar la firma al documento • Creando un nuevo fichero • Fichero adyacente con la firma • Verificar la firma antes de obtener el fichero o documento • Incluir la firma dentro del fichero o estructura de datos • El formato debe permitir la inclusión de firmas • La firma y verificación se hacen sobre unos datos concretos
Firma de Archivos CompletosSolución más general Archivo.ext • Mismo proceso para todas las aplicaciones • Componentes de firma y verificación comunes • Dos alternativas: • Documento y firma incluidos • Firma separada • Se pueden firmar datos no deseados + Firma Archivo.ext Archivo.ext.p7s Archivo.ext.p7s Firma
PKCS#7 Datos Firma Archivo.ext.p7z Firma de Archivos CompletosFirma incluida • Un único fichero que gestionar • Datos y firma en formato PKCS#7 • Es necesario extraer el archivo original para acceder a los datos • Se puede hacer en el proceso de verificación
PKCS#7 Datos Firma Archivo.ext Archivo.p7z Firma de Archivos Completos Firma separada • Dos ficheros que gestionar • Mantenerlos enlazados de alguna manera • Los dos son necesarios para la verificación • Las aplicaciones pueden acceder a los datos sin verificar la firma
Incluir Firma en el ContenidoSolución dependiente de la aplicación Archivo.ext • Las aplicaciones que conocen la estructura de datos • Puede suponer un coste elevado • Se firma/verifica parte del contenido Datos + Firma Archivo.ext Datos Firma
PKCS#7 Datos Firma Firma Firma Firmas en Aplicaciones Propias Varios Firmantes • Todos firmando los mismos datos • Un único PKCS#7 • Cada firma se puede verificar independientemente • Sin jerarquía
PKCS#7 PKCS#7 Firma Datos Firma Firmas en Aplicaciones Propias Varios Firmantes • Firmas anidadas • Tantos PKCS#7 como firmas • Es necesario verificar cada firma para tener acceso al siguiente PKCS#7 • Existe un orden de firma y verificación