Розділення секрету

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

Розділення секрету (англ. Secret sharing) — термін в криптографії, під яким розуміють будь-який з способів розподілу секрету серед групи учасників, кожному з яких дістається якась своя  частка. Секрет може відтворити тільки коаліція учасників з первісної групи, причому входити в коаліцію має не менше деякого відомого спочатку числа.

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

Існуючі схеми мають дві складові: розподіл і відновлення секрету. До поділу відноситься формування частин секрету і розподіл їх між членами групи, що дозволяє розділити відповідальність за секрет між її учасниками. Зворотна схема повинна забезпечити його відновлення за умови доступності його зберігачів у деякій необхідній кількості[1].

Приклад використання: протокол таємного голосування на основі поділу секрету[2].

Найпростіший приклад схеми поділу секрету[ред. | ред. код]

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

В такій схемі є суттєва проблема: в разі втрати хоча б одного з членів групи, секрет буде загублений для всієї групи безповоротно.

Порогова схема[ред. | ред. код]

На відміну від процедури розділення секрету, де у процедурі поділу секрету кількість часток, які потрібні для відновлення секрету, може відрізнятися від того, на скільки часток секрет розділений. Така схема носить назви порогової схеми , де  — кількість часток, на які був поділений секрет, а  — кількість часток, які потрібні для відновлення секрету. Ідеї схем були незалежно запропоновані в 1979 році Аді Шаміром і Джорджем Блеклі. Крім цього, подібні процедури досліджувалися Гусом Сіммонсом[4][5][6].

Якщо коаліція учасників така, що вони мають достатню кількість часток для відновлення секрету, то коаліція називається дозволеною. Схеми поділу секрету, в яких дозволені коаліції учасників можуть однозначно відновити секрет, а невирішені не отримують ніякої апостеріорної інформації про можливе значенні секрету, називаються досконалими[7].

Схема Шаміра[ред. | ред. код]

Через дві точки можна провести необмежену кількість поліномів ступеня 2. Щоб вибрати з них єдиний — потрібна третя точка

Ідея схеми полягає в тому, що двох точок достатньо для задання прямої, трьох крапок — для завдання параболи, чотирьох точок — для кубічної параболи, і так далі. Щоб задати многочлен ступеня потрібно точок.

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

Коротко даний алгоритм можна описати наступним чином. Нехай дано кінцеве поле . Зафіксуємо різних ненульових несекретних елементів даного поля. Кожен з цих елементів приписується певному члену групи. Далі вибирається довільний набір з елементів поля , з яких складається многочлен над полем ступеня . Після отримання многочлена вираховуємо його значення в несекретних точках і повідомляємо отримані результати відповідним членам групи[1].

Щоб відновити секрет можна скористатися інтерполяційної формули, наприклад формулою Лагранжа.

Важливою перевагою схеми Шаміра є те, що вона легко масштабована[6]. Щоб збільшити число користувачів в групі, необхідно лише додати відповідне число несекретних елементів до вже існуючих, при цьому має виконуватися умова при . У той же час, компрометація однієї частини секрету переводить схему з -порогової в -порогову.

Схема Блеклі[ред. | ред. код]

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

Схема Блеклі у трьох вимірах: кожна частка секрету — це площина, а секрет — це одна з координат точки перетину площин. Двох площин недостатньо для визначення точки перетину.

З допомогою схеми Блеклі[5] можна створити (t, n)-схему розподілу секрету для будь-яких t і n: для цього треба покласти розмірність простору дорівнює t, і кожному з n гравців дати одну гіперплощина, що проходить через секретну точку. Тоді будь — t з n гіперплощин будуть однозначно перетинатися в секретній точці.

Схема Блеклі менш ефективна, ніж схема Шаміра: у схемі Шаміра кожна частка такого ж розміру, як і секрет, а в схемі Блеклі кожна частка в t разів більше. Існують поліпшення схеми Блеклі, що дозволяють підвищити її ефективність.

Схеми, засновані на китайській теоремі про залишки[ред. | ред. код]

У 1983 році Моріс Миньотт, Асмут і Блум запропонували дві схеми поділу секрету, засновані на китайській теоремі про залишки. Для деякого числа (у схемі Міньотта це сам секрет, у схемі Асмута — Блума — деяке похідне число) обчислюються залишки від ділення на послідовність чисел, які роздаються сторонам. Завдяки обмеженням на послідовність чисел, відновити секрет може тільки певне число сторін[8][9].

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

Щоб відновити секрет, необхідно об'єднати фрагментів. В цьому випадку отримаємо систему порівнянь виду , множину рішень якої можна знайти, використовуючи китайську теорему про залишки. Секретне число . Також не складно показати, що якщо число фрагментів менше , то, для того щоб знайти секрет , необхідно перебрати близько цілих чисел. При правильному виборі чисел такий перебір практично неможливо реалізувати. Наприклад, якщо розрядність буде від 129 до 130 біт, а , то відношення  буде мати порядок [10].

Схема Асмута — Блума є доопрацьованою схемою Міньотта. На відміну від схеми Міньотта, її можна побудувати в такому вигляді, щоб вона була досконалою[11].

Схеми, засновані на вирішенні систем рівнянь[ред. | ред. код]

У 1983 році Карнін, Грін і Хеллман запропонували свою схему розподілу секрету, яка ґрунтувалася на неможливості вирішити систему з невідомими, маючи менше рівнянь[12].

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

Секретом в схемі є матричний добуток . Частками секрету є добуток .

Маючи будь-які часток, можна скласти систему лінійних рівнянь розмірності , невідомими якої є коефіцієнти . Розв'язавши дану систему, можна знайти , а маючи можна знайти секрет. При цьому система рівнянь не має рішення в разі, якщо часток менше, ніж [13].

Способи обману порогової схеми[ред. | ред. код]

Існуює кілька способів порушити протокол роботи порогової схеми:

  • власник однієї з часток може перешкодити відновленню загального секрету, віддавши в потрібний момент невірну (випадкову) частку[14];
  • зловмисник, не маючи частки, може бути присутнім при відновленні секрету. Дочекавшись оголошення потрібного числа часток, він швидко відновлює секрет самостійно і породжує ще одну частку, після чого пред'являє її іншим учасникам. В результаті він отримує доступ до секрету і залишається не пійманим[15].

Також існують інші можливості порушення роботи, не пов'язані з особливостями реалізації схеми:

  • зловмисник може зімітувати ситуацію, при якій необхідно розкриття секрету, тим самим вивідавши частки учасників[15].

Примітки[ред. | ред. код]

Література[ред. | ред. код]

  • Шнайер Б. 3.7. Розділення секрету // Прикладна криптографія. Протоколи, алгоритми, вихідні тексти на мові Сі = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Тріумф, 2002. — С. 93-96. — 816 с. — 3000 екз. — ISBN 5-89392-055-4.
  • Шнайер Б. 23.2 Алгоритми поділу секрету // Прикладна криптографія. Протоколи, алгоритми, вихідні тексти на мові Сі = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Тріумф, 2002. — С. 588—591. — 816 с. — 3000 екз. — ISBN 5-89392-055-4.