Множинний підпис

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Множинний (колективний) підпис (англ. Aggregate signature) — схема (протокол) реалізації електронного підпису (ЕЦП), що дозволяє декільком користувачам підписувати єдиний документ.

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

Введення[ред. | ред. код]

Термін «колективний підпис» співзвучний з терміном «груповий підпис», однак ці поняття різні. У протоколі групової ЕЦП вирішується завдання забезпечення можливості будь-якому користувачеві з деякої групи сформувати підпис від імені всієї групи. У протоколі групової ЕЦП також регламентується наявність конкретних осіб, які можуть визначати список людей, які сформували підпис (тим самим останні мають гіпотетичну можливість підписатися за будь-якого з членів групи). У разі колективної роботи з електронними документами необхідно мати можливість їх підписи багатьма користувачами[2]. Варіант схеми з генерацією набору індивідуальних користувачів ЕЦП, що підписують один електронний документ, володіє кількома вираженими недоліками — лінійним збільшенням розміру колективної ЕЦП (КЭЦП) із збільшенням числа підписантів, а також необхідністю додаткових перевірок цілісності і повноти колективної цифрового підпису для виключення можливості підміни кількості та поіменного складу учасників, що підписали документ.

Концепція колективного відкритого ключа[ред. | ред. код]

На основі відкритих ключів учасників виробляється колективний відкритий ключ, що дозволяє виробити і перевірити справжність колективної електронного цифрового підпису. На колективний відкритий ключ накладається ряд обмежень за розміром, цілісності, незалежності від користувачів, одночасності генерації колективного відкритого ключа і нерозривності. Іншими словами — з КЕЦП не можна обчислити валідність КЕЦП для будь-якого іншого набору учасників з безлічі поточних, КЕЦП не прив'язана до складу учасників — будь-які користувачі можуть об'єднуватися в групи і виробити свою КЕЦП. Колективний відкритий ключ — функція відкритих ключів користувачів — є базисом, на якому будується весь протокол колективної підпису[3].

КЕЦП виробляється у відповідності з перерахованими вимогами за допомогою алгоритмів, стабільність яких забезпечується за рахунок наступних обчислювально-важких завдань: дискретне логарифмування в мультиплікативної групи великої простого порядку, витяг коренів великий простий ступеня за великим простому модулю, дискретне логарифмування в групі точок еліптичної кривої спеціального виду.[3].

Реалізація протоколів на основі стандартів ЕЦП[ред. | ред. код]

Стандарт ЕЦП — ГОСТ Р 34.10−94[ред. | ред. код]

Згідно стандарту ГОСТ Р 34.10−94[4] накладаються обмеження на просте число p в двійковоиму представленні яке використовується: біт або  біт. Число такий, що  для або  для . Для генерації і перевірки ЕЦП використовують число , таке що , де  — генератор підгрупи досить великого простого порядку .

Алгоритм обчислення ЕЦП[ред. | ред. код]

1. Генерується випадкове число . 
2. Обчислюється значення  що є першою частиною підпису. 
3. По ГОСТ Р 34.11–94 обчислюється хеш-функція   від підписуваного повідомлення. 
4. Обчислюється друга частина підпису: , де  — секретний ключ. Якщо 
 , процедура генерації підпису повторюється.

Алгоритм перевірки достовірності ЕЦП[ред. | ред. код]

1. Повіряється виконання умов  і  . Якщо умови не виконуються, то підпис не є дійсним. 
2. Обчислюється значення 
,де  — відкритий ключ користувача, формування перевірочного підпису. 
3. Порівнюються значення  і . Якщо , то підпис є дійсним

Реалізація протоколу КЕЦП[ред. | ред. код]

Кожен -й користувач формує відкритий ключ виду , де — особистий (секретний) ключ, = , , … , .

Колективним відкритим ключем є добуток

 

Кожен користувач вибирає випадковий секретний ключ — число, яке використовується лише один раз.

Обчислюється

 
 
 є доступним для всіх учасників колективу, що виробляють КЕЦП 

Потім кожен з учасників колективу, що виробляють КЕЦП, по визначеній ним значенням і результату обчислює

 
 - частина підпису. 

Колективнмим підписом буде пара величин , де — сума всіх по модулю [3].

Перевірка колективного електронного цифрового підпису[ред. | ред. код]

Перевірка колективного підпису здійснюється за формулою:

 

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

Доказ коректності запропонованого алгоритму КЕЦП[ред. | ред. код]

В рівнянні  підставляємо отриману підпис - пару (R,S), де R — добуток Ri по модулю q, S — сумма Si по модулю q: Переконуємося, що воно виконується: [3] Розглянемо формальний доказ стійкості протоколу КЕЦП при використанні перевірочного рівняння

, регламентується стандартом ЕЦП ГОСТ Р 34.10-94.

Можливість підробки КЕЦП[ред. | ред. код]

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

Нехай m-1 користувачів хочуть сформувати КЕЦП, перевіряється за колективним відкритого ключа , де , тобто  користувачів об'єднують свої зусилля, щоб сформувати пару чисел таку, що . Тобто вони можуть підробити підпис під відкритий ключ , тобто обчислити значення  і , які задовольняють рівняння  . З цього випливає можливість підробити цифровий підпис в базовій схемі ЕЦП, так як .

Атака на обчислення секретного ключа іншого співвласника КЕЦП[ред. | ред. код]

