Schemat tajnego udostępniania Shamira

Rozważmy sytuację, w której konieczne jest zapewnienie bezpieczeństwa skarbca bankowego. Uważa się, że jest ono absolutnie nie do sforsowania bez klucza, który dostaje się pierwszego dnia pracy. Twoim celem jest zachowanie bezpieczeństwa klucza.

Załóżmy, że zdecydujesz się nosić klucz zawsze przy sobie, udzielając dostępu do sejfu tylko wtedy, gdy zajdzie taka potrzeba. Jednak szybko zorientujesz się, że to rozwiązanie nie sprawdza się w praktyce, ponieważ Twoja fizyczna obecność jest wymagana za każdym razem, gdy magazyn jest otwierany. A co z wakacjami, które ci obiecano? Co więcej, jeszcze bardziej przerażające jest: co się stanie, jeśli zgubisz swój jedyny klucz?

Myśląc o wakacjach, decydujesz się wykonać kopię klucza i powierzyć ją innemu pracownikowi. Jednak rozumiesz, że to również nie jest rozwiązanie idealne. Podwajając liczbę kluczy, podwajasz także ryzyko ich kradzieży.

W desperacji niszczysz duplikat i decydujesz się podzielić oryginalny klucz na pół. Teraz uważasz, że aby złożyć klucz i otworzyć skarbiec, muszą być obecne dwie zaufane osoby posiadające fragmenty klucza. Oznacza to, że złodziej musiałby ukraść dwa fragmenty, co jest dwa razy trudniejsze niż kradzież jednego klucza. Jednak szybko zdajesz sobie sprawę, że ten schemat nie jest lepszy od jednego klucza, ponieważ jeśli ktoś zgubi połowę klucza, odzyskanie całego klucza będzie niemożliwe.

Problem można rozwiązać za pomocą serii dodatkowych kluczy i zamków, ale takie podejście szybko będzie wymagało много klucze i zamki. Postanawiasz, że najlepszym rozwiązaniem będzie rozdzielenie klucza, aby bezpieczeństwo nie zależało wyłącznie od jednej osoby. Wnioskujesz również, że musi istnieć jakiś próg liczby fragmentów, tak aby w przypadku utraty jednego fragmentu (lub wyjazdu osoby na wakacje) cały klucz pozostał funkcjonalny.

Jak podzielić się sekretem

Tego typu schemat zarządzania kluczami wymyślił Adi Shamir w 1979 r., kiedy opublikował swoją pracę „Jak dzielić się sekretem”. W artykule krótko wyjaśniono tzw. Schemat tajnego udostępniania Shamira schemat progowy umożliwiający efektywne dzielenie wartości tajnej (np. klucza kryptograficznego) na Schemat tajnego udostępniania Shamira strony. Wtedy, kiedy i tylko wtedy, gdy przynajmniej Schemat tajnego udostępniania Shamira z Schemat tajnego udostępniania Shamira części są zbierane, łatwo jest przywrócić sekret Schemat tajnego udostępniania Shamira.

Z punktu widzenia bezpieczeństwa ważną cechą tego schematu jest to, że atakujący nie powinien dowiedzieć się absolutnie niczego, jeśli nie ma przynajmniej Schemat tajnego udostępniania Shamira strony. Nawet obecność Schemat tajnego udostępniania Shamira części nie powinny dostarczać żadnych informacji. Nazywamy tę nieruchomość bezpieczeństwo semantyczne.

Interpolacja wielomianowa

Schemat progowy Shamira Schemat tajnego udostępniania Shamira zbudowany wokół koncepcji interpolacja wielomianowa. Jeśli nie znasz tej koncepcji, jest ona tak naprawdę dość prosta. W rzeczywistości, jeśli kiedykolwiek rysowałeś punkty na wykresie i łączyłeś je liniami lub krzywymi, to już z pewnością z niej korzystałeś!

Schemat tajnego udostępniania Shamira
Przez dwa punkty można przeprowadzić nieograniczoną liczbę wielomianów stopnia 2. Aby wybrać ten jedyny potrzebny jest trzeci punkt. Ilustracja: Wikipedia

