O co w ogóle chodzi w szyfrowaniu homomorficznym
Intuicyjna idea: liczenie na danych, których nikt nie widzi
Szyfrowanie homomorficzne zmienia podstawową zasadę, do której wszyscy się przyzwyczaili: że aby coś policzyć na danych, trzeba je najpierw odszyfrować. Tu jest odwrotnie – obliczenia wykonuje się bez odszyfrowania danych, a serwer nigdy nie ma dostępu do ich „nagiej” postaci.
Wyobrażenie, które zwykle dobrze działa: sejf z podwójnymi rękawicami. Użytkownik wkłada do sejfu dane (np. swoją pensję), zamyka go własnym kluczem (szyfruje), po czym wysyła sejf do chmury. Serwer widzi tylko zamknięty sejf, ale ma „rękawice”, które pozwalają w ograniczonym zakresie manipulować zawartością – dodawać, mnożyć, wykonywać inne z góry określone operacje – bez otwierania sejfu. Po zakończeniu obliczeń sejf wraca do właściciela, który jedyny ma klucz do jego otwarcia i widzi wynik w postaci jawnej.
Z perspektywy biznesowej oznacza to, że operator chmury może świadczyć usługi analityczne lub obliczeniowe, nie widząc treści danych klientów. Dla firm, które mają bardzo wrażliwe informacje (dane medyczne, finansowe, dane o zachowaniu użytkowników), jest to potencjalnie przełomowy model współpracy z dostawcami zewnętrznymi.
Różnica względem typowego szyfrowania i VPN
Klasyczne szyfrowanie – czy to symetryczne (np. AES), czy asymetryczne (np. RSA) – ma prosty model użycia: szyfrujemy dane w spoczynku lub w transmisji, a obliczenia wykonujemy na danych odszyfrowanych. Nawet jeśli ruch jest zabezpieczony TLS/VPN, to po stronie serwera dane są odszyfrowywane do postaci jawnej, zapisane w RAM i przetwarzane normalnie.
W praktyce wygląda to tak:
- użytkownik szyfruje dane i przesyła je przez bezpieczne połączenie (TLS/VPN),
- serwer odszyfrowuje dane, przetwarza je, zapisuje wyniki,
- opcjonalnie szyfruje wynik przed wysłaniem z powrotem.
W tym modelu serwer musi być godny zaufania: administrator ma potencjalnie dostęp do pamięci, można wykonać zrzuty RAM, podatności w oprogramowaniu mogą ujawnić dane. Szyfrowanie homomorficzne zmienia ten model: serwer nie dostaje nigdy danych w postaci jawnej, pracuje wyłącznie na szyfrogramach.
Gdzie faktycznie pojawia się problem zaufania
Dopóki dane są przetwarzane w lokalnym centrum danych pod pełną kontrolą organizacji, problem często jest zepchnięty na dalszy plan. Kłopot zaczyna się, gdy:
- firma chce przenieść analitykę do chmury publicznej,
- wykorzystuje zewnętrzne usługi scoringowe, antyfraudowe, marketingowe,
- musi spełnić rygorystyczne wymogi regulacyjne (np. RODO, regulacje bankowe, sektor zdrowia),
- ma dane, których ujawnienie skutkowałoby poważnymi konsekwencjami reputacyjnymi lub prawnymi.
Pojawia się pytanie: czy można zlecić obliczenia na danych, a jednocześnie nie dać nikomu możliwości ich podglądu? Właśnie tu wchodzi szyfrowanie homomorficzne: chmura staje się „maszynką do liczenia”, która nigdy niczego nie widzi. Niezaufane są nie tylko serwery, ale potencjalnie też procesory, hypervisor, a nawet administratorzy.
Prosty przykład: suma wynagrodzeń bez wglądu w pensje
Dobrym, klasycznym przykładem jest policzenie sumy wynagrodzeń w firmie bez odsłaniania pojedynczych pensji:
- Każdy pracownik ma aplikację, która korzysta z klucza publicznego firmy do zaszyfrowania swojej płacy.
- Powstaje zbiór szyfrogramów – ciąg liczb absolutnie nieczytelnych dla człowieka i dla zwykłego algorytmu.
- Chmurowy serwer, nie znając klucza prywatnego, wykonuje na tych szyfrogramach jedynie operacje dodawania.
- Wynikiem jest zaszyfrowana suma, która nie ujawnia żadnej informacji o pojedynczych składnikach.
- Tylko dział finansowy, posiadający klucz prywatny, odszyfrowuje tę sumę i otrzymuje np. łączny koszt wynagrodzeń.
Nikt po drodze – ani administrator chmury, ani dostawca infrastruktury – nie ma możliwości podejrzenia wynagrodzeń, bo nie posiada klucza prywatnego. To jest esencja szyfrowania homomorficznego w praktyce.

