암호화
- 10분
암호화는 허가된 사용자 외에는 정보를 알아볼 수 없도록 하는 수학적 수단입니다. 데이터 파일은 암호화될 수 있으며, 네트워크를 통해 해당 데이터가 처리되는 세션도 암호화될 수 있습니다. 오늘날 대부분의 웹 사이트와 서비스는 트래픽을 암호화하고 보호하는 수단으로 TLS( 전송 계층 보안 )를 사용합니다. 브라우저의 주소 줄에 프로토콜 식별자 https:// ( http:// 대신)가 포함되어 있고 세션을 보호하는 서비스의 인증서가 녹색 확인 표시와 같은 일종의 "확인된" 아이콘으로 표시되는 경우 사이트에서 TLS를 사용한다는 것을 알고 있습니다.
암호화는 인터넷과 퍼블릭 클라우드 플랫폼에서 호스트되는 애플리케이션의 보안에 큰 역할을 합니다. 미사용 데이터(예: Azure SQL Database 또는 AWS S3 스토리지)를 암호화 하여 도난당한 경우 쓸모없게 렌더링할 수 있으며, TLS를 사용하여 이동 중 암호화 하여 클라우드 서비스 간 또는 사용자와 클라우드 서비스 간에 통신할 때 데이터를 보호할 수 있습니다. 가장 큰 문제는 키 가용성에 있습니다. 데이터가 암호화된 경우 애플리케이션에서 데이터를 검색할 수 있지만 공격자가 검색할 수 없도록 암호 해독 키를 저장하는 방법 및 위치는 무엇일까요? 또한 TLS를 사용하여 브라우저와 웹 서버 간(또는 예를 들어 웹 서버와 데이터베이스 또는 애플리케이션과 사용자 인증을 담당하는 자격 증명 공급자 간)의 트래픽을 암호화하는 경우 잠재적인 공격자에게 키를 노출시키지 않고 어떻게 키를 사용할 수 있을까요?
이러한 질문에 답변하기 위해 디지털 암호화의 기본 사항을 검토하고 권한이 없는 사람에게 노출시키지 않는 상태에서 권한이 있는 사람이 키를 사용할 수 있도록 하는 몇 가지 메커니즘을 살펴보겠습니다.
대칭 암호화
암호화에서 키는 메시지의 콘텐츠를 변경하는 데 사용되는 숫자의 시퀀스입니다. 즉, 암호화하거나 암호를 해독하는 데 사용됩니다. 데이터를 암호화하고 해독하는 데 사용되는 대칭 암호화는 가장 오래된 형태의 암호화 중 하나입니다. 일반적으로 데이터베이스 및 클라우드 스토리지 서비스에서 미사용 데이터를 암호화하는 데 사용됩니다.
몇 년 동안 대칭 암호화에 대한 몇 가지 알고리즘이 발전하고 표준으로 채택되었습니다. 현재는 이를 중단할 수 있는 방법이 없기 때문입니다. 그 중 하나는 AES(Advanced Encryption Standard)입니다. 2001년 미국 NIST(국립표준기술원)에서 채택한 이 암호화 방식은 최신 컴퓨터에는 효과적이지 않다고 여겨지는 DES(데이터 암호화 표준)를 바꿨습니다. 256비트 키를 사용하는 AES-256은 AWS 및 Azure와 같은 클라우드 플랫폼에서 저장하는 데이터를 암호화하는 데 널리 사용됩니다.
AES-256 암호화 데이터에 대한 무차별 암호 대입 공격은 몇 년 동안 수십억 대의 슈퍼 컴퓨터를 크래킹하고 문제를 단순화합니다. 이를 통해 오늘날의 컴퓨터에서 키 없이 AES-256 암호화 데이터를 해독하는 것은 불가능합니다. 따라서 대칭 암호화의 주요 과제는 데이터를 암호화하고 암호 해독하는 것이 아닙니다. 키를 필요로 하는 모든 당사자가 사용할 수 있는 방식으로 저장하지만, 키를 가질 권한이 있는 사용자 만 사용할 수 있습니다.
키 저장 및 유지 관리
데이터 암호화 및 해독은 쉽지만 암호화 및 암호 해독에 사용되는 키를 보호하는 것은 그렇지 않습니다. 비밀이 저장되는 모든 통신 시스템에서 비밀 자체는 악의적인 행위자의 대상이 될 가능성이 높습니다.
보안 엔지니어는 조직에서 입증된 키 관리 서비스를 사용하여 키 스토리지를 악용할 수 없도록 하는 것이 좋습니다. Azure Key Vault는 이러한 서비스의 한 예입니다. 키 관리자는 조직에서 PCI DSS(이 모듈의 뒷부분에서 설명)와 같은 표준 및 프레임워크를 준수하여 암호화/암호 해독 키 및 기타 암호화 비밀을 주기적으로 변경하거나 "교체"해야 합니다. 또한 공격자가 암호 해독 키, 데이터베이스 연결 문자열 또는 기타 "비밀"을 검색할 가능성을 줄입니다.
Azure Key Vault는 사용자와 애플리케이션이 키, 암호, 연결 문자열, 인증서 및 기타 비밀을 매우 안전한 방식으로 저장할 수 있도록 하는 SaaS 서비스입니다. Microsoft Entra ID를 사용하여 사용자를 인증하고 Azure SQL Database 및 Azure Storage와 같은 다른 Azure 서비스와 통합됩니다. 애플리케이션이 거기에 저장된 비밀을 검색할 수 있도록 API를 통해서도 액세스할 수 있습니다. 최대한의 보호를 위해 선택적으로 FIPS(Federal Information Processing Standards) 140-2 수준 2 유효성이 검사된 HSM(하드웨어 보안 모듈)에 비밀이 저장될 수 있습니다. HSM은 공유하거나 전용으로 지정될 수 있습니다. Azure Key Vault에 저장된 비밀은 Microsoft에게는 보이지 않습니다.
키 및 기타 비밀을 Key Vault에 저장한 후에는 시스템을 설정하여 사용자 개입 없이 자동으로 값을 교체할 수 있습니다. 이렇게 하면 조직이 PCI DSS 사용 약관을 준수하게 됩니다. 보안 인시던트가 발생하거나 정기적인 보안 감사가 진행되는 동안 Key Vault는 전체 조직과 관련된 IAM 로그를 생성하는 중앙 위치로 사용됩니다.
AWS는 AWS Key Management Service(KMS) 형태의 유사한 서비스를 제공합니다. 또한 KMS는 FIPS 140-2 수준 2 유효성이 검사된 HSM을 지원하고 AWS CloudTrail과 통합하여 감사 가능한 액세스 로그를 생성합니다. KMS와 Azure Key Vault가 해당 클라우드 플랫폼에 통합되어 있다는 사실은 이러한 플랫폼에서 호스트되는 애플리케이션에 추가 보안을 제공합니다. 데이터 센터를 사용하는 애플리케이션과 이를 저장하는 키 자격 증명이 함께 배치되어 있기 때문에 데이터 센터에 유지되는 비밀은 더 안전합니다.
비대칭형 암호화(공개 키 암호화)
대칭형 암호화는 미사용 데이터를 암호화하는 데 유용하지만 두 당사자가 암호화된 메시지를 교환하려는 경우 문제가 발생합니다. Bob이 메시지를 암호화하여 Alice에게 보내는 경우 Alice는 어떻게 암호를 해독할까요? Bob이 Alice에게 암호 해독 키를 보내는 경우 키가 손상되거나 도난당할 수 있습니다. 이 경우 Bob과 Alice가 의지하던 보안은 전혀 보안이 아닙니다. 비공개로 생각되던 통신이 결국 비공개가 아니었다는 것이 밝혀져서 목숨을 잃은 사람들의 역사도 있습니다. 한 예로 스코틀랜드의 메리 여왕이 있는데, 그녀는 엘리자베스 여왕의 암살을 계획하던 중 공동 공모자에게 보낸 메시지를 약한 암호로 난독화했기 때문에 처형되었습니다1.
암호 해독 키를 노출시키지 않고 암호화된 메시지를 교환해야 하는 문제는 학문과 관련된 문제가 아닙니다. 브라우저에서 https:// URL에 연결할 때마다, 애플리케이션이 타사 ID 공급자에 연결할 때마다 그리고 다른 시간에 발생합니다. 솔루션은 비대칭 암호화입니다. 비대칭 시스템에서는 하나의 키를 사용하여 메시지를 암호화하고 다른 키를 사용하여 암호를 해독합니다. 이렇게 하면 특정 받는 사람에게 전달되는 메시지는 받는 사람이 공개적으로 배포하는 공개 키인 키를 사용하여 암호화할 수 있습니다. 공개 키로 암호화된 메시지를 해독하는 데 두 번째 키만 사용할 수 있습니다. 이 키는 받는 사람이 비공개로 유지하고 프라이빗 키가 됩니다. 이러한 이유로 비대칭 키를 퍼블릭-프라이빗 키 라고도 합니다.
인증서
Bob이 Alice로부터 암호화된 메시지를 받으려는 경우 공개 키를 전자 메일로 보내거나 종이에 적어 책상에 남겨 둘 수 있습니다. 그러나 브라우저가 웹 서버에서 공개 키를 원하고 서버에 연결되어 있다고 생각 되는 서버에 연결하고 있는지 확인하려는 경우 어떻게 해야 할까요? 여기에서 인증서가 필요합니다.
인증서의 목적은 전달자의 신뢰성을 설정하는 모든 엔터티에 대한 공개 키를 제공하는 것입니다. 인증 기관(CA)은 이 인증서의 생산자이며 인증을 요청하는 각 개인 또는 회사의 ID를 물리적으로 확인하는 작업으로 신뢰를 받습니다. 따라서 모든 인증서는 검증을 요구하고 확인할 수 있는 코드를 사용하여 CA에 의해 서명됩니다.
디지털 ID 인증서 형식에 대한 국제 표준은 1998년에 수립된 X.509입니다. 그림 3에 나와 있는 것처럼 x.509의 세 가지 버전이 있습니다, 최신 버전은 특히 여러 공급자가 서비스에 참여하고 해당 당사자가 인증서 발급자 및 서명자에 대한 추가 정보를 요구하는 경우 CSP와 관련된 트랜잭션에 필요한 추가 필드를 추가합니다.
![그림 3: X.509 인증서의 일부. [Microsoft 제공]](../../cmu-cloud-admin/cmu-cloud-security/media/fig8-3.png)
그림 3: X.509 인증서의 일부. [출처: Microsoft]
브라우저가 https:// URL을 사용하여 웹 서버에 연결하면 웹 서버가 인증을 확인하고 공개 키를 포함하는 인증서를 반환하는 TLS 핸드셰이크를 시작합니다. 그러나 공개 키를 사용하여 서버에 전송되는 요청을 암호화하지는 않습니다. (서버만 프라이빗 키를 가지고 있기 때문에 웹 서버만 암호를 해독할 수 있도록 요청을 암호화할 수 있지만 공개 키를 가진 사람이 암호를 해독할 수 있기 때문에 서버의 응답은 안전하지 않습니다.) 대신 브라우저는 공개 키를 사용하여 서버로 전송하는 대칭 세션 키를 암호화합니다. 그런 다음 세션 키를 사용하여 브라우저와 웹 서버 간의 모든 통신을 암호화하고 해독합니다. 따라서 TLS는 대칭형 및 비대칭형 암호화의 조합을 사용합니다. 비대칭형은 대칭 키를 암호화하고 대칭형은 요청 및 응답을 암호화합니다.
인증서는 웹 서버에서만 사용되는 것은 아닙니다. ID 공급자는 데이터베이스 서버에서 데이터베이스 연결을 암호화하는 자격 증명 교환을 암호화하는 데 사용됩니다. 즉, 인터넷을 통해 데이터 센터 내에서 사용 중 데이터를 보호하는 데 사용됩니다. 클라우드 관리자의 역할 중 하나는 이러한 인증서를 관리하는 것입니다. 즉, 신뢰할 수 있는 CA에서 인증서를 가져오고 웹 서버, 데이터베이스 서버, ID 서버 및 기타 필요한 곳에 설치하고 만료 전에 갱신합니다.
동형 암호화
암호화가 프로세스와 산업 모두로 발전함에 따라 데이터 보안에서 곧 중요한 역할을 할 수 있는 유망한 기술 중 하나는 HE(동형 암호화 )입니다. 암호화된 엔터티에서 정보를 얻는 것은 기술적으로 암호화된 상태를 유지하는 수단입니다.
HE는 비대칭 키 관리와 프라이빗 키 관리 시스템 또는 자격 증명 모음에 대한 필요성을 대체합니다. 인증을 원하는 사용자조차 해당 사용자에 대한 액세스 권한이 없어도 유효한 서명이 포함된 인증서를 전달할 수 있습니다. 이 서명은 해시 함수와 같은 파생 함수의 결과입니다. 사용자의 유효성을 검사하기 위해 ID 공급자는 인증 기관에서 암호화된 유효성 검사 키를 가져오고 해당 키를 사용하여 실제로 인증서를 해독하지 않고 서명을 추출합니다. 이 방법론에 대한 연구는 진행 중이며, 대부분의 경우 현재 교육 기관 및 연구 기관에 국한됩니다.