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

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

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

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

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

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

Як поділити секрет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Щоб усунути цю вразливість, Шамір пропонує використовувати модульну арифметику, замінивши Схема поділу секрету Шаміра на Схема поділу секрету Шаміра, Де Схема поділу секрету Шаміра и Схема поділу секрету Шаміра - Багато простих чисел.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

демо

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

Джерело: habr.com

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster