Crittografia

L'articolo offre una panoramica delle funzionalità di crittografia disponibili per app piattaforma UWP (Universal Windows Platform). 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).
Decrittografia Processo di restituzione di dati crittografati nel formato originale.
Testo non crittografato 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 si riferisce a tutti i dati crittografati.
Hashing Processo di conversione dei dati in un valore a lunghezza variabile in lunghezza fissa, in genere 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 pseudorandom 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 chiavi Contenitore per l'archiviazione del materiale della chiave. 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 (Spazi dei nomi)

Gli spazi dei nomi seguenti sono disponibili per l'uso nelle app.

Windows.Security.Cryptography

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

  • Convertire i 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 interfacce ed enumerazioni che consentono di:

  • Crittografare e decrittografare dati
  • Dati hash
  • Firmare i dati e verificare le firme
  • Creare chiavi di importazione ed esportazione
  • Usare provider di algoritmi a chiave asimmetrica
  • Usare provider di algoritmi a chiave simmetrica
  • Usare i provider di algoritmi hash
  • 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 inoltre eseguire le seguenti attività di crittografia. Per altre informazioni, vedere lo spazio dei nomi Windows.Security.Cryptography.Core.

  • Creare chiavi simmetriche
  • Eseguire la crittografia simmetrica
  • Creare chiavi simmetriche
  • Eseguire la crittografia asimmetrica
  • Derivare chiavi basate su password
  • Creare codici di autenticazione dei messaggi (MAC)
  • Contenuto dell'hash
  • Firmare digitalmente il contenuto

L'SDK offre anche un'interfaccia semplificata per la protezione dei dati basata su password. È possibile usare questo 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 PKI

Le app possono eseguire le seguenti attività PKI. 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 effettuare le seguenti azioni:

  • 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 UWP. I certificati digitali vengono utilizzati nella crittografia a chiave pubblica per associare una chiave pubblica a una persona, un computer o un'organizzazione. Le identità associate vengono spesso utilizzate per eseguire l’autenticazione di un'entità in un'altra. Ad esempio, i certificati vengono spesso usati per autenticare un server Web a un utente e un utente a un server Web. È possibile creare richieste di certificati e installare o importare certificati emessi. È anche possibile registrare un certificato in una gerarchia di certificati.
Chiavi di crittografia 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 spiega come usare la classe DataProtectionProvider nello spazio dei nomi Windows.Security.Cryptography.DataProtection per crittografare e decrittografare dati digitali in un'app UWP.
MAC, hash e firme Questo articolo illustra come utilizzare i codici di autenticazione dei messaggi (MAC), gli hash e le firme nelle app UWP per rilevare la manomissione dei messaggi.
Limitazioni di esportazione sulla crittografia Usare queste informazioni per determinare se l'app usa la crittografia in modo da impedirne l'inserimento in Microsoft Store.
Attività di crittografia comuni Questi articoli forniscono codice di esempio per le attività di crittografia UWP 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.