
Лекція 9. Цифровий підпис
Вимоги до цифрового підпису
Автентифікація захищає двох учасників, які обмінюються повідомленнями, від впливу деякої третьої сторони. Однак проста автентифікація не захищає учасників друг від друга, тоді як і між ними теж можуть виникати певні форми спору.
Наприклад, припустимо, що Абонент А посилає Абоненту В автентифіковане повідомлення, і автентифікація здійснюється на основі загального секрету. Розглянемо можливі непорозуміння, які можуть при цьому виникнути:
Абонент В може підробити повідомлення й стверджувати, що воно прийшло від Абонента А. Абонент В досить просто створити повідомлення й приєднати автентифікаційний код, використовуючи ключ, що розділяють Абонент А і Абонент В.
Абонент А може заперечувати, що він посилав повідомлення Абоненту В. Так як Абонент В може підробити повідомлення, у нього немає способу довести, що Абонент А дійсно посилав його.
У ситуації, коли обидві сторони не довіряють один одному, необхідно щось більше, ніж автентифікація на основі загального секрету. Можливим рішенням подібної проблеми є використання цифрового підпису. Цифровий підпис повинний мати наступні властивості:
Повинна бути можливість перевірити автора, дату й час створення підпису.
Повинна бути можливість автентифікувати вміст під час створення підпису.
Підпис повинний бути перевіряємий третьою стороною для рішення спору.
Таким чином, функція цифрового підпису включає функцію автентифікації.
На підставі цих властивостей можна сформулювати наступні вимоги до цифрового підпису:
Підпис повинний бути бітовим зразком, що залежить від повідомлення, що підписується.
Підпис повинний використовувати деяку унікальну інформацію відправника для запобігання підробки або відмови.
Створювати цифровий підпис повинно бути відносно легко.
Повинно бути розрахунково неможливо підробити цифровий підпис як створенням нового повідомлення для існуючого цифрового підпису, так і створенням помилкового цифрового підпису для деякого повідомлення.
Цифровий підпис повинний бути досить компактним й не займати багато пам'яті.
Сильна хеш-функція, зашифрована закритим ключем відправника, задовольняє перерахованим вимогам.
Існує кілька підходів до використання функції цифрового підпису. Всі вони можуть бути розділені на дві категорії: прямі й арбітражні.
Прямі й арбітражна цифрові підписи
При використанні прямого цифрового підпису взаємодіють тільки самі учасники, тобто відправник і одержувач. Передбачається, що одержувач знає відкритий ключ відправника. Цифровий підпис може бути створений шифруванням усього повідомлення або його хеш-коду закритим ключем відправника.
Конфіденційність може бути забезпечена подальшим шифруванням усього повідомлення разом з підписом відкритим ключем одержувача (асиметричне шифрування) або поділюваним секретним ключем (симетричне шифрування). Помітимо, що звичайно функція підпису виконується першою, і тільки після цього виконується функція конфіденційності. У випадку виникнення суперечки якась третя сторона повинна переглянути повідомлення і його підпис. Якщо функція підпису виконується над зашифрованим повідомленням, то для вирішення спору прийдеться зберігати повідомлення як у незашифрованому виді (для практичного використання), так і в зашифрованому (для перевірки підпису). Або в цьому випадку необхідно зберігати ключ симетричного шифрування, для того щоб можна було перевірити підпис вихідного повідомлення. Якщо цифровий підпис виконується над незашифрованим повідомленням, одержувач може зберігати тільки повідомлення в незашифрованому виді й відповідному підписі до нього.
Всі прямі схеми, розглянуті далі, мають загальне слабке місце. Дієвість схеми залежить від безпеки закритого ключа відправника. Якщо відправник згодом не захоче визнати факт відправлення повідомлення, він може стверджувати, що закритий ключ був загублений або украдений, і в результаті хтось підробив його підпис. Можна застосувати адміністративне керування, що забезпечує безпеку закритих ключів, для того щоб, принаймні, хоч у якомусь ступені послабити ці погрози. Один з можливих способів складається у вимозі в кожний підпис повідомлення включати мітку часу (дату й час) і повідомляти про скомпрометовані ключі в спеціальний центр.
Інша погроза полягає в тому, що закритий ключ може бути дійсно украдений у Х в момент часу Т. Порушник може потім послати повідомлення, підписане підписом Х и позначене часовою міткою, що менше або дорівнює Т.
Проблеми, пов'язані із прямим цифровим підписом, можуть бути частково вирішені за допомогою арбітра. Існують різні схеми із застосуванням арбітражного підпису. У загальному виді арбітражний підпис виконується в такий спосіб. Кожне підписане повідомлення від відправника Х к одержувачу Y першою справою надходить до арбітра А, що перевіряє підпис для даного повідомлення. Після цього повідомлення датується й посилається до Y із вказівкою того, що воно було перевірено арбітром. Присутність А вирішує проблему схем прямого цифрового підпису, при яких Х може відмовитися від повідомлення.
Арбітр відіграє важливу роль у подібного роду схемах, і всі учасники повинні йому довіряти.
Розглянемо деякі можливі технології арбітражного цифрового підпису.
Симетричне шифрування, арбітр бачить повідомлення:
Х
A: M || EKxa
[ IDX
|| H (M)]
Передбачається, що відправник Х и арбітр А розділяють секретний ключ KХА й що А и Y розділяють секретний ключ KАY.. Х створює повідомлення М и обчислює його хеш-значення Н (М). Потім Х передає повідомлення й підпис А. Підпис складається з ідентифікатора Х и хеш-значення, усе зашифровано з використанням ключа KХА. А дешифрує підпис і перевіряє хеш-значение.
A Y: ЕКay [ IDX || M || EKxa [IDX || H (M)], T ]
Потім А передає повідомлення до Y, шифруючи його KAY. Повідомлення включає IDX, первісне повідомлення від Х, підпис і мітку часу. Y може дешифрувати його для одержання повідомлення й підпису. Мітка часу інформує Y про те, що дане повідомлення не застаріло й не є повтором. Y може зберегти М и підпис до нього. У випадку суперечки Y, що затверджує, що одержав повідомлення М від Х, посилає наступне повідомлення до А:
ЕКay [ IDX || M || EKxa [IDX || H (M)] ]
Арбітр використовує KAY для одержання IDХ, М и підпису, а потім, використовуючи KХА, може дешифрувати підпис і перевірити хеш-код. За цією схемою Y не може прямо перевірити підпис Х; підпис використовується винятково для вирішення спору. Y вважає повідомлення від Х автентифікованим, так як воно пройшло через А. У даному сценарії обидві сторони повинні мати високий ступінь довіри до А:
Х повинен довіряти А в тому, що той не буде розкривати KХА й створювати фальшиві підписи у формі ЕKха [IDX || H (M)].
Y повинен довіряти А в тому, що він буде посилати ЕKay [ IDX || M || EKxa [IDX || H (M)] ] тільки в тому випадку, якщо хеш-значення є коректним і підпис була створений Х.
Обидві сторони повинні довіряти А в рішенні спірних питань.
Симетричне шифрування, арбітр не бачить повідомлення:
Якщо арбітр не є такою довіреною стороною, то Х повинен домогтися того, щоб ніхто не міг підробити його підпис, а Y повинен домогтися того, щоб Х не міг відкинути свій підпис. Попередній сценарій також припускає, що А має можливість читати повідомлення від Х к Y і що можливо будь-яке підглядання. Розглянемо сценарій, що, як і раніше, використовує арбітраж, але при цьому ще забезпечує конфіденційність. У такому випадку також передбачається, що Х и Y розділяють секретний ключ KXY.
X A: IDX || EKхy [M] || EKxa [IDX || H (EKxy [M]) ]
Х передає А свій ідентифікатор, повідомлення, зашифроване KXY, і підпис. Підпис складається з ідентифікатора й хеш-значення зашифрованого повідомлення, які зашифровані з використанням ключа KХА. А дешифрує підпис і перевіряє хеш-значення. У цьому випадку А працює тільки із зашифрованою версією повідомлення, що запобігає його читання.
A Y: EKay [ IDX || EKxy[M] || EKxa [ IDX || H ( EKxy [M])], T]
А передає Y усе, що він одержав від Х плюс мітку часу, всі шифруючи з використанням ключа KAY.
Хоча арбітр і не може прочитати повідомлення, він у стані запобігти підробці кожного з учасників, Х або Y. Залишається проблема, як і в першому сценарії, що арбітр може зговоритися з відправником, що заперечує підписане повідомлення, або з одержувачем, для підробки підпису відправника.
Шифрування відкритим ключем, арбітр не бачить повідомлення:
Всі обговорювані проблеми можуть бути вирішені за допомогою схеми відкритого ключа.
X A: IDX || EKRх [ IDX || EKUy [EKRx [M] ] ]
У цьому випадку Х здійснює подвійне шифрування повідомлення М, спочатку своїм закритим ключем KRX, а потім відкритим ключем Y KUY. Виходить підписана секретна версія повідомлення. Тепер це підписане повідомлення разом з ідентифікатором Х шифрується KRX і разом з IDX посилає А. Внутрішнє, двічі зашифроване, повідомлення недоступно арбітрові (і всім, крім Y). Однак А може дешифрувати зовнішнє шифрування, щоб переконатися, що повідомлення прийшло від Х (так як тільки Х має KRX). Перевірка дає гарантію, що пара закритий/відкритий ключ законна, і тим самим верифікує повідомлення.
A Y: EKRa [ IDX || EKUy [EKRx [M] ] || T ]
Потім А передає повідомлення Y, шифруючи його KRA. Повідомлення включає IDX, двічі зашифроване повідомлення й мітку часу.
Ця схема має ряд переваг у порівнянні з попередніми двома схемами. По-перше, ніяка інформація не розділяється учасниками до початку з'єднання, запобігаючи договору про обман. По-друге, некоректні дані не можуть бути послані, навіть якщо KRX скомпрометований, за умови, що не скомпрометований KRА. На закінчення, вміст повідомлення від Х к Y невідомо ні А, ні кому б те не було ще.