Definicja
Secure Multi-Party Computation (SMPC) to zbiór protokołów kryptograficznych umożliwiających kilku stronom wspólne wykonywanie obliczeń na ich prywatnych danych bez wzajemnego ujawniania tych danych. Każda strona zna jedynie swoje wejścia i końcowy wynik, natomiast żadna nie uzyskuje dostępu do danych innych uczestników. SMPC jest fundamentem tzw. privacy-preserving computation, czyli przetwarzania z zachowaniem poufności.
Protokół SMPC gwarantuje formalnie, że informacje o danych wejściowych nie mogą zostać wywnioskowane przez nieuczciwych uczestników ani obserwatorów - nawet przy częściowym uszkodzeniu lub kompromitacji systemu.
Kluczowe cechy i założenia
- Poufność danych wejściowych - żadna strona nie poznaje danych innych stron poza tym, co ujawnia wynik obliczeń.
- Poprawność - rezultat obliczeń jest identyczny jak ten uzyskany w przypadku wykonywania ich na danych scalonych.
- Odporność na ataki - protokoły różnią się odpornością na model „semi-honest” i „malicious”.
- Brak centralnego zaufanego podmiotu - obliczenia są wykonywane rozproszonymi metodami kryptograficznymi.
Modele zagrożeń
- Semi-honest adversary - uczestnicy przestrzegają protokołu, ale próbują wywnioskować dodatkowe informacje.
- Malicious adversary - uczestnicy mogą modyfikować dane lub protokół, aby oszukać system.
- Covert adversary - atakujący nie przestrzega protokołu, ale unika działań, które mogą zostać wykryte.
Najpopularniejsze techniki SMPC
- Secret Sharing - dane są dzielone na udziały (shares), z których każdy z osobna nic nie ujawnia. Obliczenia wykonywane są na udziałach.
- Beaver Triples - prekomputowane trójki wartości używane do efektywnych obliczeń mnożenia w Secret Sharing.
- Yao’s Garbled Circuits - dane są kodowane w sposób pozwalający wykonać obliczenia w „zaciemnionym” obwodzie.
- Additive Sharing - podział wartości na losowe składniki sumujące się do wartości końcowej.
- Threshold Cryptography - klucz prywatny podzielony między wiele stron; rekonstrukcja wymaga określonego kworum.
Przykładowy model działania SMPC
- Każda strona dzieli swoje dane wejściowe na udziały (shares).
- Udziały są przesyłane do pozostałych stron lub serwerów uczestniczących.
- Obliczenia są wykonywane na udziałach zgodnie z matematycznymi właściwościami protokołu.
- Wynik jest rekonstruowany poprzez połączenie udziałów wyniku.
Parametry i metryki oceny SMPC
Metryka | Znaczenie |
Communication Complexity | Ilość danych wymienianych między stronami - kluczowy czynnik skalowalności. |
Round Complexity | Liczba wymaganych rund komunikacyjnych; wpływa na opóźnienia. |
Computational Overhead | Dodatkowe operacje kryptograficzne wymagane przez protokół. |
Security Threshold | Liczba uczestników, których kompromitacja nie wpływa na poufność danych. |
Zalety
- Możliwość współdzielenia wyników bez ujawniania danych wejściowych.
- Zgodność z RODO - realizacja zasady minimalizacji danych.
- Brak konieczności centralizacji danych między podmiotami.
- Odporność na wycieki - dane nigdy nie są dostępne w całości dla jednej strony.
Ograniczenia
- Wysokie koszty komunikacyjne przy dużej liczbie uczestników.
- Niższa wydajność niż w klasycznym przetwarzaniu scentralizowanym.
- Złożoność wdrożeń wymagająca specjalistycznej wiedzy.
- Potrzeba zaufanej inicjalizacji niektórych protokołów.
Zastosowania w anonimizacji zdjęć i wideo
SMPC ma duże znaczenie w systemach przetwarzania wizualnego, szczególnie tam, gdzie dane nie mogą być ujawniane pomiędzy podmiotami lub urządzeniami. Najważniejsze zastosowania obejmują:
- wspólne trenowanie modeli wykrywania twarzy bez ujawniania jakichkolwiek surowych obrazów,
- wspólna analiza zdarzeń między różnymi jednostkami (np. policja - operatorzy prywatni - samorządy),
- bezpieczne agregowanie metadanych z kamer monitoringu bez odsłaniania nagrań,
- budowanie wspólnych zestawów danych szkoleniowych w formie zanonimizowanej,
- ochrona zapisów wideo przetwarzanych przez różne moduły edge i serwery.
W systemach anonimizacji SMPC umożliwia również bezpieczną współpracę algorytmów - np. detektor działający na jednym urządzeniu może przekazywać zakodowane parametry innemu urządzeniu bez ujawniania obrazu.