Condividi tramite


Crittografia

L'articolo offre una panoramica delle funzionalità di crittografia disponibili per le app WinUI. Per informazioni dettagliate su attività specifiche, vedere la tabella alla fine di questo articolo.

Terminologia

La terminologia seguente viene comunemente usata nella crittografia e nell'infrastruttura a chiave pubblica (PKI).

Termine Descrizione
Crittografia Processo di trasformazione dei dati tramite un algoritmo di crittografia e una chiave. I dati trasformati possono essere recuperati solo usando lo stesso algoritmo e la stessa chiave (simmetrica) o correlata (pubblica).
Decrittazione Processo di restituzione di dati crittografati nel formato originale.
Testo semplice Originariamente si riferiva a un messaggio di testo non crittografato. Attualmente si riferisce a tutti i dati non crittografati.
Testo crittografato Originariamente si riferisce a un messaggio di testo crittografato e quindi illeggibile. Attualmente fa riferimento a qualsiasi dato crittografato.
Funzione di hash Processo di conversione dei dati a lunghezza variabile in una lunghezza fissa, generalmente un valore di solito più piccolo. Confrontando gli hash, è possibile ottenere una garanzia ragionevole che due o più dati siano uguali.
Firma Hash crittografato dei dati digitali in genere usati per autenticare il mittente dei dati o verificare che i dati non siano stati manomessi durante la trasmissione.
Algoritmo Procedura dettagliata per la crittografia dei dati.
Chiave Numero casuale o pseudorandomo usato come input per un algoritmo di crittografia per crittografare e decrittografare i dati.
Crittografia a chiave simmetrica Crittografia in cui la crittografia e la decrittografia usano la stessa chiave. Questa operazione è nota anche come crittografia a chiave privata.
Crittografia a chiave asimmetrica Crittografia in cui la crittografia e la decrittografia usano una chiave diversa ma matematicamente correlata. Questa operazione è detta anche crittografia a chiave pubblica.
Codifica Processo di codifica dei messaggi digitali, inclusi i certificati, per il trasporto attraverso una rete.
Provider di algoritmi DLL che implementa un algoritmo di crittografia.
Provider di archiviazione delle chiavi Contenitore per l'archiviazione delle chiavi. Attualmente, le chiavi possono essere archiviate in software, smart card o nel modulo TPM (Trusted Platform Module).
Certificato X.509 Un documento digitale, in genere emesso da un'autorità di certificazione, per verificare l'identità di un individuo, un sistema o un'entità ad altre parti interessate.

 

Namespaces

I namespace seguenti sono disponibili per l'uso nelle app.

Windows.Security.Cryptography

Contiene la classe CryptographicBuffer e i metodi statici che consentono di:

  • Convertire dati da e verso stringhe
  • Convertire i dati da e verso matrici di byte
  • Codificare i messaggi per il trasporto di rete
  • Decodificare i messaggi dopo il trasporto

Windows.Security.Cryptography.Certificates

Contiene classi, interfacce ed enumerazioni che consentono di:

  • Creare una richiesta di certificato
  • Installare una risposta al certificato
  • Importare un certificato in un file PFX
  • Specificare e recuperare le proprietà della richiesta di certificato

Windows.Security.Cryptography.Core

Contiene classi e tipi di enumerazione che consentono di:

  • Crittografare e decrittografare i dati
  • Dati hash
  • Firmare i dati e verificare le firme
  • Creare, importare ed esportare chiavi
  • Lavorare con fornitori di algoritmi a chiave asimmetrica
  • Lavorare con i provider di algoritmi a chiave simmetrica
  • Collaborare con i fornitori di algoritmi di hashing
  • Usare i provider di algoritmi MAC (Machine Authentication Code)
  • Usare i provider di algoritmi di derivazione delle chiavi

Windows.Security.Cryptography.DataProtection

Contiene classi che consentono di:

  • Crittografare e decrittografare in modo asincrono i dati statici
  • Crittografare e decrittografare in modo asincrono i flussi di dati

Funzionalità dell'applicazione Crypto e PKI

