AWS Encryption SDK 버전 - AWS Encryption SDK

AWS Encryption SDK 버전

AWS Encryption SDK 언어 구현에서는 의미 체계 버전 관리를 사용하여 각 릴리스의 변경 규모를 쉽게 식별할 수 있도록 합니다. 메이저 버전 번호의 변경(예: 1.x.x에서 2.x.x로 변경)은 코드 변경 및 계획된 배포가 필요할 수 있는 중요한 변경 사항을 나타냅니다. 마이너 버전 번호의 변경(예: x.1.x에서 x.2.x로 변경)은 항상 이하 버전과 호환되지만 더 이상 사용되지 않는 요소가 포함될 수 있습니다.

가능하면 선택한 프로그래밍 언어로 된 최신 버전의 AWS Encryption SDK를 사용하세요. 각 버전의 유지 관리 및 지원 정책은 프로그래밍 언어 구현에 따라 다릅니다. 선호하는 프로그래밍 언어로 지원되는 버전에 대한 자세한 내용은 해당 언어의 GitHub 리포지토리에서 SUPPORT_POLICY.rst 파일을 참조하세요.

업그레이드에 암호화 또는 복호화 오류를 방지하기 위해 특별한 구성이 필요한 새 기능이 포함된 경우 중간 버전과 자세한 사용 지침을 제공합니다. 예를 들어 버전 1.7.x 및 1.8.x는 1.7.x 이하 버전에서 2.0.x 이상 버전으로 업그레이드하는 데 도움이 되는 전환 버전으로 설계되었습니다. 자세한 내용은 AWS Encryption SDK 마이그레이션 섹션을 참조하세요.

프로그래밍 언어의 각 버전의 변경 사항에 대한 자세한 설명은 각 리포지토리의 Changelog를 참조하세요.

참고

버전 번호의 x는 메이저 버전과 마이너 버전의 모든 패치를 나타냅니다. 예를 들어 버전 1.7.x는 1.7.1과 1.7.9를 포함하여 1.7로 시작하는 모든 버전을 나타냅니다.

새로운 보안 기능은 원래 AWS Encryption CLI 버전 1.7.x 및 2.0.x에서 릴리스되었습니다. 그러나 AWS Encryption CLI 버전 1.8.x는 버전 1.7.x를 대체하고 AWS Encryption CLI 2.1.x는 2.0.x를 대체합니다. 자세한 내용은 GitHub의 aws-encryption-sdk-cli 리포지토리에서 관련 보안 권고를 참조하세요.

다음 목록은 지원되는 AWS Encryption SDK 버전 간의 주요 차이점을 설명합니다.

1.7.x 이하 버전

참고

모든 1.x.x 버전의 AWS Encryption SDK는 지원 종료 단계에 있습니다. 가능한 한 빨리 사용 중인 프로그래밍 언어에 맞는 최신 버전의 AWS Encryption SDK로 업그레이드하세요. 1.7.x 이하 버전의 AWS Encryption SDK에서 업그레이드하려면 먼저 1.7.x로 업그레이드해야 합니다. 자세한 내용은 AWS Encryption SDK 마이그레이션 섹션을 참조하세요.

1.7.x 이하 버전의 AWS Encryption SDK는 Galois/Counter Mode(AES-GCM)의 고급 암호화 표준 알고리즘을 사용한 암호화, HMAC 기반 추출 및 확장 키 유도 함수(HKDF), 서명, 256비트 암호화 키 등 중요한 보안 기능을 제공합니다. 하지만 이러한 버전은 키 커밋을 포함하여 권장되는 모범 사례를 지원하지 않습니다.

버전 1.7.x

참고

모든 1.x.x 버전의 AWS Encryption SDK는 지원 종료 단계에 있습니다.

버전 1.7.x는 이하 버전의 AWS Encryption SDK 사용자가 버전 2.0.x 이상으로 업그레이드하는 데 도움이 되도록 설계되었습니다. AWS Encryption SDK를 처음 사용하는 경우 이 버전을 건너뛰고 사용 중인 프로그래밍 언어로 된 사용 가능한 최신 버전부터 시작해도 됩니다.

버전 1.7.x는 이하 버전과 완벽하게 호환되며, 중대한 변경 사항을 포함하고 있거나 AWS Encryption SDK의 동작을 변경하지 않습니다. 또한 이상 버전과도 호환되며, 버전 2.0.x와 호환되도록 코드를 업데이트할 수 있습니다. 여기에는 새 기능이 포함되어 있지만 완전히 활성화되지는 않습니다. 또한 준비가 될 때까지 모든 새 기능을 즉시 적용하지 못하도록 하는 구성 값이 필요합니다.

버전 1.7.x에는 다음과 같은 변경 사항이 포함됩니다.

AWS KMS 마스터 키 공급자 업데이트(필수)

버전 1.7.x엄격 모드 또는 검색 모드에서 AWS KMS 마스터 키 공급자를 명시적으로 생성하는 새로운 생성자를 AWS Encryption SDK for Java 및 AWS Encryption SDK for Python에 도입합니다. 이 버전은 AWS Encryption SDK CLI(Command Line Interface)에 유사한 변경 사항을 추가합니다. 자세한 내용은 AWS KMS 마스터 키 공급자 업데이트 섹션을 참조하세요.

  • 엄격 모드에서 AWS KMS 마스터 키 공급자는 래핑 키 목록을 필요로 하며, 사용자가 지정한 래핑 키로만 암호화하고 복호화합니다. 엄격 모드는 사용하려는 래핑 키를 사용하고 있음을 보장하는 AWS Encryption SDK 모범 사례입니다.

  • 검색 모드에서 AWS KMS 마스터 키 공급자는 어떤 래핑 키도 사용하지 않습니다. 암호화에는 래핑 키를 사용할 수 없습니다. 복호화에는 모든 래핑 키를 사용하여 암호화된 데이터 키를 복호화할 수 있습니다. 다만 복호화에 사용되는 래핑 키를 특정 AWS 계정에 있는 래핑 키로 제한할 수 있습니다. 계정 필터링은 선택 사항이지만 권장되는 모범 사례입니다.

이하 버전의 AWS KMS 마스터 키 공급자를 생성하는 생성자는 버전 1.7.x에서 더 이상 사용되지 않으며 버전 2.0.x에서 제거되었습니다. 이러한 생성자는 사용자가 지정한 래핑 키를 사용하여 암호화하는 마스터 키 공급자를 인스턴스화합니다. 하지만 지정된 래핑 키에 관계없이 데이터 키를 암호화한 래핑 키를 사용하여 해당 암호화된 데이터 키를 복호화합니다. 사용자는 사용할 의도가 없는 래핑 키(다른 AWS 계정 및 리전의 AWS KMS keys 포함)를 사용하여 의도치 않게 메시지를 복호화할 수 있습니다.

AWS KMS 마스터 키의 생성자에는 변경 사항이 없습니다. 암호화 및 복호화 시 AWS KMS 마스터 키는 사용자가 지정한 AWS KMS key만 사용합니다.

AWS KMS 키링 업데이트(선택 사항)

버전 1.7.xAWS KMS 검색 키링을 특정 AWS 계정으로 제한하는 새 필터를 AWS Encryption SDK for C 및 AWS Encryption SDK for JavaScript 구현에 추가합니다. 이 새로운 계정 필터는 선택 사항이지만 권장되는 모범 사례입니다. 자세한 내용은 AWS KMS 키링 업데이트 섹션을 참조하세요.

AWS KMS 키링의 생성자에는 변경 사항이 없습니다. 표준 AWS KMS 키링은 엄격 모드에서 마스터 키 공급자처럼 동작합니다. AWS KMS 검색 키링은 검색 모드에서 명시적으로 생성됩니다.

AWS KMS 복호화에 키 ID 전달