Podstawowe pojęcia i rodzaje szyfrowania homomorficznego
Co oznacza „homomorficzne” z punktu widzenia matematyki
Termin homomorfizm pochodzi z algebry i oznacza odwzorowanie, które zachowuje strukturę działań. W kontekście szyfrowania chodzi o to, aby:
- jakieś działanie na danych jawnych (np. dodawanie liczb),
- odpowiadało określonemu działaniu na szyfrogramach,
- a po odszyfrowaniu wyniku na szyfrogramach otrzymywać ten sam wynik, jaki otrzymalibyśmy, licząc na danych w postaci jawnej.
Mówiąc prościej: dodawanie zaszyfrowanych liczb odpowiada zaszyfrowaniu sumy:
E(a) ⊕ E(b) ≈ E(a + b), gdzie E() oznacza szyfrowanie, a ⊕ – działanie na szyfrogramach.
Schemat jest homomorficzny względem operacji, które wspiera (dodawanie, mnożenie, czasem operacje logiczne). Kluczowe jest, że serwer, który wykonuje ⊕ na szyfrogramach, nie musi znać ani a, ani b, ani klucza prywatnego.
Rodzaje szyfrowania homomorficznego: PHE, SHE, leveled HE, FHE
Różne schematy szyfrowania homomorficznego oferują różną „moc obliczeniową” i różne kompromisy między wygodą a wydajnością.
Częściowe szyfrowanie homomorficzne (PHE)
Częściowe homomorficzne szyfrowanie (Partially Homomorphic Encryption, PHE) obsługuje tylko jeden rodzaj operacji w nieskończonej liczbie. Przykłady:
- schemat Pailliera – homomorficzny względem dodawania,
- RSA w pewnych trybach – homomorficzny względem mnożenia.
Jeśli wystarczy, aby serwer umiał tylko sumować lub tylko mnożyć dane, PHE może być wystarczające i często jest zdecydowanie szybsze niż pełne szyfrowanie homomorficzne. To nadal jest szyfrowanie homomorficzne w praktyce, choć mniej „magiczne” niż pełne FHE.
Ograniczone / częściowe złożone homomorfizmy: SHE i leveled HE
Schematy określane jako SHE (Somewhat Homomorphic Encryption) lub leveled HE pozwalają na kilka typów operacji (np. dodawanie i mnożenie), ale:
- liczba możliwych operacji jest ograniczona (np. do określonej „głębokości” obwodu arytmetycznego),
- po zbyt wielu operacjach „szum” w szyfrogramie rośnie do poziomu uniemożliwiającego poprawne odszyfrowanie.
W praktyce takie schematy projektuje się pod konkretne zastosowanie: z góry przewiduje się, jak „głębokie” będą obliczenia, i tak dobiera parametry, by szyfrogram „wytrzymał” cały potrzebny łańcuch działań. To rozwiązanie typowe w aktualnych wdrożeniach, ponieważ jest wydajniejsze niż FHE z bootstrappingiem.
Pełne szyfrowanie homomorficzne (FHE)
Pełne szyfrowanie homomorficzne (Fully Homomorphic Encryption, FHE) to „święty Graal”: możliwość wykonania dowolnego obliczenia (w sensie obliczalności Turinga) na zaszyfrowanych danych. Technicznie rzecz biorąc, oznacza to możliwość wykonania nieograniczonej liczby operacji dodawania i mnożenia przy zachowaniu poprawności odszyfrowania.
Kluczową techniką, która to umożliwia, jest bootstrapping – specjalna procedura „odświeżania” szyfrogramu, która resetuje nagromadzony szum kosztem dodatkowego, bardzo kosztownego obliczenia. FHE jest więc najbardziej ogólnym, ale też zwykle najbardziej kosztownym wariantem szyfrowania homomorficznego.
Jakie działania na liczbach są typowo wspierane
Schematy homomorficzne projektuje się wokół konkretnych operacji. Zwykle są to:
- dodawanie (sumy, średnie, agregacje),
- mnożenie (iloczyny, funkcje kwadratowe, proste modele ML),
- operacje logiczne (AND, OR, NOT) – możliwe do zrealizowania poprzez obwody arytmetyczne.
Na tej bazie da się zbudować:
- proste statystyki (średnie, wariancje, histogramy),
- część modeli uczenia maszynowego (np. regresje liniowe, drzewka w wersjach „HE-friendly”),
- algorytmy scoringowe (funkcje liniowe lub lekko nieliniowe).
Operacje typu dzielenie, porównania, funkcje nieliniowe (sigmoid, ReLU) są możliwe, ale zwykle kosztowne i wymagają aproksymacji lub specjalnych sztuczek. Dlatego realne wdrożenia szyfrowania homomorficznego często projektuje się tak, by model był jak najbardziej „przyjazny” dla dodawania i mnożenia.
Przykładowe schematy: Paillier, BGV, BFV, CKKS
Paillier
Schemat Pailliera to klasyczny przykład addytywnie homomorficznego szyfrowania. Pozwala na:
- dodawanie dowolnie wielu zaszyfrowanych liczb,
- mnożenie szyfrogramu przez liczbę jawną.
Idealnie nadaje się do prostych sum i średnich, np. przy wspólnym liczeniu statystyk bez ujawniania składników.
BGV i BFV
Schematy BGV (Brakerski–Gentry–Vaikuntanathan) i BFV (Brakerski–Fan–Vercauteren) to nowoczesne schematy oparte na problemach kratowych (LWE/RLWE). Zapewniają obsługę dodawania i mnożenia na liczbach całkowitych (w pewnych zakresach i modulo). Są powszechnie stosowane w bibliotekach FHE, np. Microsoft SEAL (BFV) czy OpenFHE.
CKKS
Schemat CKKS (Cheon–Kim–Kim–Song) jest projektowany do obliczeń na liczbach rzeczywistych z przybliżeniem. Pozwala na operacje na szyfrowanych wektorach liczb zmiennoprzecinkowych, co sprawia, że dobrze pasuje do zastosowań uczenia maszynowego i analityki, gdzie niewielka utrata precyzji jest akceptowalna.
Jak to działa krok po kroku – perspektywa techniczna „po ludzku”
Ogólny przepływ danych i kluczy
Typowy scenariusz zastosowania szyfrowania homomorficznego można rozbić na kilka etapów, które z biznesowego punktu widzenia są dość intuicyjne.
1. Generacja kluczy
Po stronie klienta (organizacji, użytkownika końcowego) generowany jest zestaw kluczy:
- klucz publiczny – służy do szyfrowania danych i może być udostępniany szeroko,
- klucz prywatny – umożliwia odszyfrowanie wyników; pozostaje pod ścisłą kontrolą właściciela danych,
- często również dodatkowe klucze pomocnicze (np. do rotacji, relinearizacji, bootstrappingu), które można – w kontrolowany sposób – przekazać serwerowi.
2. Szyfrowanie u klienta
Klient, zanim wyśle dane do chmury, szyfruje je lokalnie przy użyciu klucza publicznego. Szyfrowane mogą być pojedyncze liczby, wektory, a nawet całe struktury (po odpowiedniej serializacji i kodowaniu). Na tym etapie dane opuszczają środowisko klienta już jako szyfrogramy.
3. Wysłanie szyfrogramów do chmury i obliczenia
Zaszyfrowane dane trafiają do serwera, który:
- nie ma klucza prywatnego,
- ale ma dostęp do bibliotek FHE oraz ewentualnych kluczy ewaluacyjnych,
- wykonuje na szyfrogramach z góry ustalone operacje (dodawanie, mnożenie, porównania, obwody logiczne).
Dla serwera szyfrogram jest po prostu dużym wektorem liczb, na którym wykonuje się operacje algebraiczne. Serwer nie rozumie znaczenia danych; jego rola sprowadza się do „ślepego liczenia” według określonego algorytmu.
4. Zaszyfrowany wynik i odszyfrowanie
Po wykonaniu obliczeń serwer zwraca zaszyfrowany wynik do klienta. Dopiero klient, posiadający klucz prywatny, odszyfrowuje go i otrzymuje wynik w postaci jawnej. Cały proces jest tak zaprojektowany, aby:
5. Kontrola poprawności i integralności obliczeń
Ostatni etap w typowym przepływie to upewnienie się, że obliczenia zostały wykonane poprawnie i że nikt po drodze nie manipulował szyfrogramami. W zależności od modelu zaufania robi się to na kilka sposobów.
- Proste podejście: klient po odszyfrowaniu wyniku wykonuje kontrolne obliczenia na niewielkiej próbce danych (lub na danych testowych), aby sprawdzić, czy wynik „ma sens”.
- Bardziej zaawansowane: stosuje się dowody poprawności (np. w oparciu o podpisy cyfrowe lub dowody wiedzy zerowej), które pozwalają wykazać, że serwer zastosował dokładnie określony algorytm do konkretnych szyfrogramów.
W środowiskach regulowanych (finanse, zdrowie) coraz częściej pojawia się oczekiwanie, aby dostawca chmury nie tylko „nie widział danych”, ale również aby dało się udowodnić, że liczył zgodnie ze specyfikacją.
Jak wyglądają same szyfrogramy
Na poziomie matematycznym szyfrogram w nowoczesnych schematach homomorficznych to zwykle wektor lub wielomian o bardzo dużych współczynnikach, liczących się modulo potężnej liczby pierwszej lub produktu wielu liczb pierwszych. Przykładowo:
- schematy kratowe (BGV, BFV, CKKS) operują na wielomianach w pierścieniu typu R = (ℤ/qℤ)[x]/(f(x)), gdzie f(x) jest specjalnie dobranym wielomianem (np. cyklotomicznym);
- pojedynczy szyfrogram może zawierać „upakowany” wektor wielu wartości (tzw. batching lub SIMD over HE), co znacząco poprawia wydajność.
Dla programisty pracującego na bibliotece FHE szyfrogram to najczęściej obiekt w pamięci (np. struktura klasy C++), który przekazuje się do funkcji add, multiply, rotate itd. Cała skomplikowana algebra jest ukryta pod warstwą API, ale ma konsekwencje wydajnościowe, o których trzeba pamiętać przy projektowaniu algorytmów.
Skąd bierze się „szum” i dlaczego jest tak ważny
Bez zrozumienia koncepcji szumu trudno uchwycić ograniczenia i koszt szyfrowania homomorficznego.
Większość współczesnych schematów opiera się na problemach kratowych typu LWE/RLWE. Szyfrowanie polega – w pewnym uproszczeniu – na dodaniu do zakodowanej wiadomości losowego błędu (szumu). Ten błąd jest:
- niewielki w porównaniu z „modulo”, dzięki czemu odszyfrowanie z kluczem prywatnym pozwala „odfiltrować” właściwą wartość,
- z definicji trudny do usunięcia bez znajomości klucza prywatnego – to on chroni przed atakiem.
Każda operacja homomorficzna na szyfrogramach powoduje jednak wzrost szumu. Przy dodawaniu jego przyrost jest umiarkowany, natomiast przy mnożeniu rośnie znacznie szybciej. Po przekroczeniu pewnego progu szyfrogram jest wprawdzie nadal „matematycznie poprawny”, ale nie da się go już odszyfrować do sensownego wyniku.
Stąd:
- schematy typu SHE/leveled HE projektuje się tak, aby szum wytrzymał określoną głębokość obwodu arytmetycznego,
- FHE wprowadza bootstrapping, który w dużym rozrachunku jest kosztowną procedurą „resetującą” szum, pozwalając kontynuować obliczenia.
Bootstrapping w praktyce – co się tam dzieje
Choć szczegóły są bardzo techniczne, logika bootstrappingu jest zaskakująco intuicyjna. Schemat FHE umożliwia wykonanie na zaszyfrowanych danych operacji odszyfrowania – również w trybie szyfrowanym.
Uproszczony obraz:
- Do serwera trafia szyfrogram z „wysokim szumem”, którego za chwilę nie dałoby się poprawnie odszyfrować.
- Serwer dysponuje specjalnym zaszyfrowanym kluczem prywatnym lub innymi kluczami pomocniczymi, które pozwalają mu „zasymulować” proces odszyfrowania, ale w pełni homomorficznie, bez poznawania wyniku.
- Serwer wykonuje (na szyfrogramach) obwód odpowiadający procedurze
decrypt. Wynikiem jest nowy szyfrogram, zakodowany w taki sposób, jakby został „świeżo zaszyfrowany” – z niskim poziomem szumu.
W praktyce ten proces jest jednym z głównych źródeł kosztu FHE. Dlatego wdrożenia produkcyjne:
- albo w ogóle unikają bootstrappingu (stosując leveled HE i odpowiednio płytkie obliczenia),
- albo wykonują go sporadycznie, w zaplanowanych miejscach obliczeń.
Co oznacza „projektowanie algorytmu pod FHE”
W praktyce użycie HE rzadko polega na „wrzuceniu” istniejącego kodu w chmurę z FHE zamiast TLS. Konieczne jest dostosowanie algorytmu. Najczęstsze modyfikacje to:
- zamiana skomplikowanych funkcji nieliniowych (np. sigmoid, ReLU) na aproksymacje wielomianowe niskiego stopnia,
- ograniczenie liczby porównań i warunków, które trudno odwzorować efektywnie w algebrze wielomianów,
- użycie batchingu – pakowanie wielu elementów do jednego szyfrogramu i projektowanie operacji „wektorowych” zamiast skalarnych,
- redukowanie głębokości obwodu (liczby kolejnych mnożeń), nawet kosztem większej liczby dodawań.
Dobrze widać to na przykładzie prostego modelu scoringowego w bankowości. Zamiast wielu skomplikowanych reguł typu if-else, tworzy się liniową lub lekko nieliniową funkcję ryzyka:
score = w₀ + w₁·x₁ + w₂·x₂ + … + wₙ·xₙ
Taką funkcję można zwykle odwzorować w HE przy rozsądnym koszcie, jeśli parametry modelu są dobrane świadomie (np. ograniczona precyzja, kontrola zakresów wartości).

