0Pricing
Cryptology Academy · Lekcja

Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne

Proszę poznać ideę szyfrowania funkcjonalnego: deszyfrowanie ujawnia jedynie wynik funkcji, a nie tekst jawny.

Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Ograniczenia tradycyjnego szyfrowania

Tradycyjne szyfrowanie kluczem publicznym opiera się na prostym modelu: szyfrowaniu za pomocą klucza publicznego i odszyfrowaniu za pomocą odpowiadającego mu klucza prywatnego. Odbiorca poznaje całą wiadomość w postaci jawnej. Ten model typu wszystko albo nic jest zbyt mało elastyczny dla wielu zastosowań: baza danych medycznych może na przykład umożliwiać lekarzowi ustalenie wyłącznie, czy pacjent cierpi na określone schorzenie, bez ujawniania całej dokumentacji medycznej. Szyfrowanie funkcyjne rozwiązuje ten problem.

Szyfrowanie oparte na tożsamości

Szyfrowanie oparte na tożsamości (IBE), zaproponowane przez Shamira w 1984 roku i skonstruowane przez Boneha i Franklina w 2001 roku, umożliwia użycie ciągu identyfikującego (adresu e-mail, nazwy domeny, identyfikatora pracownika) jako klucza publicznego. Zaufany urząd zarządzający kluczami generuje klucze prywatne dla określonych tożsamości. IBE eliminuje potrzebę stosowania certyfikatów klucza publicznego i upraszcza dystrybucję kluczy. IBE jest najprostszą formą szyfrowania funkcyjnego.

Definicja szyfrowania funkcyjnego

Szyfrowanie funkcyjne (FE), formalnie zdefiniowane przez Boneha, Sahaiego i Watersa w 2011 roku, uogólnia IBE. W schemacie FE urząd zarządzający kluczami może wygenerować klucz funkcji sk_f dla dowolnej funkcji f. Mając szyfrogram Enc(x) i klucz funkcji sk_f, odbiorca może obliczyć f(x), ale nie dowiaduje się niczego więcej o x poza tym, co ujawnia f(x). Funkcja f może być dowolną funkcją obliczalną należącą do klasy obsługiwanej przez schemat.

Szyfrowanie funkcyjne dla iloczynu skalarnego

Szyfrowanie funkcyjne dla iloczynu skalarnego umożliwia odbiorcy posiadającemu sk_y obliczenie iloczynu skalarnego na podstawie szyfrogramu wektora x. Umożliwia to przeprowadzanie prywatnego wnioskowania w uczeniu maszynowym: należy zaszyfrować wektor cech użytkownika x i przekazać właścicielowi modelu sk_y dla jego wektora wag y, a właściciel pozna wyłącznie iloczyn skalarny (surowy wynik predykcji), bez poznawania cech użytkownika. Istnieje kilka praktycznych schematów szyfrowania funkcyjnego dla iloczynu skalarnego (ABDALLA et al. 2016).

Szyfrowanie funkcyjne do testowania równości

Szyfrowanie funkcyjne do testowania równości umożliwia stronie sprawdzenie, czy zaszyfrowana wartość odpowiada konkretnej wartości v, przy czym poznaje ona wyłącznie, czy równość zachodzi. Umożliwia to wykonywanie zapytań do baz danych z zachowaniem prywatności: serwer przechowuje zaszyfrowane rekordy, a użytkownik wyszukuje rekordy pasujące do określonych wartości, nie ujawniając serwerowi, czego szuka, ani wyników wykraczających poza informację tak/nie o dopasowaniu. Praktyczne konstrukcje wykorzystują parowania biliniowe.

Szyfrowanie funkcyjne dla obwodów ogólnych

Najpotężniejsza forma szyfrowania funkcyjnego obsługuje dowolne obwody boolowskie lub arytmetyczne jako funkcje. Odbiorca posiadający sk_f dla dowolnej funkcji f wykonywalnej w czasie wielomianowym może obliczyć f(x) na podstawie Enc(x). Szyfrowanie funkcyjne dla obwodów ogólnych zostało skonstruowane teoretycznie przez Garga, Gentry’ego, Haleviego, Raykovą, Sahaiego i Watersa (2013) z wykorzystaniem map wieloliniowych, ale istniejące konstrukcje ogólnego szyfrowania funkcyjnego są niepraktyczne ze względu na zależność od niedoskonałych założeń dotyczących map wieloliniowych.

Obfuskacja nierozróżnialności

