Esta guía documenta la nueva consola de administración de AWS Wickr, lanzada el 13 de marzo de 2025. Para obtener documentación sobre la versión clásica de la consola de administración de AWS Wickr, consulte la Guía de administración clásica.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cifrado en reposo
El servicio de retención de datos de AWS Wickr cifra de forma transparente todos los mensajes y archivos adjuntos retenidos en reposo de forma predeterminada. No necesita realizar ninguna configuración adicional para garantizar que sus datos estén cifrados en reposo. El Servicio de retención de datos aplica el cifrado en el servidor a todos los datos de los clientes almacenados en Amazon S3.
El servicio de retención de datos cifra los datos inactivos de los clientes mediante una clave KMS (CMK) administrada por el cliente. Al implementar el servicio de retención de datos AWS Service Catalog, se crea automáticamente una CMK simétrica en su cuenta y se configura como clave de cifrado predeterminada para todos los datos retenidos. Usted conserva el control total sobre esta clave, incluida la posibilidad de auditar el uso, rotar la clave y revocar el acceso.
Cifrar los datos en reposo mediante claves KMS administradas por el cliente para la retención de datos
Cómo utiliza el servicio de retención de datos una clave KMS administrada por el cliente
Cuando se implementa el servicio de retención de datos, se crea en su AWS cuenta una clave KMS simétrica administrada por el cliente (RetentionKey). Esta clave se utiliza para cifrar los siguientes recursos:
-
Mensajes retenidos: todos los mensajes de Wickr (texto, reacciones y otros) capturados por el robot de retención de datos se cifran con la CMK antes de almacenarlos en el depósito de S3. Los mensajes se cifran dentro de un Nitro Enclave mediante el SDK de AWS cifrado y, a continuación, se cargan en Amazon S3 SSE-KMS con la misma CMK.
-
Archivos adjuntos retenidos: los archivos adjuntos asociados a los mensajes se descifran mediante el cifrado de extremo a extremo de Wickr dentro del Nitro Enclave, se vuelven a cifrar con la CMK y se almacenan en Amazon S3 con. SSE-KMS
-
Estado de la cuenta cifrada: las claves privadas criptográficas y el estado de la cuenta del bot de retención de datos se cifran con la CMK y se almacenan en DynamoDB. El descifrado de este estado requiere la certificación de Nitro Enclave.
-
Cifrado predeterminado del bucket S3: el bucket de retención S3 se configura SSE-KMS utilizando la CMK como clave de cifrado predeterminada. Una política de bucket exige que todos los objetos se carguen con un cifrado del lado
aws:kmsdel servidor. -
Depósito de salida descifrado: cuando los clientes activan el descifrado bajo demanda (mediante la máquina de estados Step Functions), el resultado descifrado también se almacena en un depósito S3 independiente cifrado con la misma CMK.
Cross-account arquitectura de roles
El servicio de retención de datos funciona en una Wickr-managed AWS cuenta y accede a los recursos de los clientes a través de una función de IAM multicuenta (). DRSCustomerCrossAccountRole-{networkId}-{region} La función de enclave DRS de Wickr asume esta función del lado del cliente y utiliza AWS STS un identificador externo (wickr-drs-{networkId}) para realizar las operaciones de KMS y S3.
Certificación de Nitro Enclave
kms:DecryptLas llamadas directas (fuera de S3 SSE-KMS) requieren la certificación de Nitro Enclave. La política clave de KMS exige que se den kms:RecipientAttestation:PCR0 las kms:RecipientAttestation:PCR2 condiciones necesarias para garantizar que el descifrado de los datos confidenciales (estado de la cuenta, contenido de los mensajes) solo pueda realizarse dentro del enclave verificado. kms:RecipientAttestation:PCR1 Esto impide que cualquier operador, incluido Wickr, descifre los datos de los clientes fuera del enclave.
AWS Nitro Enclaves procesa los mensajes con su clave KMS para descifrar las claves privadas del módulo de retención de datos, descifrar el contenido del mensaje y volver a cifrarlo con una clave de datos única por Wickr-encrypted mensaje antes de almacenarlo en su bucket de S3.
Configuración de las claves KMS administradas por el cliente en el Servicio de retención de datos
El servicio de retención de datos admite claves KMS simétricas con el uso ENCRYPT_DECRYPT y las especificaciones SYMMETRIC_DEFAULT clave. La rotación automática de claves está habilitada de forma predeterminada cuando la clave se crea mediante Service Catalog.
Además, se crea una segunda clave KMS asimétrica (ECC_NIST_P384, KEY_AGREEMENT) para el flujo de trabajo de recuperación de contraseñas. Esta clave se utiliza para el acuerdo de claves del ECDH y no se puede utilizar con fines generales. encryption/decryption Esta clave se usa opcionalmente para los clientes que migran desde una arquitectura basada en Docker de Data Retention Bot.
nota
Multi-region las claves no son compatibles actualmente. La clave KMS debe estar en la misma región que el depósito de S3 y la implementación del servicio de retención de datos.
Configurar los permisos para usar una clave KMS administrada por el cliente
La siguiente política clave se configura automáticamente cuando se implementa mediante Service Catalog. Si necesita configurar una clave manualmente, utilice la siguiente política de privilegios mínimos:
{ "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" } } } ] }
Propósito de cada declaración:
- Habilitar las políticas de IAM
-
Permite que el administrador de la cuenta administre la clave. Esta es la declaración estándar del administrador clave.
- EnclaveGenerateDataKey
-
kms:GenerateDataKey— Nitro Enclave lo invoca para generar claves de cifrado de datos para cifrar el contenido de los mensajes y el estado de la cuenta antes de almacenarlos en S3. Solo se permite cuando el enclave proporciona un documento de certificación de Nitro Enclave válido (PCR0/1/2condiciones) y contiene una clave de contexto de cifrado aws:wickr:network:id o aws:wickr:app:id. - EnclaveDescribeKey
-
kms:DescribeKey— Permite que el enclave recupere los metadatos clave (especificaciones, uso y estado de la clave) para su validación durante la inicialización. - EnclaveDecryptWithAttestation
-
kms:Decrypt— El Nitro Enclave lo invoca para descifrar el estado de la cuenta (claves privadas) necesario para descifrar los mensajes de Wickr. Esto solo está permitido cuando el enclave proporciona un documento de certificación de Nitro Enclave válido (PCR0/1/2 condiciones) y la clave de contexto de cifrado aws:wickr:app:id está presente, lo que garantiza que el descifrado no pueda realizarse fuera del enclave. - DRSDecryptionLambda
-
kms:Decrypt— La Lambda de descifrado bajo demanda lo invoca para descifrar los mensajes retenidos al activar la máquina de estado de descifrado. El servicio Wickr no puede acceder a esta función y existe únicamente para que puedas descifrar tus propios mensajes del depósito de S3 cifrado.
Si se requiere la migración desde una instalación de retención de datos anterior, debe proporcionar la contraseña del Docker-bot módulo al servicio para poder habilitar la retención de datos sin servidor. Para obtener más información, consulte, Instrucción de recuperación de contraseña. Para obtener más información sobre la política requerida para la clave de recuperación de la contraseña, consulteConfiguración de clave KMS personalizada para el servicio de retención de datos.
Si necesita configurar manualmente la clave de KMS, consulte Configuración de clave KMS personalizada para el servicio de retención de datos la política menos permisiva para su clave.
Crear una nueva implementación de retención de datos con una clave KMS administrada por el cliente
El servicio de retención de datos se implementa mediante AWS Service Catalog. Al lanzar el WickrDataRetentionProduct producto, la CloudFormation plantilla automáticamente:
-
Crea una CMK simétrica con un alias
wickr-drs-{networkId}-{region}-{suffix}-key -
Crea una CMK asimétrica (ECC P-384) para recuperar la contraseña con un alias
wickr-drs-{networkId}-{region}-{suffix}-password-recovery-key -
Crea un bucket S3 con el cifrado SSE-KMS predeterminado mediante la CMK simétrica
-
Crea el
DRSCustomerCrossAccountRolecon los permisos de KMS adecuados -
Registra la clave de KMS, el ARN y el bucket de S3 en la API de administración de Wickr mediante una Lambda de recursos personalizada.
El ARN de la clave KMS también se registra a través del punto final del SDK de Wickr Admin:
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}" }
El kmsKeyArn parámetro debe ser un ARN de clave KMS válido. La API valida el formato ARN antes de almacenarlo.
Cambiar la configuración de cifrado en una implementación existente
El servicio de retención de datos no admite actualmente el cambio de la CMK después de la implementación. La clave KMS está estrechamente vinculada a:
-
La configuración de cifrado predeterminada del bucket S3
-
El estado de la cuenta cifrada almacenado en DynamoDB
-
La política clave con las condiciones de certificación de Nitro Enclave
Para cambiar la clave de cifrado, debe:
-
Implemente una nueva instancia del servicio de retención de datos con una nueva clave KMS.
-
Los mensajes guardados anteriormente y cifrados con la clave anterior permanecen accesibles solo con la clave original.
importante
No deshabilite ni elimine la clave KMS original mientras haya mensajes cifrados en el depósito de retención. Si lo hace, esos mensajes serán irrecuperables de forma permanente.
Limitar el acceso a la clave KMS administrada por el cliente
Certificación de Nitro Enclave (control de acceso principal)
El mecanismo principal para determinar el alcance del acceso a la CMK es la certificación de Nitro Enclave. La política clave exige y PCR2 condiciona kms:RecipientAttestation:PCR0 las PCR1 llamadas directas. kms:Decrypt Esto garantiza:
-
Solo el binario verificado del enclave DRS de Wickr puede descifrar datos confidenciales.
-
Incluso el rol multicuenta no puede descifrar datos fuera del enclave.
-
CloudTrail los registros incluyen los valores de PCR reales para la auditoría.
Protección de suplente confuso
La función multicuenta utiliza un identificador externo (wickr-drs-{networkId}) en la AssumeRole llamada STS. De este modo, se evitan confusos ataques de subalternos en los que otro servicio podría intentar utilizar la función de enclave DRS de Wickr para acceder a tus recursos.
kms: condición ViaService
El alcance de las operaciones SSE-KMS de descifrado de S3 se determina mediante la kms:ViaService condición. Esto garantiza que el S3-mediated descifrado solo esté permitido cuando la solicitud llegue a través del servicio S3.
Contexto de cifrado
S3 incluye SSE-KMS automáticamente el ARN del objeto S3 como contexto de cifrado. La política de claves utiliza este contexto de cifrado para limitar los permisos de descifrado de S3 a prefijos específicos (por ejemplo, el prefijo de la herramienta de contraseñas).
Supervisar la interacción del Servicio de Retención de Datos con AWS KMS
Puede supervisar todas las llamadas a la API de KMS realizadas por el Servicio de Retención de Datos mediante CloudTrail. Para buscar entradas de CloudTrail registro, utilice la CloudTrail consola o la CloudTrail LookupEvents operación.
Los siguientes campos de CloudTrail eventos se pueden usar para auditar el uso del KMS por parte del Servicio de retención de datos:
| Campo | Valor esperado |
|---|---|
eventName |
Encrypt, Decrypt,
GenerateDataKey |
userIdentity.arn |
arn:aws:sts:: o drs-create-account o drs-password-recovery |
requestParameters.keyId |
Su ARN CMK (por ejemplo,) arn:aws:kms: |
additionalEventData.recipient.attestationDocument |
Está presente para las llamadas de Decrypt certificadas por el enclave (contiene valores de PCR) |
requestParameters.encryptionContext |
SSE-KMSPara S3: {"aws:s3:arn":
"arn:aws:s3::: |
Eventos clave que se deben monitorear:
-
Cifrar: se produce cuando el enclave cifra el contenido del mensaje o el estado de la cuenta antes de almacenarlo. S3/DynamoDB
-
GenerateDataKey— Se produce cuando S3 genera una clave de datos para el cifrado del SSE-KMS sobre durante la carga del objeto.
-
Descifrar: se produce cuando el enclave descifra el estado de la cuenta (con certificación) o cuando S3 descifra automáticamente los objetos al leerlos.
-
DeriveSharedSecret— Se produce en la clave de recuperación de la contraseña cuando el enclave acuerda la clave ECDH durante el flujo de recuperación de la contraseña.
-
GetPublicKey— Aparece en la clave de recuperación de la contraseña cuando el
collect.pyscript recupera la clave pública para el cifrado ECDH local.
Además, el producto Service Catalog crea un CloudWatch panel (WickrDataRetentionService-) que incluye widgets para las métricas de éxito clave de KMS (operaciones de cifrado y descifrado) y una alarma de error de descifrado que se activa cuando se detectan errores de descifrado. GenerateDataKey{networkId}