Il driver client.NET Framework 4.6.2 "Sempre crittografate" in modo discontinuo, si verifica un errore durante la decrittografia di riga

Sintomi

Si dispone di un'applicazione client che utilizza il Provider di dati.NET Framework per Microsoft SQL Server (Sqlclient) incluso in di Microsoft.NET Framework 4.6.2. Utilizzare questa applicazione per connettersi a un Sempre crittografato-database in esecuzione su Microsoft SQL Server 2016, 2017 di SQL Server su Windows o Microsoft Azure SQL Database abilitato.

Quando si tenta di decrittografare i record da Sempre crittografato-attivato database, si ricevono messaggi di errore intermittenti simili ai seguenti:

Decrittografia non riuscita. Gli ultimi 10 byte della chiave di crittografia crittografata colonna sono: 7E-0B-E6-D3-39-CE-35-86-2F-AA. I primi 10 byte di testo crittografato sono: 01-C3-D7-39-33-2F-E6-44-C3-B1. Testo crittografato specificato dispone di un tag di autenticazione non valido.


Quando si verifica questo problema, le query su colonne che sono protetti mediante l'impostazione Sempre crittografati possono visualizzare risultati non corretti (ad esempio, vengono restituiti pochi record). Questa operazione, a sua volta, potrebbe attivare un comportamento non corretto. Ad esempio, l'applicazione client tenta di inserire valori mancanti o eseguire altri processi di aggiornamento che creare ulteriori errori o causano dati incoerenti nel database.

Risoluzione

Per risolvere questo problema, installare l'aggiornamento da Microsoft Security Bulletin MS16-155.

Soluzione alternativa

Importante Se l'applicazione client è ospitato tramite applicazioni Web nel servizio di applicazione di Microsoft Azure, il client utilizza automaticamente il.NET Framework 4.6.2. Pertanto, è possibile riscontrare il problema menzionato nella sezione "Sintomi". In questo scenario, è possibile utilizzare solo la soluzione alternativa il metodo 2 ("Disattiva la crittografia di colonna") in questa sezione fino a quando non viene rilasciata una correzione per questo problema.

Per risolvere questo problema, attenersi alle seguenti indicazioni, in base alle esigenze:

  • Il client .NET non è ancora aggiornato alla versione 4.6.2

    Negli ambienti descritti nella sezione "Sintomi", si consiglia di non eseguire l'aggiornamento per il.NET Framework 4.6.2 finché non verrà risolto il problema. Questo problema non riguarda le versioni precedenti del driver.

  • Il client .NET è già aggiornato alla 4.6.2

    Utilizzare uno dei seguenti metodi:

    • Metodo 1: Ripristinare la versione di.NET Framework

      Disinstallare il.NET Framework 4.6.2 dalle applicazioni client di hosting del sistema. In questo modo le applicazioni di utilizzare una versione precedente del Provider di dati NET Framework per SQL Server che non presentano questo problema. A tale scopo, attenersi alla seguente procedura:

      1. Nel Pannello di controllo, aprire l'elemento programmi e quindi selezionare programmi e funzionalità.

      2. Selezionare Visualizza aggiornamenti installatie quindi si disinstalla l'aggiornamento per Microsoft Windows KB3120737.

        Nota: È consigliabile che dopo la disinstallazione di qualsiasi versione di.NET Framework, provare applicazioni dipendenti da.NET Framework. Se si disinstalla la versione di.NET Framework che dipendono, queste applicazioni potrebbero non funzionare correttamente.


    • Metodo 2: Disattiva colonna crittografia chiave

      Se è possibile annullare l'installazione di.NET Framework, disattivare la memorizzazione nella cache di colonna crittografia chiave (CEK). A tale scopo, impostare la proprietà statica di SqlConnection.ColumnEncryptionKeyCacheTtl nell'applicazione client a 0. Ad esempio, eseguire il codice seguente per disabilitare la crittografia di colonna nelle applicazioni C#:

      System.Data.SqlClient.SqlConnection.ColumnEncryptionKeyCacheTtl = TimeSpan.Zero

Dopo aver utilizzato uno dei metodi, verificare che l'errore non si ripresenta durante una scansione della tabella (SELECT * <tabella con sempre crittografato>) che viene eseguito da una finestra di query in SQL Server Management Studio su una connessione al database che dispone di "impostazione crittografia colonna = Attivato"nella stringa di connessione. Esegue questo tipo di analisi consente di verificare la corretta crittografia.

Importante Gli utenti che il problema descritto nella sezione "Sintomi" durante la scansione di convalida devono contattare sqlalwaysencrypted@microsoft.com. Il team di supporto consente di ripristinare tutte le righe precedentemente crittografate che sono interessate da questo bug. Questo problema non causa la perdita di dati permanenti.

Riferimenti

Driver client.NET Framework 4.6.2 per sempre crittografato causando errori intermittenti per decrittografare le singole righe

Stato

Microsoft si sta occupando del problema e pubblicherà ulteriori informazioni in questo articolo, non appena disponibili.

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×