저장데이터암호화 Ken Beer Ryan Holland
목차 목차 2 요약 2 서론 2 암호화의키 : 누가키를제어하는가? 3 모델 A: 사용자가암호화방법및전체 KMI 제어 4 모델 B: 사용자가암호화방법제어, AWS 가 KMI 스토리지구성요소제공및사용자가 KMI 관리계층제공 12 모델 C: AWS 가암호화방법및전체 KMI 제어 13 결론 19 참조자료 20 요약 조직의정책또는업계나정부규범에따라저장된암호화를사용하여데이터를보호해야할수있습니다. Amazon Web Services(AWS) 의탄력적인특성이사용자의요구사항에맞는다양한옵션을제공합니다. 본백서에서는오늘날제공되는다양한저장데이터암호화방법을간략히살펴봅니다. 서론 Amazon Web Services(AWS) 는높은가용성을갖춘안전하고확장가능한클라우드컴퓨팅플랫폼을제공하며, 이를통해고객들이다양한애플리케이션을구축할수있도록유연성을제공합니다. 클라우드에저장하는데이터를한층더보호하고싶은경우, 저장된데이터를암호화하는여러가지옵션을고려해볼수있습니다. 이러한옵션은완전히자동화된 AWS 암호화솔루션부터수동의클라이언트측옵션까지다양합니다. 올바른솔루션을선택하는것은사용자가사용하고있는 AWS 서비스및키관리요구사항에따라다릅니다. 본백서에서는 AWS에서의다양한저장데이터암호화방법을간략히살펴봅니다. 기술된암호화기법을어떻게구현하는지에대해더자세히알고싶으시면추가리소스의링크를참조하십시오. 페이지 2/22
암호화의키 : 누가키를제어하는가? 어떤시스템에서든암호화라고하면다음세가지요소를필요로합니다. (1) 암호화할데이터, (2) 데이터를암호화하는방법 ( 암호화알고리즘 ), (3) 데이터및알고리즘과함께사용될암호화키가그것입니다. 대부분의최신프로그래밍언어는 Advanced Encryption Standard(AES) 를포함한다양한종류의암호화알고리즘을활용할수있는라이브러리를제공합니다. 적절한알고리즘을선택하기위해서는애플리케이션별요구사항에부합하는보안특성, 성능및규정준수 (Compliance) 사항을평가해보아야합니다. 암호화알고리즘을선택하는것과더불어, 허가되지않은접근으로부터키를보호하는것이매우중요합니다. 암호화키의보안관리는종종키관리인프라 (KMI) 를통해수행됩니다. KMI는일반텍스트키를보호하는스토리지계층및키사용을허가하는관리계층등 2개의하위구성요소로구성됩니다. KMI에서키를보호하는일반적인방법은하드웨어보안모듈 (HSM) 을사용하는것입니다. HSM은디바이스의키를사용하여암호화작업을수행하는전용스토리지및데이터처리디바이스입니다. HSM은일반적으로무단사용으로부터키를보호하기위해증거훼손방지또는저항을제공합니다. 소프트웨어기반권한부여계층은 HSM을관리할수있는사용자및어떤사용자또는애플리케이션이 HSM의어떤키를사용할수있는지를제어합니다. AWS 내의다양한데이터계층에암호화를적용할때에는누가어떤조건에서암호화키나데이터에접근가능한지정확하게파악하는것이중요합니다. 그림 1에서와같이사용자및 / 또는 AWS가암호화방법및 KMI를제공하는방법에는 3가지모델이있습니다. 사용자가암호화방법및전체 KMI를제어합니다. 사용자가암호화방법을제어하고, AWS가 KMI 스토리지구성요소를제공하고, 사용자가 KMI 관리계층을제공합니다. AWS가암호화방법및전체 KMI를제어합니다. 그림 1: AWS 의암호화모델 페이지 3/22
모델 A: 사용자가암호화방법및전체 KMI 제어이모델에서는사용자가애플리케이션의암호화방법을모두통제할뿐만아니라, 사용자 자신의 KMI를사용하여키를생성, 저장하고접근을관리합니다. KMI 및암호화방법의물리적위치는 AWS 외부또는사용자가소유한 Amazon Elastic Compute Cloud(EC2) 인스턴스내부가될수있습니다. 암호화방법은오픈소스도구, AWS SDK 또는타사소프트웨어및 / 또는하드웨어의조합이될수있습니다. 이모델의중요한보안속성은사용자가암호화키및암호화코드에서이러한키를활용하는실행환경에대한전권을가진다는것입니다. AWS는키에액세스할수없으며사용자를대신하여암호화나복호화를수행할수없습니다. 사용자가키의올바른저장, 관리및사용을담당하고데이터의기밀성, 무결성, 가용성을보장해야합니다. 다음섹션에서설명하는대로 AWS에서데이터를암호화할수있습니다. Amazon S3 사용자가원하는모든암호화방법을사용하여데이터를암호화한다음, Amazon Simple Storage Service(S3) API를사용하여암호화된데이터를업로드할수있습니다. 대부분의일반애플리케이션언어에는사용자가애플리케이션에서암호화를수행할수있게해주는암호화라이브러리가들어있습니다. 일반적으로많이사용하는오픈소스도구로는 Bouncy Castle 및 OpenSSL 등 2가지가있습니다. 객체를암호화한다음, KMI에키를안전하게저장하면암호화된객체가 PUT 요청과함께바로 Amazon S3로업로드됩니다. 이데이터를복호화하려면 Amazon S3 API에서 GET 요청을수행한다음, 암호화데이터를복호화할로컬애플리케이션으로전달합니다. AWS는 Amazon S3 암호화클라이언트와함께이러한오픈소스암호화도구의대안을제공하는데, 이는 AWS SDK에포함되어있는오픈소스 API 세트입니다. 이클라이언트를활용함으로써, Amazon S3 호출과정중필요한암 / 복호화키를사용자의 KMI로부터제공할수있습니다SDK는애플리케이션내에서 Java Cryptographiy Extensions(JCEs) 을활용하며, 이는대칭키혹은비대칭키를입력받아객체를암호화한다음 Amazon s3로업로드합니다. SDK를객체를검색하는데사용하는경우에는절차가반대입니다. Amazon S3로부터다운로드된암호화객체는 KMI의키와함께클라이언트로전달됩니다. 애플리케이션의기본 JCE는객체를복호화합니다. 페이지 4/22
Amazon S3 암호화클라이언트는 Java, Ruby 및.NET 용 AWS SDK 로통합되어, Amazon S3 와통신하기위하여작성된사용자애플리케이션내의예전암호화코드를수정없이투명하게바꿔칠수있습니다. AWS 에서암호화방법을제공하더라도사용자가사용할엔진에대해키를제어하므로사용자가데이터보안을제어합니다. 사용자가 Amazon S3 암호화클라이언트를 On- Premise 에서사용할경우, AWS 는사용자의키나암호화되지않은데이터에는접근할수없습니다. Amazon EC2 에서실행되는애플리케이션에서클라이언트를사용하는경우, 모범사례는 KMI 로부터보안전송 ( 예 : Secure Sockets Layer(SSL) 또는 Secure Shell(SSH)) 을사용하여클라이언트로키를전달하여기밀성을보장하는것입니다. 자세한내용은 Java 용 AWS SDK 설명서및클라이언트측암호화사용 (Amazon S3 개발자설명서 ) 을참조하십시오. 그림 2 에서는이러한 2 가지클라이언트측암호화방법이 Amazon S3 데이터를보호하는방법에대해보여줍니다. 그림 2: 온프레미스시스템또는 Amazon EC2 애플리케이션내에서 Amazon S3 클라이언트측암호화 Amazon S3로이동할데이터를암호화할때키관리프로세스를간소화할수있는타사솔루션을사용할수있습니다. CloudBerry Explorer PRO for Amazon S3 및 CloudBerry Backup 두솔루션모두사용자가입력한암호를암호화체계에적용하여 Amazon S3에저장된파일을보호하는클라이언트측암호화옵션을제공합니다. 프로그래밍적암호화가필요한경우 Java용 SafeNet ProtectApp이 SafeNet KeySecure KMI와통합되어애플리케이션에서클라이언트측암호화를제공합니다. KeySecure KMI는안전한키스토리지및 AWS SDK와호환되는 ProtectApp Java 클라이언트로전달되는키에대한정책설정을제공합니다. KeySecure KMI는온프레미스어플라이언스또는 Amazon EC2의가상어플라이언스로실행될수있습니다. 그림 3에서는 SafeNet 솔루션을사용하여 Amazon S3에저장된데이터를암호화하는방법을보여줍니다. 페이지 5/22
그림 3: SafeNet ProtectApp 및 SafeNet KeySecure KMI 를사용하여온프레미스시스템또는 Amazon EC2 의애플리케이션내에서 Amazon S3 클라이언트측암호화 Amazon EBS Amazon Elastic Block Store(EBS) 는 Amazon EC2 인스턴스와함께사용하기위해블록수준스토리지볼륨을제공합니다. Amazon EBS 볼륨은네트워크에연결되어있으며, 인스턴스수명과관계없이지속됩니다. Amazon EBS 볼륨은인스턴스에블록디바이스로제공되므로파일시스템수준또는블록수준암호화를위해대부분의표준암호화도구를활용할수있습니다. Linux용으로제공되는일반블록수준오픈소스암호화솔루션으로는 Loop-AES, dm-crypt(luks 포함또는미포함 ) 및 TrueCrypt가있습니다. 이솔루션은각각커널스페이스디바이스드라이버를사용하여파일시스템계층아래에서작동하여데이터의암호화및복호화를수행합니다. 데이터가저장되는디렉토리에상관없이볼륨에기록되는모든데이터를암호화하고자할경우이러한도구가유용합니다. 또다른방법으로는파일시스템수준암호화사용을들수있는데, 이솔루션은기존파일시스템위에암호화된파일시스템을올려쌓는방법입니다. 이방법은특정디렉터리를암호화할때일반적으로사용됩니다. 파일시스템수준암호화도구의 Linux 기반오픈소스예로는 ecryptfs 및 EncFs 의두가지를들수있습니다. 이솔루션이작동하려면사용자가수동으로또는 KMI로부터키를제공해야합니다. 블록수준및파일시스템수준암호화도구를사용할때주의해야할중요한점중하나는 Amazon EBS 부트볼륨이아닌데이터볼륨만암호화하는데사용해야한다는점입니다. 이러한도구가시스템기동시부트볼륨에사용할수있는신뢰된키를자동으로생성할수있는기능을지원하지않기때문입니다. 페이지 6/22
Windows 인스턴스에연결된 Amazon EBS 볼륨을암호화하는작업은 TrueCrypt 같은오픈소스애플리케이션뿐만아니라 BitLocker 또는 Encrypted File System(EFS) 을사용해서도수행할수있습니다. 어느경우든여전히사용자가이러한암호화방법에키를제공해야하며데이터볼륨만암호화할수있습니다. AWS 파트너솔루션중에는필요한암호화키를제공하고이를보호하며, Amazon EBS 볼륨의암호화과정을자동화해주는솔루션도있습니다. Trend Micro SecureCloud 및 SafeNet ProtectV는 Amazon EBS 볼륨을암호화하고 KMI 기능도함께제공하는파트너제품중두가지입니다. 두제품모두데이터볼륨뿐아니라부트볼륨도암호화할수있습니다. 이솔루션들은 Amazon EBS 볼륨이 Auto Scaling 그룹에포함된 EC2 인스턴스에부착된 (Attach) 경우도지원합니다. 그림 4는 SaaS(Software as a Service) 형태로온프레미스에서관리되거나, Amazon EC2에서실행되는소프트웨어내의키를사용하여 SafeNet 및 Trend Micro 솔루션이 Amazon EBS에저장된데이터를암호화하는방법을보여줍니다. 그림 4: SafeNet ProtectV 또는 Trend Micro SecureCloud 를사용한 Amazon EBS 의암호화 페이지 7/22
AWS Storage Gateway AWS Storage Gateway는온프레미스소프트웨어어플라이언스를 Amazon S3와연결하는서비스입니다. 이것 (Storage Gateway) 은네트워크상에서 iscsi 디스크로표시됨으로써다른소스로부터데이터를편리하게복사할수있습니다. AWS Storage Gateway에연결된디스크볼륨의데이터는정책에따라 Amazon S3로자동업로드됩니다. 소스데이터가디스크로이동하기전에이전에설명한파일암호화방법 ( 예 : Bouncy Castle 또는 OpenSSL) 중하나를사용하여디스크볼륨의소스데이터를암호화할수있습니다. 또는 AWS Storage Gateway가노출하는 iscsi 엔드포인트상에서블록수준암호화도구 ( 예 : BitLocker나 dm-crypt/luks) 를사용하여디스크볼륨의모든데이터를암호화할수있습니다. 그밖에도 AWS 파트너솔루션인, Trend Micro SecureCloud 및 SafeNet StorageSecure도 AWS Storage Gateway에서노출하는 iscsi 디스크볼륨에대해암호화및키관리를수행할수있습니다. 이들파트너는데이터를암호화하고필요한키를관리하기용이한솔루션을제공하는데, Amazon EBS 암호화솔루션이동작하는방식과설계면에서유사합니다. Amazon RDS 클라이언트측기술을사용하여 Amazon Relational Database Service(RDS) 에서데이터를암호화하려면원하는데이터쿼리작동방식을고려해야합니다. Amazon RDS는데이터저장에사용되는연결된디스크를노출하지않으므로, 앞서 Amazon EBS 섹션에서기술한투명한디스크암호화를사용할수없습니다. 그러나데이터가 Amazon RDS 인스턴스에전달되기전에이전에설명한표준암호화라이브러리 ( 예 : Bouncy Castle, OpenSSL) 를사용하여애플리케이션의데이터베이스필드를선택적으로암호화하는것은가능합니다. 이특정필드데이터가암호화됨에따라범위검색쿼리를사용하기는용이하지않지만, 암호화되지않은필드를기반으로하는쿼리는여전히유용한결과를반환합니다. 로컬애플리케이션을사용하여반환된결과의암호화된필드를복호화하여표시할수있습니다. 암호화된데이터에대해보다효율적으로쿼리를수행하려면, 키가추가된 (Keyed) HMAC(Hash-based Message Authentication Code) 값을스키마에저장하고이를위해해시함수에키를전달할수있습니다. 그리고 HMAC 필드에인덱스를생성할수있습니다. 이후쿼리에서는보호된필드에대해 HMAC 값으로만대조가됨으로써, 평문값을쿼리에노출시키지않아도됩니다. 이렇게하면쿼리의일반텍스트값을공개하지않고도데이터베이스에서데이터베이스의암호화된데이터에대해쿼리를수행할수있습니다. 어떤암호화방법을선택하든 Amazon RDS 인스턴스로전송되기전에사용자의애플리케이션에서수행되어야합니다. 페이지 8/22
CipherCloud 및 Voltage Security는 Amazon RDS의데이터기밀성보호작업을간소화해주는솔루션을제공하는두 AWS 파트너입니다. 두공급업체모두스키마를변경하지않고데이터베이스에암호화텍스트를삽입할수있는포맷유지암호화 (FPE; Format- Preserving Encryption) 를사용한데이터암호화기술을보유하고있습니다. 또한, 통합된조회테이블을사용하는토큰화방식도지원합니다. 어떤경우든데이터가 Amazon RDS 인스턴스에기록되기전에애플리케이션에서암호화또는토큰화됩니다. 이두파트너는암호화또는토큰화된필드가있는데이터베이스에대해인덱스를설정하고검색하는기능을제공합니다. 다른애플리케이션에키를배포하거나테이블을매핑하여암호화되거나토큰화된필드를해제하지않고도해당애플리케이션에서암호화나토큰화되지않은데이터를데이터베이스로부터읽을수있습니다. 예를들어, Amazon RDS의데이터를 Amazon Redshift 데이터웨어하우징솔루션으로이동한다음, 중요한정보를포함한필드는암호화나토큰화가유지된상태에서중요한정보를포함하지않은필드에대해쿼리를수행할수있습니다. 그림 5는 Amazon EC2 내에서 Voltage 솔루션을사용하여 Amazon RDS 인스턴스에데이터가기록되기전에해당데이터를암호화하는방법을보여줍니다. Amazon EC2의애플리케이션에서실행되는 Voltage Security 클라이언트가데이터센터에있는 Voltage KMI로부터암호화키를가져옵니다. 그림 5: Voltage SecureData를사용하여데이터를 Amazon RDS에기록하기전에 Amazon EC2 애플리케이션에있는해당데이터암호화 페이지 9/22
CipherCloud for Amazon Web Services는 Voltage Security 클라이언트가 Amazon EC2에서실행되는애플리케이션에대해작동하는것과유사한방식으로작동하는솔루션으로, Amazon RDS로암호화된데이터를보내고받는데필요합니다. CipherCloud는 Amazon EC2에서실행중인지아니면데이터센터에서실행중인지에관계없이애플리케이션에설치될수있는 JDBC 드라이버를제공합니다. 또한, CipherCloud for Any App 솔루션은 Amazon RDS 인스턴스로보내거나받는중에데이터를가로채는인라인게이트웨이로서배포될수있습니다. 그림 6은이러한방법으로 CipherCloud 솔루션을배포하여, Amazon RDS 인스턴스로데이터를기록하기전에, 데이터센터외부로이동하는데이터를암호화하거나토큰화하는방법을보여줍니다. 그림 6: CipherCloud 암호화게이트웨이를사용하여데이터를 Amazon RDS에기록하기전에데이터센터에있는해당데이터암호화 Amazon EMR Amazon Elastic MapReduce(EMR) 는 Amazon EC2에서실행되는사용하기쉬운하둡구현방법을제공합니다. MapReduce 작업을통하여암호화를수행하는과정에는뚜렷하게구분된 4가지의관점에따라암호화및키관리를고려해야한다. 1. 소스데이터 2. 하둡분산파일시스템 (HDFS) 3. 셔플단계 4. 출력데이터 페이지 10/22
소스데이터가암호화되지않은경우이단계를건너뛸수있으며, Amazon EMR 클러스터로전송되고있는데이터를보호하기위해 SSL이사용될수있습니다. 소스데이터가암호화되어있는경우데이터가수집될때 MapReduce 작업에서해당데이터를복호화할수있어야합니다. 작업흐름에서 Java를사용하고소스데이터가 Amazon S3에있는경우앞의 Amazon S3 섹션에서설명한클라이언트복호화방법중하나를사용할수있습니다. HDFS 마운트지점에대해사용된스토리지는클러스터노드의휘발성스토리지입니다. 인스턴스유형에따라두개이상의마운트가있을수있습니다. 이러한마운트지점을암호화하려면다음과같은작업을하는 Amazon EMR 부트스트랩스크립트를사용해야합니다. 하둡서비스중단 인스턴스에파일시스템암호화도구설치 암호화된디렉터리를만들어기존마운트지점위에암호화된파일시스템마운트 하둡서비스재시작 예를들어, 각 HDFS 마운트에대해오픈소스 ecryptfs 패키지와코드에서생성된휘발성키를사용하여이러한단계를수행할수있습니다. 암호화되는데이터가 HDFS 인스턴스의수명이상으로지속되지않으므로이암호화키가계속저장되는것을걱정할필요가없습니다. 셔플단계에는감소단계전에클러스터노드간데이터가전달되는과정이포함됩니다. 전송중에이러한데이터를암호화하려면클러스터를만들때하둡부트스트랩옵션을구성하여 SSL을설정하면됩니다. 마지막으로, 출력데이터를암호화하려면 MapReduce 작업에서 KMI에서나온키를사용하여출력을암호화해야합니다. 암호화된데이터를 Amazon S3로전송하여암호화된형태로저장할수있습니다. 페이지 11/22
모델 B: 사용자가암호화방법제어, AWS 가 KMI 스토리지구성요소제공및사용자가 KMI 관리계층제공이모델은사용자가암호화방법을관리한다는점에서모델 A 와유사하지만, 키를 사용자가온프레미스에서관리하는키스토리지시스템이아닌 AWS CloudHSM 애플리케이션에저장한다는점이모델 A와다릅니다. AWS 환경에키를저장하지만, AWS의어떤직원도이키에액세스할수없습니다. 사용자만전용 HSM 내의암호화파티션에액세스하여키를사용할수있기때문입니다. AWS CloudHSM 어플라이언스는탬퍼링 (Tamper; 조작혹은훼손 ) 을감지하는물리적 / 논리적장치가되어있으며, 탬퍼링이감지되면장비 ( 어플라이언스 ) 를초기화하도록구성되어있다. 초기화는복호화과정에있는키가저장되는 HSM의휘발성메모리를삭제하고저장된객체를암호화하는키를손상시켜실질적으로 HSM의모든키를액세스할수없고복구할수없는상태로만듭니다. AWS CloudHSM 사용이자신의배포상황에맞는지여부를결정할때는데이터암호화과정에서 HSM의역할을이해하는것이중요합니다. HSM은키구성요소를생성하고저장하는데사용할수있으며, 암호화및복호화작업을수행하지만, 키수명주기관리기능 ( 예 : 액세스제어정책, 키로테이션 ) 을수행하지는않습니다. 따라서애플리케이션을배포하기전에 AWS CloudHSM 어플라이언스와함께호환가능한 KMI도필요할수있습니다. 사용자가제공하는 KMI는온프레미스에서또는 Amazon EC2 내에서배포될수있으며, SSL을통해 AWS CloudHSM 인스턴스에안전하게통신하여데이터및암호화키를보호할수있습니다. AWS CloudHSM 서비스가 SafeNet Luna 어플라이언스를사용하므로, SafeNet Luna 플랫폼을지원하는키관리서버또한 AWS CloudHSM과함께사용할수있습니다. 모델 A에서 AWS 서비스에대해설명한암호화방법은솔루션에서 SafeNet Luna 플랫폼을지원하는한모두 AWS CloudHSM과함께작동할수있습니다. 이에따라사용자는트러스트루트를자신만액세스할수있는하드웨어어플라이언스에유지하면서자신의 KMI를 AWS 컴퓨팅환경에서실행할수있습니다. 페이지 12/22
애플리케이션에서 Amazon Virtual Private Cloud(VPC) 의 AWS CloudHSM 어플라이언스에액세스할수있어야합니다. SafeNet에서제공하는 AWS CloudHSM 클라이언트는 AWS CloudHSM 어플라이언스와상호작용하여애플리케이션의데이터를암호화합니다. 암호화된데이터는어느 Amazon S3로든지전송하여저장할수있습니다. 데이터베이스, 디스크볼륨및파일암호화애플리케이션은모두 AWS CloudHSM 및사용자지정애플리케이션과함께지원될수있습니다. 그림 7에서는 AWS CloudHSM 솔루션이 Amazon VPC의 Amazon EC2에서실행되는애플리케이션과함께작동하는방법을보여줍니다. 그림 7: Amazon VPC 에배포된 AWS CloudHSM AWS CloudHSM 어플라이언스의키에대해최고의가용성및내구성을원한다면가용영역모두에또는사용자가관리하는온프레미스 SafeNet Luna 어플라이언스와함께여러 AWS CloudHSM 어플라이언스을배포하는것이좋습니다. SafeNet Luna 솔루션은어플라이언스간에키구성요소를안전하게복제하도록해줍니다. 자세한내용은 AWS 웹사이트에서 AWS CloudHSM을참조하십시오. 모델 C: AWS 가암호화방법및전체 KMI 제어이모델에서는 AWS 가데이터의서버측암호화를제공하여암호화방법및키를투명하게 관리합니다. 페이지 13/22
AWS Key Management Service(KMS) AWS Key Management Service(KMS) 는관리형암호화서비스로, 키를프로비저닝하고사용하여 AWS 서비스에서데이터및애플리케이션을암호화하도록해줍니다. HSM에서마스터키가사용되는방식과유사하게 AWS KMS 내의마스터키가사용됩니다. 마스터키가생성된후에는서비스에서내보내지지않도록설계되었습니다. 데이터를서비스로전송한후사용자계정의특정마스터키를사용하여암호화또는복호화할수있습니다. 이러한방식으로, 마스터키에접근하여데이터를암호화및복호화할수있는사람을중앙집중적으로통제할수있고, 이러한접근을감사할수있습니다. AWS KMS는 Amazon EBS, Amazon S3 및 Amazon Redshift를포함한다른 AWS 서비스와함께기본적으로통합되어있으므로이러한서비스내의데이터를간단히암호화할수있습니다. AWS SDK는 AWS KMS와통합되어사용자지정애플리케이션의데이터를암호화할수있습니다. 데이터를암호화해야하는애플리케이션의경우 AWS KMS가전역적가용성, 낮은지연시간및높은수준의내구성을키에제공합니다. 자세한내용은 https://aws.amazon.com/kms/ 를방문하거나 KMS 암호화세부정보백서를다운로드하십시오. AWS KMS 및데이터를직접암호화하는기타서비스는봉투암호화라는방법을사용하여성능과보안간균형을유지합니다. 그림 8은봉투암호화를설명합니다. 1. 데이터를암호화하라는요청을하는동시에 AWS 서비스에서데이터키를생성합니다. 2. 데이터키를사용하여데이터를암호화합니다. 3. 데이터키는그후데이터를저장하는서비스에고유한키암호화키를사용하여암호화됩니다. 페이지 14/22
4. 이후암호화된데이터키및암호화된데이터가 AWS 스토리지서비스에저장됩니다. 그림 8: 봉투암호화 데이터키를암호화하는데사용된키암호화키가데이터및데이터키와별도로저장되고관리됩니다. 암호화키에대한엄격한액세스제어가이루어져 AWS 직원에의한무단사용을방지합니다. 평문데이터가필요할경우에이프로세스를반대로수행하면됩니다. 암호화된데이터키는키암호화키를사용하여복호화되며, 데이터키는그후데이터를복호화하는데사용됩니다. 다음 AWS 서비스에서사용자가선택할수있는다양한암호화기능을제공합니다. Amazon S3 서버측암호화를사용하여 Amazon S3 의데이터를암호화하는방법은세가지입니다. 1. 서버측암호화 : API 플래그를설정하거나 AWS Management Console에서확인란을선택하여 Amazon S3의디스크에데이터가기록되기전에해당데이터를암호화할수있습니다. 각객체는고유한데이터키로암호화됩니다. 추가적인보안을위해이키는 Amazon S3에서관리하는주기적으로로테이션되는마스터키로암호화됩니다. Amazon S3 서버측암호화는객체및마스터키모두에 256비트 Advanced Encryption Standard(AES) 키를사용합니다. 이기능을사용하는데는 Amazon S3 사용요금외에추가비용이들지않습니다. 2. 고객제공키를사용하여서버측암호화 : 객체를 Amazon S3로업로드하는동안사용자고유의암호화키를사용할수있습니다. Amazon S3에서이암호화키를사용하여 AES-256을통해데이터를암호화합니다. 객체가암호화되면사용자가제공한암호화키는데이터를보호하기위해이키를사용한 Amazon S3 시스템에서삭제됩니다. Amazon S3로부터이객체를다시읽어오기위해서는동일한암호화키를제공해야합니다. Amazon S3는암호화키가일치하는지확인한후객체를복호화하고객체를사용자에게반환합니다. 이기능을사용하는데는 Amazon S3 사용요금외에추가비용이들지않습니다. 페이지 15/22
3. KMS를사용한서버측암호화 : 객체를최종적으로암호화할고유한객체키 ( 그림 8에서데이터키로지칭 ) 를암호화하는데사용하려는계정내에서 AWS KMS 마스터키를정의함으로써 Amazon S3의데이터를암호화할수있습니다. 객체를업로드하면 KMS로요청이전송되어객체키가만들어집니다. KMS는이객체키를생성하고이를앞서지정한마스터키를사용하여암호화합니다. 그러면 KMS에서이암호화된객체키를평문객체키와함께 Amazon S3로반환합니다. Amazon S3 웹서버는일반텍스트객체키를사용하여객체를암호화하고방금암호화한객체를저장 ( 암호화된객체키와함께 ) 하고메모리에서일반텍스트객체키를삭제합니다. 이암호화된객체를읽어오기위해, Amazon S3는 AWS KMS에암호화된객체키를전송합니다. AWS KMS는올바른마스터키를사용하여객체키를복호화하고복호화된 ( 일반텍스트 ) 객체키를 S3에반환합니다. 평문객체키를사용하여 S3는암호화된객체를복호화하고이를사용자에게반환합니다. 이옵션의사용요금에대한자세한내용은 AWS Key Management Service 요금페이지를참조하십시오. Amazon EBS Amazon EBS에서볼륨을생성할때, AWS KMS 마스터키를사용하여암호화하도록선택할수있는데, 이는 EBS 볼륨을최종적으로암호화하는고유볼륨키를암호화하는데쓰인다. 이렇게선택하면 Amazon EC2 서버에서인증된요청을 AWS KMS로전송하여볼륨키를만듭니다. AWS KMS는이볼륨키를생성하고, 마스터키를사용하여이를암호화하고, 일반텍스트볼륨키와암호화된볼륨키를 Amazon EC2 서버로반환합니다. 일반텍스트볼륨키는메모리에저장되어, 연결된 EBS 볼륨으로들어오거나나가는모든데이터를암호화및복호화합니다. 암호화된볼륨 ( 또는해당볼륨에서만들어진모든암호화된스냅샷 ) 에서인스턴스에다시연결해야하는경우 AWS KMS로의호출이만들어져암호화된볼륨키를복호화합니다. AWS KMS는올바른마스터키를사용하여이암호화된볼륨키를복호화하고복호화된볼륨키를 Amazon EC2에반환합니다. Amazon Glacier 데이터가디스크에기록되기전에 Amazon Glacier 서비스고유의 256 비트 AES키로자동으로암호화되며, 이키는 AWS가통제하는별도시스템에저장됩니다. 이기능을사용하는데는 Amazon Glacier 사용요금외에추가비용이들지않습니다. AWS Storage Gateway AWS Storage Gateway는 SSL을통해 AWS에데이터를전송하고 Amazon S3 또는 Amazon Glacier에저장된암호화된데이터를각서버측암호화스키마를사용하여저장합니다. 페이지 16/22
Amazon EMR S3DistCp는대규모의데이터를 Amazon S3에서 HDFS로, HDFS에서 Amazon S3로, Amazon S3 버킷간에이동하는 Amazon EMR 기능입니다. S3DistCp는 EMR 데이터를사용자가관리하는 Amazon S3 버킷에기록할때서버측암호화를사용하도록 Amazon S3에요청하는기능을지원합니다. 이기능을사용하는데는 Amazon S3를사용하여 Amazon EMR 데이터를저장하는요금외에추가비용이들지않습니다. Amazon RDS 의 Oracle Amazon RDS의 Oracle에대해 Oracle Advanced Security 옵션을사용하도록선택하여내장 Transparent Data Encryption(TDE) 및 Native Network Encryption(NNE) 기능을활용할수있습니다. Oracle 암호화모듈은데이터및키암호화키를만들어데이터베이스를암호화합니다. Amazon RDS의 Oracle 인스턴스에고유한키암호화키는주기적으로로테이션되는 256비트 AES 마스터키에의해자체적으로암호화됩니다. 이마스터키는 Amazon RDS 서비스에고유하며 AWS 제어를받는별도시스템에저장됩니다. Amazon RDS 의 Microsoft SQL Server Amazon RDS의 Microsoft SQL Server에 Transparent Data Encryption(TDE) 을프로비저닝하도록선택할수있습니다. SQL Server 암호화모듈은데이터및키암호화키를만들어데이터베이스를암호화합니다. Amazon RDS의 SQL Server 인스턴스에고유한키암호화키는주기적으로로테이션되는지역적 256비트 AES 마스터키에의해자체적으로암호화됩니다. 이마스터키는 Amazon RDS 서비스에고유하며 AWS 제어를받는별도시스템에저장됩니다. 이기능을사용하는데는 Amazon RDS의 Microsoft SQL Server 사용요금외에추가비용이들지않습니다. Amazon Redshift Amazon Redshift 클러스터를만들때사용자생성테이블에서모든데이터를암호화하도록선택할수있습니다. Amazon Redshift 클러스터의서버측암호화에서선택할수있는옵션은 3가지입니다. 1. 첫번째옵션에서는데이터블록 ( 백업포함 ) 이임의의 256비트 AES 키를사용하여암호화됩니다. 이러한키는임의의 256비트 AES 데이터베이스키를사용하여자체적으로암호화됩니다. 이데이터베이스키는사용자의클러스터에고유한 256비트 AES 클러스터마스터키에의해암호화됩니다. 클러스터마스터키는 AWS 제어를받는별도시스템에저장된 Amazon Redshift 서비스에고유한주기적으로로테이션되는지역적마스터키로암호화됩니다. 이기능을사용하는데는 Amazon Redshift 사용요금외에추가비용이들지않습니다. 페이지 17/22
2. 두번째옵션을사용하면데이터베이스키를암호화하는데사용된 256비트 AES 클러스터마스터키가 AWS CloudHSM에서또는 SafeNet Luna HSM 어플라이언스온프레미스를사용하여생성됩니다. 이클러스터마스터키는그런다음, HSM 외부로이동하지않는마스터키에의해암호화됩니다. Amazon Redshift 클러스터가시작되면클러스터마스터키가 HSM에서복호화된다음, 데이터베이스키를복호화하는데사용됩니다. 이데이터베이스키는 Amazon Redshift 호스트로전송되어클러스터생명주기동안메모리에만상주합니다. 클러스터를다시시작하는경우클러스터마스터키가다시 HSM으로부터검색됩니다. 일반텍스트형태로디스크에저장되는일은없습니다. 이옵션을사용하면데이터를암호화하는데사용하는키의계층구조및수명주기를보다탄탄하게제어할수있습니다. 이기능을사용하는데는 Amazon Redshift( 키저장에 AWS CloudHSM을사용하도록선택하는경우해당서비스요금추가 ) 사용요금외에추가비용이들지않습니다. 3. 세번째옵션에서는, 데이터베이스키를암호화하는데사용된 256비트 AES 클러스터마스터키가 AWS KMS에생성됩니다. 이클러스터마스터키는그런다음, AWS KMS 내의마스터키에의해암호화됩니다. Amazon Redshift 클러스터가시작되면클러스터마스터키가 AWS KMS에서복호화된다음, 데이터베이스키를복호화하는데사용됩니다. 이데이터베이스키는 Amazon Redshift 호스트로전송되어클러스터생명주기동안메모리에만상주합니다. 클러스터를다시시작하는경우클러스터마스터키가다시 AWS KMS의강화된보안어플라이언스로부터검색됩니다. 일반텍스트형태로디스크에저장되는일은없습니다. 이옵션을사용하면마스터키의액세스및사용에대해세부적인제어를정의할수있고 AWS CloudTrail을통해이러한제어를감사할수있습니다. 이옵션의사용요금에대한자세한내용은 AWS Key Management Service 요금페이지를참조하십시오. Amazon Redshift 클러스터내에서생성된데이터암호화외에도, 사용자가제공하는키및 Amazon S3 Encryption Client를사용하여이전에암호화한 Amazon S3으로부터 Amazon Redshift로암호화된데이터를로드할수도있습니다. Amazon Redshift는 Amazon S3 및 Amazon Redshift 간을이동하는데이터를복호화하고다시암호화하여데이터의전체수명주기를보호하는기능을제공합니다. AWS의여러서비스간서버측암호화기능을사용하면 AWS Management Console에서구성설정을하거나, 지정한 AWS 서비스에대한 CLI나 API 요청을만들어간단히데이터를암호화할수있습니다. 암호화키의허가된사용은 AWS에서자동으로안전하게관리합니다. 이러한키에대한허가되지않은접근은데이터유출로이어질수있으므로, AWS는허가되지않은접근을최소화하는강력한접근제어기능을갖춘시스템및프로세스를구축하였으며, 타사감사기관에이러한시스템의검토를요청하여 SOC 1, 2, 3, PCI-DSS 및 FedRAMP를포함한보안인증을취득하였습니다. 페이지 18/22
결론 암호화키가어떻게관리되고어디에사용되는지에대해 3가지다른모델을알아보았습니다. 암호화방법및 KMI를사용자가모두담당하는경우, 애플리케이션의데이터암호화방법에대해사용자가세부적으로제어할수있습니다. 그러나이방법은배포노력이필요하고애플리케이션의암호화방법과 AWS 서비스를긴밀하게통합할수없는단점이있습니다. 대안책으로, 배포가쉽고 AWS 클라우드서비스와긴밀하게통합되는관리형서비스를선택할수있습니다. 이옵션은데이터를저장하는서비스를위한암호화, 사용자키에대한통제, 키저장소보호, 그리고모든데이터접근시도에대한감사를용이하게한다. 표 1은 AWS 전반에저장된데이터를암호화하는데사용할수있는옵션을요약해보여줍니다. 사용하고있는 AWS 서비스를고려하여자신의데이터분류에가장적합한암호화및키관리모델이어느것인지결정하는것이좋습니다. AWS 서비스 Amazon S3 고객관리형키를사용하는클라이언트측솔루션 Java 용 AWS SDK 의 Bouncy Castle, OpenSSL, Amazon S3 암호화클라이언트 암호화방법및 KMI 모델 A 모델 B 모델 C 고객관리형키로 KMI를사용하는클라이언트측파트너솔루션 Java용 SafeNet ProtectApp AWS CloudHSM에서고객관리형키를사용하는클라이언트측솔루션 AWS CloudHSM 클라이언트와통합된사용자지정 Amazon VPC-EC2 애플리케이션 AWS 관리형키를사용하는서버측암호화 Amazon S3 서버측암호화, 고객제공키를사용하는서버측암호화, AWS Key Management Service 를사용하는서버측암호화 Amazon Glacier 해당사항없음 해당사항없음 AWS CloudHSM 클라이언트와통합된사용자지정 Amazon VPC-EC2 애플리케이션 서버측암호화를사용하여모든데이터가자동으로암호화됨 AWS Storage Gateway Linux 블록수준 : - Loop-AES, dmcrypt(luks 포함또는미포함 ) 및 TrueCrypt Linux 파일시스템 : - ecryptfs 및 EncFs Windows 블록수준 : -TrueCrypt Windows 파일시스템 : - BitLocker Trend Micro SecureCloud, SafeNet StorageSecure 해당사항없음 Amazon S3 서버측암호화 페이지 19/22
Amazon EBS Linux 블록수준 : - Loop-AES, dmcrypt+luks 및 TrueCrypt Linux 파일시스템 : - ecryptfs 및 EncFs Windows 블록수준 : -TrueCrypt Windows 파일시스템 : - BitLocker, EFS Trend Micro SecureCloud, SafeNet ProtectV AWS CloudHSM 클라이언트와통합된사용자지정 Amazon VPC-EC2 애플리케이션 AWS Key Management Service 를사용하는 Amazon EBS 암호화 Amazon RDS 의 Oracle Bouncy Castle, OpenSSL CipherCloud Database Gateway 및 Voltage SecureData AWS CloudHSM 클라이언트와통합된사용자지정 Amazon VPC-EC2 애플리케이션 선택적라이선스인 Oracle 의투명한암호화 (Transparent Data Encryption; TDE) 및네이티브네트워크암호화 (Native Network Encryption; NNE) Microsoft SQL Server 의 TDE Amazon RDS 의 Microsoft SQL Server Bouncy Castle, OpenSSL CipherCloud Database Gateway 및 Voltage SecureData AWS CloudHSM 클라이언트와통합된사용자지정 Amazon VPC-EC2 애플리케이션 해당사항없음 Amazon Redshift 해당사항없음 해당사항없음 AWS CloudHSM 또는온프레미스 Safenet Luna HSM에서관리되는마스터키를사용하는암호화된 Amazon Redshift 클러스터 AWS 관리형마스터키를사용하는암호화된 Amazon Redshift 클러스터 Amazon EMR ecryptfs AWS CloudHSM 클라이언트와통합된사용자지정 Amazon VPC-EC2 애플리케이션 저장된데이터를영구적으로보호하기위해 Amazon S3 서버측암호화를사용하는 S3DistCp 표 1: 저장데이터암호화옵션요약 참조자료 Bouncy Castle Java 크립토라이브러리 http://www.bouncycastle.org/ OpenSSL 크립토라이브러리 http://www.openssl.org/ Amazon S3 암호화용 CloudBerry Explorer PRO http://www.cloudberrylab.com/amazon-s3-explorer-pro-cloudfront-iam.aspx Java용 AWS SDK 및 Amazon S3를사용하는클라이언트측데이터암호화 http://aws.amazon.com/articles/2850096021478074 페이지 20/22
Amazon S3, Amazon EBS 및 AWS CloudHSM용 SafeNet 암호화제품 http://www.safenet-inc.com/ Trend Micro SecureCloud http://www.trendmicro.com/us/enterprise/cloud-solutions/securecloud/index.html CipherCloud for AWS 및 CipherCloud for Any App http://www.ciphercloud.com/ Voltage Security SecureData Enterprise http://www.voltage.com/products/securedata-enterprise/ AWS CloudHSM https://aws.amazon.com/cloudhsm/ AWS Key Management Service https://aws.amazon.com/kms/ Key Management Service 암호화세부정보백서 https://d0.awsstatic.com/whitepapers/kms-cryptographic-details.pdf Amazon S3의데이터를암호화하기위한 Amazon EMR S3DistCp http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/usinge M R_s3distcp.html Amazon RDS의 Oracle용투명한데이터암호화 http://docs.aws.amazon.com/amazonrds/latest/userguide/appendix.oracle. Op tions.html#appendix.oracle.options.advsecurity Amazon RDS의 Microsoft SQL Server용투명한데이터암호화 http://docs.aws.amazon.com/amazonrds/latest/userguide/chap_sqlserver. h tml#sqlserver.concepts.general.options Amazon RedShift 암호화 http://aws.amazon.com/redshift/faqs/#0210 AWS 보안블로그 http://blogs.aws.amazon.com/security 페이지 21/22
문서수정 2013 년 11 월 : 초기버전 : 모델 C 의 AWS Key Management Service(KMS) 및 Amazon EBS 에섹션추가 모델 C 의 Amazon S3, Amazon Redshift 섹션업데이트 페이지 22/22