View a markdown version of this page

Crittografia dei dati a riposo - AWS Wickr

Questa guida documenta la nuova console di amministrazione AWS Wickr, rilasciata il 13 marzo 2025. Per la documentazione sulla versione classica della console di amministrazione AWS Wickr, consulta la Classic Administration Guide.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crittografia dei dati a riposo

Per impostazione predefinita, AWS Wickr Data Retention Service crittografa in modo trasparente tutti i messaggi e i file allegati conservati. Non è necessario eseguire alcuna configurazione aggiuntiva per garantire che i dati siano crittografati quando sono inattivi. Il servizio di conservazione dei dati applica la crittografia sul lato server per tutti i dati dei clienti archiviati in Amazon S3.

Il servizio di conservazione dei dati crittografa i dati inattivi dei clienti utilizzando una chiave KMS (CMK) gestita dal cliente. Quando si implementa il servizio di conservazione dei dati tramite AWS Service Catalog, una CMK simmetrica viene creata automaticamente nell'account e configurata come chiave di crittografia predefinita per tutti i dati conservati. Mantieni il pieno controllo su questa chiave, inclusa la possibilità di controllare l'utilizzo, ruotare la chiave e revocare l'accesso.

Crittografia dei dati inattivi utilizzando chiavi KMS gestite dal cliente per la conservazione dei dati

In che modo il servizio di conservazione dei dati utilizza una chiave KMS gestita dal cliente

Quando viene implementato il servizio di conservazione dei dati, nell'account viene creata una chiave KMS simmetrica gestita dal cliente (RetentionKey). AWS Questa chiave viene utilizzata per crittografare le seguenti risorse:

  • Messaggi conservati: tutti i messaggi Wickr (testo, reazioni e altro) acquisiti dal bot di conservazione dei dati vengono crittografati con CMK prima di essere archiviati nel bucket S3. I messaggi vengono crittografati all'interno di un'enclave Nitro utilizzando l' AWS Encryption SDK, quindi caricati su Amazon S3 utilizzando lo stesso CMK. SSE-KMS

  • File allegati conservati: i file allegati associati ai messaggi vengono decrittografati dalla crittografia end-to-end di Wickr all'interno di Nitro Enclave, ricrittografati con CMK e archiviati in Amazon S3 con. SSE-KMS

  • Stato dell'account crittografato: le chiavi private crittografiche e lo stato dell'account del bot di conservazione dei dati sono crittografati con CMK e archiviati in DynamoDB. La decrittografia di questo stato richiede l'attestazione di Nitro Enclave.

  • Crittografia predefinita del bucket S3: il bucket di conservazione S3 è configurato con l'utilizzo di CMK come chiave di crittografia predefinita. SSE-KMS Una policy bucket impone che tutti gli oggetti debbano essere caricati con la crittografia lato server. aws:kms

  • Bucket di output decrittografato: quando i clienti attivano la decrittografia su richiesta (tramite la macchina a stati Step Functions), l'output decrittografato viene archiviato anche in un bucket S3 separato crittografato con lo stesso CMK.

Cross-account architettura dei ruoli

Il servizio di conservazione dei dati opera su un Wickr-managed AWS account e accede alle risorse dei clienti tramite un ruolo IAM multiaccount ()DRSCustomerCrossAccountRole-{networkId}-{region}. Il ruolo Wickr DRS Enclave assume questo ruolo sul lato cliente e si avvale di un ID esterno () per eseguire operazioni AWS STS KMS e S3. wickr-drs-{networkId}

Attestazione Nitro Enclave

kms:DecryptLe chiamate dirette (al di fuori di S3 SSE-KMS) richiedono l'attestazione Nitro Enclave. La policy chiave KMS impone che siano presenti le kms:RecipientAttestation:PCR2 condizioni, and kms:RecipientAttestation:PCR0kms:RecipientAttestation:PCR1, per garantire che la decrittografia dei dati sensibili (stato dell'account, contenuto dei messaggi) possa avvenire solo all'interno dell'enclave verificata. Ciò impedisce a qualsiasi operatore, incluso Wickr, di decifrare i dati dei clienti al di fuori dell'enclave.

AWS Le enclavi Nitro elaborano i messaggi utilizzando la chiave KMS per decrittografare le chiavi private del modulo di conservazione dei dati, decrittografare il contenuto del messaggio e ricrittografarlo con una chiave dati unica per Wickr-encrypted messaggio prima di archiviarlo nel bucket S3.

Configurazione delle chiavi KMS gestite dal cliente in Data Retention Service

Il servizio di conservazione dei dati supporta chiavi KMS simmetriche con utilizzo e specifiche chiave. ENCRYPT_DECRYPT SYMMETRIC_DEFAULT La rotazione automatica dei tasti è abilitata per impostazione predefinita quando la chiave viene creata tramite Service Catalog.