버전 1.7.x부터 암호화된 데이터 키를 복호화할 때 AWS Encryption SDK는 AWS KMS 복호화 작업에 대한 호출에서 항상 AWS KMS key를 지정합니다. AWS Encryption SDK는 암호화된 각 데이터 키의 메타데이터에서 AWS KMS key의 키 ID 값을 가져옵니다. 이 기능에는 코드 변경이 필요하지 않습니다.

AWS KMS key의 키 ID를 지정하지 않아도 대칭 암호화 KMS 키로 암호화된 사이퍼텍스트를 복호화할 수는 있지만 이는 AWS KMS 모범 사례입니다. 키 공급자에서 래핑 키를 지정하는 것과 마찬가지로 이 방법을 통해 AWS KMS는 사용자가 의도한 래핑 키만 사용하여 암호를 복호화할 수 있습니다.

키 커밋으로 사이퍼텍스트 복호화

버전 1.7.x키 커밋 유무에 관계없이 암호화된 사이퍼텍스트를 복호화할 수 있습니다. 하지만 키 커밋으로는 사이퍼텍스트를 암호화할 수 없습니다. 이 속성을 사용하면 사이퍼텍스트가 발생하기 전에 키 커밋으로 암호화된 사이퍼텍스트를 복호화할 수 있는 애플리케이션을 완전히 배포할 수 있습니다. 이 버전은 키 커밋 없이 암호화된 메시지를 복호화하므로 사이퍼텍스트를 다시 암호화할 필요가 없습니다.

이 동작을 구현하기 위해 버전 1.7.x에는 AWS Encryption SDK가 키 커밋을 사용하여 암호화 또는 복호화가 가능한지 여부를 결정하는 새로운 커밋 정책 구성 설정이 포함되어 있습니다. 버전 1.7.x에서는 커밋 정책에서 유일하게 유효한 값인 ForbidEncryptAllowDecrypt가 모든 암호화 및 복호화 작업에 사용됩니다. 이 값은 AWS Encryption SDK가 키 커밋이 포함된 새 알고리즘 제품군 중 하나를 사용하여 암호화할 수 없도록 합니다. 이를 통해 AWS Encryption SDK는 키 커밋 유무에 관계없이 사이퍼텍스트를 복호화할 수 있습니다.

버전 1.7.x에는 유효한 커밋 정책 값이 하나뿐이지만 이번 릴리스에 도입된 새 API를 사용할 때는 이 값을 명시적으로 설정할 수 있어야 합니다. 이 값을 명시적으로 설정하면 버전 2.1.x로 업그레이드할 때 커밋 정책이 자동으로 require-encrypt-require-decrypt로 변경되는 것을 방지할 수 있습니다. 대신, 단계적으로 커밋 정책을 마이그레이션할 수 있습니다.

키 커밋이 포함된 알고리즘 제품군

버전 1.7.x에는 키 커밋을 지원하는 두 개의 새로운 알고리즘 제품군이 포함되어 있습니다. 하나는 서명이 포함되어 있고 다른 하나는 서명을 포함하고 있지 않습니다. 이전에 지원되던 알고리즘 제품군과 마찬가지로 이 두 가지 새로운 알고리즘 제품군에는 AES-GCM을 사용한 암호화, 256비트 암호화 키, HMAC 기반 추출 및 확장 키 유도 함수(HKDF)가 포함되어 있습니다.

하지만 암호화에 사용되는 기본 알고리즘 제품군은 변경되지 않습니다. 이러한 알고리즘 제품군은 버전 1.7.x에 추가되어 사용자의 애플리케이션이 버전 2.0.x 이상에서 알고리즘을 사용할 수 있도록 지원합니다.

CMM 구현 변경 사항

버전 1.7.x에 키 커밋을 지원하기 위해 기본 암호화 구성 요소 관리자(CMM) 인터페이스가 변경되었습니다. 이 변경 사항은 사용자 지정 CMM을 작성한 경우에만 적용됩니다. 자세한 내용은 사용하는 프로그래밍 언어의 API 설명서 또는 GitHub 리포지토리를 참조하세요.