Rozważmy wielomian pierwszego stopnia, Schemat tajnego udostępniania Shamira. Ile punktów jest potrzebnych, aby przedstawić tę funkcję na wykresie? Wiemy, że jest to funkcja liniowa, która tworzy linię prostą i dlatego potrzebne są co najmniej dwa punkty. Następnie rozważymy funkcję wielomianową stopnia drugiego, Schemat tajnego udostępniania Shamira. Jest to funkcja kwadratowa, więc do narysowania wykresu potrzebne są co najmniej trzy punkty. Co powiesz na wielomian trzeciego stopnia? Co najmniej cztery punkty. I tak dalej, i tak dalej.

Naprawdę fajne w tej własności jest to, że biorąc pod uwagę stopień funkcji wielomianowej i co najmniej Schemat tajnego udostępniania Shamira punktów, możemy wyznaczyć dodatkowe punkty dla tej funkcji wielomianowej. Ekstrapolację tych dodatkowych punktów nazywamy interpolacja wielomianowa.

Wymyślanie sekretu

Pewnie już zauważyłeś, że sprytny plan Szamira wchodzi tu w grę. Załóżmy, że nasz sekret Schemat tajnego udostępniania Shamira - jest Schemat tajnego udostępniania Shamira. Możemy się przekształcić Schemat tajnego udostępniania Shamira do punktu na wykresie Schemat tajnego udostępniania Shamira i wymyśl funkcję wielomianową o stopniu Schemat tajnego udostępniania Shamira, co spełnia ten punkt. Przypomnijmy, że Schemat tajnego udostępniania Shamira będzie naszym progiem wymaganych fragmentów, więc jeśli ustawimy próg na trzy fragmenty, musimy wybrać funkcję wielomianową stopnia drugiego.

Nasz wielomian będzie miał postać Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira — losowo wybrane liczby całkowite dodatnie. Konstruujemy po prostu wielomian o stopniu Schemat tajnego udostępniania Shamira, gdzie jest współczynnikiem swobodnym Schemat tajnego udostępniania Shamira - to jest nasz sekret Schemat tajnego udostępniania Shamirai każdy z kolejnych Schemat tajnego udostępniania Shamira członkowie mają losowo wybrany dodatni współczynnik. Jeśli wrócimy do pierwotnego przykładu i założymy, że Schemat tajnego udostępniania Shamira, a następnie otrzymujemy funkcję Schemat tajnego udostępniania Shamira.

Na tym etapie możemy generować fragmenty poprzez łączenie Schemat tajnego udostępniania Shamira unikalne liczby całkowite w Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira (bo to nasz sekret). W tym przykładzie chcemy rozłożyć cztery fragmenty z progiem trzech, więc losowo generujemy punkty Schemat tajnego udostępniania Shamira i wysyłamy po jednym punkcie każdej z czterech zaufanych osób, strażników klucza. Informujemy również, że Schemat tajnego udostępniania Shamiraponieważ jest to informacja publiczna i niezbędna do odzyskania Schemat tajnego udostępniania Shamira.

Przywracanie tajemnicy

Omówiliśmy już koncepcję interpolacji wielomianowej i to, w jaki sposób leży ona u podstaw schematu progowego Shamira. Schemat tajnego udostępniania Shamira. Gdy którykolwiek z trzech z czterech powierników chce przywrócić Schemat tajnego udostępniania Shamira, oni po prostu muszą interpolować Schemat tajnego udostępniania Shamira z własnymi, unikalnymi cechami. Aby to zrobić, mogą zdefiniować swoje punkty Schemat tajnego udostępniania Shamira i obliczyć wielomian interpolacyjny Lagrange'a korzystając z następującego wzoru. Jeśli lepiej rozumiesz programowanie niż matematykę, to pi jest w zasadzie operatorem for, który mnoży wszystkie wyniki, a sigma jest for, co wszystko łączy.

Schemat tajnego udostępniania Shamira

Schemat tajnego udostępniania Shamira

w Schemat tajnego udostępniania Shamira możemy rozwiązać to w następujący sposób i odzyskać naszą oryginalną funkcję wielomianową:

Schemat tajnego udostępniania Shamira

Ponieważ wiemy, że Schemat tajnego udostępniania Shamira, powrót do zdrowia Schemat tajnego udostępniania Shamira wykonuje się to po prostu:

Schemat tajnego udostępniania Shamira

Korzystanie z niebezpiecznej arytmetyki całkowitej

