Найбільш важливою сферою застосування
криптографії є цифровий підпис. Цифровий підпис забезпечує цілий
комплекс захисту, який було б досить складно здійснити будь-яким іншим
способом.
Аутентифікація повідомлень захищає дві
сторони від будь-якої третьої, але не забезпечує захист кожної із сторін від
один одної. Тут є цілий ряд можливостей для виникнення конфліктів.
Наприклад, припустимо, що Джон посилає
Мері засвідчене повідомлення. Розглянемо такі конфлікти, які можуть при цьому
виникати.
1. Мері може створити фальшиве
повідомлення і заявити, що воно прийшло від Джона. Для цього Мері потрібно
просто скласти повідомлення і приєднати до нього код автентичності із
застосуванням ключа, який Джон і Мері використовують спільно.
2. Джон може заперечувати авторство
відісланого повідомлення. Оскільки у Мері є можливість фальсифікувати
повідомлення, неможливо довести, що Джон насправді посилав повідомлення.
Обидва ці сценарії стосуються питань
легітимності. Ось приклад першого з сценаріїв: при виконанні електронної
пересилки грошей одержувач збільшує значення пересилається суми і заявляє, що
від відправника прийшла більш значна сума. Прикладом другого сценарію може
служити ситуація, коли повідомлення електронної пошти містить вказівки
біржовому маклеру з приводу виконання транзакції, яка згодом виявляється
збитковою. Тому відправник заявляє, що таке повідомлення їм ніколи не
відправлялося.
У ситуаціях, коли немає повної довіри
між відправником та одержувачем, потрібно щось більше ніж проста
аутентифікація. Найбільш привабливим вирішенням цієї проблеми виявляється
цифровий підпис. Цифрова підпис є аналогом підпису, зробленого від руки. Він
повинен забезпечувати наступні можливості.
■ Можливість встановити автора, а
також дату і час підпису.
■ Можливість встановити
достовірність вмісту повідомлення на час підпису.
■ Можливість перевірки підпису
третьою стороною на випадок виникнення спору.
Таким чином, функції цифрового підпису
охоплюють, зокрема, і функції аутентифікації.
На
основі цих властивостей ми можемо сформулювати такі вимоги, висунуті до
цифрового підпису:
■
Підпис має бути двійковим кодом, який залежить від підписуємого повідомлення.
■
Підпис має використовувати деяку інформацію, унікальну для відправника, щоб
запобігти можливості як фальсифікації, так і заперечення авторства.
■
Цифровий підпис має бути відносно просто реалізувати.
■
Цифровий підпис має бути відносно просто розпізнати і перевірити.
■ З точки зору обчислень має бути нереально фальсифікувати цифровий підпис ні
за допомогою створення нового повідомлення для наявної цифрового підпису, ні за
допомогою створення фальшивої цифрового підпису для наявного повідомлення.
■
Примірник цифрового підпису повинно бути зручно зберігати в запам'ятовуючому
пристрої.
На
основі даних умов було сформовано стандарт цифрового підпису.
Національний інститут стандартів і
технології (NIST) опублікував реальний стандарт обробки інформації FIPS PUB
186, відомий також як DSS (Digital Signature Standard - стандарт цифрового
підпису). Стандарт DSS заснований на алгоритмі хешування SHA (Secure Hash
Algorithm - захищений алгоритм хешування) і представляє нову технологію
використання цифрового підпису - алгоритм DSA (Digital Signature Alhorithm -
алгоритм цифрового підпису). Стандарт DSS був запропонований в 1991 р., а його
виправлена версія - в 1993 р. у відповідь на виниклі сумніви в
безпеки відповідної схеми. У 1996 році в нього були внесені незначні зміни.
У стандарті DSS використовується
алгоритм, покликаний забезпечити тільки функцію цифрового підпису. На відміну
від RSA даний алгоритм не може служити для шифрування або обміну ключами. Однак
це приклад технології криптографії з відкритим ключем.
Порівняємо схеми генерування цифрових
підписів з користуванням DSS і RSA.
Підхід RSA
Підхід DSA
На основі RSA повідомлення, яке повинно
бути підписано, надходить на вхід функції хешування, яка видає захищений
хеш-код фіксованої довжини. Цей хеш-код шифрується потім особистим ключем
відправника, в результаті чого і виходить підпис. Після цього передаються і
повідомлення, і його підпис. Одержувач приймає повідомлення і обчислює хеш-код.
Крім того, він дешифрує підпис, використовуючи відкритий ключ відправника. Якщо
обчислений хеш-код відповідає дешифрований підпису, підпис вважається
справжнім. Оскільки тільки відправник знає свій особистий ключ, справжній
підпис може поставити тільки він.
Підхід DSS також заснований на функції
хешування. Хеш-код подається на вхід функції створення підпису разом з
випадковим числом k, що спеціально генеруються для даного підпису. Функція
створення підпису залежить також від особистого ключа відправника KRa і ряду
параметрів, відомих групі сполучених сторін. Можна вважати, що це безліч
становить глобальний відкритий ключ KUG. У результаті виходить підпис, що
складається з двох компонентів, що позначаються s і r.
У пункті призначення генерується
хеш-код прийнятого повідомлення. Цей код і підпис подаються на вхід функції
верифікації. Функція верифікації залежить також від глобального відкритого
ключа та від відкритого ключа відправника КUа, відповідного особистого ключа
відправника. Якщо підпис є справжнім, то на виході функції верифікації виходить
значення, що збігається з компонентом r підпису. Функція створення підпису
така, що тільки відправник, знаючи свій особистий ключ, може створити
правильний підпис.