Схема поділу секрету Шаміра

Розглянемо сценарій, коли необхідно забезпечити безпеку банківського сховища. Воно вважається абсолютно неприступним без ключа, який вам видають у перший день роботи. Ваша мета – надійно зберегти ключ.

Припустимо, ви вирішили постійно зберігати ключ при собі, надаючи доступ до сховища при необхідності. Але ви швидко зрозумієте, що таке рішення практично нормально не масштабується, тому що кожного разу для відкриття сховища потрібна ваша фізична присутність. А як щодо відпустки, які вам обіцяли? Крім того, ще більше лякає питання: а що якщо ви втратили єдиний ключ?

З думкою про відпустку ви вирішили зробити копію ключа та довірити її іншому співробітнику. Однак ви розумієте, що це також не ідеально. Подвоюючи кількість ключів, ви також подвоїли можливості крадіжки ключа.

Зневірившись, ви знищуєте дублікат і вирішуєте розділити вихідний ключ навпіл. Тепер, ви думаєте, дві довірені особи з фрагментами ключів повинні фізично бути присутніми, щоб зібрати ключ і відкрити сховище. Це означає, що злодіїві необхідно вкрасти два фрагменти, що вдвічі важче за крадіжку одного ключа. Однак незабаром ви розумієте, що ця схема не набагато краща, ніж просто один ключ, тому що якщо хтось втратить половину ключа, повний ключ не можна відновити.

Проблему можна вирішити за допомогою серії додаткових ключів та замків, але при такому підході швидко буде потрібно багато ключів та замків. Ви вирішуєте, що в ідеальній схемі потрібно розділити ключ, щоб безпека не покладалася повністю на одну людину. Ви також робите висновок, що повинен існувати якийсь поріг кількості фрагментів, щоб при втраті одного фрагмента (або якщо людина пішла у відпустку) весь ключ залишався функціональним.

Как разделить секрет

О таком типе схемы управления ключами думал Ади Шамир в 1979 году, когда опубликовал свою работу «Как разделить секрет». У статті коротко пояснюється так звана Схема поділу секрету Шаміра порогова схема для ефективного поділу секретного значення (наприклад, криптографічного ключа) на Схема поділу секрету Шаміра частин. Потім, коли і тільки коли хоча б Схема поділу секрету Шаміра з Схема поділу секрету Шаміра частей собраны, можно легко восстановить секрет Схема поділу секрету Шаміра.

С точки зрения безопасности важным свойством этой схемы является то, что злоумышленник не должен узнать абсолютно ничего, если у него нет хотя бы Схема поділу секрету Шаміра частей. Даже наличие Схема поділу секрету Шаміра частей не должно давать никакой информации. Мы называем это свойство семантичною безпекою.

Поліноміальна інтерполяція

Пороговая схема Шамира Схема поділу секрету Шаміра построена вокруг концепции поліноміальної інтерполяції. Якщо ви не знайомі з цією концепцією, вона насправді є досить простою. Взагалі, якщо ви коли-небудь малювали крапки на графіці, а потім з'єднували їх лініями чи кривими, то вже використовували її!

Схема поділу секрету Шаміра
Через дві точки можна провести необмежену кількість поліномів ступеня 2. Щоб вибрати з них єдиний, потрібна третя точка. Ілюстрація: Вікіпедія

Розглянемо поліном зі ступенем один, Схема поділу секрету Шаміра. Якщо ви хочете побудувати цю функцію на графіку, скільки точок потрібно? Ну, ми знаємо, що це лінійна функція, яка утворює лінію і тому потрібно принаймні дві точки. Далі розглянемо поліноміальну функцію зі ступенем два, Схема поділу секрету Шаміра. Это квадратичная функция, поэтому для построения графика требуется не менее трёх точек. Как насчёт многочлена со степенью три? По крайней мере, четыре точки. И так далее и тому подобное.

Дійсно класна річ у цій властивості полягає в тому, що, враховуючи ступінь поліноміальної функції та, принаймні, Схема поділу секрету Шаміра точок, ми можемо вивести додаткові точки для цієї поліноміальної функції. Екстраполяцію цих додаткових точок ми називаємо поліноміальною інтерполяцією.

Складання секрету

Можливо, ви вже зрозуміли, що тут входить у гру розумна схема Шаміра. Припустимо, що наш секрет Схема поділу секрету Шаміра - це Схема поділу секрету Шаміра. Ми можемо перетворити Схема поділу секрету Шаміра в точку на графике Схема поділу секрету Шаміра та придумати поліноміальну функцію зі ступенем Схема поділу секрету Шаміра, яка задовольняє цю точку. Нагадаємо, що Схема поділу секрету Шаміра будет нашим порогом требуемых фрагментов, поэтому если мы установить порог в три фрагмента, то должны выбрать полиномиальную функцию со степенью два.