Obfuskacja nierozróżnialności (iO) to najsilniejszy znany prymityw kryptograficzny, ściśle powiązany z szyfrowaniem funkcyjnym. Schemat iO przyjmuje obwód C i tworzy jego obfuskowaną wersję O(C), która oblicza tę samą funkcję, ale nie ujawnia żadnych informacji o C poza jego zachowaniem wejście–wyjście. iO implikuje większość znanych prymitywów kryptograficznych, w tym ogólne FE. Istnieją konstrukcje kandydujące oparte na problemach kratowych, ale są one bardzo odległe od praktycznego zastosowania.

Szyfrowanie oparte na atrybutach jako przypadek szczególny

Szyfrowanie oparte na atrybutach (ABE) to możliwa do praktycznej realizacji forma szyfrowania funkcyjnego, w której funkcja f jest ograniczona do oceny polityki: f(x) = 1, jeśli zbiór atrybutów x spełnia politykę, a w przeciwnym razie f(x) = 0. ABE umożliwia precyzyjną kontrolę dostępu, w której uprawnienia do odszyfrowywania zależą od atrybutów użytkownika. ABE jest najczęściej wdrażaną praktycznie formą szyfrowania funkcyjnego; stosuje się je w pamięci masowej w chmurze, ochronie zdrowia i IoT.

Plan rozwoju konstrukcji

Historia konstrukcji FE prowadzi od rozwiązań prostych do zaawansowanych: IBE (Boneh-Franklin 2001) → FE dla równości (różne konstrukcje z lat 2005–2010) → FE dla iloczynu skalarnego (ABDALLA 2016) → FE dla obwodów o ograniczonej głębokości (oparte na odwzorowaniach wieloliniowych, 2013) → ogólne FE (przypuszczalnie wynikające z iO). Każdy kolejny etap zapewnia większe możliwości, ale jest także bardziej złożony i mniej wydajny. W praktyce wdraża się najprostszą formę, która zapewnia wymaganą funkcjonalność.

Model bezpieczeństwa szyfrowania funkcyjnego

Bezpieczeństwo FE definiuje się poprzez nierozróżnialność szyfrogramów dwóch wiadomości x0 i x1, nawet przy znajomości kluczy funkcyjnych dla dowolnych funkcji f, o ile dla wszystkich zapytanych funkcji zachodzi f(x0) = f(x1). Gwarantuje to, że osoba odszyfrowująca poznaje dokładnie f(x) i nic ponadto. Wyróżnia się dwa poziomy bezpieczeństwa: bezpieczeństwo selektywne (przeciwnik określa wiadomości stanowiące wyzwanie przed poznaniem klucza publicznego) oraz bezpieczeństwo adaptacyjne (pełne bezpieczeństwo oparte na symulacji).

Wyzwania związane z praktycznym wdrażaniem

Ogólne FE pozostaje niepraktyczne, ale FE dla iloczynu skalarnego i ABE można wdrażać już dziś. Wyzwania obejmują konieczność korzystania z zaufanego urzędu wydającego klucze (pojedynczy punkt awarii), złożoność odwoływania kluczy, narzut wydajnościowy operacji parowania oraz ograniczoną standaryzację. Kierunki badań obejmują FE z wieloma urzędami (bez jednego zaufanego urzędu), zdecentralizowane generowanie kluczy oraz FE dla większych klas funkcji bez odwzorowań wieloliniowych.

Quiz: definicja szyfrowania funkcyjnego

Co odróżnia szyfrowanie funkcyjne od tradycyjnego szyfrowania z kluczem publicznym?

Podsumowanie szyfrowania funkcyjnego

Szyfrowanie funkcyjne (Boneh-Sahai-Waters 2011) uogólnia IBE, umożliwiając korzystanie z kluczy funkcyjnych sk_f, które pozwalają obliczyć f(x) na podstawie Enc(x) bez pełnego poznania x. Istnieją praktyczne konstrukcje FE dla iloczynu skalarnego (prywatne wnioskowanie ML) oraz testowania równości. ABE jest praktycznie wdrożonym przypadkiem szczególnym służącym do oceny polityk dostępu. FE dla obwodów ogólnych wymaga odwzorowań wieloliniowych (niepraktycznych). iO jest najsilniejszym powiązanym prymitywem. Kluczowym wyzwaniem jest przejście od teorii do wydajnych zastosowań praktycznych.

Często zadawane pytania

Czy lekcja „Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne” jest bezpłatna?

Tak — pełny tekst „Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne”?

Proszę poznać ideę szyfrowania funkcjonalnego: deszyfrowanie ujawnia jedynie wynik funkcji, a nie tekst jawny. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne
  2. ABE z polityką szyfrogramu (CP-ABE)
  3. ABE z polityką klucza (KP-ABE) i porównanie
  4. Praktyczne zastosowania ABE
← Powrót do Cryptology Academy