Marco de seguridad: Criptografía | Mitigación
Use solamente los cifrados de bloques simétricos y longitudes de clave aprobados
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Los productos tienen que usar solo los cifrados de bloques simétricos y las longitudes de clave asociadas que haya aprobado de forma explícita el asesor de criptografía de su organización. Los algoritmos simétricos aprobados de Microsoft incluyen los cifrados de bloques siguientes:
Tenga en cuenta que todos los cifrados de bloques simétricos tienen que usarse con un modo de cifrado aprobado, lo que requiere el uso de un vector de inicialización (IV) adecuado. Un vector de inicialización adecuado, suele ser un número aleatorio y nunca un valor constante El uso de algoritmos criptográficos heredados o no aprobados, y de longitudes de clave más pequeñas con el fin de leer los datos existentes (no de escribir nuevos datos), se puede permitir una vez que la junta de criptografía de su organización lo revise. Sin embargo, debe solicitar una excepción en contra de este requisito. Además, en las implementaciones empresariales, los productos deben considerar advertir a los administradores cuando se use una criptografía no segura para leer los datos. Dichas advertencias deben ser explicativas y prácticas. En algunos casos, puede ser adecuado, establecer una directiva de grupo para controlar el uso de criptografía no segura Algoritmos .NET permitidos para criptografía personal administrada (en orden de preferencia)
Tenga en cuenta que ninguno de estos algoritmos se puede especificar a través de los métodos |
Use modos aprobados de cifrado de bloques y vectores de inicialización apropiados para los cifrados simétricos
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Todos los cifrados de bloques simétricos tienen que utilizarse con un modo de cifrado simétrico aprobado. Los únicos modos aprobados son CBC y CTS. En concreto, debe evitarse el modo de libro de códigos electrónico (ECB); el uso de ECB requiere revisión por parte de la junta de criptografía de su organización. Todo posible uso de OFB, CFB, CTR, CCM y GCM o cualquier otro modo de cifrado tiene que revisarlo la junta de criptografía de su organización. Reutilizar el mismo vector de inicialización (IV) con el cifrado de bloques en "modos de cifrados de flujo" como CTR, puede provocar que se muestren los datos cifrados. Todos los cifrados de bloques simétricos tienen que utilizarse también con un vector de inicialización (IV) adecuado. Un vector de inicialización adecuado es un número aleatorio de alta seguridad criptográfica y nunca un valor constante. |
Use algoritmos asimétricos, longitudes de clave y rellenos aprobados
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | El uso de algoritmos criptográficos prohibidos supone un riesgo significativo para la seguridad de los productos y debe evitarse. Los productos tienen que usar solo los algoritmos criptográficos, las longitudes de clave y los rellenos que la junta de criptografía de su organización haya aprobado explícitamente.
|
Use generadores de números aleatorios aprobados
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Los productos tienen que usar generadores de números aleatorios aprobados. Las funciones pseudoaleatorias, como la función en tiempo de ejecución de C, la clase de .NET Framework System.Random, o funciones del sistema como GetTickCount no deben por lo tanto usarse nunca en este código. Se prohíbe el uso del algoritmo (DUAL_EC_DRBG) del generador de números aleatorios de curva elíptica dual
|
No use cifrados de flujo simétricos
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | No pueden usarse cifrados de flujos simétricos, como RC4. En lugar de cifrados de flujos simétricos, los productos deberían utilizar un cifrado por bloques, específicamente AES con una longitud de clave de 128 bits como mínimo. |
Use los algoritmos hash con clave MAC o HMAC aprobados
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Los productos deben usar solo los algoritmos aprobados de código de autenticación de mensajes (MAC) o código de autenticación de mensajes basado en hash (HMAC). Un código de autenticación de mensajes (MAC) es un fragmento de información que se adjunta a un mensaje, y que le permite a su destinatario comprobar la autenticidad del remitente y la integridad del mensaje mediante una clave secreta. El uso o bien de un MAC basado en hash (HMAC) o MAC basado en el cifrado de bloques está permitido siempre todos los hash subyacentes o algoritmos de cifrado simétrico estén también aprobados para su uso; actualmente esto incluye las funciones de HMAC-SHA2 (HMAC-SHA256, HMAC-SHA384 y HMAC-SHA512) y los MAC basados en cifrado por bloques CMAC/OMAC1 y OMAC2 (estos se basan en AES). El uso de HMAC-SHA1 puede estar autorizado para la compatibilidad con plataformas, pero tendrá que solicitar una excepción para este procedimiento y someterse a una revisión de cifrado de su organización. No se permite el truncamiento de los HMAC por debajo de los 128 bits. El uso de métodos de cliente para producir valores hash de una clave y datos no está aprobado, y tiene que someterse a la revisión de la junta de criptografía de su organización antes de su uso. |
Use solamente las funciones hash criptográficas aprobadas
Título | Detalles |
---|---|
Componente | Aplicación web |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Los productos deben utilizar la familia SHA-2 de algoritmos hash (SHA256, SHA384 y SHA512). Si se necesita un hash más corto, por ejemplo, una longitud de la salida de 128 bits para ajustar una estructura de datos diseñada pensando en el hash MD5 más corto, los equipos del producto pueden truncar uno de los valores de hash de SHA2 (normalmente SHA256). Tenga en cuenta que SHA384 es una versión truncada de SHA512. No se permite el truncamiento de los algoritmos hash criptográficos por debajo de los 128 bits por motivos de seguridad. El nuevo código no debe usar los algoritmos hash MD2, MD4, MD5, SHA-0, SHA-1 o RIPEMD. Las colisiones de hash son factibles desde el punto de vista computacional para estos algoritmos, lo que de forma efectiva supone su ruptura. Algoritmos hash de .NET permitidos para criptografía personal administrada (en orden de preferencia):
|
Use algoritmos de cifrado de alta seguridad para cifrar los datos de la base de datos
Título | Detalles |
---|---|
Componente | Base de datos |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | Elegir un algoritmo de cifrado |
Pasos | Los algoritmos de cifrado definen las transformaciones de datos que los usuarios no autorizados no pueden revertir fácilmente. SQL Server permite a los administradores y programadores elegir entre varios algoritmos, incluidos DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, RC4 de 128 bits, DESX, AES de 128 bits, AES de 192 bits y AES de 256 bits |
Los paquetes SSIS deben cifrarse y firmarse digitalmente
Título | Detalles |
---|---|
Componente | Base de datos |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | Identificar el origen de paquetes con firmas digitales, Amenaza y mitigación de vulnerabilidades (Integration Services) |
Pasos | El origen de un paquete es el individuo o la organización que creó el paquete. La ejecución de un paquete desde un origen desconocido o que no sea de confianza puede ser arriesgado. Para evitar la modificación no autorizada de paquetes SSIS, deben usarse firmas digitales. Además, para garantizar la confidencialidad de los paquetes durante el tránsito o almacenamiento, los paquetes SSIS tienen que cifrarse |
Agregue una firma digital a los elementos protegibles críticos de base de datos
Título | Detalles |
---|---|
Componente | Base de datos |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | ADD SIGNATURE (Transact-SQL)[Agregar firma (Transact-SQL)] |
Pasos | En casos donde la integridad de una base de datos crítica protegible tiene que comprobarse, deben usarse firmas digitales. Los elementos protegibles de una base de datos, como un procedimiento almacenado, una función, un ensamblado o un desencadenador pueden firmarse digitalmente. A continuación se muestra un ejemplo de cuándo una firma digital puede ser útil: supongamos que un ISV (fabricante de software independiente) ha proporcionado soporte técnico para un software entregado a uno de sus clientes. Antes de proporcionar soporte técnico, el ISV debería asegurarse de que un elemento protegible en la base de datos del software no se alteró por error o a través de un intento malicioso. Si el elemento protegible está firmado digitalmente, el ISV puede comprobar la firma digital y validar su integridad. |
Use la administración extensible de claves (EKM) de SQL Server para proteger las claves de cifrado
Título | Detalles |
---|---|
Componente | Base de datos |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | Administración extensible de claves (EKM) de SQL Server, Administración extensible de claves con Azure Key Vault (SQL Server) |
Pasos | La Administración extensible de claves de SQL Server permite que las claves de cifrado que protegen los archivos de base de datos se almacenen en un dispositivo externo, como una tarjeta inteligente, un dispositivo USB o un módulo EKM/HSM. Esto también habilita la protección de datos para los administradores de bases de datos (exceptuando a los miembros del grupo de sysadmin). Los datos se pueden cifrar utilizando claves de cifrado a las que solo tiene acceso el usuario de la base de datos en el módulo EKM/HSM externo. |
Use la característica AlwaysEncrypted si las claves de cifrado no deben mostrarse al motor de base de datos
Título | Detalles |
---|---|
Componente | Base de datos |
Fase de SDL | Build |
Tecnologías aplicables | SQL Azure, OnPrem |
Atributos | Versión de SQL: V12, MsSQL2016 |
Referencias | Always Encrypted (motor de base de datos) |
Pasos | Always Encrypted es una característica creada para proteger la información confidencial, como números de tarjetas de crédito o números de identificación nacionales o regionales (por ejemplo, números del seguro social de EE. UU.), almacenados en bases de datos de Azure SQL Database o SQL Server. Always Encrypted permite a los clientes cifrar información confidencial dentro de aplicaciones cliente y no revelar las claves de cifrado al motor de base de datos (SQL Database o SQL Server). En consecuencia, Always Encrypted proporciona una separación entre quienes poseen los datos (y pueden verlos) y quienes administran los datos (pero no deben tener acceso a los mismos) |
Almacene las claves criptográficas de forma segura en dispositivos IoT
Título | Detalles |
---|---|
Componente | Dispositivo IoT |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | Sistema operativo del dispositivo: Windows IoT Core, Conectividad de dispositivos: SDK de dispositivo IoT de Azure |
Referencias | TPM on Windows IoT Core (TPM en Windows IoT Core), Configuración de TPM en Windows IoT Core, TPM con SDK de dispositivo IoT de Azure |
Pasos | Claves privadas de certificado o simétricas en un almacenamiento protegido de hardware como chips TPM o de tarjeta inteligente. Windows 10 IoT Core es compatible con el usuario de un TPM y se pueden usar varios TPM compatibles: TPM discreto (dTPM). Se recomienda usar un TPM discreto o de firmware. Un TPM de software solo se debe usar con fines de desarrollo y prueba. Una vez que un TPM está disponible y se aprovisiona con las claves, se debe escribir el código que genera el token sin codificar de forma rígida ninguna información confidencial en él. |
Ejemplo
TpmDevice myDevice = new TpmDevice(0);
// Use logical device 0 on the TPM
string hubUri = myDevice.GetHostName();
string deviceId = myDevice.GetDeviceId();
string sasToken = myDevice.GetSASToken();
var deviceClient = DeviceClient.Create( hubUri, AuthenticationMethodFactory. CreateAuthenticationWithToken(deviceId, sasToken), TransportType.Amqp);
Como se puede ver, la clave principal de dispositivo no está presente en el código. En su lugar, se almacena en el TPM en la ranura 0. El dispositivo TPM genera un token SAS de corta duración que se utiliza para conectar con IoT Hub.
Genere una clave simétrica aleatoria de longitud suficiente para la autenticación en IoT Hub
Título | Detalles |
---|---|
Componente | Puerta de enlace de la nube de IoT |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | Elección de puerta de enlace: Azure IoT Hub |
Referencias | N/D |
Pasos | IoT Hub contiene un registro de identidad del dispositivo y durante el aprovisionamiento de un dispositivo genera automáticamente una clave simétrica aleatoria. Se recomienda utilizar esta característica de registro de identidad de Azure IoT Hub para generar la clave usada para la autenticación. IoT Hub también permite que se especifique una clave al crear el dispositivo. Si se genera una clave fuera de IoT Hub durante el aprovisionamiento de dispositivos, se recomienda crear una clave simétrica aleatoria de al menos de 256 bits. |
Asegúrese de que hay una directiva de administración de dispositivos que requiere el uso de un PIN y permite el borrado remoto
Título | Detalles |
---|---|
Componente | Cliente móvil de Dynamics CRM |
Fase de SDL | Implementación |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Asegúrese de que hay una directiva de administración de dispositivos que requiere el uso de un PIN y permite el borrado remoto |
Asegúrese de que hay una directiva de administración de dispositivos que requiere un bloqueo automático con PIN o contraseña, y cifra todos los datos (por ejemplo, BitLocker)
Título | Detalles |
---|---|
Componente | Cliente de Outlook de Dynamics CRM |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Asegúrese de que hay una directiva de administración de dispositivos que requiere un bloqueo automático con PIN o contraseña, y cifra todos los datos (por ejemplo, BitLocker) |
Asegúrese de que las claves de firma se sustituyen cuando se usa Identity Server
Título | Detalles |
---|---|
Componente | Identity Server |
Fase de SDL | Implementación |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | Identity Server: claves, firmas y criptografía |
Pasos | Asegúrese de las claves de firma se sustituyen cuando se usa Identity Server. El vínculo en la sección de referencias explica cómo debe planearse esta acción sin causar interrupciones en las aplicaciones basadas en Identity Server. |
Asegúrese de que se usan un identificador de cliente y un secreto de cliente de alta seguridad criptográfica en Identity Server
Título | Detalles |
---|---|
Componente | Identity Server |
Fase de SDL | Build |
Tecnologías aplicables | Genérico |
Atributos | N/D |
Referencias | N/D |
Pasos | Asegúrese de que se usan un identificador de cliente y un secreto de cliente de alta seguridad criptográfica en Identity Server. Las siguientes directrices se deben usar al generar un identificador y un secreto de cliente:
|