Наш поліном матиме форму Схема поділу секрету Шаміра, Де Схема поділу секрету Шаміра и Схема поділу секрету Шаміра — случайным образом выбранные положительные целые числа. Мы всего лишь строим полином со степенью Схема поділу секрету Шаміра, де вільний коефіцієнт Схема поділу секрету Шаміра - це наш секрет Схема поділу секрету Шаміра, а у кожного з наступних Схема поділу секрету Шаміра членів є випадковим чином вибраний позитивний коефіцієнт. Якщо повернутися до початкового прикладу і припустити, що Схема поділу секрету Шаміра, то тогда мы получим функцию Схема поділу секрету Шаміра.

На этом этапе мы можем генерировать фрагменты, подключив Схема поділу секрету Шаміра уникальных целых чисел в Схема поділу секрету Шаміра, Де Схема поділу секрету Шаміра (потому что это наш секрет). В данном примере мы хотим раздать четыре фрагмента с порогом три, поэтому случайным образом генерируем точки Схема поділу секрету Шаміра и отправляем по одной точке каждому из четырёх доверенных человек, хранителей ключа. Мы также сообщаем людям, что Схема поділу секрету Шаміра, оскільки це вважається публічною інформацією і необхідно для відновлення Схема поділу секрету Шаміра.

Відновлення секрету

Мы уже обсуждали концепцию полиномиальной интерполяции и то, что она лежит в основе пороговой схемы Шамира Схема поділу секрету Шаміра. Когда любые три из четырёх доверенных лиц хотят восстановить Схема поділу секрету Шаміраїм потрібно тільки інтерполювати Схема поділу секрету Шаміра зі своїми унікальними точками. Для цього вони можуть визначити свої точки Схема поділу секрету Шаміра та розрахувати інтерполяційний поліном Лагранжа, використовуючи таку формулу. Якщо програмування вам зрозуміліше, ніж математика, то пі — це насправді оператор for, который умножает все результаты, а сигма — это for, що все складає.

Схема поділу секрету Шаміра

Схема поділу секрету Шаміра

При Схема поділу секрету Шаміра мы можем это решить следующим образом и вернуть нашу исходную полиномиальную функцию:

Схема поділу секрету Шаміра

Оскільки ми знаємо, що Схема поділу секрету Шаміра, відновлення Схема поділу секрету Шаміра здійснюється просто:

Схема поділу секрету Шаміра

Використання небезпечної цілочисленної арифметики

Хоча ми успішно застосували основну ідею Шаміра Схема поділу секрету Шаміра, у нас остаётся проблема, которую мы игнорировали до настоящего момента. Наша полиномиальная функция использует небезопасную целочисленную арифметику. Учтите, что для каждой дополнительной точки, которую атакующий получает на графике нашей функции, остаётся меньшее количество возможностей для других точек. Вы можете увидеть это своими глазами, когда строите график с увеличением количества точек для полиномиальной функции с использованием целочисленной арифметики. Это контрпродуктивно для нашей заявленной цели безопасности, потому что злоумышленник не должен абсолютно ничего узнать, пока у них не будет хотя бы Схема поділу секрету Шаміра фрагментів.

Чтобы продемонстрировать, насколько слаба схема с целочисленной арифметикой, рассмотрим сценарий, в котором злоумышленник получил две точки Схема поділу секрету Шаміра і знає публічну інформацію, що Схема поділу секрету Шаміра. З цієї інформації він може вивести Схема поділу секрету Шаміра, рівний двом, і підключити до формули відомі значення Схема поділу секрету Шаміра и Схема поділу секрету Шаміра.

Схема поділу секрету Шаміра

Потім зловмисник може знайти Схема поділу секрету Шаміра, порахувавши Схема поділу секрету Шаміра:

Схема поділу секрету Шаміра

Оскільки ми визначили Схема поділу секрету Шаміра как случайно выбранные целые положительные числа, есть ограниченное число возможных Схема поділу секрету Шаміра. За допомогою цієї інформації зловмисник може вивести Схема поділу секрету Шаміра, поскольку всё, что больше 5, сделает Схема поділу секрету Шаміра отрицательным. Это оказывается правдой, поскольку мы определили Схема поділу секрету Шаміра

Затем злоумышленник может рассчитать возможные значения Схема поділу секрету Шаміра, замінивши Схема поділу секрету Шаміра в Схема поділу секрету Шаміра:

Схема поділу секрету Шаміра

З обмеженим набором варіантів для Схема поділу секрету Шаміра стає зрозуміло, наскільки легко підібрати та перевірити значення Схема поділу секрету Шаміра. Тут лише п'ять варіантів.

Вирішення проблеми з небезпечною цілочисленною арифметикою

Чтобы устранить эту уязвимость, Шамир предлагает использовать модульную арифметику, заменив Схема поділу секрету Шаміра на Схема поділу секрету Шаміра, Де Схема поділу секрету Шаміра и Схема поділу секрету Шаміра - Багато простих чисел.

Быстро вспомним, как работает модульная арифметика. Часы со стрелками — уже знакомая концепция. Она использует часы, которые являются Схема поділу секрету Шаміра. Щойно годинна стрілка проходить повз дванадцять, вона повертається до одного. Цікавою властивістю цієї системи є те, що просто подивившись на годинник, ми не можемо вивести, скільки обертів зробила стрілка годинника. Однак якщо ми знаємо, що годинникова стрілка чотири рази минула 12, можна повністю визначити кількість минулих годин за допомогою простої формули Схема поділу секрету Шаміра, Де Схема поділу секрету Шаміра - це наш дільник (тут Схема поділу секрету Шаміра), Схема поділу секрету Шаміра - Це коефіцієнт (кілька разів дільник без залишку переходить у вихідне число, тут Схема поділу секрету Шаміра), А Схема поділу секрету Шаміра — це залишок, який зазвичай і повертає виклик оператора за модулем (тут Схема поділу секрету Шаміра). Знання всіх цих значень дозволяє нам вирішити рівняння для Схема поділу секрету Шаміраале якщо ми пропустимо коефіцієнт, то ніколи не зможемо відновити вихідне значення.

Можно продемонстрировать, как это улучшает безопасность нашей схемы, применив схему к нашему предыдущему примеру и используя Схема поділу секрету Шаміра. Наша нова поліноміальна функція Схема поділу секрету Шаміра, а нові точки Схема поділу секрету Шаміра. Тепер зберігачі ключа можуть ще раз використовувати поліноміальну інтерполяцію для відновлення нашої функції, тільки цього разу операції додавання та множення повинні супроводжуватися скороченням по модулю Схема поділу секрету Шаміра (напр Схема поділу секрету Шаміра).

Використовуючи цей новий приклад, припустимо, що зловмисник дізнався дві з цих нових точок, Схема поділу секрету Шаміра, а публичная информация Схема поділу секрету Шаміра. На цей раз атакуючий на основі всієї наявної в нього інформації виводить такі функції, де Схема поділу секрету Шаміра - Набір всіх позитивних цілих чисел, а Схема поділу секрету Шаміра представляет коэффициент модуля Схема поділу секрету Шаміра.

Схема поділу секрету Шаміра

Тепер наш зловмисник знову знаходить Схема поділу секрету Шаміра, вычислив Схема поділу секрету Шаміра:

Схема поділу секрету Шаміра

Потім він знову намагається вивести Схема поділу секрету Шаміра, замінивши Схема поділу секрету Шаміра в Схема поділу секрету Шаміра:

Схема поділу секрету Шаміра

На цей раз у нього серйозна проблема. У формулі відсутні значення Схема поділу секрету Шаміра, Схема поділу секрету Шаміра и Схема поділу секрету Шаміра. Оскільки існує нескінченна кількість комбінацій цих змінних, вона може отримати ніякої додаткової інформації.

міркування безпеки

Схема поділу секрету Шаміра пропонує безпека з погляду теорії інформації. Це означає, що математика є стійкою навіть проти зловмисника із необмеженою обчислювальною потужністю. Однак схема, як і раніше, містить кілька відомих проблем.

Например, схема Шамира не создаёт фрагментів, що перевіряютьсятобто люди можуть вільно пред'являти підроблені фрагменти і заважати відновленню правильного секрету. Ворожий зберігач фрагментів з достатньою інформацією може навіть зробити інший фрагмент, змінивши Схема поділу секрету Шаміра на свій розсуд. Ця проблема вирішується за допомогою схем поділу секрету, що перевіряються, такі як схема Фельдмана.

Другая проблема заключается в том, что длина любого фрагмента равна длине соответствующего секрета, так что длину секрета легко определить. Эта проблема решается тривиальной набивкою секрету довільними числами до фіксованої довжини

Наконец, важно отметить, что наши опасения по поводу безопасности могут выходить за рамки самой схемы. Для реальных криптографических приложений часто существует угроза атак по сторонним каналам, когда злоумышленник пытается извлечь полезную информацию из времени выполнения приложения, кэширования, сбоев и т.д. Если это вызывает озабоченность, следует во время разработки тщательно рассмотреть использование защитных мер, таких как функции и поиск с постоянным временем выполнения, предотвратить сохранение памяти на диск и продумать ряд других вещей, которые выходят за рамки этой статьи.

демо

На цій сторінці є інтерактивна демонстрація cхема поділу секрету Шаміра. Демонстрація зроблена на базі бібліотеки ssss-js, которая сама по себе является JavaScript-портом популярной программы SSSS. Обратите внимание, что вычисление больших значений Схема поділу секрету Шаміра, Схема поділу секрету Шаміра и Схема поділу секрету Шаміра може зайняти деякий час.

Джерело: habr.com

Додати коментар або відгук