이 문서에서는 동형 암호화를 사용하는 방법과 시기 및 오픈 소스 Microsoft SEAL(Simple Encrypted Arithmetic Library)을 사용하여 동형 암호화를 구현하는 방법을 설명합니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
기존 암호화 스키마는 키 생성, 암호화 및 암호 해독의 세 가지 기능으로 구성됩니다. 대칭 키 암호화 스키마는 암호화 및 암호 해독 모두에 동일한 비밀 키를 사용합니다. 안전한 아웃소싱 클라우드 스토리지를 위해 대량의 데이터를 효율적으로 암호화할 수 있습니다. 공개 키 암호화 스키마는 암호화에는 공개 키를 사용하고 암호 해독에는 별도의 비밀 키를 사용합니다. 공개 키를 아는 사람은 누구나 데이터를 암호화할 수 있지만 비밀 키를 아는 사람만 데이터를 해독하고 읽을 수 있습니다. 공개 키 암호화를 사용하면 안전한 온라인 통신이 가능하지만 일반적으로 대칭 키 암호화보다 효율성이 떨어집니다.
보안 스토리지 및 통신을 위해 기존 암호화를 사용할 수 있지만 아웃소싱된 계산에서는 암호화 레이어를 제거해야 합니다. 아웃소싱된 계산을 제공하는 클라우드 서비스는 데이터 및 키에 대한 무단 액세스를 방지하기 위해 액세스 정책을 구현해야 합니다. 데이터 프라이버시는 클라우드 공급자가 시행하고 고객이 신뢰하는 액세스 제어 정책에 의존합니다.
Microsoft SEAL 동형 암호화를 사용하면 클라우드 공급자는 저장하고 계산하는 데이터에 암호화되지 않은 액세스 권한이 없습니다. 계산은 암호화된 데이터에 대해 직접 수행할 수 있습니다. 이러한 암호화된 계산의 결과는 암호화된 상태로 유지되며 데이터 소유자만 비밀 키를 사용하여 암호 해독할 수 있습니다. 공개 키 기능이 항상 필요한 것은 아니지만 대부분의 동형 암호화는 공개 키 암호화 스키마를 사용합니다.
시나리오 정보
회사에서는 클라우드 데이터를 암호화된 형식으로 보내고 받고 저장하는 경우가 많습니다. 그러나 클라우드 컴퓨팅을 활용하려면 회사에서 암호화되지 않은 데이터 또는 암호 해독할 수 있는 키를 제공해야 합니다. 이렇게 하면 회사 데이터 위험 수준이 높아질 수 있습니다. 동형 암호화를 사용하면 암호화된 데이터에서 직접 계산이 가능하므로 개인 정보 보호가 중요한 데이터에 클라우드의 잠재력을 더 쉽게 적용할 수 있습니다.
잠재적인 사용 사례
- 개인 정보 보호가 중요한 데이터 및 프로그램 일부에 대한 덧셈 및 곱셈과 같은 간단한 계산
- 단일 소유자가 모든 데이터를 소유하고 암호 해독 키에 단독으로 액세스할 수 있는 아웃소싱 클라우드 컴퓨팅
고려 사항
암호화된 데이터에는 일부 계산만 가능합니다. Microsoft SEAL 동형 암호화 라이브러리는 암호화된 정수 또는 실수에 대한 덧셈 및 곱셈을 허용합니다. 암호화된 비교, 정렬 또는 정규식은 이 기술을 사용하여 암호화된 데이터를 평가하는 데 적합하지 않은 경우가 많습니다. 따라서 Microsoft SEAL을 사용하여 프로그램 일부에 대한 특정 개인 정보 보호에 중요한 클라우드 계산만 구현할 수 있습니다.
Microsoft SEAL에는 서로 다른 속성을 가진 두 개의 동형 암호화 스키마가 제공됩니다. BFV 스키마를 사용하면 암호화된 정수에서 모듈식 산술을 수행할 수 있습니다. CKKS 스키마는 암호화된 실수 또는 복소수에 대한 덧셈과 곱셈을 허용하지만 대략적인 결과만 산출합니다. CKKS는 암호화된 실수를 합산하거나, 암호화된 데이터에 대한 기계 학습 모델을 평가하거나, 암호화된 위치의 거리를 계산할 때 최고의 선택입니다. 정확한 값이 필요한 애플리케이션의 경우 BFV 스키마만 선택할 수 있습니다.
동형 암호화는 효율적이지 않습니다. 동형 암호화에는 큰 성능 오버헤드가 수반되기 때문에 암호화되지 않은 데이터에서 수행하는 데 이미 비용이 많이 드는 계산은 암호화된 데이터에 적합하지 않을 수 있습니다.
동형 암호화로 암호화된 데이터는 암호화되지 않은 데이터보다 몇 배 더 크므로 이 기술을 사용하여 예를 들어 대규모 데이터베이스 전체를 암호화하는 것은 타당하지 않을 수 있습니다. 대신 엄격한 개인 정보 요구 사항으로 암호화되지 않은 클라우드 계산이 금지되지만 계산 자체가 매우 경량인 시나리오는 의미 있는 사용 사례입니다.
일반적으로 동형 암호화 스키마에는 데이터 소유자가 보유하는 단일 비밀 키가 있습니다. 동형 암호화는 여러 프라이빗 데이터 소유자가 협업 계산에 참여하려는 시나리오에 적합하지 않습니다.
암호화되지 않은 계산을 암호화된 데이터의 계산으로 변환하는 것이 항상 쉽고 간단하지는 않습니다. 새 사용자가 Microsoft SEAL을 사용하여 계산을 프로그래밍하고 실행할 수 있더라도 효율적인 구현과 비효율적인 구현 간에 큰 차이가 있을 수 있습니다. 성능을 개선하는 방법을 알기 어려울 수 있습니다.
동형 암호화 기본 형식 자체는 안전하지만 이를 사용하는 앱과 프로토콜이 안전하다는 보장은 없습니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- Jose Contreras | 수석 소프트웨어 엔지니어링 관리자
다음 단계
동형 암호화 및 Microsoft SEAL 라이브러리에 대한 자세한 내용은 Microsoft Research의 Microsoft SEAL 및 GitHub의 SEAL 코드 프로젝트를 참조하세요.
Azure의 보안에 대한 다음 리소스를 참조하세요.