버전 1.8.x

참고

모든 1.x.x 버전의 AWS Encryption SDK는 지원 종료 단계에 있습니다.

AWS Encryption CLI의 버전 1.8.x는 1.7.x 이하 버전과 2.1.x 이상 버전 사이의 전환 버전입니다. AWS Encryption CLI의 경우, 버전 1.8.x는 이하 버전과 완벽하게 호환되며, 중대한 변경 사항을 포함하고 있거나 AWS Encryption SDK의 동작을 변경하지 않습니다. 또한 이상 버전과도 호환되며, 버전 2.0.x와 호환되도록 코드를 업데이트할 수 있습니다. 여기에는 새 기능이 포함되어 있지만 완전히 활성화되지는 않습니다. 준비가 될 때까지 모든 새 기능을 즉시 적용하지 못하도록 하는 구성 값이 필요합니다.

AWS Encryption CLI 버전 1.8.x에 대한 자세한 내용은 버전 1.7.x 섹션을 참조하세요.

버전 1.9.x

참고

모든 1.x.x 버전의 AWS Encryption SDK는 지원 종료 단계에 있습니다.

버전 1.9.x는 버전 2.2.x의 디지털 서명 보안 개선 사항을 지원합니다. 현재 애플리케이션에서 디지털 서명을 사용하고 있으며 2.0.x 이하 버전의 AWS Encryption SDK를 사용하는 경우, 개선 사항을 활용하려면 버전 1.9.x로 업그레이드해야 합니다.

또한 버전 1.9.x는 메시지 복호화 시 신뢰할 수 없는 소스로부터 온 메시지의 암호화된 데이터 키 수를 제한하는 기능을 지원합니다. 이 모범 사례 기능을 사용하면 메시지를 암호화할 때 잘못 구성된 마스터 키 공급자 또는 키링을 탐지할 수 있고 메시지 복호화 시 잠재적인 악성 사이퍼텍스트를 탐지할 수 있습니다.

버전 1.7.x와 마찬가지로 버전 1.9.x는 1.7.x 이하 버전과 호환되며 2.0.x 이상 버전과도 호환됩니다. 여기에는 2.0.x 이상 버전에 있는 새로운 기능이 포함되어 있지만 안전한 기본값을 구현합니다. 버전 1.9.x를 사용 중인 경우 버전 2.2.x로 안전하게 업그레이드할 수 있습니다. 커밋 정책 설정을 마이그레이션하는 방법에 대한 자세한 내용은 커밋 정책 설정 섹션을 참조하세요.

버전 2.0.x

버전 2.0.x는 지정된 래핑 키 및 키 커밋을 포함하여 AWS Encryption SDK에서 제공하는 새로운 보안 기능을 지원합니다. 이러한 기능을 지원하기 위해 버전 2.0.x에는 AWS Encryption SDK의 모든 이하 버전에 대한 주요 변경 사항이 포함되어 있습니다. 버전 1.7.x를 배포하여 이러한 변경 사항에 대비할 수 있습니다. 버전 2.0.x에는 다음과 같은 추가 및 변경 사항과 함께 버전 1.7.x에 도입된 모든 새로운 기능이 포함되어 있습니다.

참고

AWS Encryption SDK for Python 버전 2.x.x 및 AWS Encryption CLI는 지원 종료 단계에 있습니다.

선호하는 프로그래밍 언어에서 이 AWS Encryption SDK 버전을 지원 및 유지 관리하는 방법에 대한 자세한 내용은 GitHub 리포지토리SUPPORT_POLICY.rst 파일을 참조하세요.

AWS KMS 마스터 키 공급자

버전 1.7.x에서 더 이상 사용되지 않는 원래의 AWS KMS 마스터 키 공급자 생성자는 버전 2.0.x에서 제거되었습니다. 엄격 모드 또는 검색 모드에서 AWS KMS 마스터 키 공급자를 명시적으로 구성해야 합니다.

키 커밋으로 사이퍼텍스트 암호화 및 복호화

버전 2.0.x키 커밋 유무에 관계없이 사이퍼텍스트를 암호화 및 복호화할 수 있습니다. 해당 동작은 커밋 정책 설정에 따라 결정됩니다. 기본적으로 항상 키 커밋을 사용하여 암호화하고 키 커밋으로 암호화된 사이퍼텍스트만 복호화합니다. 커밋 정책을 변경하지 않는 한 AWS Encryption SDK는 버전 1.7.x를 포함한 이하 버전의 AWS Encryption SDK로 암호화된 사이퍼텍스트를 복호화하지 않습니다.

중요

기본적으로 버전 2.0.x는 키 커밋 없이 암호화된 사이퍼텍스트를 복호화하지 않습니다. 애플리케이션에서 키 커밋 없이 암호화된 사이퍼텍스트가 발생한 경우, AllowDecrypt로 커밋 정책 값을 설정하세요.

버전 2.0.x에서, 커밋 정책 설정에는 다음과 같은 세 가지 유효한 값이 있습니다.

  • ForbidEncryptAllowDecrypt - AWS Encryption SDK는 키 커밋으로 암호화할 수 없습니다. 암호화된 사이퍼텍스트를 키 커밋 사용 여부와 관계없이 복호화할 수 있습니다.

  • RequireEncryptAllowDecrypt - AWS Encryption SDK는 키 커밋으로 암호화해야 합니다. 암호화된 사이퍼텍스트를 키 커밋 사용 여부와 관계없이 복호화할 수 있습니다.

  • RequireEncryptRequireDecrypt(기본값) - AWS Encryption SDK는 키 커밋으로 암호화해야 합니다. 키 커밋이 있는 사이퍼텍스트만 복호화합니다.

이하 버전의 AWS Encryption SDK에서 버전 2.0.x로 마이그레이션하는 경우, 애플리케이션에서 발생할 수 있는 모든 기존 사이퍼텍스트를 복호화할 수 있는 값으로 커밋 정책을 설정하세요. 시간이 지남에 따라 이 설정을 조정할 가능성이 높습니다.

버전 2.1.x

참고

AWS Encryption SDK for Python 버전 2.x.x 및 AWS Encryption CLI는 지원 종료 단계에 있습니다.

선호하는 프로그래밍 언어에서 이 AWS Encryption SDK 버전을 지원 및 유지 관리하는 방법에 대한 자세한 내용은 GitHub 리포지토리SUPPORT_POLICY.rst 파일을 참조하세요.

AWS Encryption CLI의 경우 버전 2.1.x는 지정된 래핑 키와 키 커밋이 포함된 버전입니다. 이 버전은 다른 프로그래밍 언어의 버전 2.0.x와 동일합니다.

AWS Encryption CLI 버전 2.1.x에 대한 자세한 내용은 버전 2.0.x 섹션을 참조하세요.

버전 2.2.x

디지털 서명 및 암호화된 데이터 키 제한에 대한 지원이 추가되었습니다.

참고

AWS Encryption SDK for Python 버전 2.x.x 및 AWS Encryption CLI는 지원 종료 단계에 있습니다.

선호하는 프로그래밍 언어에서 이 AWS Encryption SDK 버전을 지원 및 유지 관리하는 방법에 대한 자세한 내용은 GitHub 리포지토리SUPPORT_POLICY.rst 파일을 참조하세요.

디지털 서명

복호화 시 디지털 서명 처리를 개선하기 위해 AWS Encryption SDK에는 다음과 같은 기능이 포함되어 있습니다.

  • 비스트리밍 모드 - 디지털 서명이 있는 경우 디지털 서명 확인을 포함하여 모든 입력이 처리된 후에만 일반 텍스트를 반환합니다. 이 기능을 사용하면 디지털 서명을 확인하기 전에 일반 텍스트를 사용할 수 없습니다. 디지털 서명으로 암호화된 데이터(기본 알고리즘 제품군)를 복호화할 때마다 이 기능을 사용하세요. 예를 들어 AWS Encryption CLI는 항상 스트리밍 모드에서 데이터를 처리하므로 디지털 서명으로 사이퍼텍스트를 복호화할 때는 --buffer 파라미터를 사용합니다.

  • 무서명 전용 복호화 모드 - 이 기능은 서명되지 않은 사이퍼텍스트만 복호화합니다. 복호화 시 사이퍼텍스트에 디지털 서명이 있는 경우 작업이 실패합니다. 이 기능을 사용하면 서명을 확인하기 전에 서명된 메시지의 일반 텍스트를 실수로 처리하는 것을 방지할 수 있습니다.

암호화된 데이터 키 제한

암호화된 메시지의 암호화된 데이터 키의 수를 제한할 수 있습니다. 이 기능을 사용하면 암호화할 때 잘못 구성된 마스터 키 공급자 또는 키링을 탐지하거나 복호화 시 악성 사이퍼텍스트를 식별할 수 있습니다.

신뢰할 수 없는 소스의 메시지를 복호화할 때는 암호화된 데이터 키를 제한해야 합니다. 이렇게 하면 키 인프라에 대하여 불필요하며 비용이 높고 잠재적으로 소모적인 호출을 방지합니다.

버전 2.3.x

AWS KMS 다중 리전 키에 대한 지원이 추가되었습니다. 자세한 내용은 다중 리전 AWS KMS keys 사용 섹션을 참조하세요.

참고

AWS Encryption CLI는 버전 3.0.x부터 다중 리전 키를 지원합니다.

AWS Encryption SDK for Python 버전 2.x.x 및 AWS Encryption CLI는 지원 종료 단계에 있습니다.

선호하는 프로그래밍 언어에서 이 AWS Encryption SDK 버전을 지원 및 유지 관리하는 방법에 대한 자세한 내용은 GitHub 리포지토리SUPPORT_POLICY.rst 파일을 참조하세요.

버전 2.4.x

참고

AWS Encryption SDK for Python 버전 2.x.x 및 AWS Encryption CLI는 지원 종료 단계에 있습니다.

AWS Encryption SDK for Java 버전 2.4.0에는 AWS SDK for Java 2.x에 대한 지원이 추가되었습니다. 버전 2.4.0부터 AWS Encryption SDK for Java는 AWS SDK for Java 버전 1.x 및 버전 2.x를 지원합니다. AWS SDK for Java 사용은 선택 사항입니다. AWS Encryption SDK for Java는 AWS Key Management Service(AWS KMS)를 마스터 키 공급자로 사용하는 경우에만 AWS SDK for Java를 필요로 합니다.

자세한 내용은 필수 조건 섹션을 참조하세요.

버전 3.0.x

참고

AWS Encryption CLI 버전 3.x.x지원 종료 단계에 있습니다.

선호하는 프로그래밍 언어에서 이 AWS Encryption SDK 버전을 지원 및 유지 관리하는 방법에 대한 자세한 내용은 GitHub 리포지토리SUPPORT_POLICY.rst 파일을 참조하세요.

AWS Encryption CLI 버전 3.0.x에는 AWS KMS 다중 리전 키에 대한 지원이 추가되었습니다. 자세한 내용은 AWS Key Management Service 개발자 가이드를 참조하세요. (다른 AWS Encryption SDK 프로그래밍 언어는 버전 2.3.x부터 다중 리전 키를 지원합니다.)

AWS Encryption SDK for .NET을 도입했습니다.

버전 4.x

AWS Encryption SDK for .NET의 버전 4.x에는 AWS KMS 계층적 키링, 필수 암호화 컨텍스트 CMM, 비대칭 RSA AWS KMS 키링에 대한 지원이 추가되었습니다.