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
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
- Poza kryptografią klucza publicznego: szyfrowanie funkcjonalne
- ABE z polityką szyfrogramu (CP-ABE)
- ABE z polityką klucza (KP-ABE) i porównanie
- Praktyczne zastosowania ABE