Infrastruttura di sicurezza: crittografia - Procedure di mitigazioneSecurity Frame: Cryptography | Mitigations

Prodotto o servizioProduct/Service ArticoloArticle
Applicazione WebWeb Application
DatabaseDatabase
Dispositivo IoTIoT Device
Gateway IoT cloudIoT Cloud Gateway
Client Dynamics CRM MobileDynamics CRM Mobile Client
Client Dynamics CRM per OutlookDynamics CRM Outlook Client
Identity ServerIdentity Server

Usare solo crittografie a blocchi simmetriche e lunghezze di chiave approvateUse only approved symmetric block ciphers and key lengths

TitoloTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps

I prodotti devono usare solo le crittografie a blocchi simmetriche e le lunghezze di chiave associate esplicitamente approvate dal consulente per la crittografia dell'organizzazione.Products must use only those symmetric block ciphers and associated key lengths which have been explicitly approved by the Crypto Advisor in your organization. Gli algoritmi simmetrici approvati da Microsoft includono le crittografie a blocchi seguenti:Approved symmetric algorithms at Microsoft include the following block ciphers:

  • Per il codice nuovo, sono accettabili AES-128, AES-192 e AES-256.For new code AES-128, AES-192, and AES-256 are acceptable
  • Per la compatibilità con le versioni precedenti del codice esistente, è accettabile 3DES a tre chiavi.For backward compatibility with existing code, three-key 3DES is acceptable
  • Per i prodotti che usano le crittografie a blocchi simmetriche:For products using symmetric block ciphers:
    • Per il codice nuovo, è necessario Advanced Encryption Standard (AES).Advanced Encryption Standard (AES) is required for new code
    • Triple Data Encryption Standard (3DES) a tre chiavi è consentito nel codice esistente per la compatibilità con le versioni precedenti.Three-key triple Data Encryption Standard (3DES) is permissible in existing code for backward compatibility
    • Tutte le altre crittografie a blocchi, incluse RC2, DES, 3DES a 2 chiavi, DESX e Skipjack, possono essere usate solo per decrittografare i dati precedenti e devono essere sostituite se usate per la crittografia.All other block ciphers, including RC2, DES, 2 Key 3DES, DESX, and Skipjack, may only be used for decrypting old data, and must be replaced if used for encryption
  • Per gli algoritmi di crittografia a blocchi simmetrici, è necessaria una lunghezza minima della chiave di 128 bit.For symmetric block encryption algorithms, a minimum key length of 128 bits is required. L'unico algoritmo di crittografia a blocchi consigliato per il codice nuovo è AES (AES-128, AES-192 e AES-256 sono tutti accettabili)The only block encryption algorithm recommended for new code is AES (AES-128, AES-192 and AES-256 are all acceptable)
  • 3DES a tre chiavi è attualmente accettabile se è già in uso nel codice esistente. È consigliata la transizione ad AES.Three-key 3DES is currently acceptable if already in use in existing code; transition to AES is recommended. DES, DESX, RC2 e Skipjack non sono più considerati sicuri.DES, DESX, RC2, and Skipjack are no longer considered secure. Questi algoritmi possono essere usati solo per decrittografare i dati esistenti ai fini della compatibilità con le versioni precedenti e i dati devono essere crittografati di nuovo con una crittografia a blocchi consigliata.These algorithms may only be used for decrypting existing data for the sake of backward-compatibility, and data should be re-encrypted using a recommended block cipher

Si noti che tutte le crittografie a blocchi simmetriche devono essere usate con una modalità di crittografia approvata, che richiede l'uso di un vettore di inizializzazione appropriato.Please note that all symmetric block ciphers must be used with an approved cipher mode, which requires use of an appropriate initialization vector (IV). Un vettore di inizializzazione appropriato è in genere un numero casuale, mai un valore costante.An appropriate IV, is typically a random number and never a constant value

L'uso di algoritmi di crittografia legacy o comunque non approvati e di lunghezze di chiavi inferiori per la lettura dei dati esistenti (contrariamente alla scrittura di nuovi dati) può essere consentito dopo la revisione da parte del team di crittografia dell'organizzazione.The use of legacy or otherwise unapproved crypto algorithms and smaller key lengths for reading existing data (as opposed to writing new data) may be permitted after your organization's Crypto Board review. È tuttavia necessario prevedere un'eccezione per questo requisito.However, you must file for an exception against this requirement. Nelle distribuzioni aziendali inoltre si deve considerare per i prodotti la possibilità di avvisare gli amministratori quando viene usata una crittografia debole per leggere i dati.Additionally, in enterprise deployments, products should consider warning administrators when weak crypto is used to read data. Tali avvisi devono essere descrittivi e operativi.Such warnings should be explanatory and actionable. In alcuni casi, può essere appropriato che i Criteri di gruppo controllino l'uso della crittografia debole.In some cases, it may be appropriate to have Group Policy control the use of weak crypto