Różnica między homomorfizmem a innymi podejściami do prywatnych obliczeń
MPC, TEE, DP, PSI – alfabet technik prywatności
Szyfrowanie homomorficzne to tylko jeden z elementów szerszego ekosystemu technik ochrony prywatności. W praktyce porównuje się je z:
- MPC (Multi-Party Computation) – bezpieczne obliczenia wielostronne,
- TEE (Trusted Execution Environments) – zaufane środowiska wykonawcze w sprzęcie,
- Differential Privacy (DP) – prywatność różnicowa,
- PSI (Private Set Intersection) – prywatne przecinanie zbiorów.
Każda z tych technik rozwiązuje nieco inny zestaw problemów. Często sensowne jest ich łączenie, zamiast sztywnego wybierania „zwycięzcy”.
HE a MPC – kto ma dane i kto liczy
Bezpieczne obliczenia wielostronne (MPC) zakładają, że dane są podzielone między kilka stron, które wspólnie wykonują obliczenie tak, by nikt nie poznał pełnego zestawu danych. W typowym protokole:
- każda strona utrzymuje swój „udział” danych (tzw. sekret sharing),
- komunikują się one wielokrotnie, wymieniając częściowe wyniki,
- ostateczny wynik jest rekonstruowany z fragmentów.
W HE model jest inny:
- dane są zaszyfrowane po stronie właściciela (jednej organizacji lub użytkownika),
- serwer (lub wiele serwerów) wykonuje obliczenia, ale nie widzi danych w postaci jawnej,
- komunikacja może być znacznie prostsza (często tylko: „wyślij szyfrogram” → „odbierz szyfrogram wyniku”).
Konsekwencje są istotne:
- MPC bywa bardziej efektywny przy wielu podmiotach i zaufaniu rozproszonym, ale wymaga skomplikowanych protokołów i stale włączonej komunikacji.
- HE sprawdza się szczególnie tam, gdzie jest jeden właściciel danych i „obca” infrastruktura obliczeniowa (np. chmura publiczna), a komunikacja ma być minimalna.
HE a TEE – szyfrowanie matematyczne vs. zaufanie do sprzętu
Zaufane środowiska wykonawcze (TEE), takie jak Intel SGX czy AMD SEV, polegają na tym, że dane są tam odszyfrowywane, ale dzieje się to wewnątrz specjalnej, izolowanej enklawy sprzętowej. System operacyjny, hypervisor czy administrator chmury formalnie nie mają dostępu do wnętrza tej enklawy.
Porównanie z FHE:
- TEE jest zwykle znacznie szybsze i prostsze w użyciu z punktu widzenia programisty – można uruchomić niemal niezmienioną aplikację.
- HE zapewnia silniejszy model bezpieczeństwa kryptograficznego – dane są zaszyfrowane cały czas, a bezpieczeństwo nie zależy od braku błędów w mikroarchitekturze CPU czy BIOS.
W praktyce wybór bywa kwestią modelu zaufania i regulacji. W projektach, gdzie ryzyko kompromitacji sprzętu uznaje się za niskie, a kluczowa jest wydajność (np. przetwarzanie transakcji w czasie rzeczywistym), częściej używa się TEE. Tam, gdzie istotna jest długoterminowa poufność (np. dane medyczne pacjentów przechowywane przez dekady), argumenty za HE są silniejsze.
HE a prywatność różnicowa – ochrona indywidualnych rekordów
Prywatność różnicowa (DP) nie szyfruje danych w klasycznym sensie. Zamiast tego wprowadza kontrolowany hałas do wyników statystyk, tak aby z zestawu raportów nie dało się z dużym prawdopodobieństwem ustalić, czy konkretny rekord był w zbiorze.
HE i DP odpowiadają na dwa różne pytania:
- HE: „Jak sprawić, aby serwer nie widział danych, na których liczy?”
- DP: „Jak sprawić, aby odbiorca wyników nie mógł z nich zrekonstruować danych jednostkowych?”
Dlatego w wielu projektach sensowne jest połączenie obu podejść: obliczenia na zaszyfrowanych danych (HE), a następnie publikacja zagregowanych, zszumionych wyników (DP).
HE a PSI – współdzielenie danych bez ujawniania całości
PSI (Private Set Intersection) to klasa protokołów pozwalających dwóm stronom wyznaczyć część wspólną ich zbiorów (np. list klientów), tak by żadna ze stron nie poznała elementów, które nie należą do przecięcia.
HE może być jednym z budulców PSI, ale samo PSI rozwiązuje znacznie węższy problem. Gdy celem jest np. tylko „sprawdź, czy mamy tych samych klientów”, PSI bywa lżejsze i bardziej adekwatne. Jeśli jednak trzeba jeszcze wykonać dalsze obliczenia na wspólnych danych (np. scoring, analityka), HE staje się naturalnym kolejnym krokiem.
Najczęstsze mity i nadzieje związane z szyfrowaniem homomorficznym
Mit 1: „FHE rozwiązuje wszystkie problemy z prywatnością w chmurze”
Szyfrowanie homomorficzne rozwiązuje bardzo konkretny problem: poufność danych podczas obliczeń po stronie serwera. Nie rozwiązuje natomiast wielu innych kwestii, które i tak trzeba uwzględnić:
- kto ma dostęp do odszyfrowanych wyników i jak są one wykorzystywane,
- jak zarządzać kluczami prywatnymi (rotacja, backup, podział uprawnień),
- jak zabezpieczyć środowisko po stronie klienta, gdzie dane pojawiają się w postaci jawnej.
W wielu incydentach naruszenia prywatności źródłem problemu nie jest chmura czy dostawca obliczeń, ale końcowe systemy użytkowników lub procesy organizacyjne (np. nadmierne uprawnienia pracowników). HE nie zastępuje więc klasycznych środków bezpieczeństwa, a raczej je uzupełnia.
Mit 2: „To jest niepraktycznie wolne i zawsze będzie”
Rzeczywiście, pierwsze konstrukcje FHE sprzed kilkunastu lat były drastycznie wolne i wymagały ogromnych zasobów. Od tamtej pory zaszła jednak istotna zmiana:
- schematy zostały przeprojektowane (m.in. wykorzystanie krat RLWE, batching, automatyczna optymalizacja obwodów),
- pojawiły się specjalizowane biblioteki (SEAL, PALISADE/OpenFHE, HElib, Lattigo, Concrete),
- producenci sprzętu eksperymentują z akceleratorami (GPU, FPGA, a nawet dedykowane układy ASIC pod HE).
Mimo to HE nadal jest wiele rzędów wielkości wolniejsze niż obliczenia na danych jawnych. Różnica w wydajności nie przekreśla jednak zastosowań, w których:
- obliczenia nie są krytyczne czasowo (np. raporty dzienne, tygodniowe),
Mit 3: „Wystarczy podmienić bibliotekę kryptograficzną i wszystko zadziała w HE”
Czasem pojawia się wyobrażenie, że istniejące aplikacje można „przekompilować na FHE” – zamienić typ int na „zaszyfrowany int” i dalej używać tych samych algorytmów. W praktyce tak się nie dzieje. Większość produkcyjnych aplikacji jest pełna:
- instrukcji warunkowych (gałęziowanie na podstawie danych),
- porównań (<, >, ==),
- operacji, które są naturalne w kodzie, ale kosztowne lub niewygodne w HE (np. dzielenie z resztą, operacje na stringach).
Projektowanie pod HE wymaga z reguły przebudowy logiki aplikacji tak, aby sprowadzić ją do relatywnie płytkiej kombinacji dodawań i mnożeń na liczbach z ograniczonym zakresem. To bardziej przypomina tworzenie obwodu cyfrowego lub modelu ML niż klasyczne programowanie imperatywne.
Pojawiają się co prawda „kompilatory do HE”, które z kodu w C++ czy DSL generują obwód dostosowany do konkretnego schematu szyfrowania, ale i tak wymagają one od programisty świadomego projektowania algorytmu pod kątem głębokości i zakresów wartości.
Mit 4: „Jak to jest zaszyfrowane, to jest z definicji w pełni bezpieczne”
Szyfrowanie homomorficzne, tak jak każdy mechanizm kryptograficzny, opiera się na pewnych założeniach bezpieczeństwa. Najczęściej są to trudności obliczeniowe związane z kratami (LWE, RLWE). Jeśli te założenia przestaną obowiązywać (np. wskutek przełomu algorytmicznego lub postępu w kryptografii kwantowej), bezpieczeństwo schematu także może zostać podważone.
Dodatkowo, zagrożenia nie znikają magicznie tylko dlatego, że dane są zaszyfrowane na etapie obliczeń. Wciąż pozostają:
- wycieki z warstwy aplikacyjnej (np. błędne logowanie odszyfrowanych wyników),
- nadużycia uprawnień po stronie właściciela klucza prywatnego,
- analiza wzorców wywołań (np. wnioski na podstawie rozmiaru czy liczby szyfrogramów).
HE znacząco podnosi poprzeczkę dla atakującego, ale nie zastępuje zdrowego podejścia do projektowania całościowego systemu.
Mit 5: „Jak coś jest homomorficzne, to znaczy, że działa na wszystko”
W kontekście homomorfizmu często myli się rodzaj dostępnych operacji z ich pełnym zakresem. Schemat, który wspiera dodawanie i mnożenie, niekoniecznie oferuje wygodny sposób na porównania, maksimum/minimum czy funkcje typu logarytm, sinus, czy nawet dzielenie.
W rezultacie nie każdą funkcję biznesową da się w rozsądny sposób odwzorować w HE. Złożone reguły decyzyjne, programy o dużej liczbie gałęzi czy algorytmy intensywnie używające tablic asocjacyjnych potrafią być zbyt kosztowne, jeśli próbować je odwzorować dosłownie. Niekiedy trzeba sięgnąć po inne techniki (np. MPC, TEE) lub zmienić sam model obliczeń.
Nadzieja 1: „Docelowo wszystko będzie homomorficzne w tle”
Pojawia się wizja, że kiedyś większość przetwarzania w chmurze będzie wykonywana na zaszyfrowanych danych, a użytkownik końcowy nie będzie nawet świadomy, że używa HE. W pewnym zakresie to realny kierunek: biblioteki HE stają się coraz bardziej „transparentne”, a integracja z językami wysokiego poziomu jest intensywnie rozwijana.
Trzeba jednak brać pod uwagę ograniczenia wynikające z fizyki obliczeń. Zawsze istnieje koszt związany z tym, że zamiast prostego działania na liczbie, realizujemy skomplikowane operacje na szyfrogramach o dużej strukturze algebraicznej. Dla części zastosowań będzie to akceptowalne, dla innych nie – nawet przy dalszym postępie.
Nadzieja 2: „HE umożliwi zupełnie nowe modele współpracy na danych”
To oczekiwanie jest dużo bliższe rzeczywistości. Szyfrowanie homomorficzne ułatwia współdzielenie mocy obliczeniowej bez wspólnego zaufania do infrastruktury. Przykładowo:
- kilka podmiotów może zlecić zewnętrznemu operatorowi analitykę na połączonych danych, nie odsłaniając ich wzajemnie,
- dostawca chmury może oferować wyspecjalizowane usługi obliczeniowe na zaszyfrowanych wejściach, nie naruszając poufności klientów.
To otwiera drogę do modeli „obliczeń jako usługi” w sektorach, które dotąd były bardzo ostrożne (finanse, zdrowie, administracja publiczna). Warunkiem jest jednak nie tylko dojrzałość kryptografii, lecz także jasne ramy prawne i biznesowe współpracy.