Нехай  - це ЕЦП, сформована -м користувачем до документу, який відповідає хеш-функції  (атаку виконують  користувачів). Тоді виконується:  і обчислюють . для . Потім обчислюються параметри и , які задовільняють рівнянням , де . Вводячи позначення . Маємо , де и . Це означає, що атакуючі отримали правильне значення колективного підпису , в якій беруть участь вони і ще один користувач, що володіє відкритим ключем . Згідно допущенню з отриманої колективного підпису атакуючі можуть обчислити секретний ключ .З виразу для і формули  легко отримати: . Атакуючі вирахували секретний ключ -го користувача за його індивідуальної ЕЦП, сформованої в рамках базового алгоритму ЕЦП. Це доводить пропозицію про те, що запропонований протокол КЕЦП не знижує стійкості базового алгоритму ЕЦП.

Стандарт ЕЦП — ГОСТ Р 34.10−2001[ред. | ред. код]

Згідно стандарту ГОСТ Р 34.10−2001[5] накладаються обмеження на просте число p  яке використовується, просте число q и точку G. Просте число  — модуль еліптичної кривої (ЕК), яка задається в декартовій системі координат рівнянням з коефіцієнтами  і : ( — поле Галуа порядка ). Просте число  — порядок циклічної підгрупи точок еліптичної кривої. Точка  — точка на еліптичній кривій з координатами , відмінна від точки початку координат, але для якої точка збігається з початком координат. Секретним ключем є досить велике ціле число . Відкритим ключем є точка .

Формування підпису[ред. | ред. код]

1. Генерується випадкове ціле число . 
2. Обчислюються координати точки ЕК  і визначається значення , де  — координата точки . 
3. Обчислюється значення , де . 
Підписом є пара чисел .[5]

Перевірка підпису[ред. | ред. код]

Перевірка підпису полягає у обчисленні координат точки ЕК:

а також у визначенні значення та перевірці виконання рівності .[5]

Реалізація протоколу КЕЦП[ред. | ред. код]

Кожен учасник групи формує відкритий ключ виду

, де - особистий (секретний) ключ, .

Колективним відкритим ключем є сума

Кожен учасник групи виробляє число — разовий випадковий секретний ключ. За допомогою це разового випадкового ключа обчислюються координати точки . Результат обчислення розсилається всім учасникам групи для колективного використання. Обчислюється сума

З одержаної суми обчислюється значення . Кожен учасник групи обчислює свою частину підписи:

[3]

Перевірка КЕЦП[ред. | ред. код]

Обчислюють

По отриманому результату обчислюється

Якщо , то КЭЦП сукупності m користувачів є справжньою, так як вона могла бути сформована тільки за участю кожного користувача з цієї групи, так як для формування КЭЦП потрібна наявність секретного ключа кожного з учасників.

Реалізація множинного підпису на основі RSA[ред. | ред. код]

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

Схема подвійний цифрового підпису розширює звичайну схему RSA. У схемі подвійний цифрового підпису генерується не пара ключів (відкритий / закритий ключ), а трійка (два приватних і один публічний). За аналогією зі звичайною схемою RSA учасники вибирають модуль обчислення  — добуток двох простих довгих чисел. Вибираються 2 випадкових приватних ключа і в діапазоні від 1 до , кякі будуть взаємно прості з , де  — функция Ейлера.Вироблення відкритого ключа здійснюється за формулою . Величина буде публічним ключем. Для того, щоб підписати величину , перший учасник обчислює. Результат обчислення передається на вхід другого учасника групи. У другого учасника з'являється можливість побачити, що він буде підписувати. Для цього він отримує величину  з величини ,йому необхідно буде обчислити . Перевірка підпису здійснюється за допомогою .[6]

Розширення схеми подвійного підпису на учасників[ред. | ред. код]

Генеруються . Публічний ключ буде обчислюватися по формулі. Кожний -й учасник підписує повідомлення M по формулі . Потім обчислюється величина . Перевірка підпису здійснюється за формулою .

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

  1. Молдовян Николай Андреевич, Еремеев Михаил Алексеевич, Галанов Алексей Игоревич. МНОЖЕСТВЕННАЯ ПОДПИСЬ: НОВЫЕ РЕШЕНИЯ НА ОСНОВЕ ПОНЯТИЯ КОЛЛЕКТИВНОГО ОТКРЫТОГО КЛЮЧА : [] // Журнал "Информационно-управляющие системы". — 2008. — Вип. 1.
  2. B. Schneier. Прикладная криптография : [арх. 18 грудня 2018] : [] // John Wiley & Sons. — 1996. — С. 98.
  3. а б в г д е Николай Андреевич Молдовян, Андрей Алексеевич Костин, Лидия Вячеславовна Гортинская, Михаил Юрьевич Ананьев. РЕАЛИЗАЦИЯ ПРОТОКОЛА КОЛЛЕКТИВНОЙ ПОДПИСИ НА ОСНОВЕ СТАНДАРТОВ ЭЦП : [арх. 21 листопада 2016] : [] // Журнал "Информационно-управляющие системы". — 2005.
  4. ГОСТ Р 34.10–94. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи : [] // Госстандарт Российской Федерации. — 1994. — 25 травня.
  5. а б в ГОСТ Р 34.10–2001. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи : [] // Госстандарт Российской Федерации. — 2001. — Помилка: неправильний час.
  6. Mihir Bellare,Gregory Neven. .