Chociaż udało nam się z powodzeniem zastosować podstawową ideę Shamira Schemat tajnego udostępniania Shamira, pozostał nam problem, który do tej pory ignorowaliśmy. Nasza funkcja wielomianowa używa niebezpiecznej arytmetyki liczb całkowitych. Należy zauważyć, że z każdym dodatkowym punktem, jaki atakujący uzyska na naszym wykresie funkcji, zmniejsza się liczba możliwości uzyskania innych punktów. Można to zobaczyć na własne oczy, kreśląc wykres funkcji wielomianowej z rosnącą liczbą punktów, korzystając z arytmetyki liczb całkowitych. Jest to sprzeczne z naszym deklarowanym celem bezpieczeństwa, ponieważ atakujący nie powinien wiedzieć absolutnie nic, dopóki nie uzyska przynajmniej Schemat tajnego udostępniania Shamira paprochy.

Aby pokazać, jak słaby jest schemat arytmetyki liczb całkowitych, rozważmy scenariusz, w którym atakujący ma dwa punkty Schemat tajnego udostępniania Shamira i zna informacje publiczne, które Schemat tajnego udostępniania Shamira. Z tych informacji może wywnioskować Schemat tajnego udostępniania Shamira, równe dwa i podstaw znane wartości do wzoru Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira.

Schemat tajnego udostępniania Shamira

Następnie atakujący może znaleźć Schemat tajnego udostępniania Shamira, policzywszy Schemat tajnego udostępniania Shamira:

Schemat tajnego udostępniania Shamira

Ponieważ zdefiniowaliśmy Schemat tajnego udostępniania Shamira jako losowo wybrane liczby całkowite dodatnie, istnieje ograniczona liczba możliwych Schemat tajnego udostępniania Shamira. Wykorzystując te informacje, atakujący może wywnioskować Schemat tajnego udostępniania Shamira, ponieważ wszystko większe niż 5 będzie działać Schemat tajnego udostępniania Shamira negatywny. Okazuje się, że to prawda, ponieważ ustaliliśmy, Schemat tajnego udostępniania Shamira

Następnie atakujący może obliczyć możliwe wartości Schemat tajnego udostępniania Shamirawymiana Schemat tajnego udostępniania Shamira в Schemat tajnego udostępniania Shamira:

Schemat tajnego udostępniania Shamira

Z ograniczonym zakresem opcji dla Schemat tajnego udostępniania Shamira staje się jasne, jak łatwo jest wybierać i sprawdzać wartości Schemat tajnego udostępniania Shamira. Tutaj jest tylko pięć opcji.

Rozwiązanie problemu z niebezpieczną arytmetyką całkowitą

Aby wyeliminować tę lukę, Shamir proponuje wykorzystanie arytmetyki modularnej, zastępując Schemat tajnego udostępniania Shamira na Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira — zbiór wszystkich liczb pierwszych.

Przypomnijmy sobie szybko jak działa arytmetyka modularna. Zegar ze wskazówkami to powszechnie znany koncept. Ona używa zegarka, który jest Schemat tajnego udostępniania Shamira. Gdy wskazówka godzinowa minie liczbę dwanaście, wraca do liczby jeden. Ciekawą właściwością tego systemu jest to, że patrząc na zegar nie jesteśmy w stanie wywnioskować, ile obrotów wykonała wskazówka godzinowa. Jeśli jednak wiemy, że wskazówka godzinowa minęła 12 cztery razy, możemy dokładnie określić liczbę godzin, które upłynęły, korzystając z prostego wzoru Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira - to jest nasz dzielnik (tutaj Schemat tajnego udostępniania Shamira), Schemat tajnego udostępniania Shamira — to jest współczynnik (ile razy dzielnik bez reszty wchodzi do liczby pierwotnej, tutaj Schemat tajnego udostępniania Shamira) i Schemat tajnego udostępniania Shamira — jest to reszta, która jest zwykle zwracana przez wywołanie operatora modulo (tutaj Schemat tajnego udostępniania Shamira). Znajomość wszystkich tych wartości pozwala nam rozwiązać równanie Schemat tajnego udostępniania Shamira, ale jeśli pominiemy jakiś współczynnik, nigdy nie będziemy w stanie przywrócić pierwotnej wartości.

