A jednak się da!
O obliczeniach wielopodmiotowych (AJSD IX)
Niniejszy odcinek jest ostatni z serii. Przez niemal rok, wraz z Łukaszem Rajkowskim, próbowaliśmy pokazać Czytelnikowi, co ciekawego, a przede wszystkim - co zaskakującego, wiąże się z kryptologią. Naszą wielką nagrodą będzie, gdy - po przeczytaniu tych 9 odcinków - choć niewielka część Czytelników chociaż przez chwilę zawaha się, gdy w życiu codziennym będzie stwierdzać, że czegoś się nie da...
Punktem wyjścia naszych rozważań będzie podział sekretu pomiędzy
osób (o którym pisaliśmy więcej w
). To znaczy: załóżmy, że chcemy pewną tajną liczbę
to pewna ustalona duża liczba pierwsza, np.
rozproszyć pomiędzy zbiór osób
w taki sposób, aby:
- każda z nich dostała pewien udział w postaci liczby
oraz - dowolna ich
-osobowa podgrupa nie była w stanie odtworzyć
(analizując swoje udziały), ale już (każda) podgrupa
-osobowa zawsze mogła to zrobić.
Powyższy problem da się rozwiązać dla dowolnego
szczegóły znajdują się w artykule cytowanym wyżej. Ogólna idea (pochodząca od Adiego Shamira) polega na tym, że losujemy dowolny wielomian
stopnia
(o współczynnikach
) o wyrazie wolnym równym
Następnie ustalamy dowolne niezerowe (i parami różne) elementy
i określamy
Okazuje się, że tak zdefiniowane udziały spełniają nasze pierwotne założenia. Dziś jednak będziemy chcieli osiągnąć znacznie więcej. To znaczy, zapragniemy na podzielonych sekretach rachować!
Przyjmijmy, że sekrety są dwa:
oraz że osoba o numerze
ma udziały w obu (w postaci liczb
). Chcemy teraz opracować taki protokół, który umożliwi wszystkim
osobom dokonanie wspólnych obliczeń, po których osoba
otrzyma pewną wartość
Oczekujemy, że tak obliczone elementy
razem będą stanowić podział sekretu dla (rozważamy trzy przypadki):
- 1.
;- 2.
jest publicznie znaną stałą);- 3.