Aktualny stan technologii – co już działa, a co jest wciąż eksperymentem
Biblioteki produkcyjne i projekty open source
Na poziomie narzędzi sytuacja jest znacznie lepsza niż kilka lat temu. Do dojrzałych rozwiązań należą m.in.:
- Microsoft SEAL – biblioteka w C++ z wiązaniami do .NET i Pythona, popularna w środowiskach akademickich i przemysłowych,
- OpenFHE (następca PALISADE) – elastyczny projekt open source wspierający różne schematy (BFV, BGV, CKKS),
- HElib – jedna z pierwszych bibliotek FHE, nadal rozwijana, ceniona jako punkt odniesienia,
- Lattigo – biblioteka w Go, dobrze integrująca się z rozwiązaniami chmurowymi,
- Concrete (Zama) – mocno nastawiona na użyteczność i integrację z narzędziami dla programistów (kompilator, DSL).
Te projekty są aktywnie utrzymywane, poprawiane pod kątem wydajności, bezpieczeństwa parametrów i ergonomii API. Dla wielu zastosowań POC lub pierwszych wdrożeń pilotażowych w zupełności wystarczają.
Standardyzacja i kryptografia postkwantowa
Schematy HE w znacznej większości opierają się na problemach kratowych, spokrewnionych z tymi, które są rozważane w kontekście kryptografii postkwantowej. To dodatkowy czynnik sprzyjający ich adopcji – inwestycja w implementację i zrozumienie tych konstrukcji wpisuje się w szerszy trend.
Wokół praktycznego HE powstają także inicjatywy standaryzacyjne (np. grupy robocze w ramach ISO, ETSI, HomomorphicEncryption.org). Ich celem jest:
- uzgodnienie formatów szyfrogramów i parametrów,
- określenie dobrych praktyk bezpieczeństwa (np. rekomendowane rozmiary kluczy, poziomy bezpieczeństwa),
- ułatwienie interoperacyjności narzędzi różnych dostawców.
To wciąż proces w toku. Z punktu widzenia organizacji biznesowych oznacza to, że wdrożenia HE trzeba planować tak, aby możliwa była późniejsza migracja lub integracja z powstającymi standardami.
Wsparcie sprzętowe i akceleracja
Dużą część kosztu obliczeń homomorficznych stanowią złożone operacje algebraiczne: szybkie transformaty Fouriera (NTT), mnożenia wielomianów, redukcje modularne. To naturalni kandydaci do akceleracji sprzętowej.
Obecnie stosuje się kilka podejść:
- GPU – przyspieszenie równoległych operacji na współczynnikach wielomianów,
- FPGA – implementacje dedykowanych potoków NTT i mnożeń modularnych,
- ASIC – wciąż głównie na poziomie badań i prototypów, ale z wyraźnym potencjałem dla centrów danych.
Dla dużych instalacji (np. usług chmurowych HE-as-a-service) specjalizowana akceleracja staje się warunkiem opłacalności. Dla mniejszych, sektorowych zastosowań często wystarcza dobrze zoptymalizowany kod na CPU z użyciem wektorowych instrukcji SIMD.
Do jakiego etapu „produkcyjności” doszliśmy
W praktyce można wyróżnić kilka poziomów dojrzałości wdrożeń HE:
- Proof of concept – pokazanie, że dana funkcja (np. scoring, agregacja) może zostać wykonana na zaszyfrowanych danych. Ten etap jest już bardzo dostępny.
- Pilot w ograniczonym środowisku – realne dane, lecz mała skala, brak ścisłych wymagań SLA. Wiele instytucji finansowych i medycznych jest właśnie na tym poziomie.
- Wdrożenie produkcyjne dla niszowej funkcji – HE chroni konkretny, wyraźnie odseparowany fragment procesu (np. podmoduł analityczny, rzadko wywoływana usługa przeliczeniowa).
- Kluczowa infrastruktura produkcyjna – scenariusz, w którym krytyczny proces biznesowy zależy od HE, a jego niedostępność znacząco wpływa na działalność organizacji.
Na ostatnim poziomie jest jeszcze bardzo niewiele przykładów, głównie w środowiskach o wysokiej tolerancji na koszty i opóźnienia (np. sektor publiczny w kontekście wrażliwych danych). Natomiast drugi i trzeci poziom zaczynają być stopniowo osiągane także przez komercyjne przedsiębiorstwa.
Obszary, w których technologia jest wciąż eksperymentalna
Kilka kierunków badań pozostaje na etapie, w którym użycie ich w krytycznym wdrożeniu wymagałoby dużej ostrożności:
- Głęboka sieć neuronowa w pełnym FHE o dużej liczbie warstw i złożonych architekturach (np. pełne ResNety) – uproszczone modele działają, ale skala produkcyjnych systemów ML to nadal wyzwanie.
- Ogólny „komputer homomorficzny”, na którym można uruchomić dowolny kod bez ręcznej optymalizacji obwodu – istnieją prototypy, ale ich efektywność jest daleka od potrzeb biznesowych.
- Interaktywne aplikacje w czasie rzeczywistym (np. gry, aplikacje komunikacyjne) – wymagania czasowe są zwykle zbyt ostre, by HE było jedyną techniką ochrony.
W tych obszarach częściej rozważa się hybrydy: część funkcji realizowaną w HE (np. wstępna filtracja, anonimizacja), część w innych modelach bezpieczeństwa.
Realne scenariusze użycia – gdzie szyfrowanie homomorficzne ma już sens
Sektor finansowy – scoring, analityka, współdzielenie danych
Banki i instytucje finansowe mają jednocześnie silną motywację do korzystania z chmury i bardzo restrykcyjne wymogi dotyczące poufności danych. HE pozwala tu rozwiązywać kilka konkretnych problemów.
Pierwszy, relatywnie prosty scenariusz, to outsourcing scoringu kredytowego. Bank:
- szyfruje cechy klienta (wiek, historia spłat, dochody w odpowiedniej reprezentacji numerycznej),
- przesyła je do zewnętrznego dostawcy modelu risk scoringowego,
- otrzymuje zaszyfrowany wynik, który odszyfrowuje lokalnie i wykorzystuje w decyzji kredytowej.
Dostawca modelu może nie znać danych klienta, a bank może nie znać dokładnej struktury modelu (np. wag w modelu liniowym), jeśli zostaną one zaszyfrowane po stronie dostawcy – to już bardziej złożona konfiguracja, ale spotykana w projektach typu model as a service.
Drugi obszar to wspólna analityka między instytucjami – np. kilka banków chciałoby wykrywać złożone schematy fraudowe, ale nie może przekazać surowych danych konkurentom ani centralnej jednostce. Możliwy jest model, w którym:
- każdy bank szyfruje swoje dane odpowiednim kluczem (lub kluczami dzielonymi),
- zewnętrzna infrastruktura wykonuje obliczenia na połączonych szyfrogramach,
- wyniki wracają do uczestników, którzy mogą je częściowo odszyfrować lub wykorzystać do trenowania wspólnych modeli wykrywania nadużyć.
Z punktu widzenia regulacji (np. RODO, tajemnica bankowa) takie podejście bywa łatwiejsze do obrony niż pełne „wypuszczenie” danych do chmury w postaci jawnej.
Zdrowie i biomedycyna – analiza danych pacjentów i badań klinicznych
Dane medyczne są wyjątkowo wrażliwe, a jednocześnie mają ogromną wartość badawczą i komercyjną. Szyfrowanie homomorficzne pozwala na budowanie usług analitycznych, w których:
- szpitale lub przychodnie szyfrują rekordy pacjentów (diagnozy, wyniki badań, parametry kliniczne),
- firma farmaceutyczna lub ośrodek badawczy wykonuje statystyki, testy hipotez lub trenowanie modelu predykcyjnego,
- żaden z tych podmiotów nie widzi pełnych, zlinkowanych danych konkretnych osób.
Przykładowy, relatywnie prosty przypadek to badanie skuteczności terapii w wielu ośrodkach jednocześnie. Każdy ośrodek:
- lokalnie przygotowuje cechy (np. przedziały wiekowe, kategorie chorób współistniejących),
- szyfruje je i wysyła do wspólnej usługi obliczeniowej,
- otrzymuje zagregowane wyniki, które może zinterpretować wspólnie z badaczem.
Dla regulatora istotne jest, że żadna ze stron nie ma jednostkowego wglądu w dane wszystkich pacjentów, a zarazem badania mogą być prowadzone na znacznie większą skalę niż przy klasycznym udostępnianiu odanonimizowanych zestawów.
Najczęściej zadawane pytania (FAQ)
Co to jest szyfrowanie homomorficzne w prostych słowach?
Szyfrowanie homomorficzne to taki sposób szyfrowania, który pozwala wykonywać obliczenia na danych bez ich odszyfrowania. Serwer widzi tylko zaszyfrowane liczby, ale mimo to może je np. dodać lub pomnożyć, nie znając ich rzeczywistych wartości.
Użytkownik szyfruje dane swoim kluczem, wysyła je np. do chmury, tam wykonywane są obliczenia na szyfrogramach, a do użytkownika wraca wyłącznie zaszyfrowany wynik. Dopiero posiadacz klucza prywatnego odszyfrowuje rezultat i widzi go w postaci jawnej.
Czym szyfrowanie homomorficzne różni się od zwykłego szyfrowania i VPN?
Przy klasycznym szyfrowaniu oraz VPN dane są chronione „w drodze” i „w spoczynku”, ale w momencie przetwarzania na serwerze występują w postaci jawnej – w RAM, w logach, czasami w plikach tymczasowych. Administrator lub atakujący, który przejmie serwer, może do nich dotrzeć.
W szyfrowaniu homomorficznym serwer co do zasady nigdy nie widzi danych w formie niezaszyfrowanej. Pracuje wyłącznie na szyfrogramach, a klucz prywatny zostaje po stronie właściciela danych. To zmienia model zaufania: chmura jest „maszynką do liczenia”, a nie miejscem, które musi znać treść informacji.
Jakie są rodzaje szyfrowania homomorficznego (PHE, SHE, FHE)?
Istnieje kilka klas schematów homomorficznych, różniących się zakresem wspieranych operacji i kosztem obliczeń:
- PHE (Partially Homomorphic Encryption) – obsługuje jedną operację w nieskończonej liczbie powtórzeń, np. samo dodawanie (Paillier) lub samo mnożenie (RSA w określonych wariantach).
- SHE / leveled HE – pozwala na kilka typów operacji (zwykle dodawanie i mnożenie), ale tylko do określonej „głębokości” obliczeń, zanim szum w szyfrogramie stanie się zbyt duży.
- FHE (Fully Homomorphic Encryption) – w teorii umożliwia dowolnie złożone obliczenia na zaszyfrowanych danych, dzięki mechanizmowi „odświeżania” szyfrogramu (bootstrapping), kosztem dużej złożoności obliczeniowej.
W praktycznych wdrożeniach częściej wykorzystuje się PHE i leveled HE dopasowane do konkretnego scenariusza niż pełne FHE w najcięższej postaci.
Jakie operacje można wykonywać na danych zaszyfrowanych homomorficznie?
Typowe schematy homomorficzne wspierają przede wszystkim operacje arytmetyczne: dodawanie i mnożenie, a pośrednio także proste operacje logiczne (AND, OR, NOT) budowane z nich jak z klocków. Na tej bazie da się realizować całe klasy zadań.
Przykładowo można liczyć sumy i średnie (np. łączna suma pensji, średnie wyniki badań), proste statystyki (histogramy, wariancje) czy pewne modele uczenia maszynowego w wersjach dostosowanych do HE (np. regresje liniowe, niektóre algorytmy scoringowe).
Czy szyfrowanie homomorficzne nadaje się już do realnych wdrożeń?
Na dziś jest to technologia stosowana raczej punktowo niż masowo. W realnych projektach używa się jej tam, gdzie ryzyko ujawnienia danych jest szczególnie wysokie, a zakres obliczeń da się dobrze ograniczyć – np. wyliczanie scoringu kredytowego, proste analizy medyczne czy sumowanie danych finansowych.
Pełne FHE dla złożonych systemów wciąż jest kosztowne obliczeniowo i wymaga specjalistycznej wiedzy. Natomiast prostsze schematy (PHE, leveled HE) są już wdrażane pilotażowo przez banki, firmy medyczne czy dostawców rozwiązań antyfraudowych, zwykle w mocno zawężonych scenariuszach.
W jakich zastosowaniach szyfrowanie homomorficzne ma największy sens?
Technologia najbardziej „broni się” tam, gdzie z jednej strony trzeba wykonać obliczenia w zewnętrznej infrastrukturze, a z drugiej – ujawnienie danych byłoby szczególnie problematyczne regulacyjnie lub wizerunkowo. Chodzi zwłaszcza o:
- dane medyczne (analizy, badania populacyjne, modele predykcyjne),
- dane finansowe i bankowe (scoring, analiza ryzyka, wykrywanie nadużyć),
- dane o zachowaniu użytkowników, profilowanie, systemy rekomendacyjne.
W takich scenariuszach chmura może liczyć, nie widząc konkretnych wartości, a organizacja utrzymuje kontrolę nad kluczem prywatnym i wynikiem w postaci jawnej.
Czy szyfrowanie homomorficzne pomaga w spełnieniu wymogów RODO?
Samo zastosowanie szyfrowania homomorficznego nie „załatwia” zgodności z RODO, ale istotnie wspiera część wymogów, w szczególności zasadę minimalizacji dostępu do danych oraz bezpieczeństwo przetwarzania. Dane osobowe nie są ujawniane dostawcy chmury ani innym podmiotom przetwarzającym.
W praktyce oznacza to mniejsze ryzyko naruszenia poufności, a więc potencjalnie mniejsze konsekwencje prawne w razie incydentu. Nadal jednak trzeba zadbać o całą resztę: podstawy prawne przetwarzania, umowy powierzenia, procedury, retencję danych i inne elementy wymagane przez przepisy.






