AWS Encryption SDK란 무엇인가요? - AWS Encryption SDK

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

AWS Encryption SDK란 무엇인가요?

AWS Encryption SDK는 산업 표준과 모범 사례를 이용하여 모든 사람이 쉽게 데이터를 암호화하고 복호화할 수 있도록 설계된 클라이언트 측 암호화 라이브러리입니다. 그럼으로써 데이터의 암호화 및 복호화 방법보다 애플리케이션의 핵심 기능에 집중할 수 있습니다. AWS Encryption SDK는 Apache 2.0 라이선스에 따라 무료 제공됩니다.

AWS Encryption SDK는 사용자를 위해 다음과 같은 질문에 답해 줍니다.

  • 어떤 암호화 알고리즘을 사용해야 하나요?

  • 이 알고리즘을 어떻게, 어떤 모드에서 사용해야 하나요?

  • 암호화 키는 어떻게 생성하나요?

  • 암호화 키를 보호하려면 어떻게 해야 하며 어디에 저장해야 하나요?

  • 암호화된 데이터를 이동 가능하게 만들려면 어떻게 해야 하나요?

  • 의도한 수신자가 내 암호화된 데이터를 읽을 수 있도록 하려면 어떻게 해야 하나요?

  • 기록된 시점과 읽은 시점 사이에 내 암호화된 데이터가 수정되지 않도록 하려면 어떻게 해야 하나요?

  • AWS KMS가 반환하는 데이터 키는 어떻게 사용하나요?

AWS Encryption SDK를 통해, 데이터를 보호하는 데 사용할 래핑 키를 결정하는 마스터 키 공급자(Java 및 Python) 또는 키링(C, C#/.NET, JavaScript)을 정의합니다. 그런 다음 AWS Encryption SDK가 제공하는 간단한 메서드를 사용하여 데이터를 암호화 및 복호화합니다. 나머지 작업은 AWS Encryption SDK가 처리합니다.

AWS Encryption SDK를 사용하지 않으면 애플리케이션의 핵심 기능보다 암호화 솔루션을 빌드하는 데 더 많은 노력을 투자해야 할 수 있습니다. AWS Encryption SDK는 다음을 제시하여 이러한 질문에 답변합니다.

암호화 모범 사례에 따른 기본 구현

기본적으로 AWS Encryption SDK는 암호화하는 데이터 객체마다 고유한 데이터 키를 생성합니다. 이는 각 암호화 작업에 고유한 데이터 키를 사용하는 암호화 모범 사례를 따릅니다.

AWS Encryption SDK는 안전하고 인증된 대칭 키 알고리즘을 사용하여 데이터를 암호화합니다. 자세한 내용은 AWS Encryption SDK에서 지원되는 알고리즘 제품군 섹션을 참조하세요.

래핑 키를 사용하여 데이터 키를 보호하기 위한 프레임워크

AWS Encryption SDK는 하나 이상의 래핑 키로 데이터를 암호화하여 그 데이터를 암호화한 데이터 키를 보호합니다. AWS Encryption SDK는 하나 이상의 래핑 키로 데이터 키를 암호화하는 프레임워크를 제공하기 때문에 암호화된 데이터를 편리하게 이동할 수 있습니다.

예를 들어 AWS KMS의 AWS KMS key 및 온프레미스 HSM의 키로 데이터를 암호화합니다. 어느 하나의 래핑 키를 사용할 수 없거나 호출자가 두 키를 모두 사용할 권한이 없는 경우 데이터를 복호화하는 데 두 래핑 키 중 어느 것을 사용해도 됩니다.

암호화된 데이터와 함께 암호화된 데이터 키를 저장하는 형식 메시지

AWS Encryption SDK는 정의된 데이터 형식의 암호화된 메시지에 암호화된 데이터와 암호화된 데이터 키를 함께 저장합니다. 즉, 데이터를 암호화한 데이터 키를 AWS Encryption SDK가 추적하고 보호해 주므로 사용자는 조치할 필요가 없습니다.

AWS Encryption SDK의 일부 언어 구현에는 AWS SDK가 필요하지만 AWS Encryption SDK는 AWS 계정이 필요하지 않으며 AWS 서비스에 의존하지 않습니다. AWS 계정은 데이터 보호를 위해 AWS KMS keys를 사용하기로 선택한 경우에만 필요합니다.

오픈 소스 리포지토리에서 개발

AWS Encryption SDK는 GitHub의 오픈 소스 리포지토리에서 개발되었습니다. 이러한 리포지토리를 사용하여 코드를 보고, 문제를 읽고 제출하고, 언어 구현과 관련된 정보를 찾을 수 있습니다.

암호화 라이브러리 및 서비스와의 호환성

AWS Encryption SDK는 여러 프로그래밍 언어로 지원됩니다. 모든 언어 구현은 상호 연동이 가능합니다. 하나의 언어 구현으로 암호화하고 다른 언어 구현으로 복호화할 수 있습니다. 상호 연동성에는 언어 제약 조건이 적용될 수 있습니다. 이 경우 이러한 제약 조건은 언어 구현에 대한 주제에 설명되어 있습니다. 또한 암호화 및 복호화를 수행할 때는 호환되는 키링이나 마스터 키 및 마스터 키 공급자를 사용해야 합니다. 자세한 내용은 키링 호환성 섹션을 참조하세요.

그러나 AWS Encryption SDK는 다른 라이브러리와 상호 연동할 수 없습니다. 각 라이브러리는 암호화된 데이터를 다른 형식으로 반환하므로 한 라이브러리로 암호화하고 다른 라이브러리로 복호화할 수 없습니다.

DynamoDB Encryption Client 및 Amazon S3 클라이언트 측 암호화

AWS Encryption SDK는 DynamoDB Encryption Client 또는 Amazon S3 클라이언트 측 암호화로 암호화된 데이터를 복호화할 수 없습니다. 이러한 라이브러리는 AWS Encryption SDK가 반환하는 암호화된 메시지를 복호화할 수 없습니다. 

AWS Key Management Service (AWS KMS)

AWS Encryption SDK는 다중 리전 KMS 키를 비롯해 AWS KMS keys데이터 키를 사용하여 데이터를 보호할 수 있습니다. 예를 들어, AWS 계정에서 하나 이상의 AWS KMS keys로 데이터를 암호화하도록 AWS Encryption SDK를 구성할 수 있습니다. 그러나 해당 데이터를 복호화하려면 AWS Encryption SDK를 사용해야 합니다.

AWS Encryption SDK는 AWS KMS Encrypt 또는 ReEncrypt 작업이 반환하는 사이퍼텍스트를 복호화할 수 없습니다. 마찬가지로 AWS KMS Decrypt 작업은 AWS Encryption SDK가 반환하는 암호화된 메시지를 복호화할 수 없습니다.

AWS Encryption SDK는 대칭 암호화 KMS 키만 지원합니다. 비대칭 KMS 키는 암호화 또는 AWS Encryption SDK 로그인에 사용할 수 없습니다. AWS Encryption SDK는 메시지에 서명하는 알고리즘 제품군에 대한 자체 ECDSA 서명 키를 생성합니다.

사용할 라이브러리 또는 서비스를 결정하는 데 도움이 필요하면 AWS 암호화 서비스 및 도구에서 암호화 도구 또는 서비스를 선택하는 방법을 참조하세요.

지원 및 유지 관리

AWS Encryption SDK에서는 버전 관리 및 수명 주기 단계를 포함하여 AWS SDK 및 도구에서 사용하는 것과 동일한 유지 관리 정책을 사용합니다. 프로그래밍 언어에 사용할 수 있는 AWS Encryption SDK의 최신 버전을 사용하고 새 버전이 출시되면 업그레이드하는 것이 모범 사례입니다. AWS Encryption SDK를 1.7.x 이하 버전에서 2.0.x 이상 버전으로 업그레이드하는 등의 중대한 버전 변경이 필요한 경우 도움이 되는 자세한 지침을 제공합니다.

AWS Encryption SDK의 각 프로그래밍 언어 구현은 별도의 오픈 소스 GitHub 리포지토리에서 개발됩니다. 각 버전의 수명 주기 및 지원 단계는 리포지토리마다 다를 수 있습니다. 예를 들어 특정 버전의 AWS Encryption SDK는 한 프로그래밍 언어에서는 정식 출시(전체 지원) 단계에 있지만 다른 프로그래밍 언어에서는 지원 종료 단계일 수 있습니다. 가능하면 완전히 지원되는 버전을 사용하고 더 이상 지원되지 않는 버전은 피하는 것이 좋습니다.

프로그래밍 언어의 AWS Encryption SDK 버전의 수명 주기 단계를 찾으려면 각 AWS Encryption SDK 리포지토리의 SUPPORT_POLICY.rst 파일을 참조하세요.

자세한 내용은 AWS SDK 및 도구 참조 가이드에서 AWS Encryption SDK 버전AWS SDK 및 도구 유지 관리 정책을 참조하세요.

자세히 알아보기

AWS Encryption SDK와 클라이언트 측 암호화에 대한 자세한 내용은 다음 출처를 활용해 보세요.

다른 프로그래밍 언어로 AWS Encryption SDK를 구현하는 방법에 대해 자세히 알아보려면 다음 자료를 참조하세요.

피드백 보내기

우리는 여러분의 의견을 환영합니다. 질문이나 의견이 있거나 보고해야 할 문제가 있는 경우 다음 리소스를 사용하세요.

  • AWS Encryption SDK에서 잠재적인 보안 취약점을 발견한 경우 AWS 보안 팀에 알리세요. 공개적으로 GitHub 문제를 작성하지 마세요.

  • AWS Encryption SDK에 대한 피드백을 제공하려면 사용 중인 프로그래밍 언어의 GitHub 리포지토리에 문제를 제출하세요.

  • 이 문서에 대한 피드백을 제공하려면 이 페이지의 피드백 링크를 사용하세요. GitHub에서 이 문서의 오픈 소스 리포지토리인 aws-encryption-sdk-docs에 문제를 제기하거나 기고할 수도 있습니다.