Schemat tajnego udostępniania Shamira

Rozważmy scenariusz, w którym trzeba zabezpieczyć skarbiec bankowy. Uważany jest za całkowicie nie do zdobycia bez klucza, który dostajesz już pierwszego dnia pracy. Twoim celem jest bezpieczne przechowywanie klucza.

Załóżmy, że decydujesz się mieć klucz zawsze przy sobie, zapewniając dostęp do magazynu w razie potrzeby. Szybko jednak zorientujesz się, że takie rozwiązanie nie sprawdza się w praktyce, ponieważ przy każdym otwarciu magazynu wymagana jest Twoja fizyczna obecność. A co z obiecanymi ci wakacjami? Poza tym pytanie jest jeszcze bardziej przerażające: co by było, gdybyś zgubił swój jedyny klucz?

Z myślą o urlopie decydujesz się na wykonanie kopii klucza i powierzeniu go innemu pracownikowi. Jednak rozumiesz, że to też nie jest idealne. Podwajając liczbę kluczy, podwajasz także ryzyko kradzieży kluczy.

W desperacji niszczysz duplikat i decydujesz się podzielić oryginalny klucz na pół. Można by pomyśleć, że dwie zaufane osoby posiadające fragmenty klucza musiałyby być fizycznie obecne, aby odebrać klucz i otworzyć skarbiec. Oznacza to, że złodziej musi ukraść dwie sztuki, co jest dwa razy trudniejsze niż kradzież jednego klucza. Jednak szybko zdajesz sobie sprawę, że ten schemat nie jest dużo lepszy niż tylko jeden klucz, ponieważ jeśli ktoś zgubi połowę klucza, nie będzie można odzyskać całego klucza.

Problem można rozwiązać za pomocą szeregu dodatkowych kluczy i zamków, ale takie podejście będzie szybko wymagało много klucze i zamki. Decydujesz, że idealnym rozwiązaniem byłoby dzielenie klucza, aby bezpieczeństwo nie było całkowicie zależne od jednej osoby. Dochodzisz również do wniosku, że musi istnieć jakiś próg liczby fragmentów, tak aby w przypadku zgubienia jednego fragmentu (lub jeśli ktoś pojedzie na wakacje) cały klucz pozostał funkcjonalny.

Jak podzielić się tajemnicą

O tego rodzaju schemacie zarządzania kluczami myślał Adi Shamir w 1979 roku, kiedy publikował swoją pracę „Jak podzielić się sekretem”. W artykule pokrótce wyjaśniono tzw Schemat tajnego udostępniania Shamira schemat progowy umożliwiający efektywne dzielenie tajnej wartości (takiej jak klucz kryptograficzny) na Schemat tajnego udostępniania Shamira Części. Wtedy, kiedy i tylko wtedy, przynajmniej Schemat tajnego udostępniania Shamira z Schemat tajnego udostępniania Shamira części są zmontowane, możesz łatwo przywrócić sekret Schemat tajnego udostępniania Shamira.

Z punktu widzenia bezpieczeństwa ważną właściwością tego schematu jest to, że atakujący nie powinien wiedzieć absolutnie niczego, jeśli nie posiada przynajmniej Schemat tajnego udostępniania Shamira Części. Nawet obecność Schemat tajnego udostępniania Shamira części nie powinny dostarczać żadnych informacji. Nazywamy tę właściwość bezpieczeństwo semantyczne.

Interpolacja wielomianowa

Schemat progu Shamira Schemat tajnego udostępniania Shamira zbudowany wokół koncepcji interpolacja wielomianowa. Jeśli nie znasz tej koncepcji, jest ona całkiem prosta. Tak naprawdę, jeśli kiedykolwiek narysowałeś punkty na wykresie, a następnie połączyłeś je liniami lub krzywymi, już tego użyłeś!

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

Rozważmy wielomian o stopniu pierwszym, Schemat tajnego udostępniania Shamira. Jeśli chcesz przedstawić tę funkcję na wykresie, ile punktów potrzebujesz? Wiemy, że jest to funkcja liniowa tworząca linię i dlatego potrzebuje co najmniej dwóch punktów. Następnie rozważmy funkcję wielomianową stopnia drugiego, Schemat tajnego udostępniania Shamira. Jest to funkcja kwadratowa, więc do wykreślenia wykresu potrzebne są co najmniej trzy punkty. A co powiesz na wielomian o stopniu trzecim? Co najmniej cztery punkty. I tak dalej i tak dalej.

Naprawdę fajną rzeczą w tej właściwości jest to, że biorąc pod uwagę stopień funkcji wielomianu i co najmniej Schemat tajnego udostępniania Shamira punktów, możemy wyprowadzić dodatkowe punkty dla tej funkcji wielomianu. Nazywamy to ekstrapolacją tych dodatkowych punktów interpolacja wielomianowa.

Zmyślanie tajemnicy

Być może już zdałeś sobie sprawę, że w tym miejscu wchodzi w grę sprytny plan Shamira. Powiedzmy nasz sekret Schemat tajnego udostępniania Shamira - jest Schemat tajnego udostępniania Shamira. Możemy zawrócić Schemat tajnego udostępniania Shamira do punktu na wykresie Schemat tajnego udostępniania Shamira i wymyśl funkcję wielomianową ze stopniem Schemat tajnego udostępniania Shamira, co spełnia ten punkt. Przypomnijmy Ci to 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ą o stopniu drugim.

Nasz wielomian będzie miał postać Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira — losowo wybrane dodatnie liczby całkowite. Po prostu konstruujemy wielomian ze stopniem Schemat tajnego udostępniania Shamira, gdzie wolny współczynnik Schemat tajnego udostępniania Shamira - To jest nasz sekret Schemat tajnego udostępniania Shamirai dla każdego z kolejnych Schemat tajnego udostępniania Shamira warunkach istnieje losowo wybrany współczynnik dodatni. Jeśli wrócimy do pierwotnego przykładu i założymy to Schemat tajnego udostępniania Shamira, wtedy otrzymujemy funkcję Schemat tajnego udostępniania Shamira.

W tym momencie możemy wygenerować fragmenty poprzez połączenie Schemat tajnego udostępniania Shamira unikalne liczby całkowite w Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira (bo to nasza tajemnica). W tym przykładzie chcemy rozdzielić cztery fragmenty z progiem trzech, więc losowo generujemy punkty Schemat tajnego udostępniania Shamira i wyślij po jednym punkcie każdej z czterech zaufanych osób, opiekunów klucza. Informujemy o tym także ludzi Schemat tajnego udostępniania Shamira, ponieważ jest to informacja publiczna i niezbędna do odzyskania danych Schemat tajnego udostępniania Shamira.

Odzyskanie tajemnicy

Omówiliśmy już koncepcję interpolacji wielomianowej i jej znaczenie dla schematu progowego Shamira Schemat tajnego udostępniania Shamira. Kiedy którekolwiek z trzech z czterech powierników chce przywrócić Schemat tajnego udostępniania Shamira, wystarczy interpolować Schemat tajnego udostępniania Shamira z własnymi, unikalnymi punktami. Aby to zrobić, mogą określić swoje punkty Schemat tajnego udostępniania Shamira i oblicz wielomian interpolacji Lagrange'a, korzystając z następującego wzoru. Jeśli programowanie jest dla ciebie jaśniejsze niż matematyka, to pi jest w zasadzie operatorem for, co mnoży wszystkie wyniki, a sigma jest for, co sumuje wszystko.

Schemat tajnego udostępniania Shamira

Schemat tajnego udostępniania Shamira

w Schemat tajnego udostępniania Shamira możemy rozwiązać to w ten sposób i zwrócić 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 zrobione po prostu:

Schemat tajnego udostępniania Shamira

Używanie niebezpiecznej arytmetyki liczb całkowitych

Chociaż z powodzeniem zastosowaliśmy podstawową ideę Shamira Schemat tajnego udostępniania Shamirapozostaje nam problem, który do tej pory ignorowaliśmy. Nasza funkcja wielomianowa wykorzystuje niebezpieczną arytmetykę liczb całkowitych. Należy pamiętać, że dla każdego dodatkowego punktu, jaki atakujący uzyska na wykresie naszej funkcji, możliwości zdobycia innych punktów są mniejsze. Można to zobaczyć na własne oczy, wykreślając rosnącą liczbę punktów dla funkcji wielomianowej za pomocą arytmetyki liczb całkowitych. Przynosi to efekt przeciwny do zamierzonego w stosunku do naszego wyznaczonego celu bezpieczeństwa, ponieważ osoba atakująca nie powinna wiedzieć absolutnie nic, dopóki przynajmniej tego nie dowie się Schemat tajnego udostępniania Shamira paprochy.

Aby zademonstrować, jak słaby jest obwód arytmetyki liczb całkowitych, rozważmy scenariusz, w którym atakujący uzyskał dwa punkty Schemat tajnego udostępniania Shamira i zna informację publiczną, że Schemat tajnego udostępniania Shamira. Z tych informacji może wywnioskować Schemat tajnego udostępniania Shamirarówny dwa i wstaw znane wartości do wzoru Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira.

Schemat tajnego udostępniania Shamira

Osoba atakująca może wtedy znaleźć Schemat tajnego udostępniania Shamira, liczenie Schemat tajnego udostępniania Shamira:

Schemat tajnego udostępniania Shamira

Ponieważ zdefiniowaliśmy Schemat tajnego udostępniania Shamira jako losowo wybrane dodatnie liczby całkowite, istnieje ograniczona liczba możliwych Schemat tajnego udostępniania Shamira. Korzystając z tych informacji, osoba atakująca może wywnioskować Schemat tajnego udostępniania Shamira, ponieważ wystarczy wszystko, co jest większe niż 5 Schemat tajnego udostępniania Shamira negatywny. Okazuje się to prawdą, ponieważ ustaliliśmy Schemat tajnego udostępniania Shamira

Osoba atakująca może następnie 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 ograniczonymi opcjami Schemat tajnego udostępniania Shamira staje się jasne, jak łatwo jest wybrać i sprawdzić wartości Schemat tajnego udostępniania Shamira. Tutaj jest tylko pięć opcji.

Rozwiązanie problemu z niebezpieczną arytmetyką liczb całkowitych

Aby wyeliminować tę lukę, Shamir sugeruje użycie arytmetyki modułowej, 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 modułowa. Zegar ze wskazówkami to znana koncepcja. To znaczy używa zegarka Schemat tajnego udostępniania Shamira. Gdy tylko wskazówka godzinowa minie dwunastą, wraca do pierwszej. Ciekawą właściwością tego systemu jest to, że patrząc na zegarek, 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 całkowicie określić liczbę godzin, które minęły, za pomocą prostego wzoru Schemat tajnego udostępniania ShamiraGdzie Schemat tajnego udostępniania Shamira jest naszym dzielnikiem (tutaj Schemat tajnego udostępniania Shamira), Schemat tajnego udostępniania Shamira to współczynnik (ile razy dzielnik przechodzi do pierwotnej liczby bez reszty, tutaj Schemat tajnego udostępniania Shamira) i Schemat tajnego udostępniania Shamira to reszta, która zwykle zwraca 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 przegapimy współczynnik, nigdy nie będziemy w stanie przywrócić pierwotnej wartości.

Możemy zademonstrować, jak poprawia to bezpieczeństwo naszego schematu, stosując schemat 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 osoby odpowiedzialne za klucze mogą ponownie użyć interpolacji wielomianowej do zrekonstruowania naszej funkcji, tylko tym razem operacjom dodawania i mnożenia musi towarzyszyć redukcja modulo Schemat tajnego udostępniania Shamira (na przykład Schemat tajnego udostępniania Shamira).

Korzystając z tego nowego przykładu, załóżmy, że atakujący nauczył się dwóch z tych nowych punktów: Schemat tajnego udostępniania Shamirai informacji publicznej Schemat tajnego udostępniania Shamira. Tym razem atakujący, w oparciu o wszystkie posiadane informacje, wyprowadza następujące funkcje: gdzie Schemat tajnego udostępniania Shamira jest zbiorem wszystkich dodatnich liczb całkowitych, oraz Schemat tajnego udostępniania Shamira reprezentuje współczynnik modułu Schemat tajnego udostępniania Shamira.

Schemat tajnego udostępniania Shamira

Teraz nasz napastnik znajduje ponownie Schemat tajnego udostępniania Shamira, obliczanie Schemat tajnego udostępniania Shamira:

Schemat tajnego udostępniania Shamira

Potem próbuje 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. Brakujące wartości formuły Schemat tajnego udostępniania Shamira, Schemat tajnego udostępniania Shamira и Schemat tajnego udostępniania Shamira. Ponieważ istnieje nieskończona liczba kombinacji tych zmiennych, nie może on uzyskać żadnych dodatkowych informacji.

Względy bezpieczeństwa

Sugeruje to plan tajnego udostępniania Shamira bezpieczeństwo z punktu widzenia teorii informacji. Oznacza to, że matematyka jest odporna nawet na atakującego z nieograniczoną mocą obliczeniową. Jednak obwód nadal zawiera kilka znanych problemów.

Na przykład schemat Shamira nie tworzy fragmenty do sprawdzeniaoznacza to, że ludzie mogą swobodnie prezentować fałszywe fragmenty i utrudniać odzyskanie prawidłowego sekretu. Wrogi opiekun fragmentów posiadający wystarczające informacje może nawet wyprodukować kolejny fragment poprzez zmianę Schemat tajnego udostępniania Shamira według własnego uznania. Ten problem rozwiązano za pomocą weryfikowalne schematy udostępniania tajnych informacji, takie jak schemat Feldmana.

Innym problemem jest to, że długość dowolnego fragmentu jest równa długości odpowiadającego mu sekretu, więc długość sekretu jest łatwa do ustalenia. Problem ten można rozwiązać banalnie wyściółka tajne z dowolnymi liczbami do ustalonej długości.

Na koniec należy zauważyć, że nasze obawy dotyczące bezpieczeństwa mogą wykraczać poza sam projekt. W przypadku rzeczywistych aplikacji kryptograficznych często istnieje ryzyko ataków typu side-channel, podczas których osoba atakująca próbuje wydobyć przydatne informacje z czasu wykonywania aplikacji, buforowania, awarii itp. Jeśli stanowi to problem, podczas opracowywania należy dokładnie rozważyć użycie środków ochronnych, takich jak funkcje i wyszukiwania w czasie stałym, zapobiegające zapisywaniu pamięci na dysku, a także szereg innych kwestii, które wykraczają poza zakres tego artykułu.

Демо

Na aktualizacja Istnieje interaktywna demonstracja planu udostępniania sekretów Shamira. Pokaz oparty na bibliotece ssss-js, który sam w sobie jest portem JavaScript tego 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 chwilę potrwać.

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

Dodaj komentarz