

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 자주 묻는 질문(FAQ)
<a name="faq"></a>

**Topics**
+ [는 AWS SDKs 어떻게 AWS Encryption SDK 다릅니까?](#aws-sdks)
+ [는 Amazon S3 암호화 클라이언트와 어떻게 AWS Encryption SDK 다릅니까?](#s3-encryption-client)
+ [에서 지원하는 암호화 알고리즘 AWS Encryption SDK과 기본 암호화 알고리즘은 무엇입니까?](#supported-algorithms-faq)
+ [초기화 벡터(IV)는 어떻게 생성되며 어디에 저장되나요?](#iv-generation)
+ [각 데이터 키는 어떻게 생성, 암호화 및 복호화되나요?](#key-generation)
+ [데이터를 암호화하는 데 사용된 데이터 키를 추적하려면 어떻게 해야 하나요?](#track-keys)
+ [는 암호화된 데이터 키를 암호화된 데이터와 함께 어떻게 AWS Encryption SDK 저장하나요?](#store-encrypted-keys)
+ [AWS Encryption SDK 메시지 형식은 내 암호화된 데이터에 얼마나 많은 오버헤드를 추가하나요?](#overhead)
+ [자체 마스터 키 공급자를 사용할 수 있나요?](#own-provider)
+ [두 개 이상의 래핑 키로 데이터를 암호화할 수 있나요?](#multiple-master-keys)
+ [로 암호화할 수 있는 데이터 유형은 무엇입니까 AWS Encryption SDK?](#data-types)
+ [는 입력/출력(I/O) 스트림을 어떻게 암호화하고 AWS Encryption SDK 해독하나요?](#streams)

## 는 AWS SDKs 어떻게 AWS Encryption SDK 다릅니까?
<a name="aws-sdks"></a>

[AWS SDKs](https://aws.amazon.com/tools/)는 AWS Key Management Service ()를 포함하여 Amazon Web Services(AWS)와 상호 작용하기 위한 라이브러리를 제공합니다AWS KMS. [AWS Encryption SDK for .NET](dot-net.md#dot-net-install) AWS Encryption SDK과 같은의 일부 언어 구현에는 항상 동일한 프로그래밍 언어의 AWS SDK가 필요합니다. 다른 언어 구현에는 키링 또는 마스터 키 공급자에서 키를 사용하는 AWS KMS 경우에만 해당 AWS SDK가 필요합니다. 자세한 정보는 [AWS Encryption SDK 프로그래밍 언어](programming-languages.md)에서 프로그래밍 언어에 대한 주제를 참조하세요.

 AWS SDKs를 사용하여 소량의 데이터(대칭 암호화 키로 최대 4,096바이트) 암호화 및 복호화, 클라이언트 측 암호화를 위한 데이터 키 생성 AWS KMS등와 상호 작용할 수 있습니다. 그러나 데이터 키를 생성할 때는 전체 암호화 및 복호화 프로세스를 관리해야 합니다. 여기에는 외부의 데이터 키를 사용한 데이터 암호화 AWS KMS, 일반 텍스트 데이터 키의 안전한 폐기, 암호화된 데이터 키 저장, 데이터 키 복호화 및 데이터 복호화가 포함됩니다. AWS Encryption SDK 에서 이 프로세스를 처리해 줍니다.

는 업계 표준 및 모범 사례를 사용하여 데이터를 암호화하고 해독하는 라이브러리를 AWS Encryption SDK 제공합니다. 데이터 키를 생성하고 지정한 래핑 키로 암호화한 다음 암호화된 데이터와 복호화에 필요한 암호화된 데이터 키가 포함된 이동 가능 데이터 객체인 *암호화된 메시지*를 반환합니다. 복호화할 때가 되면 암호화된 메시지와 하나 이상의 래핑 키(선택 사항)를 전달하면가 일반 텍스트 데이터를 AWS Encryption SDK 반환합니다.

에서를 래핑 키 AWS KMS keys 로 사용할 수 AWS Encryption SDK있지만 필수는 아닙니다. 직접 생성한 암호화 키와 키 관리자 또는 온프레미스 하드웨어 보안 모듈에서 생성한 암호화 키를 사용할 수 있습니다. AWS 계정이 없 AWS Encryption SDK 더라도를 사용할 수 있습니다.

## 는 Amazon S3 암호화 클라이언트와 어떻게 AWS Encryption SDK 다릅니까?
<a name="s3-encryption-client"></a>

 AWS SDKs의 [Amazon S3 암호화 클라이언트](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)는 Amazon Simple Storage Service(Amazon S3)에 저장하는 데이터에 대한 암호화 및 복호화를 제공합니다. 이러한 클라이언트는 Amazon S3와 긴밀하게 연결되어 있으며 Amazon S3에 저장된 데이터에만 사용할 수 있습니다.

는 어디서나 저장할 수 있는 데이터에 대한 암호화 및 복호화를 AWS Encryption SDK 제공합니다. AWS Encryption SDK 및 Amazon S3 암호화 클라이언트는 데이터 형식이 다른 사이퍼텍스트를 생성하기 때문에 호환되지 않습니다.

## 에서 지원하는 암호화 알고리즘 AWS Encryption SDK과 기본 암호화 알고리즘은 무엇입니까?
<a name="supported-algorithms-faq"></a>

는 AES-GCM이라고 하는 Galois/Counter Mode(GCM)의 고급 암호화 표준(AES) 대칭 알고리즘을 AWS Encryption SDK 사용하여 데이터를 암호화합니다. 이를 통해 여러 대칭 및 비대칭 알고리즘 중에서 선택하여, 데이터를 암호화하는 데이터 키를 암호화할 수 있습니다.

AES-GCM의 경우 기본 알고리즘 제품군은 256비트 키, 키 파생(HKDF), [디지털 서명](concepts.md#digital-sigs) 및 [키 커](concepts.md#key-commitment)밋이 있는 AES-GCM입니다. AWS Encryption SDK 또한는 디지털 서명 및 키 커밋 없이 192비트 및 128비트 암호화 키와 암호화 알고리즘을 지원합니다.

모든 경우에 초기화 벡터(IV)의 길이는 12바이트이고 인증 태그의 길이는 16바이트입니다. 기본적으로 SDK는 데이터 키를 HMAC 기반 extract-and-expand 키 유도 함수(HKDF)의 입력으로 사용하여 AES-GCM 암호화 키를 유도하고 Elliptic Curve Digital Signature Algorithm(ECDSA) 서명도 추가합니다.

사용할 알고리즘 선택에 대한 자세한 내용은 [지원 알고리즘 제품군](supported-algorithms.md) 섹션을 참조하세요.

지원되는 알고리즘에 대한 구현 세부 정보는 [알고리즘 참조](algorithms-reference.md) 섹션을 참조하세요.

## 초기화 벡터(IV)는 어떻게 생성되며 어디에 저장되나요?
<a name="iv-generation"></a>

는 결정적 메서드를 AWS Encryption SDK 사용하여 프레임마다 다른 IV 값을 구성합니다. 이 절차를 통해 메시지 내에서 IV가 반복되지 않도록 합니다. ( AWS Encryption SDK for Java 및 버전 1.3.0 이전에 AWS Encryption SDK for Python는 각 프레임에 대해 고유한 IV 값을 AWS Encryption SDK 무작위로 생성했습니다.)

IV는이 AWS Encryption SDK 반환하는 암호화된 메시지에 저장됩니다. 자세한 내용은 [AWS Encryption SDK 메시지 형식 참조](message-format.md) 단원을 참조하십시오.

## 각 데이터 키는 어떻게 생성, 암호화 및 복호화되나요?
<a name="key-generation"></a>

방법은 사용하는 키링 또는 마스터 키 공급자에 따라 다릅니다.

의 AWS KMS 키링과 마스터 키 공급자는 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) API 작업을 AWS Encryption SDK 사용하여 각 데이터 키를 생성하고 래핑 키로 암호화합니다. 추가 KMS 키로 데이터 키의 복사본을 암호화하려면 AWS KMS [암호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 작업을 사용합니다. 데이터 키를 복호화하려면 AWS KMS [복호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 사용합니다. 자세한 내용은 GitHub의 AWS Encryption SDK 사양에서 [AWS KMS 키링](https://github.com/awslabs/aws-encryption-sdk-specification/blob/master/framework/aws-kms/aws-kms-keyring.md)을 참조하세요.

다른 키링은 각 프로그래밍 언어의 모범 사례 방법을 사용하여 데이터 키를 생성하고 암호화 및 복호화합니다. 자세한 내용은 GitHub의 사양에 있는 [프레임워크 섹션에서](https://github.com/awslabs/aws-encryption-sdk-specification/tree/master/framework) 키링 또는 마스터 키 공급자의 AWS Encryption SDK 사양을 참조하세요.

## 데이터를 암호화하는 데 사용된 데이터 키를 추적하려면 어떻게 해야 하나요?
<a name="track-keys"></a>

에서이 AWS Encryption SDK 작업을 수행합니다. 데이터를 암호화하면 SDK는 데이터 키를 암호화하고, 암호화된 키를 암호화된 데이터와 함께 반환되는 [암호화된 메시지](concepts.md#message)에 저장합니다. 데이터를 복호화할 때 AWS Encryption SDK 는 암호화된 메시지에서 암호화된 데이터 키를 추출하여 데이터 복호화에 사용합니다.

## 는 암호화된 데이터 키를 암호화된 데이터와 함께 어떻게 AWS Encryption SDK 저장하나요?
<a name="store-encrypted-keys"></a>

의 암호화 작업은 [암호화된 데이터와 암호화된 데이터 키가 포함된 단일 데이터 구조인 암호화된 메시지를](concepts.md#message) AWS Encryption SDK 반환합니다. 메시지 형식은 최소 두 가지 부분인 *헤더*와 *본문*으로 구성됩니다. 메시지 헤더에는 암호화된 데이터 키와, 메시지 본문 구성 방식에 대한 정보가 포함되어 있습니다. 메시지 본문에는 암호화된 데이터가 포함되어 있습니다. 알고리즘 제품군에 [디지털 서명](concepts.md#digital-sigs)이 포함된 경우 메시지 형식에는 서명이 포함된 *바닥글*이 포함됩니다. 자세한 내용은 [AWS Encryption SDK 메시지 형식 참조](message-format.md) 단원을 참조하십시오.

## AWS Encryption SDK 메시지 형식은 내 암호화된 데이터에 얼마나 많은 오버헤드를 추가하나요?
<a name="overhead"></a>

에서 추가하는 오버헤드의 양은 다음을 포함한 여러 요인에 AWS Encryption SDK 따라 달라집니다.
+ 일반 텍스트 데이터의 크기
+ 지원되는 알고리즘 중 사용되는 알고리즘
+ 추가 인증 데이터(AAD) 제공 여부 및 해당 AAD의 길이
+ 래핑 키 또는 마스터 키의 수 및 유형
+ 프레임 크기([프레임 데이터](message-format.md#body-framing)를 사용하는 경우)

를 기본 구성(하나 AWS KMS key 는 래핑 키(또는 마스터 키), AAD 없음, 프레임 처리되지 않은 데이터, 서명이 있는 암호화 알고리즘)과 AWS Encryption SDK 함께 사용하는 경우 오버헤드는 약 600바이트입니다. 일반적으로, AWS Encryption SDK 는 제공된 AAD를 제외하고 1KB 이하의 오버헤드를 더하는 것으로 가정할 수 있습니다. 자세한 내용은 [AWS Encryption SDK 메시지 형식 참조](message-format.md) 단원을 참조하십시오.

## 자체 마스터 키 공급자를 사용할 수 있나요?
<a name="own-provider"></a>

예. 구현 세부 정보는 사용하는 [지원되는 프로그래밍 언어](programming-languages.md)에 따라 달라집니다. 그러나 지원되는 모든 언어를 사용하면 사용자 지정 [암호화 자료 관리자(CMMs)Ms),](concepts.md#crypt-materials-manager) 마스터 키 공급자, 키링, 마스터 키 및 래핑 키를 정의할 수 있습니다.

## 두 개 이상의 래핑 키로 데이터를 암호화할 수 있나요?
<a name="multiple-master-keys"></a>

예. 키가 다른 리전에 있거나 복호화에 사용할 수 없는 경우 추가 래핑 키(또는 마스터 키)를 사용하여 데이터 키를 암호화하여 중복성을 추가할 수 있습니다.

여러 래핑 키로 데이터를 암호화하려면 여러 래핑 키가 있는 키링 또는 마스터 키 공급자를 만듭니다. 키링으로 작업할 때 [여러 래핑 키를 사용하여 단일 키링](use-kms-keyring.md#kms-keyring-encrypt)을 만들거나 [다중 키링](use-multi-keyring.md)을 만들 수 있습니다.

여러 래핑 키로 데이터를 암호화하면는 하나의 래핑 키를 AWS Encryption SDK 사용하여 일반 텍스트 데이터 키를 생성합니다. 데이터 키는 고유하며 래핑 키와 수학적으로 관련이 없습니다. 이 작업은 일반 텍스트 데이터 키와, 래핑 키로 암호화된 데이터 키 복사본을 반환합니다. 그러면 암호화 메서드는 다른 래핑 키로 데이터 키를 암호화합니다. 그 결과로 생성되는 [암호화된 메시지](concepts.md#message)에는 암호화된 데이터와, 각 래핑 키의 암호화된 데이터 키 1개가 포함됩니다.

암호화된 메시지는 암호화 작업에 사용되는 래핑 키 중 하나를 사용하여 복호화할 수 있습니다. 는 래핑 키를 AWS Encryption SDK 사용하여 암호화된 데이터 키를 해독합니다. 그런 다음 일반 텍스트 데이터 키를 사용하여 데이터를 복호화합니다.

## 로 암호화할 수 있는 데이터 유형은 무엇입니까 AWS Encryption SDK?
<a name="data-types"></a>

의 대부분의 프로그래밍 언어 구현은 원시 바이트(바이트 배열), I/O 스트림(바이트 스트림) 및 문자열을 암호화할 AWS Encryption SDK 수 있습니다. AWS Encryption SDK for .NET은 I/O 스트림을 지원하지 않습니다. [지원되는 프로그래밍 언어](programming-languages.md) 각각에 대한 예제 코드를 제공합니다.

## 는 입력/출력(I/O) 스트림을 어떻게 암호화하고 AWS Encryption SDK 해독하나요?
<a name="streams"></a>

는 기본 I/O 스트림을 래핑하는 암호화 또는 복호화 스트림을 AWS Encryption SDK 생성합니다. 암호화 또는 복호화 스트림은 읽기 또는 쓰기 호출에서 암호화 작업을 수행합니다. 예를 들어 기본 스트림에서 일반 텍스트 데이터를 읽고 암호화한 후 결과를 반환할 수 있습니다. 또는 기본 스트림에서 사이퍼텍스트를 읽고 복호화한 후 결과를 반환할 수 있습니다. 스트리밍을 지원하는 [지원되는 프로그래밍 언어](programming-languages.md) 각각의 스트림을 암호화 및 복호화하는 예제 코드를 제공합니다.

 AWS Encryption SDK for .NET은 I/O 스트림을 지원하지 않습니다.