Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування засобів захисту інформації в комп'...doc
Скачиваний:
18
Добавлен:
14.11.2019
Размер:
1.06 Mб
Скачать

3.1 Алгоритм шифрування/дешифрування rsa.

3.1.1 Генерація ключа.

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

Відкритий модуль n повинен бути результатом простих коефіцієнтів і : .

Закритий показник повинний бути додатнім цілим числом , таким що ділиться як на так і на .

Довжина модуля n в байтах є ціле число k, що задовольняє умові .

Довжина модуля повинна бути щонайменше 12 байт.

Рис. 2. Схема перевіряння цифрового конверта

3.1.2 Процес шифрування.

Процес шифрування складається з чотирьох кроків: форматування блоків шифрування, перетворення рядка байт в ціле число, обчислення RSA, і перетворення цілого числа в рядок байт. Вхідними даними для процесу шифрування є рядок байт , дані; ціле число , модуль; і ціле число , показник. Для операцій з відкритим ключем ціле число повинно бути відкритим показником суб'єкта; для операцій з закритим ключем – закритим показником суб'єкта. Вихідними даними процесу шифрування є рядок байт , зашифровані дані.

Довжина даних не повинна бути більше, ніж байт, вона є додатнім числом, оскільки довжина модуля є щонайменше 12 байт.

Це обмеження гарантує, що довжина рядка доповнення є щонайменше вісім байт, що є умовою криптостійкості системи.

Форматування блоку шифрування

Тип блоку , рядок доповнення , і дані повинні бути сформатовані в рядок байт , блок шифрування.

, де || - операція конкатенації.

Тип блоку - це один байт, який вказує на структуру блоку шифрування. Він повинен мати значення 00, 01, або 02. Для операцій з закритим ключем тип блоку повинен бути 00 або 01. Для операцій з відкритим ключем, він повинен бути 02.

Рядок доповнення повинен скластися з байт (|| || - довжина в байтах). Для блоку типу 00 байти повинні мати значення 00; для блоку типу 01 – значення FF; і для блоку типу 02, вони повинні бути псевдовипадково згенеровані і ненульові. Цей рядок робить довжину блоку шифрування рівною k.

Перетворення рядка байт в ціле число.

Блок шифрування повинен бути перетворений в ціле число , цілочисельний блок шифрування. Нехай будуть байтами від першого до останнього. Тоді ціле число повинно обчислюватись наступним чином

Іншими словами, перший байт має найбільшу вагу в цілому числі, а останній байт має найменшу вагу.

задовольняє умові оскільки та .

Обчислення RSA.

підноситься до степеня c по модулю , щоб отримати ціле число , цілочисельні зашифровані дані.

.

Це є класичним обчисленням RSA.

Перетворення цілого числа в рядок байт.

Цілочисельні зашифровані дані y повинні бути перетворені в рядок байт довжини k, зашифровані дані. Зашифровані дані повинні задовольнити

де є байтами від першого до останнього.

Іншими словами, перший байт має найбільшу вагу в цілому числі, а останній байт має найменшу вагу.

3.1.3 Процес дешифрування.

Процес дешифрування складається з чотирьох кроків: перетворення рядка байт в ціле число, обчислення RSA, перетворення цілого число в рядок байт і синтаксичний аналіз блоку шифрування. Вхідними даними для процесу дешифрування є рядок байт , зашифрованими дані; ціле число n, модуль; і ціле число c, показник. Для операцій з відкритим ключем ціле число c повинно бути відкритим показником e суб'єкта; для операцій з закритим ключем – закритим показником d суб'єкта. Вихідними даними процесу дешифрування повинен бути рядок байт D, дані.

Якщо довжина даних не дорівнює k, то це є помилкою.

Для стислості, процес розшифрування описується в термінах процесу шифрування.

Перетворення рядка байт в ціле число.

Зашифровані дані ED повинні бути перетворені в ціле число y, цілочисельні зашифровані дані

Якщо зашифровані цілочисельні дані y не задовольняють умові , то це помилка.

Обчислення RSA.

Зашифровані цілочисельні дані y повинні бути піднесені до степеня c по модулю n для того, щоб отримати ціле число x, цілочисельний блок шифрування.

Це є класичним обчисленням RSA.

Перетворення цілого число в рядок байт.

Цілочисельний блок шифрування x повинен бути перетворений в рядок байт EB довжини k, блоку шифрування.

Синтаксичний аналіз блоку шифрування.

Блок шифрування EB повинен бути розбитий на тип блоку BT, рядок доповнення PS, і дані D.

Якщо будь-яка з наступних умов виконується, то це є помилкою:

  • блок шифрування EB не може бути розбитий однозначно.

  • рядок заповнення PS складається з менше, ніж вісім байти, або непослідовний з типом блоку BT.

  • процес дешифрування є операцією з відкритим ключем і тип блоку BT не є 00 або 01, або процес дешифрування є операцією з закритим ключем і тип блоку не є 02.

3.2 Алгоритм формування цифрового підпису RSA.

3.2.1 Формування підпису.

Процес підписання складається з чотирьох кроків: хешування повідомлення, шифрування даних, RSA шифрування, і перетворення рядка байт в рядок біт.

Вхідними даними для процесу підписання є рядок байт M, повідомлення; і закритий ключ сторони, що підписує документ. Вихідними даними процесу підписання є рядок біт S, підпис.

Хешування повідомлення.

Для отримання рядка байт MD, дайджеста повідомлення, використовується вибраний алгоритм дайджеста повідомлення, на вхід якого подається повідомлення M.

Шифрування даних.

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

Шифрування RSA.

Дані D повинні бути зашифровані з використанням закритого ключа RSA сторони, що підписує документ, щоб отримати рядок байт ED, зашифровані дані. Тип блоку повинен бути 01.

Перетворення рядка байта в рядок біт.

Зашифровані дані ED повинні бути перетворені в рядок біта S, підпис. Причому, старший біт першого байта зашифрованих даних повинний стати першим бітом підпису, і так далі до молодшого розряду останнього байта зашифрованих даних, який повинен стати останнім бітом підпису.

3.2.2 Перевірка підпису.

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

Перетворення рядка біт в рядок байт

Підпис S повинен бути перетворений в рядок байт ED, зашифровані дані. При чому, довжина в бітах підпис S кратна восьми, перший біт підпису повинний стати старшим бітом першого байта зашифрованих даних, і так далі до останнього біту підпису, який повинен стати молодшим розрядом останнього байта зашифрованих даних.

Якщо довжина в бітах підпису S є число, не кратне восьми, то це є помилка.

RSA дешифрування

Зашифровані дані ED повинні бути декодовані з використанням відкритого ключа RSA сторони, що підписала документ, щоб отримати рядок байт D, дані.

Якщо тип блоку, який отримується в процесі дешифрування не є 01, то це є помилка.

Дешифрування даних

Дані D повинні бути декодовані, щоб отримати дайджест повідомлення MD .

Хешування повідомлення і порівняння

Повідомлення M повинно обробитись з використанням вибраного алгоритм дайджесту повідомлення, щоб отримати рядок байт MD', дайджест повідомлення для порівняння. Процес верифікації успішно завершується, якщо MD' рівний MD, інакше процес верифікації повинен завершуватися аварійно.

Завдання для виконання роботи:

В ході роботи необхідно засвоїти основні принципи побудови комбінованих криптосистем, розробити програму підтримки комбінованих криптосистем на прикладі цифрового конверта. Для спрощення реалізації розрядність відкритого та закритого ключів повинна складати до 64 біт.

Порядок виконання роботи:

  1. Провести функціональну декомпозицію та побудувати діаграму класів підсистеми шифрування/дешифрування за алгоритмом CAST-128.

  2. Реалізувати підсистемe шифрування/дешифрування засобами MS Visual Studio 2005.

  3. Побудувати графічний інтерфейс програми шифрування/дешифрування згідно алгоритму CAST-128.

  4. Підготувати та захистити звіт.

4 Література

1. В. Стоуллингс “Криптография и защита сетей – Принципы и практика”, Киев 2003

2. Menezes A., van Oorshot P., Vanstone S. Handbook of applied cryptography. CRC Press, 1997

  1. Шнайер Б. Прикладная криптография: Протоколы, алгоритмы, исходные тексты на языке Си // Триумф, 2002. – 816с.