BLOG
암호화는 심층 방어 전략의 중요한 구성 요소입니다. 이 전략은 일련의 방어 메커니즘을 사용하는 보안 방식으로, 하나의 보안 메커니즘에 장애가 발생해도 나머지 하나 이상의 보안 메커니즘은 계속 작동됩니다. 더 많은 조직 빠르고 대규모의 운영을 원하는 만큼 중요한 컴플라이언스 요구 사항을 충족하고 데이터 보안을 개선할 방법이 필요합니다. 암호화를 올바르게 사용하면 기본 액세스 제어 이상의 추가 보호 계층을 제공할 수 있습니다.
암호화는 어떻게 작동하나요?
암호화는 키와 알고리즘을 사용하여 데이터를 읽을 수 없는 데이터 (암호 텍스트)로 변환하여 올바른 키로만 다시 읽기가 가능합니다. 예를 들어“Hello World!”와 문구가 암호화되면“1c28df2b595b4e30b7b07500963dc7c”로 변환이 됩니다. 암호화 알고리즘에는 여러 유형의 암호화 알고리즘이 있습니다. 강력한 암호화 알고리즘은 수학적인 속성을 통해 암호를 생성하여 키가 없어도 실제로 사용할 수 있는 컴퓨팅 성능을 사용하여 해독할 수 없는 암호문을 생성합니다. 따라서 키 보호 및 관리는 모든 암호화 솔루션의 중요한 일부입니다.
보안 전략의 일부
효과적인 보안 전략은 데이터에 액세스하는 개인이나 시스템에 필요한 최소 권한을 정의하기 위한 엄격한 액세스 제어 및 지속적인 작업으로부터 시작됩니다. AWS는 자체 액세스 제어 정책을 관리하고 최상의 데이터 보호를 달성하기 위한 심층 방어를 지원합니다.
암호화는 기본 액세스 제어 메커니즘의 약점을 완화할 수 있으므로 심층 방어 전략의 중요한 구성 요소입니다. 액세스 제어 메커니즘에 장애가 발생하여 디스크의 원시 데이터에 대한 액세스나 네트워크 링크로의 액세스가 허용되는 경우에는 어떻게 될까요? 데이터가 강력한 키를 사용하여 암호화 된 경우, 암호 해독 키가 데이터와 동일한 시스템에 있지 않은 이상 공격자가 데이터를 해독하는 것은 불가능합니다. 이것이 얼마나 강력한지를 보여주기 위해 256 비트 키 (AES-256)가 있는 AES (Advanced Encryption Standard)를 통해 말씀드리겠습니다. 이는 업계에서 가장 강력하고 정부에서 승인한 데이터 암호화 알고리즘입니다. AES-256은 Amazon Simple Storage Service (S3) 서버 측 암호화를 포함한 AWS에서 데이터를 암호화하는 데 사용하는 기술입니다. 현재의 컴퓨팅 기술로는 이 암호화를 깨려면 최소 1조 년은 걸릴 것입니다. 연구에 따르면 미래의 양자 기반 컴퓨팅조차도 AES 암호화를 깨는 데 걸리는 시간을 단축시킬 수는 없다고 합니다.
데이터에 대한 과도한 액세스 정책을 실수로 생성했을 때는 어떻게 해야 할까요? 잘 설계된 암호화 및 키 관리 시스템은 암호 해독 키에 대한 액세스와 데이터에 대한 액세스를 분리하기 때문에 이로 인해 문제가 되는 것을 방지할 수 있습니다.
암호화 솔루션 요구 사항
암호화 솔루션을 최대한 활용하려면 다음 두 가지 사항을 고려해야 합니다.
- 사용하지 않는 키 보호: 암호화 키를 사용하는 시스템이 외부에서 사용되지 않도록 보안이 유지되고 있습니까? 또한 이러한 시스템은 해당 키에 액세스 없이는 해독할 수 없는 강력한 암호문을 생성하기 위해 암호화 알고리즘을 올바르게 구현합니까?
- 독립 키 관리: 암호화 사용 권한이 기본 데이터에 대한 액세스 제어 방식과 독립적입니까?
이러한 요구 사항을 충족시키기 위해 AWS에서 사용 가능한 타사 솔루션이 있습니다. 하지만 이러한 시스템은 대규모로 운영하기가 어렵고 많은 비용이 들 수 있습니다. AWS는 암호화 및 키 관리를 단순화하는 다양한 옵션을 제공합니다.
사용하지 않는 키 보호
타사 키 관리 솔루션을 사용하면 일반 텍스트 키가 누출되어 솔루션 외부에서 사용되는 위험을 측정하기가 어려울 수 있습니다. 키는 어딘가에 저장돼야 하지만 이러한 스토리지 시스템이 허가되지 않은 액세스로부터 안전하게 보관되는지를 계속 확인하고 감사할 수는 없는 노릇입니다. 기술의 복잡성과 성능이나 가용성을 저하시키지 않는 암호화에 대한 필요성은 키 관리 솔루션을 선택하고 운영할 때 중요한 균형의 상실을 초래할 수 있습니다. 키 보안을 최대화하는 가장 좋은 방법은 하드웨어 보안 모듈 (HSM)을 사용하는 것입니다. 이것은 암호화 키가 악의적인 사용자가 해당 키에 액세스하여 사용할 수 있는 방식으로 장치를 벗어나지 못하도록 여러 보안 제어 기능이 내장된 특수 컴퓨팅 장치입니다.
최신 HSM에서 이러한 제어 중 하나는 무단 변경으로, 장치는 권한 없이 일반 텍스트 키에 액세스하려는 물리적 또는 논리적 시도를 감지하고 공격이 성공하기 전에 키를 파기합니다. AWS 데이터 센터에서는 자체 하드웨어를 설치 및 작동할 수 없으므로 고객 키를 보호하기 위해 AWS는 고객을 대신하여 HSM들을 관리하는 AWS Key Management Service (KMS), 고객이 자체 HSM을 관리할 수 있는 기능을 제공하는 AWS CloudHSM 두 서비스를 제공합니다. 각 서비스는 사용자를 대신하여 키를 만들거나 온-프레미스 시스템에서 키를 가져와 각 서비스에서 사용할 수 있습니다.
AWS KMS 또는 AWS CloudHSM의 키를 사용하여 데이터를 직접 암호화하거나 데이터를 직접 암호화하는 애플리케이션에 배포된 다른 키를 보호할 수 있습니다. 암호화 키를 암호화하는 기술을 엔벨로프 암호화라고 하며 매번 HSM에 데이터를 보내는 대신 일반 텍스트 고객 데이터가 있는 컴퓨터에서 암호화 및 암호 해독을 수행할 수 있습니다. 큰 데이터 세트 (예: 데이터베이스)의 경우 모든 읽기 / 쓰기 작업에 대해 데이터 세트와 HSM간에 기가 바이트의 데이터를 이동하는 것은 실용적이지 않습니다. 대신 엔벨로프 암호화를 사용하면 필요할 때 데이터 암호화 키를 응용 프로그램에 배포할 수 있습니다. HSM의 “마스터”키는 데이터 키의 복사본을 암호화하는 데 사용되므로 응용 프로그램은 해당 키로 암호화된 데이터와 함께 암호화된 키를 저장할 수 있습니다. 응용 프로그램이 데이터를 암호화하면 일반 텍스트 키의 데이터 키를 메모리에서 삭제할 수 있습니다. 데이터를 해독하는 유일한 방법은 크기가 수백 바이트에 불과한 암호화된 데이터 키가 HSM으로 다시 전송되어 해독되는 경우입니다.
엔벨로프 암호화 프로세스는 성능 저하를 최소화하기 위해 고객을 대신하여 데이터를 암호화하는 (서버 측 암호화라고도 함) 모든 AWS 서비스에서 사용됩니다. 자체 애플리케이션에서 데이터를 암호화하려면 (클라이언트 측 암호화) AWS KMS 또는 AWS CloudHSM에서 봉투 암호화를 사용하는 것이 좋습니다. 두 서비스 모두 클라이언트 라이브러리 및 SDK를 제공하여 응용 프로그램 코드에 암호화 기능을 추가하고 각 서비스의 암호화 기능을 사용합니다. AWS Encryption SDK는 AWS에서 실행되는 응용 프로그램에서뿐만 아니라, 어디서나 사용할 수 있는 툴 중 하나입니다.
암호화 알고리즘과 HSM을 구현하는 것이 중요하기 때문에 모든 HSM 공급 업체는 신뢰할 수 있는 타사의 제품 검증을 받아야 합니다. AWS KMS 및 AWS CloudHSM의 HSM은 암호화 모듈 평가 표준인 National Institute of Standards and Technology의 FIPS 140-2 프로그램에 따라 검증됩니다. 이를 통해 포트 및 인터페이스, 인증 메커니즘, 물리적 보안 및 탬퍼 응답, 운영 환경, 암호화 키 관리 및 전자기 간섭 / 전자기 호환성 (EMI / EMC) 관련 기능을 포함한 암호화 모듈의 안전한 설계 및 구현을 검증합니다. FIPS 140-2 인증 암호화 모듈을 사용한 암호화는 종종 미국의 FedRamp 및 HIPAA-HITECH와 같은 다른 보안 관련 준수 체계에 대한 요구 사항입니다.
독립적인 키 관리
AWS KMS 및 AWS CloudHSM은 사용자를 대신하여 일반 텍스트 마스터 키를 보호할 수 있지만 액세스 제어를 관리하여 누가 어떤 조건에서 어떤 암호화 키를 사용할 수 있는지를 결정해야 합니다. AWS KMS를 사용하면 얻을 수 있는 이점 중 하나는 키에 대한 액세스 제어를 정의하는 데 사용하는 정책 언어가 다른 모든 AWS 리소스에 대한 액세스를 정의하는 데 사용하는 것과 동일하다는 것입니다. 언어는 실제 권한 제어가 아니라는 점을 주의하세요. 데이터에 대한 액세스를 관리하는 데 사용하는 것과 다른 키에 대한 액세스를 관리하기 위한 메커니즘이 필요합니다. AWS KMS는 키만 관리할 수 있는 관리자 한 그룹과 기본 암호화 된 데이터에 대한 액세스만 관리할 수 있는 다른 관리자 세트를 할당할 수 있도록 하여 해당 메커니즘을 제공합니다. 이러한 방식으로 키 관리 프로세스를 구성하면 권한이 없는 사용자에게 데이터를 해독하기 위해 권한을 실수로 에스컬레이션하는 것을 피하기 위해 필요한 업무 분리가 가능합니다. 제어를 더욱 세분화하기 위해 AWS CloudHSM은 키에 대한 액세스를 정의하는 독립적인 정책 메커니즘을 제공합니다.
키 관리를 데이터 관리와 분리할 수 있어도 암호화 키에 대한 액세스를 올바르게 구성했는지 확인할 수 있습니다. AWS KMS는 AWS CloudTrail 과 통합되므로 누가 어떤 키, 어떤 리소스, 언제 사용했는지 감사할 수 있습니다. 이를 통해 암호화 관리 프로세스에 대한 세부적인 비전을 제공할 수 있으며, 이는 일반적으로 온-프레미스 감사 메커니즘보다 훨씬 심도 있습니다. AWS CloudHSM의 감사 이벤트는 AWS에서 운영하는 타사 솔루션을 모니터링하고 경고하기 위한 AWS 서비스인 Amazon CloudWatch로 보낼 수 있습니다.
사용하지 않는 데이터 및 사용 중인 데이터 암호화
고객 데이터를 처리하는 모든 AWS 서비스는 사용 중인 데이터를 암호화하고 사용하지 않는 데이터를 암호화하는 옵션을 제공합니다. AWS KMS 또는 AWS CloudHSM을 사용하여 암호화를 제공하는 모든 AWS 서비스는 AES-256을 사용합니다. 이러한 서비스는 일반 텍스트 암호화 키를 저장하지 않습니다. 이는 AWS KMS 및 AWS CloudHSM만이 FIPS 140-2 검증 HSM을 사용하여 수행할 수 있는 기능입니다. 이 아키텍처는 무단 키 사용을 최소화합니다.
사용 중인 데이터를 암호화 할 때 AWS 서비스는 TLS (Transport Layer Security) 프로토콜을 사용하여 애플리케이션과 AWS 서비스간에 암호화를 제공합니다. 대부분의 상용 솔루션은 TLS 요구에 OpenSSL이라는 오픈 소스 프로젝트를 사용합니다. OpenSSL에는 TLS를 구현하는 코드 중 70,000개 이상으로 약 500,000 줄의 코드가 있습니다. 코드베이스는 크고 복잡하며 감사하기가 어렵습니다. 또한 OpenSSL에 버그가 있는 경우 글로벌 개발자 커뮤니티는 변경 사항을 수정 및 테스트 할뿐만 아니라 결과 수정 사항 자체에 새로운 결함이 발생하지 않도록 해야 합니다.
OpenSSL에서 TLS 구현 관련 문제에 대한 AWS의 답변은 s2n이라고하는 자체 TLS 구현 또는 신호 대 잡음비를 개발하는 것이었습니다. 우리는 작고 빠른 디자인을 위해 2015년 6 월에 s2n을 출시했습니다. s2n의 목표는 이해하기 쉽고 완전히 감사 가능한 네트워크 암호화를 제공하는 것입니다. 우리는 Apache 2.0 라이센스에 따라 라이센스를 공개하고 라이센스를 부여했으며 GitHub에서 호스팅했습니다.
또한 수학적 논리를 사용하여 안전성과 정확성을 테스트하기 위해 자동화 된 추론을 사용하여 s2n을 분석하도록 설계했습니다. 공식적인 방법으로 알려진 이 프로세스를 통해 코드를 변경할 때마다 s2n 코드베이스의 정확성을 검증합니다. 또한 이러한 수학적 증명을 자동화하여 새로운 코드 릴리스에서 원하는 보안 속성이 변경되지 않도록 정기적으로 다시 실행합니다. 자동화 된 수학적 정확성 증명은 보안 산업에서 떠오르는 추세이며, AWS는 다양한 미션 크리티컬 소프트웨어에이 접근 방식을 사용합니다.
TLS를 구현하려면 해당 키의 소유권을 주장하는 암호화 키와 디지털 인증서를 사용해야 합니다. AWS Certificate Manager와 AWS Private Certificate Authority는 TLS 엔드 포인트를 제공해야 하는 인프라 전체에서 디지털 인증서의 발급 및 교체를 단순화 할 수 있는 두 가지 서비스입니다. 두 서비스 모두 AWS KMS와 AWS CloudHSM의 조합을 사용하여 발급한 디지털 인증서에 사용된 키를 생성 및 / 또는 보호합니다.
요약
AWS에서는 보안이 최우선 순위이며, 암호화를 사용하여 기본 액세스 제어 이상의 데이터를 보호할 수 있도록 최대한 쉽게 만드는 것을 목표로 합니다. 클라우드 안팎에서 작동하는 암호화 도구를 구축하고 지원함으로써 데이터를 보호하고 전체 환경에서 규정을 준수할 수 있도록 도와줍니다. 우리는 최고의 보안 기술을 사용하여 비용 효율적인 방식으로 데이터를 보호할 수 있도록 모든 작업의 중심에 보안을 설정합니다.
이 게시물에 대한 의견이 있으면 아래의 의견 섹션에 의견을 제출하세요. 이 게시물에 대한 질문이 있는 경우 AWS KMS 포럼 또는 AWS CloudHSM 포럼에서 새 스레드를 시작하거나 AWS Support에 문의해 주시기 바랍니다.
원문URL: https://aws.amazon.com/ko/blogs/security/importance-of-encryption-and-how-aws-can-help/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.