Możemy pokazać, jak to poprawia bezpieczeństwo naszego schematu, stosując go do naszego poprzedniego przykładu i używając Schemat tajnego udostępniania Shamira. Nasza nowa funkcja wielomianowa Schemat tajnego udostępniania Shamirai nowe punkty Schemat tajnego udostępniania Shamira. Teraz klucznicy mogą ponownie wykorzystać interpolację wielomianową do rekonstrukcji naszej funkcji, tyle że tym razem operacje dodawania i mnożenia muszą być połączone z redukcją modulo. Schemat tajnego udostępniania Shamira (na przykład Schemat tajnego udostępniania Shamira).

Załóżmy, że atakujący, korzystając z tego nowego przykładu, dowiedział się dwóch z tych nowych punktów, Schemat tajnego udostępniania Shamirai informacji publicznej Schemat tajnego udostępniania Shamira. Tym razem atakujący, opierając się na wszystkich posiadanych przez siebie informacjach, wyprowadza następujące funkcje, gdzie Schemat tajnego udostępniania Shamira — zbiór wszystkich liczb całkowitych dodatnich i Schemat tajnego udostępniania Shamira reprezentuje współczynnik modułu Schemat tajnego udostępniania Shamira.

Schemat tajnego udostępniania Shamira

Teraz nasz napastnik znalazł go ponownie Schemat tajnego udostępniania Shamira, obliczywszy Schemat tajnego udostępniania Shamira:

Schemat tajnego udostępniania Shamira

Następnie próbuje się wycofać ponownie Schemat tajnego udostępniania Shamirawymiana Schemat tajnego udostępniania Shamira в Schemat tajnego udostępniania Shamira:

Schemat tajnego udostępniania Shamira

Tym razem ma poważny problem. W formule nie ma wartości Schemat tajnego udostępniania Shamira, Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira. Ponieważ istnieje nieskończenie wiele kombinacji tych zmiennych, nie może on uzyskać żadnych dodatkowych informacji.

Względy bezpieczeństwa

Tajny plan dzielenia się informacjami Shamira sugeruje bezpieczeństwo z punktu widzenia teorii informacji. Oznacza to, że matematyka jest odporna nawet na ataki ze strony atakujących dysponujących nieograniczoną mocą obliczeniową. Jednakże program ten nadal ma kilka znanych problemów.

Na przykład plan Szamira nie tworzy sprawdzone fragmenty, to znaczy, że ludzie mogą swobodnie przedstawiać fałszywe fragmenty i przeszkadzać w przywróceniu właściwej tajemnicy. Wrogi opiekun fragmentów, dysponujący wystarczającą ilością informacji, mógłby nawet wytworzyć inny fragment, zmieniając Schemat tajnego udostępniania Shamira według własnego uznania. Problem ten rozwiązuje się za pomocą weryfikowalne schematy dzielenia się tajemnicami, takie jak program Feldmana.

Innym problemem jest to, że długość dowolnego fragmentu jest równa długości odpowiadającego mu sekretu, zatem długość sekretu jest łatwa do ustalenia. Ten problem jest rozwiązany trywialnie farsz sekret zawierający dowolne liczby do ustalonej długości.

Na koniec należy zauważyć, że nasze obawy dotyczące bezpieczeństwa mogą wykraczać poza sam program. W przypadku rzeczywistych zastosowań kryptograficznych często istnieje zagrożenie atakami typu side-channel, w ramach których atakujący próbuje wyodrębnić przydatne informacje z czasu wykonywania aplikacji, pamięci podręcznej, awarii itp. Jeśli jest to niepokojące, podczas tworzenia aplikacji należy dokładnie rozważyć zastosowanie środków ochronnych, takich jak funkcje i wyszukiwania o stałym czasie, zapobieganie zrzucaniu pamięci na dysk i szereg innych działań wykraczających poza zakres tego artykułu.

Демо

Na aktualizacja Zaprezentowano interaktywną demonstrację tajnego schematu dzielenia się informacjami Szamira. Demonstracja została przeprowadzona na podstawie biblioteki ssss-js, który sam w sobie jest portem JavaScript popularnego programu ssss. Należy pamiętać, że obliczanie dużych wartości Schemat tajnego udostępniania Shamira, Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira może to potrwać chwilę.

Źródło: www.habr.com

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster