입문 가이드 및 Google Cloud 우수사례

클라우드 암호화, 그 종류 및 Google Cloud 배포에 대한 심층적인 탐색을 시작해 보겠습니다.

IaaS의 한 분야인 클라우드 컴퓨팅은 더 이상 단순한 유행어가 아닙니다. 클라우드 서비스는 온프레미스 기술 스택의 복잡성을 줄이려는 개인, 기업, 정부 기관에서 주류 기술로 자리 잡았습니다.

클라우드는 편의성, 비용 효율성 및 확장성의 대명사입니다.

간단히 말해, 클라우드 컴퓨팅은 물리적으로 소유하지 않고 인터넷을 통해 스토리지, RAM, CPU와 같은 컴퓨팅 자원을 임대하는 것을 의미합니다.

일상생활에서 흔히 볼 수 있는 예로는 Google 드라이브나 Yahoo Mail이 있습니다. 우리는 이러한 회사에 데이터, 때로는 민감한 개인 정보나 업무 관련 정보를 위탁합니다.

대부분의 일반 사용자는 클라우드 컴퓨팅의 개인 정보 보호나 보안에 대해 크게 신경 쓰지 않습니다. 그러나 감시의 역사나 현재의 정교한 사이버 공격에 대해 잘 알고 있는 사람이라면 경계를 늦추지 않거나 최소한 현재 상황에 대한 정보를 습득해야 합니다.

클라우드 암호화란 무엇일까요?

클라우드 암호화는 클라우드에 저장된 데이터를 암호화하여 무단 접근을 방지함으로써 이러한 우려를 해소합니다.

암호화는 암호(알고리즘)를 사용하여 일반 정보를 알아볼 수 없도록 변환하는 기술입니다. 이렇게 하면 공격자가 정보에 접근하더라도 그 내용을 이해할 수 없게 됩니다.

다양한 사용 사례에 따라 여러 가지 유형의 암호화가 존재합니다. 따라서 클라우드 데이터 암호화에 강력한 암호화 기술을 사용하는 것이 매우 중요합니다.

예를 들어, 다음 텍스트를 해독할 수 있겠습니까?

Iggmhnctg rtqfwegu jkij-swcnkva vgejpqnqia & hkpcpeg ctvkengu, ocmgu vqqnu, cpf CRKu vq jgnr dwukpguugu cpf rgqrng itqy.

물론, 어렵습니다!

이 텍스트는 사람의 두뇌에는 퍼즐처럼 느껴질 수 있지만, 카이사르 디코더를 사용하면 단 몇 초 만에 해독할 수 있습니다.

카이사르 암호에 익숙한 사람이라면 암호화된 텍스트의 모든 문자가 원래 텍스트의 문자보다 알파벳 순서상 두 자리 앞서 있다는 것을 알 수 있습니다.

핵심은 AES-256과 같이 훨씬 강력한 암호화 알고리즘을 사용하는 것입니다.

클라우드 암호화는 어떻게 작동할까요?

앞부분의 마지막 몇 문장은 마치 사용자가 직접 암호화 알고리즘을 선택해야 하는 것처럼 들렸을 수도 있습니다.

기술적으로는 그렇게 할 수도 있지만, 일반적으로 클라우드 서비스 제공업체는 기본 암호화를 활성화하거나 서드파티의 서비스형 암호화(Encryption as a Service)를 활용합니다.

따라서 클라우드 암호화를 두 가지 범주로 나누어 구현 방식을 살펴보겠습니다.

#1. 클라우드 플랫폼 내 암호화

이 방법은 신뢰할 수 있는 클라우드 서비스 제공업체가 암호화를 처리하는 가장 간단한 방법입니다.

일반적으로 다음 상황에 적용됩니다.

미사용 데이터 암호화

데이터를 저장 장치에 저장하기 전이나 후에 암호화된 형태로 저장하는 경우입니다.

클라우드 암호화는 비교적 새로운 접근 방식이므로 정해진 표준 운영 방식이 있는 것은 아닙니다. 다양한 방법을 실험하는 연구 논문이 많이 있지만, 실제 적용이 중요합니다.

그렇다면 Google Cloud와 같은 선도적인 클라우드 인프라 회사는 저장된 데이터를 어떻게 보호할까요?

Google의 자료에 따르면 Google은 데이터를 여러 시스템의 저장 컨테이너에 분산된 작은 그룹(몇 기가바이트)으로 나눕니다. 특정 컨테이너에는 동일하거나 다른 사용자의 데이터가 포함될 수 있습니다.

또한 각 패킷은 동일한 컨테이너에 있고 단일 사용자의 데이터일지라도 개별적으로 암호화됩니다. 즉, 특정 패킷의 암호화 키가 손상되더라도 다른 파일은 안전하게 유지됩니다.

출처: Google Cloud

또한 암호화 키는 데이터가 업데이트될 때마다 변경됩니다.

이러한 저장 수준 데이터는 AES-256 암호화를 사용하여 암호화되며, 2015년 이전에 생성된 일부 영구 디스크는 예외적으로 AES-128 암호화가 사용됩니다.

이것은 개별 패킷 수준에서 이루어지는 첫 번째 암호화 계층입니다.

다음으로, 이러한 데이터 청크를 호스팅하는 하드 디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD)는 AES-256 암호화의 또 다른 계층으로 암호화됩니다. 일부 구형 HDD는 여전히 AES-128을 사용합니다. 장치 수준 암호화 키는 저장 수준 암호화 키와 다릅니다.

이러한 모든 DEK(데이터 암호화 키)는 KEK(키 암호화 키)로 다시 암호화되며, 이 키는 Google의 KMS(키 관리 서비스)에서 중앙에서 관리됩니다. 특히, 모든 KEK는 AES-256/AES-128 암호화를 사용하며, 각 Google 클라우드 서비스에는 하나 이상의 KEK가 연결되어 있습니다.

이러한 KEK는 Google의 공통 암호화 라이브러리를 사용하여 최소 90일마다 순환됩니다.

각 KEK는 백업되고, 사용될 때마다 추적되며, 권한이 있는 직원만 접근할 수 있습니다.

다음으로, 모든 KEK는 AES-256 암호화로 다시 암호화되어 루트 KMS라고 불리는 다른 키 관리 시설에 저장된 KMS 마스터 키를 생성합니다. 루트 KMS는 각 GCP 데이터 센터의 전용 머신에서 관리됩니다.

이제 이 루트 KMS는 AES-256으로 다시 암호화되어 피어 투 피어 인프라에 저장된 단일 루트 KMS 마스터 키를 생성합니다.

루트 KMS의 각 인스턴스는 임의 접근 메모리에 키를 저장하고 있는 모든 루트 KMS 마스터 키 배포자에서 실행됩니다.

루트 KMS 마스터 키 배포자의 새 인스턴스는 부정 행위를 방지하기 위해 이미 실행 중인 인스턴스에 의해 승인되어야 합니다.

또한 모든 배포자 인스턴스가 동시에 시작되어야 하는 상황에 대비하여 루트 KMS 마스터 키는 두 개의 물리적 위치에 백업됩니다.

마지막으로, 20명 미만의 Google 직원만이 이 극도로 보안이 유지된 위치에 접근할 수 있습니다.

이것이 Google이 저장 데이터에 대한 클라우드 암호화를 구현하는 방식입니다.

그러나 이러한 복잡한 과정을 직접 처리하고 싶다면 키를 직접 관리할 수도 있습니다. 또는 위에서 언급한 방식 위에 다른 암호화 계층을 추가하고 키를 자체적으로 관리할 수도 있습니다. 하지만 이렇게 하면 키를 분실했을 때 웹 프로젝트에 접근할 수 없게 된다는 점을 명심해야 합니다.

다른 모든 클라우드 제공업체에서 Google과 동일한 수준의 세부 정보를 기대해서는 안 됩니다. Google은 프리미엄 서비스를 제공하므로, 더 적은 비용으로 특정 위협 모델에 더 적합한 다른 제공업체를 선택하는 것이 더 나을 수도 있습니다.

전송 중인 데이터 암호화

데이터가 클라우드 제공업체 데이터 센터 내에서 이동하거나 사용자의 컴퓨터에서 업로드될 때와 같이 경계 외부로 이동하는 경우입니다.

다시 말하지만, 전송 중인 데이터를 보호하는 완벽한 방법은 없으므로 Google Cloud의 구현 방식을 살펴보겠습니다.

관련 백서인 전송 중 암호화에서는 고정되지 않은 데이터를 보호하기 위한 세 가지 조치, 즉 인증, 암호화 및 무결성 검사를 명시합니다.

Google은 데이터 센터 내에서 엔드포인트 인증 및 선택적 암호화를 통한 무결성 검사를 통해 전송 중인 데이터를 보호합니다.

사용자가 추가적인 보안 조치를 선택할 수 있지만, Google은 일부 직원에게 고도로 모니터링된 접근 권한을 부여하여 건물 내에서 최상의 수준의 보안을 유지합니다.

물리적 경계를 넘어, Google은 자체 클라우드 서비스(예: Google 드라이브)와 클라우드에서 호스팅되는 모든 고객 애플리케이션(예: 컴퓨팅 엔진에서 실행되는 웹사이트)에 대해 차별화된 정책을 채택합니다.

첫 번째 경우, 모든 트래픽은 먼저 TLS(전송 계층 보안)를 사용하여 Google 프런트엔드(GFE)로 알려진 체크포인트로 이동합니다. 그런 다음 트래픽은 DDoS 공격 완화 및 서버 전체의 부하 분산을 거친 후 최종적으로 의도된 Google Cloud 서비스로 전달됩니다.

두 번째 경우, 전송 중인 데이터의 보안을 보장하는 책임은 데이터 전송에 다른 Google 서비스(예: Cloud VPN)를 사용하지 않는 한 대부분 인프라 소유자에게 있습니다.

일반적으로 TLS는 데이터가 전송 중에 변조되지 않았는지 확인하는 데 사용됩니다. 이 프로토콜은 URL 표시줄에 자물쇠 아이콘으로 표시되는 HTTPS를 사용하여 웹사이트에 연결할 때 기본적으로 사용되는 것과 동일합니다.

TLS는 모든 웹 브라우저에서 널리 사용될 뿐만 아니라 이메일, 음성/영상 통화, 인스턴트 메시징 등과 같은 다른 응용 프로그램에도 적용됩니다.

그러나 궁극적인 암호화 표준을 위해, AES-256과 같은 고급 암호화 알고리즘으로 여러 계층의 보안을 제공하는 가상 사설망을 활용할 수 있습니다.

하지만 클라우드 암호화를 직접 구현하는 것은 쉬운 일이 아닙니다.

#2. 서비스형 암호화

특정 사용 사례에서 클라우드 플랫폼의 기본 보안 프로토콜이 충분하지 않거나 존재하지 않는 경우에 유용합니다.

가장 이상적인 해결책은 모든 것을 직접 관리하고 엔터프라이즈급 데이터 보안을 보장하는 것이지만, 현실적으로는 쉽지 않으며 클라우드 컴퓨팅을 선택하는 이유 중 하나인 번거로움을 없애줍니다.

따라서 CloudHesive와 같은 서비스형 암호화(EAAS)를 사용할 수 있습니다. 클라우드 컴퓨팅을 사용하는 것과 마찬가지로, 이번에는 CPU, RAM, 스토리지 등이 아닌 암호화 기능을 ‘임대’해야 합니다.

EAAS 공급자를 통해 저장 및 전송 중인 데이터에 대한 암호화를 적용할 수 있습니다.

클라우드 암호화의 장점과 단점

가장 큰 장점은 보안입니다. 클라우드 암호화를 사용하면 사용자 데이터가 사이버 범죄자로부터 안전하게 보호됩니다.

클라우드 암호화가 모든 해킹을 막을 수는 없지만, 문제가 발생할 경우 사용자에게 책임을 묻고 필요한 정당성을 확보할 수 있습니다.

단점 중 하나는 기존 보안 프레임워크를 업그레이드하는 데 필요한 비용과 시간입니다. 또한 암호화 키를 직접 관리할 때 키에 접근할 수 없는 경우 아무것도 할 수 없다는 점도 기억해야 합니다.

그리고 이는 비교적 새로운 기술이기 때문에 오랫동안 검증된 EAAS 제공업체를 찾기 어려울 수도 있습니다.

결론적으로, 가장 좋은 방법은 신뢰할 수 있는 클라우드 서비스 제공업체를 이용하고 기본 암호화 메커니즘을 기반으로 구축하는 것입니다.

마무리

이 글을 통해 클라우드 암호화에 대한 이해를 높일 수 있기를 바랍니다. 요약하자면, 클라우드 암호화는 클라우드와 관련된 데이터 보안, 특히 클라우드에서 데이터가 이동할 때의 보안에 관한 것입니다.

Google Cloud, Amazon Web Services 등과 같은 대부분의 최고 수준 클라우드 인프라 회사는 다양한 사용 사례에 적합한 보안 기능을 제공합니다. 그러나 중요 업무용 애플리케이션을 호스팅하기 전에 기술 용어를 검토하는 것은 결코 나쁜 생각이 아닙니다.

추신: AWS, Google Cloud, Azure 등에서 제공하는 클라우드 비용 최적화 솔루션을 살펴보십시오.