L'interfaccia di programmazione dell'applicazione semplificata disponibile per le app consente le funzionalità di crittografia e infrastruttura a chiave pubblica (PKI) seguenti.

Supporto della crittografia

È possibile eseguire le attività di crittografia seguenti. Per altre informazioni, vedere lo spazio dei nomi Windows.Security.Cryptography.Core .

  • Creare chiavi simmetriche
  • Eseguire la crittografia simmetrica
  • Creare chiavi asimmetriche
  • Eseguire la crittografia asimmetrica
  • Derivare chiavi basate su una password
  • Creare codici di autenticazione dei messaggi
  • Contenuto hash
  • Firmare digitalmente il contenuto

L'SDK offre anche un'interfaccia semplificata per la protezione dei dati basata su password. È possibile usarlo per eseguire le attività seguenti. Per altre informazioni, vedere lo spazio dei nomi Windows.Security.Cryptography.DataProtection .

  • Protezione asincrona dei dati statici
  • Protezione asincrona di un flusso di dati

Supporto per la codifica

Un'app può codificare i dati crittografici per la trasmissione attraverso una rete e decodificare i dati ricevuti da un'origine di rete. Per altre informazioni, vedere i metodi statici disponibili nello spazio dei nomi Windows.Security.Cryptography .

Supporto dell'infrastruttura a chiave pubblica

Le app possono eseguire le attività PKI seguenti. Per altre informazioni, vedere lo spazio dei nomi Windows.Security.Cryptography.Certificates .

  • Creare un certificato
  • Creare un certificato autofirmato
  • Installare una risposta al certificato
  • Importare un certificato in formato PFX
  • Usare i certificati e le chiavi delle smart card (set di funzionalità sharedUserCertificates)
  • Usare i certificati dall'archivio MY dell'utente (set di funzionalità sharedUserCertificates)

Inoltre, è possibile usare il manifesto per eseguire le azioni seguenti:

  • Specificare i certificati radice attendibili per ogni applicazione
  • Specificare i certificati attendibili per peer dell'applicazione
  • Disabilitare in modo esplicito l'ereditarietà dal trust di sistema
  • Specificare i criteri di selezione del certificato
    • Solo certificati hardware
    • Certificati concatenati tramite un set specificato di autorità emittenti
    • Selezionare automaticamente un certificato dall'archivio applicazioni

Articoli dettagliati

Gli articoli seguenti forniscono altri dettagli sugli scenari di sicurezza:

Argomento Descrizione
Attestati Questo articolo illustra l'uso dei certificati nelle app WinUI. I certificati digitali vengono usati nella crittografia a chiave pubblica per associare una chiave pubblica a una persona, un computer o un'organizzazione. Le identità associate vengono usate più spesso per autenticare un'entità in un'altra. Ad esempio, i certificati vengono spesso usati per autenticare un server Web a un utente e a un utente in un server Web. È possibile creare richieste di certificato e installare o importare i certificati rilasciati. È anche possibile registrare un certificato in una gerarchia di certificati.
Chiavi crittografiche Questo articolo illustra come usare le funzioni di derivazione delle chiavi standard per derivare le chiavi e come crittografare il contenuto usando chiavi simmetriche e asimmetriche.
Protezione dei dati Questo articolo illustra come usare la classe DataProtectionProvider nello spazio dei nomi Windows.Security.Cryptography.DataProtection per crittografare e decrittografare i dati digitali in un'app WinUI.
MAC, hash e firme digitali Questo articolo illustra in che modo i codici di autenticazione dei messaggi ,gli hash e le firme possono essere usati nelle app WinUI per rilevare la manomissione dei messaggi.
Restrizioni di esportazione per la crittografia Usa queste informazioni per determinare se la tua app usa la crittografia in modo da impedire che venga elencata in Microsoft Store.
Attività di crittografia comuni Questi articoli forniscono codice di esempio per attività di crittografia WinUI comuni, ad esempio la creazione di numeri casuali, il confronto di buffer, la conversione tra stringhe e dati binari, la copia da e verso matrici di byte e la codifica e la decodifica dei dati.