Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Герасименко.doc
Скачиваний:
31
Добавлен:
16.05.2015
Размер:
1.24 Mб
Скачать
  1. Програмна реалізація моделі спеціалізованого процесора

    1. Обґрунтування вибору програмних засобів

Розробка програми моделювання роботи процесора протоколу автентифікації на основі алгоритму асиметричного шифрування Pohlig – Hellman буде проводитись за допомогою мови програмування С#[9].

С# - це об’єктно – орієнтована мова програмування. Компілятор з С# входить в стандартну платформу .Net, тому програми на ній можна створювати і компілювати навіть без інструментальних засобів. Мова має статистичну типізацію, підтримує поліморфізм, перезавантаження операторів, делегати, атрибути, події, узагальнені типи і методи, ітератори, коментарі в форматі XML.

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

В C# існує автоматичне“прибирання сміття”.Типи даних фіксованого розміру являються не тільки високо мобільними, але і спрощують процес програмування. Важливою характеристикою даного середовища є широкі можливості застосування логічних функцій, підтримка роботи з різними типами даних.

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

    1. Розробка блок - схеми керуючої програми

Блок - схема загального функціонування програми для моделювання протоколу автентифікації алгоритму асиметричного шифрування Pohlig-Hellman(рис. 3).

Рисунок 3 – Загальна блок – схема функціонування програми

    1. Програмна реалізація основних функцій програми

Згідно до завдання до курсової роботи необхідно розробити програму для реалізації протоколу одностороньої автентифікації з використання алгоритму асиметричного шифрування Pohlig-Hellman. Зазначимо основні необхідні пункти та модулі, що мають бути у розробленій програмі.

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

Для здійснення операцій шифрування та зашифрування потрібно, згенерувати відкритий та закритий ключі.

В програмі виклик цього модулю здійснюється таким чином:

GenerateKey();

Програмна реалізація цього модулю:

Спочатку ініціалізація змінних:

BigInteger tmp;

Random rand = new Random();

BigInteger tmp1 = BigInteger.genPseudoPrime(64, 1, rand);

BigInteger tmp2 = BigInteger.genPseudoPrime(64, 1, rand);

Далі генерування ключів:

tmp = (tmp1 - 1) * (tmp2 - 1);

key1 = tmp.genCoPrime(120, rand);

key2=SolveEq(key1, tmp);

key2=key2.abs();

n = tmp1 * tmp2;

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

Виклик цього модулю виглядає так:

key2=SolveEq(key1, tmp);

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

Спочатку ініціалізуємо змінні:

BigInteger x1, x2, x3;

BigInteger y1, y2, y3;

BigInteger t1, t2, t3;

BigInteger q;

Встановлюємо початковий стан

x1 = 1;

x2 = 0;

x3 = b;

y1 = 0;

y2 = 1;

y3 = a;

Організовуваємо нескінчений цикл

bool k = false;

while (!k)

{

Перевіряємо умови

if (y3 == 0) return 0;

if (y3 == 1) return y2;

q = x3 / y3;

Проводимо розрахунки

t1 = x1 - q * y1;

t2 = x2 - q * y2;

t3 = x3 - q * y3;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

Шифрування та дешифрування здійснюється за однією формулою. В програмі виклик їх здійснюється таким чином:

P = Crypt(tmp1, tmp2, tmp3);

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

return C.modPow(Key, n);

При розробці інтерфейсу потрібно запрограмувати можливість покрокового виконання програми та можливість внесення помилок.

Пояснимо призначення функцій, що використовуються у розробленій програмі:,

Crypt– функція, яка керує процесом зашифруванням та розшифруванням даних;

GenerateKey – функція, яка генерує ключі;

SolveEq – функція розширеного алгоритму Евкліда

Повний програмний код наведений у Додатку Е.