이 가이드는 2025년 3월 13일에 릴리스된 새로운 AWS Wickr 관리 콘솔을 문서화합니다. AWS Wickr 관리 콘솔의 클래식 버전에 대한 설명서는 Classic 관리 안내서를 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
저장 시 암호화
AWS Wickr Data Retention Service는 기본적으로 보관된 모든 메시지와 유휴 파일 첨부 파일을 투명하게 암호화합니다. 저장 시 데이터가 암호화되도록 추가 구성을 수행할 필요가 없습니다. 데이터 보존 서비스는 Amazon S3에 저장된 모든 고객 데이터에 대해 서버 측에 암호화를 적용합니다.
데이터 보존 서비스는 고객 관리형 KMS 키(CMK)를 사용하여 고객 저장 데이터를 암호화합니다. 를 통해 데이터 보존 서비스를 배포하면 AWS Service Catalog대칭 CMK가 계정에 자동으로 생성되고 보관된 모든 데이터의 기본 암호화 키로 구성됩니다. 사용을 감사하고, 키를 교체하고, 액세스를 취소하는 기능을 포함하여이 키를 완전히 제어할 수 있습니다.
데이터 보존을 위해 고객 관리형 KMS 키를 사용하여 저장 데이터 암호화
데이터 보존 서비스가 고객 관리형 KMS 키를 사용하는 방법
데이터 보존 서비스가 배포되면 AWS 대칭 고객 관리형 KMS 키(RetentionKey)가 계정에 생성됩니다. 이 키는 다음 리소스를 암호화하는 데 사용됩니다.
-
보관된 메시지 - 데이터 보존 봇이 캡처한 모든 Wickr 메시지(텍스트, 반응 등)는 S3 버킷에 저장되기 전에 CMK로 암호화됩니다. 메시지는 AWS 암호화 SDK를 사용하여 Nitro Enclave 내에서 암호화된 다음 동일한 CMK를 사용하여 SSE-KMS를 사용하여 Amazon S3에 업로드됩니다.
-
보관된 파일 첨부 파일 - 메시지와 연결된 파일 첨부 파일은 Nitro Enclave 내에서 Wickr의 end-to-end 암호화에서 해독되고, CMK로 다시 암호화되며, SSE-KMS를 사용하여 Amazon S3에 저장됩니다.
-
암호화된 계정 상태 - 데이터 보존 봇의 암호화 프라이빗 키 및 계정 상태는 CMK로 암호화되어 DynamoDB에 저장됩니다. 이 상태를 해독하려면 Nitro Enclave 증명이 필요합니다.
-
S3 버킷 기본 암호화 - 보존 S3 버킷은 CMK를 기본 암호화 키로 사용하여 SSE-KMS로 구성됩니다. 버킷 정책은
aws:kms서버 측 암호화를 사용하여 모든 객체를 업로드하도록 적용합니다. -
복호화된 출력 버킷 - 고객이 온디맨드 복호화(Step Functions 상태 시스템을 통해)를 트리거하면 복호화된 출력도 동일한 CMK로 암호화된 별도의 S3 버킷에 저장됩니다.
교차 계정 역할 아키텍처
데이터 보존 서비스는 Wickr 관리 AWS 계정에서 작동하며 교차 계정 IAM 역할()을 통해 고객 리소스에 액세스합니다DRSCustomerCrossAccountRole-{networkId}-{region}. Wickr DRS Enclave 역할은 외부 ID(wickr-drs-{networkId})와 AWS STS 함께를 사용하여이 고객 측 역할을 수임하여 KMS 및 S3 작업을 수행합니다.
Nitro Enclave 증명
직접 kms:Decrypt 호출(S3 SSE-KMS 외부)에는 Nitro Enclave 증명이 필요합니다. KMS 키 정책은 kms:RecipientAttestation:PCR0, kms:RecipientAttestation:PCR1및 kms:RecipientAttestation:PCR2 조건이 존재해야 함을 적용하여 민감한 데이터(계정 상태, 메시지 콘텐츠)의 복호화가 확인된 엔클레이브 내에서만 발생할 수 있도록 합니다. 이렇게 하면 Wickr를 포함한 모든 운영자가 엔클레이브 외부에서 고객 데이터를 해독하는 것을 방지할 수 있습니다.
AWS Nitro Enclaves는 KMS 키를 사용하여 메시지를 처리하여 데이터 보존 모듈의 프라이빗 키를 해독하고, Wickr로 암호화된 메시지 콘텐츠를 해독하고, S3 버킷에 저장하기 전에 메시지당 고유한 데이터 키로 다시 암호화합니다.
데이터 보존 서비스에서 고객 관리형 KMS 키 구성
데이터 보존 서비스는 키 사용 ENCRYPT_DECRYPT 및 키 사양이 인 대칭 KMS 키를 지원합니다SYMMETRIC_DEFAULT. 자동 키 교체는 Service Catalog를 통해 키를 생성할 때 기본적으로 활성화됩니다.
또한 암호 복구 워크플로를 위해 두 번째 비대칭 KMS 키(ECC_NIST_P384, KEY_AGREEMENT)가 생성됩니다. 이 키는 ECDH 키 계약에 사용되며 일반 암호화/암호 해독에는 사용할 수 없습니다. 이 키는 데이터 보존 봇 도커 기반 아키텍처에서 마이그레이션하는 고객에게 선택적으로 사용됩니다.
참고
다중 리전 키는 현재 지원되지 않습니다. KMS 키는 S3 버킷 및 데이터 보존 서비스 배포와 동일한 리전에 있어야 합니다.
고객 관리형 KMS 키를 사용하도록 권한 구성
Service Catalog를 통해 배포할 때 다음 키 정책이 자동으로 구성됩니다. 키를 수동으로 구성해야 하는 경우 다음 최소 권한 정책을 사용합니다.
{ "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" } } } ] }
각 문의 용도:
- EnableIAMPolicies
-
계정 루트가 키를 관리할 수 있도록 허용합니다. 표준 키 관리자 문입니다.
- EnclaveGenerateDataKey
-
kms:GenerateDataKey- Nitro Enclave에서 로 호출하여 S3에 저장하기 전에 메시지 콘텐츠 및 계정 상태를 암호화하기 위한 데이터 암호화 키를 생성합니다. 엔클레이브가 유효한 Nitro Enclave 증명 문서(PCR0/1/2 조건)와 aws:wickr:network:id 또는 aws:wickr:app:id의 암호화 컨텍스트 키를 제공하는 경우에만 허용됩니다. - EnclaveDescribeKey
-
kms:DescribeKey- 엔클레이브가 초기화 중에 검증을 위해 키 메타데이터(키 사양, 사용량, 상태)를 검색할 수 있도록 허용합니다. - EnclaveDecryptWithAttestation
-
kms:Decrypt- Nitro Enclave에서 Wickr 메시지 복호화에 필요한 계정 상태(프라이빗 키)를 복호화하기 위해 호출합니다. 이는 엔클레이브가 유효한 Nitro Enclave 증명 문서(PCR0/1/2 조건)를 제공하고 암호화 컨텍스트 키 aws:wickr:app:id가 있는 경우에만 허용되므로 엔클레이브 외부에서 복호화가 발생하지 않습니다. - DRSDecryptionLambda
-
kms:Decrypt- 복호화 상태 시스템을 트리거할 때 보관된 메시지를 복호화하기 위해 온디맨드 복호화 Lambda에서 호출합니다. 이 역할은 Wickr 서비스에서 액세스할 수 없으며 암호화된 S3 버킷에서 자체 메시지를 해독하기 위한 용도로만 존재합니다.
이전 데이터 보존 설치에서 마이그레이션이 필요한 경우 서버리스 데이터 보존을 활성화하려면 먼저 서비스에 Docker-bot 모듈 암호를 제공해야 합니다. 자세한 내용은 단원을 참조하십시오암호 복구 지침. 암호 복구 키에 필요한 정책에 대한 자세한 내용은 섹션을 참조하세요데이터 보존 서비스를 위한 사용자 지정 KMS 키 설정.
KMS 키를 수동으로 구성해야 하는 경우 키데이터 보존 서비스를 위한 사용자 지정 KMS 키 설정에 대한 최소 허용 정책은 섹션을 참조하세요.
고객 관리형 KMS 키를 사용하여 새 데이터 보존 배포 생성
데이터 보존 서비스는를 통해 배포됩니다 AWS Service Catalog. WickrDataRetentionProduct 제품을 시작하면 CloudFormation 템플릿이 자동으로 다음을 수행합니다.
-
별칭이 있는 대칭 CMK를 생성합니다.
wickr-drs-{networkId}-{region}-{suffix}-key -
별칭을 사용하여 암호 복구를 위한 비대칭 CMK(ECC P-384)를 생성합니다.
wickr-drs-{networkId}-{region}-{suffix}-password-recovery-key -
대칭 CMK를 사용하여 SSE-KMS 기본 암호화로 S3 버킷을 생성합니다.
-
적절한 KMS 권한
DRSCustomerCrossAccountRole으로를 생성합니다. -
사용자 지정 리소스 Lambda를 통해 KMS 키 ARN 및 S3 버킷을 Wickr Admin API에 등록합니다.
KMS 키 ARN은 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}" }
kmsKeyArn 파라미터는 유효한 KMS 키 ARN이어야 합니다. API는 저장하기 전에 ARN 형식을 검증합니다.
기존 배포에서 암호화 구성 변경
데이터 보존 서비스는 현재 배포 후 CMK 변경을 지원하지 않습니다. KMS 키는 다음과 긴밀하게 연결됩니다.
-
S3 버킷의 기본 암호화 구성
-
DynamoDB에 저장된 암호화된 계정 상태
-
Nitro Enclave 증명 조건이 포함된 키 정책
암호화 키를 변경하려면 다음을 수행해야 합니다.
-
새 KMS 키를 사용하여 새 데이터 보존 서비스 인스턴스를 배포합니다.
-
이전 키로 암호화된 이전에 보관된 메시지는 원본 키로만 액세스할 수 있습니다.
중요
암호화된 메시지가 보존 버킷에 있는 동안에는 원본 KMS 키를 비활성화하거나 삭제하지 마십시오. 이렇게 하면 해당 메시지를 영구적으로 복구할 수 없게 됩니다.
고객 관리형 KMS 키에 대한 액세스 범위 축소
Nitro Enclave 증명(기본 액세스 제어)
CMK에 대한 액세스 범위를 조정하는 기본 메커니즘은 Nitro Enclave 증명입니다. 키 정책에는 직접 kms:Decrypt 호출에 대한 kms:RecipientAttestation:PCR0PCR1, 및 PCR2 조건이 필요합니다. 이렇게 하면 다음이 보장됩니다.
-
확인된 Wickr DRS 엔클레이브 바이너리만 민감한 데이터를 해독할 수 있습니다.
-
교차 계정 역할도 엔클레이브 외부의 데이터를 해독할 수 없습니다.
-
CloudTrail 로그에는 감사를 위한 실제 PCR 값이 포함됩니다.
혼동된 대리자 보호
교차 계정 역할은 STS AssumeRole 호출에서 외부 ID(wickr-drs-{networkId})를 사용합니다. 이렇게 하면 다른 서비스가 Wickr DRS 엔클레이브 역할을 사용하여 리소스에 액세스하려고 시도할 수 있는 혼동된 대리자 공격이 방지됩니다.
kms:ViaService 조건
S3 SSE-KMS 복호화 작업은 kms:ViaService 조건을 사용하여 범위가 지정됩니다. 이렇게 하면 요청이 S3-mediated 복호화가 허용됩니다. S3
암호화 컨텍스트
S3 SSE-KMS는 S3 객체 ARN을 암호화 컨텍스트로 자동으로 포함합니다. 키 정책은이 암호화 컨텍스트를 사용하여 S3 복호화 권한의 범위를 특정 접두사(예: 암호 도구 접두사)로 지정합니다.
와의 데이터 보존 서비스 상호 작용 모니터링 AWS KMS
CloudTrail을 사용하여 데이터 보존 서비스에서 수행한 모든 KMS API 호출을 모니터링할 수 있습니다. CloudTrail 로그 항목을 검색하려면 CloudTrail 콘솔 또는 CloudTrail LookupEvents 작업을 사용합니다.
다음 CloudTrail 이벤트 필드를 사용하여 데이터 보존 서비스의 KMS 사용량을 감사할 수 있습니다.
| Field | 예상 값 |
|---|---|
eventName |
Encrypt, Decrypt,
GenerateDataKey |
userIdentity.arn |
arn:aws:sts::, drs-create-account 또는 drs-password-recovery |
requestParameters.keyId |
CMK ARN(예: arn:aws:kms:) |
additionalEventData.recipient.attestationDocument |
엔클레이브 인증 복호화 호출에 현재 있음(PCR 값 포함) |
requestParameters.encryptionContext |
S3 SSE-KMS의 경우: {"aws:s3:arn": "arn:aws:s3::: |
모니터링할 주요 이벤트:
-
암호화 - 엔클레이브가 S3/DynamoDB에 저장하기 전에 메시지 콘텐츠 또는 계정 상태를 암호화할 때 발생합니다.
-
GenerateDataKey - 객체 업로드 중에 S3가 SSE-KMS 봉투 암호화를 위한 데이터 키를 생성할 때 발생합니다.
-
복호화 - 엔클레이브가 계정 상태(증명 포함)를 복호화하거나 S3가 읽기 시 객체를 자동 복호화할 때 발생합니다.
-
DeriveSharedSecret - 엔클레이브가 암호 복구 흐름 중에 ECDH 키 계약을 수행할 때 암호 복구 키에서 발생합니다.
-
GetPublicKey
collect.py- 스크립트가 로컬 ECDH 암호화를 위한 퍼블릭 키를 검색할 때 암호 복구 키에서 발생합니다.
또한 Service Catalog 제품은 KMS 키 성공 지표(암호화, GenerateDataKey, 복호화 작업WickrDataRetentionService-)에 대한 위젯과 복호화 실패가 감지될 때 트리거되는 복호화 오류 경보를 포함하는 CloudWatch 대시보드()를 생성합니다.{networkId}