Banalne rozwiązanie polega na odtworzeniu
i
obliczeniu
oraz dokonaniu nowego podziału, według oryginalnego protokołu. Nasz cel jest jednak ambitniejszy: chcemy rozproszyć
ale w taki sposób, aby bezpośrednia informacja o
i
nie została na żadnym etapie przez nikogo (przez żadnego uczestnika bądź ich podgrupy o ograniczonej liczebności) jawnie odtworzona. Jak to zrobić?
Przypadek pierwszy i drugi jest łatwy (Zajmiemy się tylko pierwszym. Niech drugi pozostanie jako łatwe ćwiczenie.) i nie wymaga nawet żadnej komunikacji pomiędzy stronami. Wystarczy, że osoba
przyjmie
i wszystko będzie w porządku. Dlaczego? Przypomnijmy sobie tylko, czym jest
oraz
Wiemy przecież, że
dla pewnych wielomianów
oraz
Wtedy oczywiście
co oznacza, że (z definicji) elementy
stanowią podział sekretu dla wyrazu wolnego wielomianu
modulo
Ten jednak wynosi
modulo
gdyż wyrazem wolnym
musi być
a wyrazem wolnym
jest 
Powyższe rozwiązanie rodzi pokusę, aby analogicznie rozwiązać przypadek trzeci. To znaczy, aby każda z osób przyjęła
jako że
jest wyrazem wolnym wielomianu
modulo
Niestety, jest to rozwiązanie błędne. Problem bierze się stąd, że mnożenie dwóch wielomianów stopnia
daje wielomian stopnia
A my przecież chcemy koniecznie otrzymać stopień
(w przypadku dodawania ten problem nie występował)! Rozwiązanie jest tutaj nieco bardziej skomplikowane.
Mnożenie podzielonych sekretów
Pierwszy krok jest taki sam, jak w naiwnym rozwiązaniu wyżej. To znaczy, faktycznie każdy z uczestników protokołu mnoży
przez
otrzymując pewne
Zanim przejdziemy do szczegółów kolejnego kroku, potrzebujemy jeszcze kilku oznaczeń. Oznaczmy więc wielomian
modulo
przez
Wówczas wyraz wolny
to
modulo
(tak jak potrzeba), natomiast wartość
jest znana osobie
Problemem jest tylko stopień wielomianu
który wynosi
Wprowadźmy więc (trochę na siłę) nowy wielomian:
który powstał przez zwykłe wymazanie ostatnich
jednomianów wielomianu
Byłoby oczywiście świetnie, gdyby osoba
potrafiła (za pomocą jakiegoś protokołu) po prostu bezpiecznie obliczyć wartość
Okazuje się, że jest to wykonalne! Co więcej, nie aż tak trudne obliczeniowo i nie wymaga dużej komunikacji między uczestnikami protokołu. Kluczowa jest tu (dość zaskakująca) obserwacja, że każde
jest kombinacją liniową elementów 
Gdy już to wiemy, to dalej jest z górki. Dodawanie i mnożenie przez stałą sekretów potrafimy już wykonywać. Trzeba więc tylko rozproszyć każde
i zastosować (być może wielokrotnie) dwa proste przypadki rozważane wyżej (oraz na koniec wysłać osobie
odpowiednie udziały do odtworzenia
). Dokładne wyjaśnienie, ze względu na techniczny charakter zagadnienia, musimy niestety pominąć. Wierzymy jednak, że dokładne odtworzenie wszystkich kroków tego przypadku może być bardzo pouczające. Szczegóły znajdują się w pracy "A Full Proof of the BGW Protocol for Perfectly-secure Multiparty Computation" autorstwa Gilada Asharova oraz Yehudy Lindella.
Po co to wszystko?!
Przyjmijmy, że każda z osób
wybrała swój własny argument
i rozproszyła go wśród wszystkich pozostałych osób. Co umożliwiają nam protokoły naszkicowane wyżej? Otóż na pewno grupa może (wspólnie) obliczyć chociażby
modulo
czy
modulo
(w taki sposób, że żadne obliczenia pośrednie nie są nikomu znane - wszak wszystko odbywa się dla rozproszonych wartości), bo potrafi dodawać, skalować przez stałą i mnożyć sekrety. Jak wiele w taki sposób można policzyć? Okazuje się, że … wszystko!
Obliczenia w ciele modulo
mają taką cechę, że każdą funkcję (oczywiście o zbiorze wartości
) da się zapisać jako wielomian, a więc jako złożenie (być może bardzo wielu) dodawań, skalowań przez stałą i mnożeń (wszystko modulo
). Innymi słowy: z faktu, że znamy protokoły dla trzech przypadków z pierwszej części artykułu, wynika, że potrafimy obliczyć zupełnie dowolną funkcję rozproszonych argumentów. Stąd już tylko krok do protokołów na np. granie w pokera przez Internet bez zaufanej strony czy bezpieczne aukcje internetowe bez serwera zbierającego i w zaufaniu porównującego oferty.
Science-fiction
Wyżej ledwie naszkicowaliśmy ideę obliczeń wielopodmiotowych (i to jeszcze w mniej ciekawym, bo pasywnym przypadku - szczegóły na jednym z marginesów). Póki co nie są one jeszcze bardzo praktyczne, ale powoli zbliżamy się do momentu, gdy (na razie) proste ich zastosowania będą możliwe do codziennego wykorzystania. Chcielibyśmy jednak mocno zaznaczyć, że drzemie w nich potencjał niemal rewolucyjny.
Rozpraszanie obliczeń i przechowywania danych czy ogólniej - pozbywanie się zaufanych stron z cyfrowego świata jest wszak (skromnym zdaniem autora tego tekstu) najważniejszym wyzwaniem rewolucji cyfrowej XXI wieku.
, to mamy na myśli, że każdy z uczestników protokołu po jego zakończeniu pozna pewne
takie, że wszystkie
razem stanowią podział
Następnie wszyscy powinni upublicznić swoje
aby każdy uczestnik mógł faktycznie poznać wartość
Kluczową cechą tego protokołu jest, że rzeczywiście jedyną nową informacją na temat
którą pozna każdy z jego uczestników, jest właśnie
Wszelkie informacje pośrednie pozostaną tajne.