Inoltre, viene creata una seconda chiave KMS asimmetrica (ECC_NIST_P384, KEY_AGREEMENT) per il flusso di lavoro di recupero della password. Questa chiave viene utilizzata per l'accordo chiave ECDH e non può essere utilizzata per scopi generali. encryption/decryption Questa chiave viene utilizzata opzionalmente per i clienti che migrano da un'architettura basata su docker Data Retention Bot.

Nota

Multi-region le chiavi non sono attualmente supportate. La chiave KMS deve trovarsi nella stessa regione del bucket S3 e della distribuzione del servizio di conservazione dei dati.

Configurazione delle autorizzazioni per l'utilizzo di una chiave KMS gestita dal cliente

La seguente politica chiave viene configurata automaticamente durante la distribuzione tramite Service Catalog. Se è necessario configurare manualmente una chiave, utilizza la seguente politica di privilegi minimi:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "YourExistingStatements", "Effect": "...", "...": "..." }, { "Sid": "EnclaveGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/DRSCustomerCrossAccountRole-{networkId}-{region}" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": [ "aws:wickr:network:id", "aws:wickr:app:id" ] } } }, { "Sid": "EnclaveDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/DRSCustomerCrossAccountRole-{networkId}-{region}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "EnclaveDecryptWithAttestation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/DRSCustomerCrossAccountRole-{networkId}-{region}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:app:id" } } }, { "Sid": "DRSDecryptionLambda", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/{DecryptionLambdaRoleName}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:network:id" } } } ] }

Scopo di ogni dichiarazione:

Abilita le politiche IAM

Consente all'account root di gestire la chiave. Questa è la dichiarazione standard dell'amministratore delle chiavi.

EnclaveGenerateDataKey

kms:GenerateDataKey— Richiamato da Nitro Enclave per generare chiavi di crittografia dei dati per crittografare il contenuto dei messaggi e lo stato dell'account prima dell'archiviazione in S3. Consentito solo quando l'enclave fornisce un documento di attestazione Nitro Enclave valido (PCR0/1/2condizioni) e una chiave di contesto di crittografia aws:wickr:network:id o aws:wickr:app:id.

EnclaveDescribeKey

kms:DescribeKey— Consente all'enclave di recuperare i metadati chiave (specifiche chiave, utilizzo, stato) per la convalida durante l'inizializzazione.

EnclaveDecryptWithAttestation

kms:Decrypt— Richiamato da Nitro Enclave per decrittografare lo stato dell'account (chiavi private) necessario per la decrittografia dei messaggi Wickr. Ciò è consentito solo quando l'enclave fornisce un documento di attestazione Nitro Enclave valido (PCR0/1/2 condizioni) e la chiave del contesto di crittografia aws:wickr:app:id è presente, garantendo che la decrittografia non possa avvenire al di fuori dell'enclave.

DRSDecryptionLambda

kms:Decrypt— Richiamato dalla funzionalità di decrittografia su richiesta Lambda per decrittografare i messaggi conservati quando si attiva la macchina a stati di decrittografia. Questo ruolo non è accessibile dal servizio Wickr e serve esclusivamente all'utente per decrittografare i propri messaggi dal bucket S3 crittografato.

Se è richiesta la migrazione da una precedente installazione di conservazione dei dati, è necessario fornire la password del Docker-bot modulo al servizio prima di poter abilitare la conservazione dei dati senza server. Per ulteriori informazioni, consultare Istruzioni per il recupero della password. Per i dettagli sulla politica richiesta per la chiave di recupero della password, consultaConfigurazione delle chiavi KMS personalizzate per il servizio di conservazione dei dati.

Se devi configurare manualmente la chiave KMS, consulta la politica meno permissiva Configurazione delle chiavi KMS personalizzate per il servizio di conservazione dei dati per la tua chiave.

Creazione di una nuova implementazione di Data Retention con una chiave KMS gestita dal cliente

Il servizio di conservazione dei dati viene distribuito tramite. AWS Service Catalog All'avvio del WickrDataRetentionProduct prodotto, il CloudFormation modello automaticamente:

  1. Crea una CMK simmetrica con alias wickr-drs-{networkId}-{region}-{suffix}-key

  2. Crea una CMK (ECC) asimmetrica per il recupero della password con alias P-384 wickr-drs-{networkId}-{region}-{suffix}-password-recovery-key

  3. Crea un bucket S3 con crittografia predefinita utilizzando la CMK simmetrica SSE-KMS

  4. Crea il KMS con le autorizzazioni KMS appropriate DRSCustomerCrossAccountRole

  5. Registra la chiave KMS ARN e il bucket S3 con l'API di amministrazione di Wickr tramite una Custom Resource Lambda

L'ARN della chiave KMS è anche registrata tramite l'endpoint Wickr Admin SDK:

PUT /networks/{networkId}/serverless-resources { "s3BucketName": "wickr-drs-{networkId}-{region}-{suffix}", "kmsKeyArn": "arn:aws:kms:{region}:{accountId}:key/{keyId}", "passwordRecoveryKmsKeyArn": "arn:aws:kms:{region}:{accountId}:key/{keyId}" }

Il kmsKeyArn parametro deve essere una chiave KMS ARN valida. L'API convalida il formato ARN prima di archiviarlo.

Modifica della configurazione di crittografia su una distribuzione esistente

Il servizio di conservazione dei dati attualmente non supporta la modifica della CMK dopo la distribuzione. La chiave KMS è strettamente associata a:

  • La configurazione di crittografia predefinita del bucket S3

  • Lo stato dell'account crittografato archiviato in DynamoDB

  • La politica chiave con le condizioni di attestazione di Nitro Enclave

Per modificare la chiave di crittografia, devi:

  1. Implementa una nuova istanza del servizio di conservazione dei dati con una nuova chiave KMS.

  2. I messaggi precedentemente conservati crittografati con la vecchia chiave rimangono accessibili solo con la chiave originale.

Importante

Non disattivate o eliminate la chiave KMS originale mentre i messaggi crittografati sono presenti nel bucket di conservazione. In questo modo quei messaggi diventeranno definitivamente irrecuperabili.

Definizione dell'accesso alla chiave KMS gestita dal cliente

Attestazione Nitro Enclave (controllo dell'accesso primario)

Il meccanismo principale per definire l'accesso alla CMK è l'attestazione Nitro Enclave. La politica chiave richiede e condizioni per le kms:RecipientAttestation:PCR0 chiamate PCR1 dirette. PCR2 kms:Decrypt Ciò garantisce:

  • Solo l'enclave binaria verificata di Wickr DRS può decrittografare i dati sensibili.

  • Anche il ruolo interaccount non può decrittografare i dati al di fuori dell'enclave.

  • CloudTrail i registri includono i valori PCR effettivi per il controllo.

Vice protezione confusa

Il ruolo tra account diversi utilizza un ID esterno (wickr-drs-{networkId}) nella AssumeRole chiamata STS. In questo modo si evitano confusi attacchi secondari in cui un altro servizio potrebbe tentare di utilizzare il ruolo di enclave di Wickr DRS per accedere alle risorse dell'utente.

kms: condizione ViaService

Le operazioni di SSE-KMS decrittografia di S3 sono definite utilizzando la condizione. kms:ViaService Ciò garantisce che la S3-mediated decrittografia sia consentita solo quando la richiesta arriva tramite il servizio S3.

Contesto di crittografia

S3 include SSE-KMS automaticamente l'ARN dell'oggetto S3 come contesto di crittografia. La policy chiave utilizza questo contesto di crittografia per assegnare le autorizzazioni di decrittografia di S3 a prefissi specifici (ad esempio, il prefisso dello strumento per le password).

Monitoraggio dell'interazione del servizio di conservazione dei dati con AWS KMS

È possibile monitorare tutte le chiamate API KMS effettuate dal Data Retention Service utilizzando CloudTrail. Per cercare le voci di CloudTrail registro, usa la CloudTrail console o l' CloudTrail LookupEventsoperazione.

I seguenti campi di CloudTrail eventi possono essere utilizzati per verificare l'utilizzo del KMS da parte del servizio di conservazione dei dati:

Campo Valore previsto
eventName Encrypt, Decrypt, GenerateDataKey
userIdentity.arn arn:aws:sts::{customerAccountId}:assumed-role/DRSCustomerCrossAccountRole-{networkId}-{region} o drs-create-account o drs-password-recovery
requestParameters.keyId Il tuo ARN CMK (ad esempio,) arn:aws:kms:{region}:{accountId}:key/{keyId}
additionalEventData.recipient.attestationDocument Presente per le chiamate Decrypt attestate da enclave (contiene valori PCR)
requestParameters.encryptionContext Per SSE-KMS S3: {"aws:s3:arn": "arn:aws:s3:::{bucketName}/{objectKey}"}

Eventi chiave da monitorare:

  • Crittografa: si verifica quando l'enclave crittografa il contenuto del messaggio o lo stato dell'account prima dell'archiviazione. S3/DynamoDB

  • GenerateDataKey— Si verifica quando S3 genera una chiave dati per la crittografia delle SSE-KMS buste durante il caricamento dell'oggetto.

  • Decrittografa: si verifica quando l'enclave decrittografa lo stato dell'account (con attestazione) o quando S3 decrittografa automaticamente gli oggetti in lettura.

  • DeriveSharedSecret— Si verifica sulla chiave di recupero della password quando l'enclave esegue l'accordo di chiave ECDH durante il flusso di recupero della password.

  • GetPublicKey— Si verifica sulla chiave di recupero della password quando collect.py lo script recupera la chiave pubblica per la crittografia ECDH locale.

Inoltre, il prodotto Service Catalog crea una CloudWatch dashboard (WickrDataRetentionService-{networkId}) che include widget per le metriche di successo chiave di KMS (operazioni di crittografia e decrittografia) e un allarme di errore di decrittografia che si attiva quando vengono rilevati errori di decrittografia. GenerateDataKey