Szyfrowanie homomorficzne przy użyciu biblioteki SEAL

.NET

W tym artykule omówiono, jak i kiedy używać szyfrowania homomorficznego oraz jak zaimplementować szyfrowanie homomorficzne przy użyciu biblioteki arytmetycznej (SEAL) typu open source firmy Microsoft Simple Encrypted.

Architektura

Diagram showing traditional and SEAL encryption.

Pobierz plik programu Visio z tą architekturą.

Workflow

Tradycyjne schematy szyfrowania składają się z trzech funkcji: generowania kluczy, szyfrowania i odszyfrowywania. Schematy szyfrowania kluczy symetrycznych używają tego samego klucza tajnego zarówno do szyfrowania, jak i odszyfrowywania. Umożliwia wydajne szyfrowanie dużych ilości danych na potrzeby bezpiecznego, zewnętrznego magazynu w chmurze. Schematy szyfrowania kluczy publicznych używają klucza publicznego do szyfrowania i oddzielnego klucza tajnego do odszyfrowywania. Każdy, kto zna klucz publiczny, może szyfrować dane, ale tylko ktoś, kto zna klucz tajny, może odszyfrować i odczytać dane. Szyfrowanie klucza publicznego umożliwia bezpieczną komunikację online, ale zwykle jest mniej wydajne niż szyfrowanie klucza symetrycznego.

Można użyć tradycyjnego szyfrowania do bezpiecznego magazynu i komunikacji, ale zlecone obliczenia wymagały usunięcia warstw szyfrowania. Usługi w chmurze, które zapewniają obliczenia z zewnątrz, muszą implementować zasady dostępu, aby zapobiec nieautoryzowanemu dostępowi do danych i kluczy. Prywatność danych opiera się na zasadach kontroli dostępu narzuconych przez dostawcę usług w chmurze i zaufanych przez klienta.

Dzięki szyfrowaniu homomorficznemu microsoft SEAL dostawcy usług w chmurze nigdy nie mają niezaszyfrowanego dostępu do przechowywanych i obliczanych danych. Obliczenia można wykonywać bezpośrednio na zaszyfrowanych danych. Wyniki takich zaszyfrowanych obliczeń pozostają zaszyfrowane i mogą być odszyfrowywane tylko przez właściciela danych przy użyciu klucza tajnego. Większość szyfrowania homomorficznego używa schematów szyfrowania kluczy publicznych, chociaż funkcjonalność klucza publicznego może nie zawsze być potrzebna.

Szczegóły scenariusza

Firmy często wysyłają, odbierają i przechowują swoje dane w chmurze w postaci zaszyfrowanej. Jednak aby korzystać z przetwarzania w chmurze, firmy muszą podać niezaszyfrowane dane lub klucze, aby je odszyfrować. Ta praktyka naraża dane firmowe na zwiększone ryzyko. Szyfrowanie homomorficzne umożliwia obliczanie bezpośrednio na zaszyfrowanych danych, co ułatwia stosowanie potencjału chmury dla danych o znaczeniu krytycznym dla prywatności.

Potencjalne przypadki użycia

  • Uproszczone obliczenia, takie jak dodawanie i mnożenie danych o znaczeniu prywatności i części programów.
  • Przetwarzanie w chmurze, w którym jeden właściciel jest właścicielem wszystkich danych i ma wyłączny dostęp do kluczy odszyfrowywania.

Kwestie wymagające rozważenia

  • Tylko niektóre obliczenia są możliwe na zaszyfrowanych danych. Biblioteka szyfrowania homomorficznego microsoft SEAL umożliwia dodawanie i mnożenie zaszyfrowanych liczb całkowitych lub rzeczywistych. Zaszyfrowane porównanie, sortowanie lub wyrażenia regularne nie są często możliwe do oceny na zaszyfrowanych danych przy użyciu tej technologii. W związku z tym można zaimplementować tylko określone obliczenia chmury o znaczeniu krytycznym dla prywatności na częściach programów przy użyciu programu Microsoft SEAL.

  • Pakiet Microsoft SEAL zawiera dwa schematy szyfrowania homomorficznego z różnymi właściwościami. Schemat BFV umożliwia wykonywanie modularnych arytmetyki na zaszyfrowanych liczbach całkowitych. Schemat CKKS umożliwia dodawanie i mnożenie zaszyfrowanych liczb rzeczywistych lub zespolonych, ale daje tylko przybliżone wyniki. CKKS to najlepszy wybór podczas sumowania zaszyfrowanych liczb rzeczywistych, oceny modeli uczenia maszynowego na zaszyfrowanych danych lub odległości obliczeniowych zaszyfrowanych lokalizacji. W przypadku aplikacji, w których są wymagane dokładne wartości, schemat BFV jest jedynym wyborem.

  • Szyfrowanie homomorficzne nie jest wydajne. Ponieważ szyfrowanie homomorficzne wiąże się z dużym obciążeniem wydajnościowym, obliczenia, które są już kosztowne w przypadku niezaszyfrowanych danych, prawdopodobnie nie są możliwe do wykonania w przypadku zaszyfrowanych danych.

  • Dane zaszyfrowane za pomocą szyfrowania homomorficznego są wiele razy większe niż niezaszyfrowane dane, więc szyfrowanie całych dużych baz danych może nie mieć sensu, na przykład za pomocą tej technologii. Zamiast tego scenariusze, w których ścisłe wymagania dotyczące prywatności uniemożliwiają niezaszyfrowane obliczenia w chmurze, ale same obliczenia są dość lekkie, są znaczącymi przypadkami użycia.

  • Zazwyczaj schematy szyfrowania homomorficznego mają pojedynczy klucz tajny, który jest przechowywany przez właściciela danych. Szyfrowanie homomorficzne nie jest uzasadnione w przypadku scenariuszy, w których wielu różnych właścicieli danych prywatnych chce zaangażować się w wspólne obliczenia.

  • Nie zawsze jest łatwo lub łatwo przetłumaczyć niezaszyfrowane obliczenia na obliczenia na zaszyfrowane dane. Nawet jeśli nowi użytkownicy mogą programować i uruchamiać obliczenia przy użyciu narzędzia Microsoft SEAL, może istnieć duża różnica między wydajną i nieefektywną implementacją. Trudno jest wiedzieć, jak poprawić wydajność.

  • Chociaż sam typ pierwotny szyfrowania homomorficznego jest bezpieczny, nie gwarantuje, że aplikacje i protokoły korzystające z niego są bezpieczne.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

Następne kroki

Aby dowiedzieć się więcej na temat szyfrowania homomorficznego i biblioteki Microsoft SEAL, zobacz Microsoft SEAL from Microsoft Research and the SEAL code project on GitHub (Projekt kodu SEAL w witrynie GitHub).

Zobacz następujące zasoby dotyczące zabezpieczeń na platformie Azure: