¿Por qué el cifrado de los datos resultaría en una llamada a un controlador de dominio?

2

Este artículo de KB menciona un problema en el que la firma o el cifrado de información puede dar lugar a una llamada de E / S de la red a un controlador de dominio.

Al parecer, el SignData y VerifyData de RSACryptoServiceProvider busca el OID en AD, pero el propósito de esta llamada me elude.

¿Cuál podría ser el posible beneficio de seguridad de esto? Me gustaría aprender más sobre esto.

    
pregunta random65537 28.06.2012 - 03:33
fuente

2 respuestas

2

Cuando llama a SignData() o VerifyData() , debe especificar qué función hash usar (porque las firmas operan en los mensajes hash). Además, con RSA específicamente como se describe en PKCS # 1 , el valor de hash se encapsula dentro de una estructura que contiene el identificador de objeto (OID) de la función hash. Por lo tanto, el método invocado debe asignar la especificación de la función hash proporcionada (que puede ser una cadena) al OID correspondiente y, en Active Directory, debe pasar por el servidor AD (el servidor AD es un tipo de controlador de acceso para tales asignaciones) .

Cuando el código de llamada se ejecuta como una cuenta local, el servidor de AD puede negarse a responder, por lo tanto, la demora.

Esta es una característica errónea de la implementación de .NET: para las funciones hash específicamente, el código debe conocer el OID de las funciones hash que implementa (no hay tantas) y no debería necesitar hablar con el servidor de AD para eso. (estos OID son "conocidos" y están estandarizados, no pueden cambiar a capricho de un administrador de AD).

    
respondido por el Tom Leek 22.08.2012 - 13:32
fuente
0

¿El AD no actúa como una Autoridad de Certificación:

013e3928 794f8a95 mscorlib_ni! System.Security.Cryptography.X509Certificates.X509Utils.OidToAlgId (System.String) + 0x15

Ejemplo:

        // Verify the data using the signature.  Pass a new instance of SHA1CryptoServiceProvider
        // to specify the use of SHA1 for hashing.
        return RSAalg.VerifyData(DataToVerify, new SHA1CryptoServiceProvider(), SignedData);
    
respondido por el Everett 23.07.2012 - 06:27
fuente

Lea otras preguntas en las etiquetas