Розробка й аналіз криптопротоколу
Розробка криптопротоколу двосторонньої автентифікації з використанням цифрового підпису і випадкових чисел. Розрахунок технічних характеристик: часу реалізації криптопротоколу, складності апаратури для обчислень і ємності пам'яті для роботи процесора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 15.02.2012 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КУРСОВА РОБОТА
З курсу «Криптографія»
Тема: " Розробка й аналіз криптопротоколу”
Технічне Завдання
Розробити криптопротокол двосторонньої автентифікації з використанням випадкових чисел і криптоалгоритма MARS
Виконати аналіз криптопротоколу із використанням BAN-логіки.
Розробити структурну схему спеціалізованого процесора, що реалізує криптопротокол.
Визначити такі технічні характеристики спеціалізованого процесора:
час реалізації криптопротоколу (в умовних одиницях);
складність апаратури для обчислень (в умовних одиницях);
ємність пам`яті.
Розробити програму, що реалізує криптопротокол.
Розробити тест і виконати тестування програми.
План
Вступ
1. Опис алгоритму
1.1 Коротка характеристика
1.2 Структура алгоритму
1.3.Процедура розширення ключа
2. Задача аутентифікації даних
2.1 Опис задачі
2.2 Отримання коду автентифікації повідомлень
3. Аналіз крипто протоколу
3.1 Правила BAN логіки
3.2 Аналіз криптопротоколу з використанням BAN-логіки
4. Розробка структури спеціалізованого процесора
4.1 Визначення набору функцій, що реалізує спеціалізований процесор
4.2 Розробка структурної схеми спеціалізованого процесора
4.3 Визначення технічних характеристик спеціалізованого процесора
5. Розробка програми
5.1 Структура алгоритму кодування
5.2 Структура алгоритму декодування
6. Текст програми
6.1 Результат тестування програми
Висновки
Список використаної літератури
Вступ
криптопротокол цифровий автентифікація процесор
Криптографія (від гречок. криптос - схований й графос - пишу) - наука про математичні методи забезпечення конфіденційності (неможливості прочитання інформації для сторонніх осіб) і автентичності (цілісності й дійсності авторства, а також неможливості відмови від авторства) інформації.
Споконвічно криптографія вивчала методи шифрування інформації - оборотного перетворення відкритого (вихідного) тексту на основі секретного алгоритму і/або ключа в шифрований текст (шифротекст). Традиційна криптографія має розділ симетричних криптосистем, у яких зашифрування й дешифрування проводиться з використанням того самого секретного ключа. Крім цього розділу сучасна криптографія містить у собі асиметричні криптосистеми, системи електронного цифрового підпису (ЕЦП), хеш-функції, керування ключами, одержання схованої інформації, квантову криптографію.
Термінологія
Аутентифікація або підтвердження достовірності -- це процедура перевірки відповідності суб'єкта і того, за кого він намагається себе видати, за допомогою деякої унікальної інформації, в простому випадку -- за допомогою імені і пароля.
Відкритий (вихідний) текст -- дані (не обов'язково текстові), передані з використанням криптографії.
Шифрований (закритий) текст -- дані, отримані після застосування криптосистеми із зазначеним ключем.
Криптосистема (шифр) -- сімейство оборотних перетворень відкритого тексту в шифрований.
Ключ -- параметр шифру, що визначає вибір конкретного перетворення даного тексту. У сучасних шифрах алгоритм шифрування відомий і криптографічна стійкість шифру цілком визначається таємністю ключа (Принцип Керкгоффса).
Криптоаналіз -- наука, що вивчає математичні методи порушення конфіденційності й цілісності інформації.
Криптоаналітик -- людина, що створює й застосовує методи криптоаналізу.
Криптографія й криптоаналіз становлять криптологію, як єдину науку про створення й злом шифрів (такий розподіл привнесений із заходу, до цього в СРСР і Росії не застосовувалося спеціального розподілу).
Криптографічна атака -- спроба криптоаналітика викликати відхилення в захищеній системі, що атакує, обміну інформацією. Успішну криптографічну атаку називають злом або розкриттям.
Протокол -- це послідовність кроків, які роблять дві або більша кількість сторін для сумісного вирішення завдання. Всі кроки слідують у порядку строгої черговості, і жоден з них не може бути зроблений перш, ніж закінчиться попередній. Крім того, будь-який протокол має на увазі участь, принаймні, двох сторін.
Криптографічним протоколом називається такий, в основі якого лежить криптографічний алгоритм.
Традиційними завданнями криптографічних протоколів є:
- забезпечення того або іншого режиму аутентифікації учасників взаємодії;
- генерація, розподіл криптографічних ключів - учасники повинні бути оснащені ключовим матеріалом. Узгодження криптографічних ключів - учасники повинні домовитися, які саме секрети використовуватимуться при виклику криптографічних механізмів;
- захист взаємодій в широкому сенсі - як цільових даних, так і службових обмінів;
- реалізація спеціальних функцій: безвідмовність по виконаних операціях, докази деякого факту (в деяких випадках - без розкриття істоти цього факту), розділення відповідальності учасників взаємодії відповідно до заданої схеми і т.п.
Отже, криптографічний протокол - це набір правил, регламентуючих використання криптографічних перетворень і алгоритмів в інформаційних процесах.
Зашифрування -- процес нормального застосування криптографічного перетворення відкритого тексту на основі алгоритму й ключа в результаті якого виникає шифрований текст.
Розшифрування -- процес нормального застосування криптографічного перетворення шифрованого тексту у відкритий.
Дешифрування -- процес добування відкритого тексту без знання криптографічного ключа на основі відомого шифрованого. Термін дешифрування звичайно застосовують стосовно процесу криптоанализа шифротекста (криптоанализ сам по собі, загалом кажучи, може полягати й в аналізі шифросистемы, а не тільки зашифрованого нею відкритого повідомлення).
Криптографічна стійкість -- здатність криптографічного алгоритму протистояти криптоанализу.
Імітозахист -- захист від нав'язування помилкової інформації. Імітозахист досягається звичайно за рахунок включення в пакет переданих даних імітовставки.
Імітовставка -- блок інформації, застосовуваний для імітозахисту, що залежить від ключа й даних. В окремому випадку забезпечується ЕЦП.
Для сучасної криптографії характерне використання відкритих алгоритмів шифрування, що припускають використання обчислювальних засобів. Відомо більше десятка перевірених алгоритмів шифрування, які при використанні ключа достатньої довжини й коректної реалізації алгоритму, криптографічно стійкі. Розповсюджені алгоритми:
симетричні DES, AES, ГОСТ 28147-89, Camellia, Twofish, Blowfish, IDEA, RC4 й ін. асиметричні RSA й Elgamal (Эль-Гамаль)
хэш-функцій MD4, MD5, SHA-1, ГОСТ 34.11-94
1. Опис алгоритму
1.1 Коротка характеристика алгоритму
Параметри
розмір блоку, біт128
розмір ключа, біт128-1280 (кратний 32)
число раундів32
розмір ключового елемента, біт64 (половина розміру блоку)
число ключових елементів20 (на 4 більше половини числа раундів - 4 ключових елементи використовуються для початкового й кінцевого "відбілювання", інші 16 - в 16 внутрішніх раундах перетворення).
Особливості
Відповідно до принципів розробки шифру, "кінцеві" й "серединні" раунди відіграють різну роль для забезпечення таємності шифру, і повинні бути різними. Крім того, при використанні незбалансованої мережі Файстеля, симетрично розташовані раунди також повинні бути різними, якщо потрібна алгоритмічна еквівалентність прямого й зворотного перетворень. Звідси виходять чотири різні типи раунду: початковий, серединний початковий, серединний кінцевий, кінцевий. У раундах "кінцевих" типів ключова інформація не використається. У шифрі використаються операції множення й циклічного зрушення на змінне число розрядів 32-бітових слів, відповідно найбільш ефективна реалізація досягається на 32-бітових процесорних архітектурах з командами множення й обертання на змінне число розрядів. Однак використання зазначених операцій неінтенсивне - так, за всю процедуру шифрування необхідно виконати 16 32-розрядних множень - по одному в кожному з "серединних" раундів.
1.2 Структура алгоритму
Виходячи із двох наступних припущень:
Багато відомих крипто аналітичних методів відрізняють перший і останній раунди алгоритму (або кілька перших й/або кілька останніх раундів) від інших і застосовують до них інші прийоми, ніж до «центральних» раундів алгоритму. Таким чином, різні раунди алгоритму шифрування грають різне значення в забезпечуваній алгоритмом криптостійкості. Швидше за все, алгоритм із гетерогенною структурою буде краще протистояти криптоаналітичним методам майбутнього, ніж алгоритм, всі раунди якого ідентичні.
- розробники алгоритму MARS надали йому сильно гетерогенну структуру - раунди алгоритму досить розрізняються між собою. Алгоритм MARS можна описати в такий спосіб (див. мал. 1):
Мал. 1. Структура алгоритму MARS.
Попереднє накладення ключа: на 32-бітні субблоки A, B, C, D накладаються 4 фрагменти розширеного ключа k0...k3 операцією додавання по модулю232. Виконуються 8 раундів прямого перемішування (без участі ключа шифрування). Виконуються 8 раундів прямого криптоперетворення. Виконуються 8 раундів зворотного криптоперетворення. Етапи 3 й 4 називаються «криптографічним ядром» алгоритму MARS. Виконуються 8 раундів зворотного перемішування, також без участі ключа шифрування. Фінальне накладення фрагментів розширеного ключа k36...k39 операцією вирахування по модулі 232.
Алгоритм являє собою розширену мережу Фейстеля. У кожному раунді виконується обробка одного із субблоков і накладення результатів обробки на інші субблоки, після чого субблоки міняються місцями. Конкретні перетворення залежать від типу раунду й будуть розглянуті нижче. Крім того, між раундами можуть виконуватися різні додаткові дії, які також будуть описані далі.
Мал 2. Раунд прямого перемішування алгоритму MARS.
Раунд прямого перемішування показаний на мал. 2. Як видно з малюнка, у раунді виконуються наступні дії:
Значення субблока A проганяється через таблицю замін S0 і накладається на субблок B операцією XOR. Вихідне значення субблока A зміщається на 8 біт вправо.
Результат попереднього кроку обробляється таблицею замін S1 і знову накладається на субблок B операцією додавання по модулю 232. Результат кроку 2 зміщається на 8 біт вправо. Результат попереднього кроку обробляється таблицею замін S0 і накладається на субблок З операцією додавання по модулю 232. Результат кроку 4 зміщається на 8 біт вправо. Результат попереднього кроку обробляється таблицею замін S1 і накладається на субблок D операцією XOR. Субблоки міняються місцями, як показано на мал. 2.
Крім того, у деяких раундах прямого перемішування виконуються наступні додаткові операції (не наведені на мал. 2):
У раундах 0 й 4 після кроку 7 виконується накладення значення субблока D на субблок A операцією додавання по модулі 232.
У раундах 1 й 5 субблок B аналогічним чином накладається на субблок A.
За словами авторів алгоритму, ці операції істотно підсилюють алгоритм MARS проти диференціального криптоаналізу.
Таблиці замін S0 й S1 визначені в специфікації алгоритму в такий спосіб:
S0:
Як вхідне значення S0 (аналогічно й S1) приймає 8 молодших біт вхідного слова. Таблиця міняє значення 0 на 09D0C479, значення 1 - на 28C8FFE0 і т.д.
S1:
Структура раунду прямого криптоперетворення наведена на мал. 3.
Мал. 3. Раунд прямого криптоперетворення алгоритму MARS.
Основою раунду є розширювальне криптоперетворення E, що перетворить 32-бітне вхідне слово A у три вихідних 32-бітних значення, кожне з яких певним чином накладається на інші субблоки (див. мал. 3). Після цього субблок A зміщається вліво на 13 біт, потім субблоки міняються місцями аналогічно раунду прямого перемішування.
Перетворення E показане на мал. 4.
Рис. 4. Операція E алгоритму MARS.
Із вхідного значення формуються три потоки O1...O3, над якими виробляються наступні дії:
O2 = I,
O3 = O2 <<< 13,
O2 = O2 + k2r+4 mod 232,
O3 = O3 * k2r+5 mod 232,
O3 = O3 <<< 5,
O1 = S(O2),
O1 = O1 A O3,
O2 = O2 <<< O3',
O3 = O3 <<< 5,
O1 = O1 A O3,
O1 = O1 <<< O3',
де I - вхідне значення,
r - номер поточного раунду, починаючи з 0-го (при нумерації раундів у цьому випадку враховуються тільки раунди криптоядра алгоритму),
S - таблична заміна для операції E, являє собою об'єднання описаних вище таблиць S0 й S1; об'єднана таблиця містить 512 значень, вихідне значення вибирається за значенням 9 молодших біт вхідного слова.
Варто звернути увагу на те, що в перетворенні E використаються операції обертання на змінне число біт; у цьому випадку запис O3' позначає, що число біт обертання визначається значенням молодших п'яти біт поточного значення O3.
Структура зворотного криптораунда показана на мал. 5.
Рис. 5. Раунд зворотного криптоперетворення алгоритму MARS.
Від прямого криптораунда його відрізняє лише змінений порядок накладення вихідних значень перетворення E O1...O3 на слова B, C й D.
Рис. 6. Раунд зворотного перемішування алгоритму MARS.
Раунд зворотного перемішування (див. мал. 6) більш істотно відрізняється від прямого. Фактично, зворотне перемішування виконує зворотні операції у зворотній послідовності (див. мал. 2 й 6):
Значення субблока A проганяється через таблицю замін S1 і накладається на субблок B операцією XOR. Вихідне значення субблока A зміщується на 8 біт вліво. Результат попереднього кроку обробляється таблицею замін S0 і накладається на субблок C операцією вирахування по модулю232. Результат кроку 2 зміщується на 8 біт вліво. Результат попереднього кроку обробляється таблицею замін S1 і накладається на субблок D операцією вирахування по модулю 232. Результат кроку 4 зміщується на 8 біт вліво. Результат попереднього кроку обробляється таблицею замін S0 і накладається на субблок D операцією XOR. Субблоки міняються місцями, як показано на мал. 6.
Аналогічно прямому перемішуванню, у деяких раундах виконуються наступні додаткові операції, не показані на мал. 6:
У раундах 1 й 5 після кроку 7 виконується накладення значення субблока A на субблок B операцією вирахування по модулю 232. У раундах 2 й 6 субблок C аналогічним чином накладається на субблок B.
Розшифрування виконується застосуванням зворотних операцій у зворотній послідовності; докладно розшифрування описано в специфікації алгоритму
1.3 Процедура розширення ключа
Ключ шифрування алгоритму MARS може мати будь-який розмір у діапазоні від 128 до 1280 біт включно, кратним 32 бітам. Розширення ключа являє собою формування на основі ключа шифрування 40 підключів по 32 біта кожний (причому, підключі повинні мати певні характеристики, про які буде сказано нижче), для чого виконуються наступні операції:
Формується тимчасовий масив T0...T14:
T0 = KI0,
T1 = KI1,
...
Tn-1 = KIn-1,
Tn = n,
Tn+1 = Tn+2 = ... = T14 = 0,
Де KI0...KIn-1 - вихідний ключ шифрування,
n - його розмір в 32-бітних словах - від 4 до 14 включно.
Даний крок повторюється 4 рази (кожна ітерація дає 10 обчислених фрагментів розширеного ключа) і містить наступні операції:
лінійне перетворення:
Ti = Ti A ((Ti-7 mod 15 A Ti-2 mod 15) <<< 3) A (4i + j),
де j - номер ітерації, починаючи з 0,
i = 0...14;
перемішування масиву T:
Ti = (Ti A S(Ti-1 mod 15)) <<< 9,
де S - таблична заміна, виконувана по тимі ж правилам, що й в операції E;
заключна перестановка:
k10j+n = T4n mod15,
де n = 0...9.
Накладення на обчислені підключі додаткових вимог, що полягають в наступному:
Кожен підключ, використовуваний для множення в операції E (тобто підключі з непарними індексами від k5 до k35 включно), повинен мати непарне значення. Мало того, одиничними повинні бути два молодших біти підключа, а не один.
Ті ж самі підключі не повинні містити 10 нульових або 10 одиничних біт підряд.
Модифікація підключів відповідно до даних вимог виконується в такий спосіб:
2 молодших біти оброблюваного підключа встановлюються в одиничні значення; старе значення запам'ятовується в змінній j (воно буде використано згодом). Результуюче значення підключа позначається як W.
Обчислюється 32-бітна маска M, що буде використана для модифікації підключа - для забезпечення відсутності в ньому 10 підряд нульових або одиничних біт. Маска обчислюється в такий спосіб:
A) Установлюються в 1 біти M, що відповідають тим бітам оброблюваного підключа, які входять у послідовності з 10 нульових або 10 одиничних біт. Інші біти встановлюються в 0.
B) Обнуляются ті одиничні біти маски M, які відповідають кожній з умов:
i < 2,
i = 31,
Wi != Wi-1,
Wi != Wi+1,
де i - номер біта, починаючи з 0, а Wi - значення i-го біта.
Використовується таблиця коригувальних значень B, визначена в такий спосіб:
B0 = A4A8D57B,
B1 = 5B5D193B,
B2 = C8A8309B,
B3 = 73F9A978.
Елементи таблиці B еквівалентні елементам з 265-го по 268-й включно об'єднаної таблиці S; саме ці елементи використаються для корекції підключів завдяки їхнім специфічним властивостям.
За допомогою даної таблиці в такий спосіб обчислюється фінальне значення підключа Ki:
Ki = W A ((Bj <<< Ki-1) & M),
де & - логічна побітова операція «і», а зсув Bj визначається п'ятьма молодшими бітами попереднього підключа Ki-1.
2. Задача аутентификації даних
2.1 Опис задачі
На перший погляд може здатися, що дане завдання вирішується простим шифруванням. Дійсно, якщо масив даних зашифрований з використанням стійкого шифру, то для нього практично завжди буде справедливо наступне:
у нього важко внести зміни осмисленим чином, оскільки зі ступенем імовірності, що незначно відрізняється від одиниці, факти модифікації зашифрованих масивів даних стають очевидними після їх розшифрування- ця очевидність виражається в тому, що такі дані перестають бути коректними для їхнього інтерпретатора: замість тексту російською мовою з'являється нісенітниця, архіватори повідомляють, що цілісність архіву порушена й т.д.;
тільки ті, що володіють секретним ключем шифрування, користувачі системи можуть виготовити зашифроване повідомлення, таким чином, якщо до одержувача приходить повідомлення, зашифроване на його секретному ключі, він може бути впевненим у його авторстві, тому що крім нього самого тільки законний відправник міг виготовити це повідомлення.
Проте, використання шифрування в системах обробки даних саме по собі незручно забезпечити їхньої автентичності по наступних причинах:
Зміни, внесені в зашифровані дані, стають очевидними після розшифрування тільки у випадку великої надмірності вихідних даних. Ця надмірність має місце, наприклад, якщо масив інформації є текстом на якій-небудь людській мові. Однак у загальному випадку ця вимога може не виконуватися - якщо випадкова модифікація даних не робить їх неприпустимим для інтерпретації зі скільки-небудь значною часткою ймовірності, то шифрування масиву не забезпечує його дійсності. Говорячи мовою криптології, автентичність і таємність - це різні властивості криптосистем. Або, більш просто: властивості систем обробки інформації забезпечувати таємність і дійсність оброблюваних даних у загальному випадку можуть не збігатися.
Факт успішного (у сенсі попереднього пункту) розшифрування зашифрованих на секретному ключі даних може підтвердити їхнє авторство тільки в очах самого одержувача. Третя сторона не зможе зробити на підставі цього однозначного виводу про авторство масиву інформації, тому що його автором може бути кожний із власників секретного ключа, а їх як мінімум два - відправники й одержувач. Тому в цьому випадку суперечності щодо авторства повідомлення не можуть бути вирішенні незалежним арбітражем. Це важливо для тих систем, де між учасниками немає взаємної довіри, що досить характерно для банківських систем, пов'язаних з керуванням значними цінностями.
Таким чином, існування проблеми підтвердження дійсності й авторства масивів даних, окремої від завдання забезпечення їхньої таємності, не викликає сумніву. У принципі, для вирішення зазначених завдань може бути використаний будь-який традиційний блоковий криптографічний алгоритм.
2.2 Отримання коду аутентификації повідомлень
Для автентифікації буде використаний MAC.
Отримання MAC - Message Authentification Code - коду аутентификации повідомлень. Цей підхід полягає в тому, що контрольна комбінація обчислюється з використанням секретного ключа за допомогою деякого блокового шифру. Важливо, що на основі будь-якого такого шифру можна створити алгоритм обчислення MAC для масивів даних довільного розміру. У літературі іноді це не цілком коректно називається криптографічною контрольною сумою, або, що більш точно, криптографічною контрольною комбінацією. Даний підхід до автентифікації даних загальновизнаний і закріплений практично у всіх криптографічних стандартах - імітовставка, формована відповідно ГОСТ 28147-89 є типовим зразком MAC.
Отримання коду автентифікації повідомлень із використанням процедури криптографічного перетворення даних офіційно або напівофіційно закріплений у багатьох стандартах на алгоритми шифрування. Так, наприклад, у різних коментарях до стандарту шифрування США рекомендується використати DES для виробітку контрольної комбінації. Російський стандарт шифрування ГОСТ 28147_ 89 явно передбачає режим виробітку імітовставки, що є не чим іншим, як зразком MAC.
Схема використання криптографічного перетворення EK для отримання коду автентифікації досить проста: все вихідне повідомлення розбивається на блоки, потім послідовно для кожного блоку знаходиться результат перетворення по алгоритму EK побітової суми блоку по модулю 2 з результатом виконання попереднього кроку. Таким чином, одержуємо наступне рівняння для отримання контрольної комбінації:
C=CK(T)=EK(T1EK(T2EK(...EK(Tm)))).
Схема алгоритму отримання MAC наведена на малюнку 7.
Вхідні дані - масив даних T, розбитий на m блоків фіксованого розміру, рівного розміру блоку даних використаного шифру (для більшості найбільш відомих шифрів - 64 біта): T=(T1,T2,...,Tm). Останній блок даних Tm яким-небудь способом доповнюється до повного блоку даних, якщо має менший розмір.
MAC одержує нульове початкове значення.
Наступний крок алгоритму виконується послідовно для кожного блоку вихідних даних у порядку їхнього проходження.
Побітова сума по модулю 2 чергового блоку вихідних даних Ti з поточним значенням MAC S піддається перетворенню по алгоритму зашифрування, результат стає новим поточним значенням MAC.
Рис. 7. Алгоритм отримання коду автентифікації для масиву даних.
Результатом роботи алгоритму - MAC для вхідного масиву даних - є останнє поточне значення MAC, отримане на кроці 2.
Розглянемо властивості криптографічних перетворень EK, використовуваних для шифрування даних, і визначимо ті з них, які необхідні при виробітку MAC:
Перетворення даних повинне використати як параметр секретний ключ K. Його таємність визначає таємність зашифрованих даних.
Перетворення даних повинне бути криптографічно стійким, тобто не повинне існувати іншої можливості визначити вхідний блок алгоритму при відомому вихідному й невідомому ключі, або визначити ключ при відомих вхідному й вихідному блоках інакше, як перебором за можливим значенням вхідного блоку й ключа в першому й у других випадках відповідно.
Перетворення даних повинне бути оборотним - для того, щоб була здійсненна процедура розшифрування.
Якщо перетворення, що шифрує, EK передбачається використати для отримання коду автентифікації, виконання третьої властивості не потрібно, тому що при цьому перетворення завжди виконується в одну сторону. Крім того криптостійкість алгоритму перетворення може бути трохи нижче, ніж при шифруванні, і це не приведе до зниження надійності всієї схеми. Дійсно, при отриманні MAC у розпорядженні криптоаналітика є тільки один блок даних - MAC, що є функцією відразу всіх блоків вихідного тексту, а при зашифруванні в його розпорядженні є набір блоків шифротексту, кожний з яких залежить тільки від одного блоку вихідного тексту. Очевидно, у першому випадку його завдання істотно складніше. Саме із цієї причини в ГОСТ 28147-89 для виробітку імітовставки використається спрощений 16-раундовий цикл перетворення, тоді як для шифрування - повний 32-раундовий.
3. Аналіз криптопротоколу
3.1 Правила BAN логіки
Аналіз криптопротоколу із застосуванням BAN логіки дозволяє визначити:
1. Яких результатів можна досягти використовуючи даний криптопротокол.
2. Чи є в даному протоколі зайві кроки, яких можна було не робити.
3. Чи потрібно зашифровувати дане чи повідомлення ні.
4. Чи потрібно використати додаткові кроки.
Правила BAN логіки:
P believes X - Р вірить у те що Х істинно.
P sees X - Перевірка того, що хтось послав дане повідомлення.
P said X - Р коли не будь посилав дане повідомлення.
P control X - Р має права на Х.
#X - Х що не було використано раніш.
- P і Q розділяють між собою ключ К, й відносно P й Q довіряють один одному.
- Р має ключ К і він не буде розкритий іншими особами .
- секретна формула Х ,P і Q можуть використати даний ключ для ідентифікації .
{X}K from - Х зашифрував ключ К що належить Р.
Правила BAN-логіки
-
Якщо Р вірить, що Q і Р розділяють між собою ключ К, і відносно P й Q довіряють один одному, і Р бачить Х, зашифроване на ключі К, то Р вірить, що Q послав Х.
-
Якщо Р вірить, що Q має Х, і Р вірить Q , що є Х, то Р довіряє Х.
-
Якщо Р вірить, що Х до цього не використається і що Q , якщо він вірить, послав Х, то Р довіряє Х.
3.2 Аналіз криптопротоколу з використанням BAN-логіки
Порядок аналізу:
1. Подання крипто протоколу в ідеальній формі.
2. Присвоєння початкових даних.
3. Використання логічних функцій для одержання кінцевих результатів кожного кроку.
Реалізація Ban логіки.
1. Ідеальна форма.
A? B: S(r , IB)
А - відправник.
У - одержувач .
B відправника - r
Iв - імітовставка.
S(r, IB)=EК(r , IB)
2. Складання ідеальної формули.
A>B: ;
Присвоюємо початкові дані й у результаті виконуємо аналіз
ОП результатам аналізу можна зробити висновок, що протокол є стійким і дозволяє виявити несанкціоноване втручання третьої особи.
4. Розробка структури спеціального процесора
4.1 Визначення набору функцій, що реалізує спеціалізований процесор
Складовою частиною спеціалізованого процесора, що реалізує криптопротокол, є операційний автомат. Математично операційний автомат - описується п'ятіркою:
ОА={DI, DO, S, Y, X},
де:
DI - множина вхідних даних;
DO - множина вихідних даних;
S - множина проміжних даних;
Y - множина виконуваних операцій;
X - множина логічних умов.
Визначимо ці множини для протоколу двобічної автентифікації з використанням випадкових чисел й блокового шифру MARS
DIA={B,k,}
DIB={,k,B,Ek }
SA={ B, Ek,k, }
SB={ Ek, B }
DOA={ Ek }
DOB={R }
Де:
B - ідентифікатор сторони В;
Ek - зашифроване ключем k повідомлення;
R - результат автентифікації;
k - загальний секретний ключ.
t-час
4.2 Розробка структурної схеми спеціалізованого процесора
Для побудови структурної схеми спеціалізованого процесора скористаємося канонічним методом синтезу. Відповідно до цього методу кожному математичному елементу наведені множини, поставлені у відповідність структурним елементам. Елементам множин DIA й DIВ відповідають входи процесора. Елементам множин SA й SВ відповідають регістри для збереження даних. Елементам множин DО й DОВ відповідають виходи процесора. Реалізація функцій зашифрування й розшифрування на ключі k здійснюється за допомогою блоків Еk й Dk, відповідно. З урахуванням цього, розробимо схему спеціалізованого процесора для реалізації криптопротокола (мал.8).
Размещено на http://www.allbest.ru/
Мал. 8 - Структурна схема спеціалізованого процесора крипто протоколу з використанням криптоаглоритму MARS
Перерахуємо елементи, які використалися при побудові структурної схеми спеціалізованого процесора:
Рг 1 - Рг 5- 64-бітні регістри;
“= 1”, “= 2” - блоки строгого порівняння (позитивний результат при повній ідентичності аргументів);
Віднімач - блок віднімання двох даних;
Бл. Ek - блок шифровки даних;
Бл. Dk - блок розшифровки даних.
Структурна схему блоку шифрування даних наведена на мал. 9
Мал.9- Структурна схема блоку Ek
При побудові схеми блоку Ek використувувались такі позначення елементів:
1-рг рг 2, Р.4, Р.9 - 128-розрядні регістри;
Рг 3 - 4224-розрядний регістр;
XOR1-XOR2 - елементи 2НІ;
XOR3-XOR5 - елементи 3НІ;
DMS - демультиплексор із двома зв'язками.
4.3 Визначення технічних характеристик спеціалізованого процесора
Для розробленого процесора визначимо такі технічні характеристики:
– час реалізації криптопротокола;
– складність апаратури для обчислень;
– ємність пам'яті.
Час реалізації крипто протоколу будемо визначати в таких умовних одиницях:
час зміщення на один двійковий розряд - tзс;
час виконання однієї логічної операції - tлог.
Час реалізації криптопротоколу можна прийняти рівним часу, що потрібен для виконання всіх операцій шифрування й розшифровки.
Для виконання зашифрування або розшифровки потрібно:
5 32 логічні операції й 11 32 зміщення для перетворення ключа;
15 32 32 логічні операції для виконання табличної підстановки;
31 8 логічні операції й 31 61 зміщення для лінійного перетворення.
Оскільки для реалізації всього криптопротоколу потрібно по одному разу проводити шифрування й розшифровку даних то ми маємо:
t=2[(5• 32+15• 32• 32+31• 8) tлог +(11• 32+31• 61) tзс]=2• [15768 tлог+2243 tзс]=31536 tлог+4486 tзс
Розрахуємо складність апаратури для обчислень.
Введемо такі умовні одиниці:
- для регістрів і суматорів - розряд регістра;
- для демультиплексора - кількість комутованих зв'язків мультиплексора.
Отже, для процесора потрібно:
Два 64-розрядних регістри;
один 4224-розрядний регістр;
чотири 128-розрядних регістри;
чотири 32-розрядних регістри;
один демультиплексор на 2 виходи;
Одже складність апаратури:
[4 32+2 64+4224+4 128]+[2]=4992 розрядів регістра+2 комутуємих звязків мультиплексора.
Розрахуємо ємність пам'яті для побудованого пристрою. У розробленому процесорі для зберігання проміжкових даних використаються:
Два 64-розрядних регістри;
один 4224-розрядний регістр;
чотири 128-розрядних регістри;
чотири 32-розрядних регістри;
Отже, ємність пам'яті: 4 32+2 64+4224+4 128=4992 біт = 624 байта.
5. Текст програми
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,CryptoAPI,HashTests, TBigNumberUnit3,SumAdd_BNUnit,
Mul_BNUnit,Sub_BNUnit,DivMod_BNUnit,Other_BNUnit, ToFrom_BNUnit,Root_BNUnit,SP_BNUnit,
RND_BNUnit,PowerMod_BNUnit,Euclid_BNUnit,Bits_BNUnit,IsConst_BNUnit, XPMan,
Menus;
type
TForm1 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Panel3: TPanel;
Edit3: TEdit;
Panel4: TPanel;
Panel6: TPanel;
Button2: TButton;
Label2: TLabel;
Label1: TLabel;
Panel2: TPanel;
Panel5: TPanel;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Button3: TButton;
Button4: TButton;
Edit7: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Button5: TButton;
Button6: TButton;
Label11: TLabel;
Label12: TLabel; Panel7: TPanel;
Panel8: TPanel;
Button7: TButton;
Button8: TButton;
XPManifest1: TXPManifest;
Label13: TLabel;
Label14: TLabel;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
Memo6: TMemo;
MainMenu1: TMainMenu;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Edit3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Edit5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Qb,Pb,Ab,HMb,Kb,Xb,Rb,Rsb,Sb:TBigNumber;
Q,P,A,HM,K,X,R,Rs,S:string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
x:=random(1000000000);
Edit2.Text := inttostr(x);
end;
//----------------------------------------Генерация p e q
procedure generatepq;
var
b:byte;
begin
Q:='98915E7EC8265EDFCDA31E88F24809DDB064BDC7285DD50D7289F0AC6F49DD2D';
BigNumberFromFormatHexStr(Q,@Qb,b);
P:='EE8172AE8996608FB69359B89EB82A69854510E2977A4D63BC97322CE5DC3386EA0A12B343E9190F23177539845839786BB0C345D165976EF2195EC9B1C379E3';
BigNumberFromFormatHexStr(P,@Pb,b);
end;
//----------------------------------------Генерация a
procedure generatea;
var str1:string;
b1:byte;
tmp,tmp1,tmp2,tmp3,tmp4:TBigNumber;
begin
str1:='1';
BigNumberFromFormatHexStr(str1,@tmp,b1);
SubBigNumber(@Pb,@tmp,@tmp1,b1);
DivBigNumber(@tmp1,@Qb,@tmp2,@tmp3,b1);
str1:='2';
BigNumberFromFormatHexStr(str1,@tmp4,b1);
PowerModBigNumber(@tmp4,@tmp2,@Pb,@Ab,b1);
A:='';
BigNumberToFormatHexStr(@Ab,{str_BreakSpace+}str_UpperCase,0,A,b1);
end;
//----------------------------------------Генерация k
procedure generatek;
var b:byte;
begin
K:='90F3A564439242F5186EBB224C8E223811B7105C64E4F5390807E6362DF4C72A';
BigNumberFromFormatHexStr(K,@Kb,b);
end;
//----------------------------------------Генерация x
procedure generatex;
var b:byte;
begin
X:='3036314538303830343630454235324435324234314132373832433138443046';
BigNumberFromFormatHexStr(X,@Xb,b);
end;
//----------------------------------------------------
procedure generatehesh(stroka:string);
var
ret: LongWord;
b:byte;
m:string;
begin
M:=stroka;
ret := HashStr(HASH_GOST, M, HM);
BigNumberFromFormatHexStr(HM,@HMb,b);
end;
//----------------------------------------Генерация ЦП
procedure poschitats;
var b:byte;
tmp1,tmp2,tmp3,tmp4:TBigNumber;
begin
MulBigNumber(@Xb,@Rsb,@tmp1,b);
MulBigNumber(@Kb,@HMb,@tmp2,b);
SumBigNumber(@tmp1,@tmp2,@tmp3,b);
DivBigNumber(@tmp3,@Qb,@tmp4,@Sb,b);
s:='';
BigNumberToFormatHexStr(@Sb,{str_BreakSpace+}str_UpperCase,0,S,b);
end;
//----------------------------------------------------
procedure poschitatrr;
var b:byte;
tmp:TBigNumber;
begin
PowerModBigNumber(@Ab,@Kb,@Pb,@Rb,b);
R:='';
BigNumberToFormatHexStr(@Rb,{str_BreakSpace+}str_UpperCase,0,R,b);
DivBigNumber(@Rb,@Qb,@tmp,@Rsb,b);
Rs:='';
BigNumberToFormatHexStr(@Rsb,{str_BreakSpace+}str_UpperCase,0,Rs,b);
end;
//----------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
ret: LongWord;
s1,s2,s3,s4: String;
x,i:integer;
begin
s2:='';
for i:=1 to length(edit2.Text) do
s2:=s2+edit2.Text[i];
s3:='';
for i:=1 to length(edit7.Text) do
s3:=s3+edit7.Text[i];
s4:='';
for i:=1 to length(edit3.Text) do
s4:=s4+edit3.Text[i];
s1:=s2+s3+s4;
s1:=s2+s3+s4;
generatehesh(s1);
generatepq;
generatea;
generatek;
generatex;
Edit1.Text := HM;
poschitatrr;
poschitats;
memo1.lines.Text :=rs+s;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
x:integer;
begin
x:=random(1000000000);
Edit4.Text := inttostr(x);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
ret: LongWord;
s1,s2,s3,s4: String;
x,i:integer;
begin
s2:='';
for i:=1 to length(edit4.Text) do
s2:=s2+edit4.Text[i];
s3:='';
for i:=1 to length(edit10.Text) do
s3:=s3+edit10.Text[i];
s4:='';
for i:=1 to length(edit5.Text) do
s4:=s4+edit5.Text[i];
s1:=s2+s3+s4;
generatehesh(s1);
generatepq;
generatea;
generatek;
generatex;
poschitatrr;
poschitats;
Edit6.Text := HM;
memo2.Lines.Text:= rs+s;
end;
procedure TForm1.Edit3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
edit3.Text:='';
end;
procedure TForm1.Edit5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
edit5.Text:='';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if edit5.text='Текст контрольного сообщенния' then
edit7.Text:=edit4.Text
else begin
edit7.Text:=edit4.Text;
edit9.Text:=edit5.Text;
edit8.Text:=edit6.Text;
memo3.Lines.Text:=memo2.Lines.Text;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if edit3.text='Текст контрольного сообщенния' then
edit10.Text:=edit2.Text
else begin
edit10.Text:=edit2.Text;
edit12.Text:=edit3.Text;
edit11.Text:=edit1.Text;
memo5.Lines.Text:=memo1.Lines.Text;
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
var
ret: LongWord;
s1,s2,s3,s4: String;
x,i:integer;
begin
s2:='';
for i:=1 to length(edit7.Text) do
s2:=s2+edit7.Text[i];
s3:='';
for i:=1 to length(edit2.Text) do
s3:=s3+edit2.Text[i];
s4:='';
for i:=1 to length(edit9.Text) do
s4:=s4+edit9.Text[i];
s1:=s2+s3+s4;
generatehesh(s1);
generatepq;
generatea;
generatek;
generatex;
poschitatrr;
poschitats;
memo4.Lines.Text:=rs+s;
if memo4.Lines.text=memo3.Lines.text then
MessageDlg('Аутентификация пройдена!', mtInformation, [mbOk], 0)
else
MessageDlg('Аутентификация не пройдена!', mtError, [mbOk], 0);
end;
procedure TForm1.Button8Click(Sender: TObject);
var
ret: LongWord;
s1,s2,s3,s4: String;
x,i:integer;
begin
s2:='';
for i:=1 to length(edit10.Text) do
s2:=s2+edit10.Text[i];
s3:='';
for i:=1 to length(edit4.Text) do
s3:=s3+edit4.Text[i];
s4:='';
for i:=1 to length(edit12.Text) do
s4:=s4+edit12.Text[i];
s1:=s2+s3+s4;
generatehesh(s1);
generatepq;
generatea;
generatek;
generatex;
poschitatrr;
poschitats;
memo6.Lines.Text:=rs+s;
if memo6.Lines.text=memo5.Lines.text then
MessageDlg('Аутентификация пройдена!', mtInformation, [mbOk], 0)
else
MessageDlg('Аутентификация не пройдена!', mtError, [mbOk], 0);
end;
end.
5.1 Результат тестування програми
Розроблена програма має розвинутий інтерфейс користувача (мал.10).
Мал. 10 - Інтерфейс розробленої програми
У розробленому інтерфейсі права частина належить стороні-відправнику. Вона складається з полів, які містять дані, які підлягають обробці й відправленню: випадкове число, значення імітовставки, ідентифікатор користувача. Ліва частина належить стороні -одержувачеві. Її поля, демонструють дані отримані від ініціатора: випадкове число, значення імітовставки, ідентифікатор користувача, власні дані: розрахована імітовставки, ідентифікатор користувача, випадкове число. Поля розташовані таким чином, щоб можна було наочно зрівняти всі необхідні величини. Поля сторони-ініціатора дозволяють вручну змінити інформацію перед відправленням для належного тестування протоколу.
Після покрокового виконання протоколу на екран виводиться інформація про стан автентифікації(успішна чи ні).
Розглянемо покрокову роботу розробленої програми:
1. Сторона-відправник (В) генерує випадкове число 43726729 і передає його стороні А.
2. Сторона А генерує своє випадкове число 564742288, установлює ідентифікатор Меssage1 для сторони B, поєднує отримані дані в єдиний блок даних й обчислює імітовставку 9f74c3c51e1b144e8805bda2e81fbdf13ce1fe2801e2c3f6f072b057430ef23e.
3. Сторона А передає стороні В випадкове число 564742288 й ідентифікатор Меssage1 разом з імітовставку (мал. 11).
Мал. 11- Вид головного вікна після передачі даних
4. Сторона В аналогічно стороні А поєднує отримане випадкове число 564742288, своє випадкове число 43726729 й ідентифікатор Меssage1 і проводить обчислення власного значення імітовставки
3E5F895E276D81D2D52C0763270A458157B784C57ABDBD807BC44FD43
A32AC0625D2005BA3ACC6495096CC7CB975B6CDF30100209D69B1F8CF8B18B0C833939E, порівнює обчислене значення цифрового підпису(ЦП) з отриманим.
5. Сторона В встановлює ідентифікатор Меssage2 для сторони А, поєднує отримані дані в єдиний блок даних і шифрує їх 3E5F895E276D81D2D52C0763270A458157B784C57ABDBD807BC44FD43A32AC0634482800EEB4D2101850115A4D6E0EF1F2E5D120470139DCD8CC2B02A07F8F60.
6. Сторона В передає стороні А ідентифікатор Меssage2 і значення імітовставки.
7. Сторона А поєднує отримане випадкове число 775838702, своє випадкове число 942517489 й ідентифікатор Меssage2 і проводить обчислення власного значення шифру 3E5F895E276D81D2D52C0763270A458157B784C57ABDBD807BC44FD43A32AC065BF8E25BA2A37FF15CE07D6A0C1C8D53922C01440B17D6FDECD024A684C43DB2, порівнює обчислене значення шифру з отриманим.
Якщо пункти 4 й 7 не виявили помилок, то автентифікація успішна(мал.12)
Малюнок 12 - Вид головного вікна після успішної автентифікації
В іншому випадку автентифікація не пройдена(рис13)
Мал.13- Вид головного вікна після невдалої аутентификации
Висновки
Під час виконання курсової роботи було розроблено криптопротокол двосторонньої автентифікації з використанням цифрового підпису за MARS і випадкових чисел. Був здійснений аналіз цього криптопротоколу за допомогою BAN-логіки й розроблений спеціалізований процесор для реалізації криптопротоколу. Для розробленого процесора були розраховано такі технічні характеристики: час реалізації криптопротоколу (в умовних одиницях), складність апаратури для обчислень (в умовних одиницях) і необхідна ємність пам'яті для роботи процесора.
Розроблена програма наочно демонструє принцип роботи протоколу двосторонньої автентифікації з використанням цифрового підпису з використанням MARS і випадкових чисел, який дозволяє наочно порівняти всі величин й їхню зміну, чим сприяє кращому тестуванню й розумінню його роботи.
Список використаної літератури
Винокуров А. Проблема аутентификации данных и блочные шифры. - «Монитор» №1,5 1995 г. №6,7 1995 г.
Шнайер Б. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке С. 2-е изд. - СПб., 2000. - 789 с.
Чмора А.Л. Современная прикладная криптография. - М.: Гелиус АРВ, 2001. - 244 с.
Бабаш А.В., Шанкин Г.П. Криптография. Под ред. В.П. Шерстюка, Э.А. Применко/ А.В. Бабаш, Г.П. Шанкин. - М.: СОЛОН-Р, 2002. - 512 с.
Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии. Учебное пособие. - М.: Гелиос АРВ, 2001. - 480 с.
Петров А.А. Компьютерная безопасность. Криптографические методы защиты. - М.: ДМК, 2000. - 448 с.
Брассар Ж. Современная криптология. - М.: Полимед, 1999. - 354 с.
Нечаев В.И. Элементы криптографии. Основы теории защиты информации. - М.: Высшая школа, 1999. - 278 с.
Молдовян А.А., Молдовян Н.А., Советов Б.Я. Криптография. - СПб., 2000. - 218 с.
Иванов М.А. Криптографические методы защиты информации в компьютерных системах и сетях - М.: КУДИЦ-ОБРАЗ, 2001. - 346 c.
11. http://www.citforum.ru/internet/infsecure/index.shtml;
12. http://www.citforum.ru/internet/securities/crypto.shtml;
13. http://www.e-sign.ru.
14. http://www.research.ibm.com/security/mars.html
Размещено на Allbest.ru
Подобные документы
Визначення параметрів цифрового сигналу на виході АЦП. Розробка структури цифрового лінійного тракту, розрахунок його завадостійкості. Аналіз роботи демодулятора. Ймовірність помилкового прийому комбінації коду Хемінга та безнадлишкового коду МТК-2.
курсовая работа [1,1 M], добавлен 06.08.2013Аналіз предметної області, розробка програмної прошивки контролера, приклад застосування компоненту розумного будинку. Класифікація вхідної і вихідної інформації у процесі здійснення проектувальних дій. Розробка програмного засобу для створення браузера.
курсовая работа [1,2 M], добавлен 16.05.2021Значення операційної системи - програми, яка завантажується при включенні комп'ютера. Компоненти Windows, передача параметрів у мові С++. Системні ресурси та принципи їх роботи. Розробка алгоритму програми емуляції роботи командного процесора ОС.
курсовая работа [37,5 K], добавлен 18.06.2010Огляд та класифікація комп'ютерних ігор. Алгоритм розташування кораблів на ігровому полі. Виконання алгоритму гри комп'ютера з використанням методу випадкових чисел. Стратегія гри комп'ютера. Обґрунтування вибору середовища програмної реалізації.
курсовая работа [616,5 K], добавлен 26.01.2023Електронний цифровий підпис із відновленням повідомлення. Генерування асиметричної ключової пари. Формування попереднього підпису. Цифровий підпис Ніберга-Рюпеля в групі точок еліптичних кривих. Стійкість до колізій відновлюваної частини повідомлення.
курсовая работа [3,4 M], добавлен 29.06.2011Операційна система MicroDSP-RTOS, їх загальна характеристика та призначення, оцінка можливостей і інструментарій. Управління завданнями в даній операційній системі, синхронізація та взаємодія задач. Підтримка MicroDSP-RTOS в MetaDSP різними програмами.
контрольная работа [832,8 K], добавлен 21.05.2010Розв’язування задач оптимізації з використанням засобів табличного процесора Microsoft Excel. Визначення найдешевшого раціону харчування худоби, що містить необхідну кількість білків і жирів. Розробка та розміщення на хостингу сайту організації.
отчет по практике [944,4 K], добавлен 15.05.2019Теоретичні відомості про язик С++. Розробка програми, що виконує основні арифметичні дії над простими та складними числами на язику С++. Опис алгоритму програми та її код. Інструкція по користуванню. Обгрунтовування вибору та складу технічних засобів.
курсовая работа [852,8 K], добавлен 30.11.2011Розробка методу-члену класу для створення нового одновимірного масиву з кількості всіх негативних елементів кожного рядка заданого двовимірного динамічного масиву. Особливість виводу змісту масиву на екран. Аналіз перевірки правильності роботи програми.
лабораторная работа [131,2 K], добавлен 18.11.2021Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013