Algoritmi .NET consentiti per la flessibilità crittografica gestita (in ordine di preferenza):Allowed .NET algorithms for managed crypto agility (in order of preference)

  • AesCng (conforme allo standard FIPS)AesCng (FIPS compliant)
  • AuthenticatedAesCng (conforme allo standard FIPS)AuthenticatedAesCng (FIPS compliant)
  • AESCryptoServiceProvider (conforme allo standard FIPS)AESCryptoServiceProvider (FIPS compliant)
  • AESManaged (non conforme allo standard FIPS)AESManaged (non-FIPS-compliant)

Si noti che nessuno di questi algoritmi può essere specificato tramite i metodi SymmetricAlgorithm.Create o CryptoConfig.CreateFromName senza apportare modifiche al file machine.config.Please note that none of these algorithms can be specified via the SymmetricAlgorithm.Create or CryptoConfig.CreateFromName methods without making changes to the machine.config file. Tenere anche presente che AES nelle versioni di .NET precedenti a .NET 3.5 viene denominato RijndaelManaged e che AesCng e AuthenticatedAesCng sono disponibili in CodePlex e richiedono CNG nel sistema operativo sottostante.Also, note that AES in versions of .NET prior to .NET 3.5 is named RijndaelManaged, and AesCng and AuthenticatedAesCng are >available through CodePlex and require CNG in the underlying OS

Usare modalità di crittografia a blocchi approvate e vettori di inizializzazione per crittografie simmetricheUse approved block cipher modes and initialization vectors for symmetric ciphers

TitoloTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Tutte le crittografie a blocchi simmetriche devono essere usate con una modalità di crittografia a blocchi approvata.All symmetric block ciphers must be used with an approved symmetric cipher mode. Le sole modalità approvate sono CBC e CTS.The only approved modes are CBC and CTS. In particolare, è consigliabile evitare la modalità operativa ECB (Electronic Code Book). Per usare ECB, è necessaria la revisione da parte del team di crittografia dell'organizzazione.In particular, the electronic code book (ECB) mode of operation should be avoided; use of ECB requires your organization's Crypto Board review. Ogni utilizzo di OFB, CFB, CTR, CCM e GCM o di altre modalità di crittografia deve essere esaminato dal team di crittografia dell'organizzazione.All usage of OFB, CFB, CTR, CCM, and GCM or any other encryption mode must be reviewed by your organization's Crypto Board. Con il riutilizzo dello stesso vettore di inizializzazione con crittografie a blocchi nelle "modalità di crittografia di flusso", ad esempio CTR, i dati crittografati potrebbero essere rivelati.Reusing the same initialization vector (IV) with block ciphers in "streaming ciphers modes," such as CTR, may cause encrypted data to be revealed. Tutte le crittografie a blocchi simmetriche devono anche essere usate con un vettore di inizializzazione appropriato.All symmetric block ciphers must also be used with an appropriate initialization vector (IV). Un vettore di inizializzazione appropriato è un numero casuale con una crittografia complessa, mai un valore costante.An appropriate IV is a cryptographically strong, random number and never a constant value.

Usare riempimenti, lunghezze di chiave e algoritmi asimmetrici approvatiUse approved asymmetric algorithms, key lengths, and padding

TitoloTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps

L'uso di algoritmi di crittografia vietati costituisce un grave rischio per la sicurezza dei prodotti e deve essere evitato.The use of banned cryptographic algorithms introduces significant risk to product security and must be avoided. I prodotti devono usare solo gli algoritmi di crittografia e le lunghezze di chiave e i riempimenti associati esplicitamente approvati dal team di crittografia dell'organizzazione.Products must use only those cryptographic algorithms and associated key lengths and padding that have been explicitly approved by your organization's Crypto Board.

  • RSA: può essere usato per la crittografia, lo scambio di chiave e la firma.RSA- may be used for encryption, key exchange and signature. La crittografia RSA deve usare solo le modalità di riempimento OAEP o RSA-KEM.RSA encryption must use only the OAEP or RSA-KEM padding modes. Il codice esistente può usare la modalità di riempimento PKCS #1 v1.5 solo per la compatibilità.Existing code may use PKCS #1 v1.5 padding mode for compatibility only. L'uso del riempimento null è esplicitamente vietato.Use of null padding is explicitly banned. Per il codice nuovo sono necessarie chiavi >= 2048 bit.Keys >= 2048 bits is required for new code. Il codice esistente può supportare chiavi < 2048 bit solo per la compatibilità con le versioni precedenti dopo una revisione da parte del team di crittografia dell'organizzazione.Existing code may support keys < 2048 bits only for backwards compatibility after a review by your organization's Crypto Board. Le chiavi < 1024 bit possono essere usate solo per decrittografare/verificare i dati precedenti e devono essere sostituite se usate per operazioni di crittografia o di firma.Keys < 1024 bits may only be used for decrypting/verifying old data, and must be replaced if used for encryption or signing operations
  • ECDSA: può essere usato solo per la firma.ECDSA- may be used for signature only. Per il codice nuovo è necessario ECDSA con chiavi >=256 bit.ECDSA with >=256-bit keys is required for new code. Le firme basate su ECDSA devono usare una delle tre curve approvate da NIST (P-256, P-384 o P521).ECDSA-based signatures must use one of the three NIST approved curves (P-256, P-384, or P521). Le curve che sono state analizzate a fondo possono essere usate solo dopo una revisione da parte del team di crittografia dell'organizzazione.Curves that have been thoroughly analyzed may be used only after a review with your organization's Crypto Board.
  • ECDH: può essere usato solo per lo scambio di chiave.ECDH- may be used for key exchange only. Per il codice nuovo è necessario ECDH con chiavi >=256 bit.ECDH with >=256-bit keys is required for new code. Lo scambio di chiave basato su ECDH deve usare una delle tre curve approvate da NIST (P-256, P-384 o P521).ECDH-based key exchange must use one of the three NIST approved curves (P-256, P-384, or P521). Le curve che sono state analizzate a fondo possono essere usate solo dopo una revisione da parte del team di crittografia dell'organizzazione.Curves that have been thoroughly analyzed may be used only after a review with your organization's Crypto Board.
  • DSA: può essere accettabile dopo la revisione e l'approvazione da parte del team di crittografia dell'organizzazione.DSA- may be acceptable after review and approval from your organization's Crypto Board. Contattare il consulente per la sicurezza per pianificare una revisione da parte del team di crittografia dell'organizzazione.Contact your security advisor to schedule your organization's Crypto Board review. Se l'uso di DSA è approvato, tenere presente che sarà necessario impedire l'uso di chiavi con una lunghezza inferiore a 2048 bit.If your use of DSA is approved, note that you will need to prohibit use of keys less than 2048 bits in length. CNG supporta chiavi di lunghezza pari e superiore a 2048 bit a partire da Windows 8.CNG supports 2048-bit and greater key lengths as of Windows 8.
  • Diffie-Hellman: può essere usato solo per la gestione delle chiavi della sessione.Diffie-Hellman- may be used for session key management only. Per il codice nuovo sono necessarie chiavi di lunghezza >= 2048 bit.Key length >= 2048 bits is required for new code. Il codice esistente può supportare chiavi di lunghezza < 2048 bit solo per la compatibilità con le versioni precedenti dopo una revisione da parte del team di crittografia dell'organizzazione.Existing code may support key lengths < 2048 bits only for backwards compatibility after a review by your organization's Crypto Board. Le chiavi < 1024 bit non possono essere usate.Keys < 1024 bits may not be used.

    Usare generatori di numeri casuali approvatiUse approved random number generators

    TitoloTitle DettagliDetails
    ComponenteComponent Applicazione Web.Web Application
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps

    I prodotti devono usare generatori di numeri casuali approvati.Products must use approved random number generators. Le funzioni pseudocasuali, ad esempio la funzione runtime C rand, la classe .NET Framework System.Random o le funzioni di sistema come GetTickCount, non devono quindi mai essere usate in tale codice.Pseudorandom functions such as the C runtime function rand, the .NET Framework class System.Random, or system functions such as GetTickCount must, therefore, never be used in such code. L'uso dell'algoritmo DUAL_EC_DRBG (Dual Elliptic Curve Deterministic Random Bit Generator) è proibito.Use of the dual elliptic curve random number generator (DUAL_EC_DRBG) algorithm is prohibited

    • CNG: BCryptGenRandom. È consigliato l'uso del flag BCRYPT_USE_SYSTEM_PREFERRED_RNG a meno che il chiamante non possa essere eseguito con un IRQL maggiore di 0, ovvero PASSIVE_LEVEL.CNG- BCryptGenRandom(use of the BCRYPT_USE_SYSTEM_PREFERRED_RNG flag recommended unless the caller might run at any IRQL greater than 0 [that is, PASSIVE_LEVEL])
    • CAPI: cryptGenRandom.CAPI- cryptGenRandom
    • Win32/64: RtlGenRandom (le nuove implementazioni devono usare BCryptGenRandom o CryptGenRandom) * rand_s * SystemPrng (per la modalità kernel)Win32/64- RtlGenRandom (new implementations should use BCryptGenRandom or CryptGenRandom) * rand_s * SystemPrng (for kernel mode)
    • .NET: RNGCryptoServiceProvider o RNGCng..NET- RNGCryptoServiceProvider or RNGCng
    • Applicazioni Windows Store: Windows.Security.Cryptography.CryptographicBuffer.GenerateRandom o .GenerateRandomNumber.Windows Store Apps- Windows.Security.Cryptography.CryptographicBuffer.GenerateRandom or .GenerateRandomNumber
    • Apple OS X (10.7+)/iOS(2.0+): int SecRandomCopyBytes (SecRandomRef random, size_t count, uint8_t byte)
    • Apple OS X (<10.7)-* Usare /dev/random per recuperare numeri casualiApple OS X (10.7+)/iOS(2.0+)- int SecRandomCopyBytes (SecRandomRef random, size_t count, uint8_t bytes )
    • Apple OS X (<10.7)-* Use /dev/random to retrieve random numbers
    • Java(compreso il codice Java di Google per Android) - classe java.security.SecureRandom.Java(including Google Android Java code)- java.security.SecureRandom class. Tenere presente che, per Android 4.3 (Jelly Bean), gli sviluppatori devono seguire la soluzione alternativa consigliata da Android e aggiornare le applicazioni per inizializzare il generatore PRNG con l'entropia da /dev/urandom o /dev/random.Note that for Android 4.3 (Jelly Bean), developers must follow the Android recommended workaround and update their applications to explicitly initialize the PRNG with entropy from /dev/urandom or /dev/random

    Non usare crittografie di flusso simmetricheDo not use symmetric stream ciphers

    TitoloTitle DettagliDetails
    ComponenteComponent Applicazione Web.Web Application
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps Non devono essere usate crittografie di flusso simmetriche, ad esempio RC4.Symmetric stream ciphers, such as RC4, must not be used. Invece delle crittografie di flusso simmetriche, i prodotti devono usare una crittografia a blocchi, in particolare AES con una lunghezza di chiave di almeno 128 bit.Instead of symmetric stream ciphers, products should use a block cipher, specifically AES with a key length of at least 128 bits.

    Usare algoritmi MAC/HMAC/hash con chiaveUse approved MAC/HMAC/keyed hash algorithms

    TitoloTitle DettagliDetails
    ComponenteComponent Applicazione Web.Web Application
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps

    I prodotti devono usare solo algoritmi MAC (Message Authentication Code) o HMAC (Hash Message Authentication Code) approvati.Products must use only approved message authentication code (MAC) or hash-based message authentication code (HMAC) algorithms.

    Un codice MAC è un'informazione allegata a un messaggio che consente ai destinatari di verificare sia l'autenticità del mittente che l'integrità del messaggio con una chiave privata.A message authentication code (MAC) is a piece of information attached to a message that allows its recipient to verify both the authenticity of the sender and the integrity of the message using a secret key. L'uso di codice MAC basato su hash (HMAC) o di codice MAC basato sulla crittografia a blocchi è consentito purché anche tutti gli algoritmi di crittografia simmetrica o hash sottostanti siano approvati per l'uso. Attualmente sono inclusi i codici MAC basati sulla crittografia a blocchi CMAC/OMAC1 e OMAC2 (basati su AES) e le funzioni HMAC-SHA2 (HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512).The use of either a hash-based MAC (HMAC) or block-cipher-based MAC is permissible as long as all underlying hash or symmetric encryption algorithms are also approved for use; currently this includes the HMAC-SHA2 functions (HMAC-SHA256, HMAC-SHA384 and HMAC-SHA512) and the CMAC/OMAC1 and OMAC2 block cipher-based MACs (these are based on AES).

    L'uso di HMAC-SHA1 può essere consentito per la compatibilità con la piattaforma, ma sarà necessario prevedere un'eccezione a questa procedura e superare la revisione del team di crittografia dell'organizzazione.Use of HMAC-SHA1 may be permissible for platform compatibility, but you will be required to file an exception to this procedure and undergo your organization's Crypto review. Non è consentito il troncamento dei codici HMAC a meno di 128 bit.Truncation of HMACs to less than 128 bits is not permitted. L'uso dei metodi dei clienti per l'hash di una chiave e dei dati non è approvato e deve superare la revisione del team di crittografia dell'organizzazione prima di poter essere adottato.Using customer methods to hash a key and data is not approved, and must undergo your organization's Crypto Board review prior to use.

    Usare solo funzioni hash crittografiche approvateUse only approved cryptographic hash functions

    TitoloTitle DettagliDetails
    ComponenteComponent Applicazione Web.Web Application
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps

    I prodotti devono usare la famiglia SHA-2 di algoritmi (SHA256, SHA384 e SHA512).Products must use the SHA-2 family of hash algorithms (SHA256, SHA384, and SHA512). Se è necessario un hash più breve, ad esempio una lunghezza di output di 128 bit, per la corrispondenza con una struttura di dati progettata per il più breve hash MD5, i team dei prodotti possono troncare uno degli hash SHA-2 (in genere, SHA256).If a shorter hash is needed, such as a 128-bit output length in order to fit a data structure designed with the shorter MD5 hash in mind, product teams may truncate one of the SHA2 hashes (typically SHA256). Si noti che SHA384 è una versione troncata di SHA512.Note that SHA384 is a truncated version of SHA512. Il troncamento di hash crittografici per motivi di sicurezza a meno di 128 bit non è consentito.Truncation of cryptographic hashes for security purposes to less than 128 bits is not permitted. Il codice nuovo non deve usare gli algoritmi hash MD2, MD4, MD5, SHA-0, SHA-1 o RIPEMD.New code must not use the MD2, MD4, MD5, SHA-0, SHA-1, or RIPEMD hash algorithms. Da un punto di vista computazionale, le collisioni di hash sono possibili per questi algoritmi, che li interrompono in modo efficace.Hash collisions are computationally feasible for these algorithms, which effectively breaks them.

    Algoritmi hash .NET consentiti per la flessibilità crittografica gestita (in ordine di preferenza):Allowed .NET hash algorithms for managed crypto agility (in order of preference):

    • SHA512Cng (conforme allo standard FIPS)SHA512Cng (FIPS compliant)
    • SHA384Cng (conforme allo standard FIPS)SHA384Cng (FIPS compliant)
    • SHA256Cng (conforme allo standard FIPS)SHA256Cng (FIPS compliant)
    • SHA512Managed (non conforme allo standard FIPS). Usare SHA512 come nome di algoritmo nelle chiamate a HashAlgorithm.Create o CryptoConfig.CreateFromNameSHA512Managed (non-FIPS-compliant) (use SHA512 as algorithm name in calls to HashAlgorithm.Create or CryptoConfig.CreateFromName)
    • SHA384Managed (non conforme allo standard FIPS). Usare SHA384 come nome di algoritmo nelle chiamate a HashAlgorithm.Create o CryptoConfig.CreateFromNameSHA384Managed (non-FIPS-compliant) (use SHA384 as algorithm name in calls to HashAlgorithm.Create or CryptoConfig.CreateFromName)
    • SHA256Managed (non conforme allo standard FIPS). Usare SHA256 come nome di algoritmo nelle chiamate a HashAlgorithm.Create o CryptoConfig.CreateFromNameSHA256Managed (non-FIPS-compliant) (use SHA256 as algorithm name in calls to HashAlgorithm.Create or CryptoConfig.CreateFromName)
    • SHA512CryptoServiceProvider (conforme allo standard FIPS)SHA512CryptoServiceProvider (FIPS compliant)
    • SHA256CryptoServiceProvider (conforme allo standard FIPS)SHA256CryptoServiceProvider (FIPS compliant)
    • SHA384CryptoServiceProvider (conforme allo standard FIPS)SHA384CryptoServiceProvider (FIPS compliant)

    Usare algoritmi di crittografia avanzata per crittografare i dati nel databaseUse strong encryption algorithms to encrypt data in the database

    TitoloTitle DettagliDetails
    ComponenteComponent DatabaseDatabase
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences Scelta di un algoritmo di crittografiaChoosing an encryption algorithm
    PassaggiSteps Gli algoritmi di crittografia definiscono trasformazioni dei dati che non possono essere facilmente invertite da utenti non autorizzati.Encryption algorithms define data transformations that cannot be easily reversed by unauthorized users. SQL Server consente ad amministratori e sviluppatori di scegliere tra diversi algoritmi, inclusi DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, RC4 a 128 bit, DESX, AES a 128 bit, AES a 192 bit e AES a 256 bit.SQL Server allows administrators and developers to choose from among several algorithms, including DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, 128-bit RC4, DESX, 128-bit AES, 192-bit AES, and 256-bit AES

    I pacchetti SSIS devono essere crittografati ed essere con firma digitaleSSIS packages should be encrypted and digitally signed

    TitoloTitle DettagliDetails
    ComponenteComponent DatabaseDatabase
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences Identificare l'origine dei pacchetti con firme digitali, Mitigazione di minacce e vulnerabilità (Integration Services)Identify the Source of Packages with Digital Signatures, Threat and Vulnerability Mitigation (Integration Services)
    PassaggiSteps L'origine di un pacchetto è la persona o l'organizzazione che ha creato il pacchetto.The source of a package is the individual or organization that created the package. Eseguire un pacchetto da un'origine sconosciuta o non attendibile può essere rischioso.Running a package from an unknown or untrusted source might be risky. Per impedire la manomissione non autorizzata dei pacchetti SSIS, è consigliabile usare le firme digitali.To prevent unauthorized tampering of SSIS packages, digital signatures should be used. Per garantire la riservatezza dei pacchetti durante l'archiviazione o il transito, i pacchetti SSIS devono anche essere crittografati.Also, to ensure the confidentiality of the packages during storage/transit, SSIS packages have to be encrypted

    Aggiungere la firma digitale alle entità a protezione diretta del database criticheAdd digital signature to critical database securables

    TitoloTitle DettagliDetails
    ComponenteComponent DatabaseDatabase
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences ADD SIGNATURE (Transact-SQL)ADD SIGNATURE (Transact-SQL)
    PassaggiSteps Qualora sia necessario verificare l'integrità di un'entità a protezione diretta del database critica, è consigliabile usare le firme digitali.In cases where the integrity of a critical database securable has to be verified, digital signatures should be used. Le entità a protezione diretta del database critiche, ad esempio stored procedure, funzioni, assembly o trigger, possono essere con firma digitale.Database securables such as a stored procedure, function, assembly, or trigger can be digitally signed. Ecco un esempio di quando ciò può essere utile: si supponga che un fornitore di software indipendente (ISV) abbia fornito supporto per un software distribuito a uno dei clienti.Below is an example of when this can be useful: Let us say an ISV (Independent Software Vendor) has provided support to a software delivered to one of their customers. Prima di fornire il supporto, l'ISV vuole assicurarsi che un'entità a protezione diretta del database nel software non sia stata manomessa per errore o intenzionalmente.Before providing support, the ISV would want to ensure that a database securable in the software was not tampered either by mistake or by a malicious attempt. Se l'entità a protezione diretta è con firma digitale, l'ISV può verificarne la firma digitale e convalidarne l'integrità.If the securable is digitally signed, the ISV can verify its digital signature and validate its integrity.

    Usare EKM di SQL Server per proteggere le chiavi di crittografiaUse SQL server EKM to protect encryption keys

    TitoloTitle DettagliDetails
    ComponenteComponent DatabaseDatabase
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences Extensible Key Management (EKM) di SQL Server, Extensible Key Management con Azure Key Vault (SQL Server)SQL Server Extensible Key Management (EKM), Extensible Key Management Using Azure Key Vault (SQL Server)
    PassaggiSteps Extensible Key Management di SQL Server consente di archiviare le chiavi di crittografia che proteggono i file di database in un dispositivo off-box, ad esempio una smart card, un dispositivo USB o un modulo EKM/HSM.SQL Server Extensible Key Management enables the encryption keys that protect the database files to be stored in an off-box device such as a smartcard, USB device, or EKM/HSM module. Ciò consente anche la protezione dei dati agli amministratori del database, tranne ai membri del gruppo di amministratori di sistema.This also enables data protection from database administrators (except members of the sysadmin group). I dati possono essere crittografati usando le chiavi di crittografia a cui ha accesso solo l'utente del database nel modulo EKM/HSM esterno.Data can be encrypted by using encryption keys that only the database user has access to on the external EKM/HSM module.

    Usare la funzionalità AlwaysEncrypted se le chiavi di crittografia non devono essere rivelate al motore di databaseUse AlwaysEncrypted feature if encryption keys should not be revealed to Database engine

    TitoloTitle DettagliDetails
    ComponenteComponent DatabaseDatabase
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies SQL Azure, localeSQL Azure, OnPrem
    Attributes (Attributi) (Attributi)Attributes Versione SQL: V12, MsSQL2016SQL Version - V12, MsSQL2016
    RiferimentiReferences Always Encrypted (Motore di database)Always Encrypted (Database Engine)
    PassaggiSteps Always Encrypted è una funzionalità progettata per proteggere i dati sensibili, ad esempio i numeri di carta di credito o i numeri di identificazione nazionale, come i codici fiscali, archiviati nei database SQL di Azure o nei database di SQL Server.Always Encrypted is a feature designed to protect sensitive data, such as credit card numbers or national identification numbers (e.g. U.S. social security numbers), stored in Azure SQL Database or SQL Server databases. La funzionalità Always Encrypted consente ai client di crittografare i dati sensibili nelle applicazioni client e di non rivelare mai le chiavi di crittografia al motore di database (database SQL o SQL Server).Always Encrypted allows clients to encrypt sensitive data inside client applications and never reveal the encryption keys to the Database Engine (SQL Database or SQL Server). Di conseguenza, Always Encrypted consente di separare i proprietari dei dati (che possono visualizzarli) e le persone incaricate della gestione dei dati (che però non devono poter accedere ai dati).As a result, Always Encrypted provides a separation between those who own the data (and can view it) and those who manage the data (but should have no access)

    Archiviare le chiavi di crittografia in modo sicuro nel dispositivo IoTStore Cryptographic Keys securely on IoT Device

    TitoloTitle DettagliDetails
    ComponenteComponent Dispositivo IoTIoT Device
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes Sistema operativo dispositivo: Windows IoT Core, connettività dispositivo: Azure IoT SDK per dispositiviDevice OS - Windows IoT Core, Device Connectivity - Azure IoT device SDKs
    RiferimentiReferences TPM on Windows IoT Core (TPM in Windows IoT Core), Set up TPM on Windows IoT Core (Configurare TPM in Windows IoT Core), Azure IoT Device SDK TPM (TPM di Azure IoT SDK per dispositivi)TPM on Windows IoT Core, Set up TPM on Windows IoT Core, Azure IoT Device SDK TPM
    PassaggiSteps Archiviare le chiavi private dei certificati o simmetriche in modo sicuro in una risorsa di archiviazione hardware protetta, ad esempio chip di smart card o TPM.Symmetric or Certificate Private keys securely in a hardware protected storage like TPM or Smart Card chips. Windows 10 IoT Core supporta l'uso di un modulo TPM. Sono diversi i moduli TPM compatibili che possono essere usati: https://developer.microsoft.com/windows/iot/win10/tpm.Windows 10 IoT Core supports the user of a TPM and there are several compatible TPMs that can be used: https://developer.microsoft.com/windows/iot/win10/tpm. È consigliabile usare un modulo TPM firmware o discreto.It is recommended to use a Firmware or Discrete TPM. Un modulo TPM software deve essere usato solo a scopo di sviluppo e test.A Software TPM should only be used for development and testing purposes. Quando un modulo TPM è disponibile ed è stato effettuato il provisioning delle chiavi, il codice che genera il token deve essere scritto senza codificare le informazioni sensibili.Once a TPM is available and the keys are provisioned in it, the code that generates the token should be written without hard coding any sensitive information in it.

    EsempioExample

    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); 
    

    Come si può osservare, la chiave primaria del dispositivo non è presente nel codice.As can be seen, the device primary key is not present in the code. Viene invece archiviata nello slot 0 del modulo TPM.Instead, it is stored in the TPM at slot 0. Il dispositivo TPM genera un token di firma di accesso condiviso temporaneo che viene quindi usato per connettersi all'hub IoT.TPM device generates a short-lived SAS token that is then used to connect to the IoT Hub.

    Generare una chiave simmetrica casuale sufficientemente lunga per l'autenticazione nell'hub IoTGenerate a random symmetric key of sufficient length for authentication to IoT Hub

    TitoloTitle DettagliDetails
    ComponenteComponent Gateway IoT cloudIoT Cloud Gateway
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes Opzione gateway: Hub IoT di AzureGateway choice - Azure IoT Hub
    RiferimentiReferences N/DN/A
    PassaggiSteps L'hub IoT contiene un registro di identità del dispositivo e durante il provisioning genera automaticamente una chiave simmetrica casuale.IoT Hub contains a device Identity Registry and while provisioning a device, automatically generates a random Symmetric key. È consigliabile usare questa funzionalità del registro di identità dell'hub IoT di Azure per generare la chiave usata per l'autenticazione.It is recommended to use this feature of the Azure IoT Hub Identity Registry to generate the key used for authentication. L'hub IoT consente anche di specificare una chiave durante la creazione del dispositivo.IoT Hub also allows for a key to be specified while creating the device. Se viene generata una chiave all'esterno dell'hub IoT durante il provisioning del dispositivo, è consigliabile creare una chiave simmetrica casuale o almeno a 256 bit.If a key is generated outside of IoT Hub during device provisioning, it is recommended to create a random symmetric key or at least 256 bits.

    Assicurarsi che sia attivo un criterio di gestione dei dispositivi che richiede di usare il PIN e consente la cancellazione remotaEnsure a device management policy is in place that requires a use PIN and allows remote wiping

    TitoloTitle DettagliDetails
    ComponenteComponent Client Dynamics CRM MobileDynamics CRM Mobile Client
    Fase SDLSDL Phase DistribuzioneDeployment
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps Assicurarsi che sia attivo un criterio di gestione dei dispositivi che richiede di usare il PIN e consente la cancellazione remota.Ensure a device management policy is in place that requires a use PIN and allows remote wiping

    Assicurarsi che sia attivo un criterio di gestione dei dispositivi che richiede PIN/password/blocco automatico e crittografa tutti i dati (ad esempio, Bitlocker)Ensure a device management policy is in place that requires a PIN/password/auto lock and encrypts all data (e.g. Bitlocker)

    TitoloTitle DettagliDetails
    ComponenteComponent Client Dynamics CRM per OutlookDynamics CRM Outlook Client
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps Assicurarsi che sia attivo un criterio di gestione dei dispositivi che richiede PIN/password/blocco automatico e crittografa tutti i dati (ad esempio, Bitlocker).Ensure a device management policy is in place that requires a PIN/password/auto lock and encrypts all data (e.g. Bitlocker)

    Assicurarsi che venga eseguito il rollover delle chiavi di firma quando si usa Identity ServerEnsure that signing keys are rolled over when using Identity Server

    TitoloTitle DettagliDetails
    ComponenteComponent Identity ServerIdentity Server
    Fase SDLSDL Phase DistribuzioneDeployment
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences Identity Server - Keys, Signatures and Cryptography (Identity Server: chiavi, firme e crittografia)Identity Server - Keys, Signatures and Cryptography
    PassaggiSteps Assicurarsi che venga eseguito il rollover delle chiavi di firma quando si usa Identity Server.Ensure that signing keys are rolled over when using Identity Server. Il collegamento nella sezione Riferimenti illustra come pianificarlo senza causare interruzioni delle applicazioni basate su Identity Server.The link in the references section explains how this should be planned without causing outages to applications relying on Identity Server.

    Assicurarsi che vengano usati un ID client e un segreto client con crittografia complessa in Identity ServerEnsure that cryptographically strong client ID, client secret are used in Identity Server

    TitoloTitle DettagliDetails
    ComponenteComponent Identity ServerIdentity Server
    Fase SDLSDL Phase CompilareBuild
    Tecnologie applicabiliApplicable Technologies GenericoGeneric
    Attributes (Attributi) (Attributi)Attributes N/DN/A
    RiferimentiReferences N/DN/A
    PassaggiSteps

    Assicurarsi che vengano usati un ID client e un segreto client con crittografia complessa in Identity Server.Ensure that cryptographically strong client ID, client secret are used in Identity Server. È consigliabile seguire queste linee guida durante la generazione di un ID e un segreto client:The following guidelines should be used while generating a client ID and secret:

    • Generare un GUID casuale come ID clientGenerate a random GUID as the client ID
    • Generare una chiave a 256 bit casuale tramite crittografia come segretoGenerate a cryptographically random 256-bit key as the secret