Скремблер на основі алгоримту SQ1-R

Розробка скремблеру, який реалізується на алгоритмі SQ1-R. Структура системи: блоки керування, генератори, скремблювання, інтерфейс для обміну даними. Аналіз алгоритмів синхронного потокового шифрування. Розробка мікропроцесорної системи, її архітектури.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 07.05.2016
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Вінницький національний технічний університет

Кафедра захисту інформації

Курсовий проект

з дисципліни “Основи побудови мікропроцесорних систем”

на тему: "Скремблер на основі алгоримту SQ1-R"

Студента

4 курсу 1БС-14МС групи

Лукаш С.Ю.

Керівник: к.т.н., доц. кафедри ЗІ

Баришев Ю.В.

Вступ

Розвиток комп'ютерної техніки у спричинив за собою і розвиток мікропроцесорів. Тенденції розвитку сучасних технологій виготовлення процесорів і їх застосування з кожним роком набирають все більших обертів. Застосовуються нові нанотехнології, збільшується кількість ядер на одному кристалі, зростає розрядність процесорів, збільшується кеш-пам'ять усіх рівнів, застосовуються нові набори інструкцій і багато іншого.

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

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

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

Для реалізації поставленої мети необхідно виконати наступні задачі:

проаналізувати відомі мікропроцесорні системи та алгоритми їх роботи;

розробити структуру мікропроцесорної системи;

розробити алгоритм роботи мікропроцесорної системи;

виконати перевірку коректності роботи системи за допомогою середовища моделювання.

1. Аналіз алгоритмів потокового шифрування

1.1 Аналогічні алгоритми захисту інформації

RC4 - потоковий шифр, що широко застосовується в різних системах захисту інформації в комп'ютерних мережах (наприклад, у протоколах SSL і TLS, алгоритмі безпеки бездротових мереж WEP). Шифр розроблений компанією RSA Security і для його використання потрібна ліцензія. Алгоритм RC4 будується на основі параметризованого ключем генератора псевдовипадкових бітів з рівномірним розподілом. Довжина ключа може становити від 40 до 2048 біт [1]. Основні переваги шифру - висока швидкість роботи і змінний розмір ключа. RC4 досить вразливий, якщо використовуються не випадкові або пов'язані ключі, один ключовий потік використовується двічі.

Ці фактори, а також спосіб використання можуть зробити криптосистему небезпечною.

RC4 не використовує окремо сіль (довільне число використовуване під час криптографічного зв'язку лише один раз) поряд з ключем. Це означає, що якщо один ключ повинен використовуватися протягом довгого часу для шифрування декількох потоків, сама криптосистема, що використовує RC4, повинна комбінувати сіль і довгостроковий ключ для отримання потокового ключа для RC4. Один з можливих виходів - генерувати новий ключ для RC4 за допомогою геш-функції від довгострокового ключа і оказії. Однак багато додатків, що використовують RC4, просто конкатенують ключ і сіль. Через це і слабкий розклад ключів, використовуваного в RC4, додаток може стати вразливим [1, 2, 3]. Тому він був визнаний застарілим багатьма компаніями, такими як Microsoft. Наприклад, в .NET Framework від Microsoft відсутня реалізація RC4.

В алгоритмі RC4 використовуються два 8-розрядних лічильника і і 8-розрядний блок заміни (S-блок) (рис. 1.1), таблиця замін має розмірність 8x256 і є перестановкою (залежної від ключа) двійкових чисел від 0 до 255.

Рисунок 1.1 - Схема генератора RC4

Алгоритм RC4:

такт роботи першого лічильника:

такт роботи другого лічильника:

комірки таблиці замін S-блоку з адресами і обмінюються своїм вмістом:

обчислення суми вмісту елементів таблиці замін S-блоку з адресами і :

зчитування вмісту комірки таблиці замін S-блоку з адресою Т:

CHAMELEON - потоковий шифр розроблений Р. Андерсоном, його особливістю є висока криптостійкість поєднана з наступними незвичайними для надійного шифру властивостями: незначні зміни в ключі викликають такі ж незначні зміни в гаммі.

Криптосистема має двоступеневу структуру. Перший ступінь - генератор псевдовипадкових 64-розрядних послідовностей. Другий ступінь - S-блок, таблиця замін якого має розмір 512 Кбайт и складається з 64-розрядних слів. Ключова інформація - початкове заповнення генератора ПВП и вміст таблиці замін.

Нехай A, B, C, D сукупність чотирьох 16 розрядних слів, що являють собою 64-розрядний код з виходу генератора ПВП, а S[i] - вміст комірки таблиці замін S-блоку з адресою і. Тоді черговий елемент Y 64-розрядної гамми формується наступним чином:

Таким чином, чотири 16-розрядних слова A, B, C і D з виходу генератора ПВП використовуються для вибору чотирьох 64-розрядних слів з таблиці замін, які для отримання 64-розрядного елемента гамми додаються за модулем два.

Результатом зміни одного біта в комірці таблиці замін являється зміною близько 4 біт на 512 Кбайт сформованої гамми. Зміни знаходяться на тих самих місцях слова, що і змінені біти слова S[i].

TWOPRIME - криптоалгоритм орієнтований на 32-розрядну архітектуру, працює з блоком, розмір якого дорівнює восьми байтам. При використанні як потокового генератора за один такт роботи він виробляє вісім байт вихідної послідовності, яка потім за допомогою операції XOR може шифрувати вхідний потік даних такого ж розміру.

Розмір ключа шифрування 128 біт або 16 байт, що позначаються як

Ключ ділиться на чотири частини:

Алгоритм має 9 рівнів перетворення.

Перший рівень складається з двох (р, а) циклічних лічильників. Ці лічильники мають внутрішній регістр, який може зберігати будь яке число від 0 р-1. Початкове значення лічильника рівне k, 0 ? k ? p - 1. В момент часу значення регістру рівне:

Лічильник циклічно видає послідовність з кроком і періодом .

Другий рівень алгоритму складається з блоку замін і являється першим не лінійним рівнем. Блок забезпечує перетворення чотирьох байт з виходу лічильника і чотирьох байт з виходу .

Третій рівень здійснює побайтове додавання значень другого рівня та байтів часткових ключів і .

Четвертий рівень виконує лінійні перетворення, забезпечуючі дифузію ключа.

П'ятий рівень здійснює додавання з ключем, але на відмінно від третього рівня, додаються часткові ключі і .

Шостий рівень здійснює лінійне перетворення і слугує для збільшення об'єму інформації. Він приймає восьмирозрядне вхідне значення, а видає 32-розрядне вихідне значення.

Сьомий рівень здійснює лінійний стиск. Ця операція приймає 32-розрядне вхідне значення і видає 8-розрядне вихідне значення. Його особливістю є забезпеченням того, що кожен вихідний байт залежить від восьми вхідних байт, і кожен вхідний байт впливає на два вихідних. Ця функція головним чином призначена для стиснення, але вона також відіграє важливу роль у дифузії.

Розширення даних та їх стиснення призначені для запобігання запуску алгоритму в зворотньому напрямку, а також забезпечує залежність кожного вихідного байту від максимально можливої ??кількості вхідних байт.

Восьмий рівень є нелінійним рівнем з принципом роботи аналогічним другому.

Дев'ятий рівень є рівнем додавання з ключем за допомогою операції XOR. Результатом роботи цього рівня є байти гамующої послідовності. Цей рівень також запобігає запуск алгоритму в зворотному напрямку.

У режимі потокового шифрування вихідна послідовність за допомогою операції XOR підсумовується з блоком відкритого тексту або шифротексту.

Алгоритм WAKE ( Word Auto Key Encryption ) видає потік 32-бітних слів, які за допомогою XOR можуть бути використані для отримання шифротексту. Для генерації наступного слова ключа використовується попереднє слово шифротексту. Це швидкий алгоритм. WAKE працює в режимі CFB (попередній блок шифрованого тексту шифрується ще раз, і для отримання чергового блоку шифрованого тексту результат додається поразрядно за модулем 2 з блоком вихідного тексту), для генерації наступного слова ключа використовується попереднє слово шифротекста. Алгоритм також використовує S-блок з 256 32-бітових значень. Цей S-блок володіє однією особливою властивістю: старший байт всіх елементів являє собою перестановку всіх можливих байтів, а 3 молодших байти випадкові [5].

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

ORYX - потоковий шифр який передбачався для засекречування даних, що передавались в американських мережах стільникового мобільного зв'язку. Автор даного криптоалгоритму залишається не відомим, а сама схема деякий час трималась в секреті.

До складу генератора ПВП ORYX входять три 32-розрядних LFSR А, В і С, а також 8-розрядний S-блок з фіксованою таблицею замін розмірністю 8x256. Ключем є початкове заповнення трьох регістрів LFSR. У експортному виконанні застосовується алгоритм розгортання ключа, який скорочує ключове простір до розміру, легко перевіряється при пошуку ключа повним перебором [6].

Нехай -- вміст комірки таблиці замін S-блоку з адресою i, , і -- старші байти LFSR А, В і С відповідно. Кожен байт гами у формується таким чином. Алгоритм ORYX [8]:

такт роботи LFSR С;

такт роботи LFSR А, при цьому використовується один з двох різних многочленів залежно від значення біта LFSR С;

такт або два такту роботи LFSR В залежно від значення іншого біта LFSR С;

Обчислення гами:

Криптоаналіз показав, що для розкриття криптоалгоритма потрібно 24 байта відкритого тексту і перебір 216 варіантів початкового заповнення LFSR[5].

COS (Crossing Over Systems) - це сімейство поточних шифрів, розроблене французькими криптографами[7]. Шифри будуються з використанням нелінійних регістрів зсуву і булевих функцій. Розрядність внутрішнього секретного ключа дорівнює 256 біт, а зовнішній ключ може мати розмір 128, 192 і 256 біт. Використовується також несекретний сеансовий ключ довжиною 32 біта.

Будь-який шифр COS складається з n нелінійних регістрів зсуву довжини L і позначається COS (n, L). Шифр оперує блоками розміром 2(n - 1)L бітів.

1.2 Аналіз алгоритму SQ1-R

У курсовому проекті буде використано алгоритм SQ1-R. Це -- синхронний потоковий криптоалгоритм який є подальшим розвитком підходу, вперше реалізованого в RC4. Основними принципами розробки шифру були: мінімальне використання пам'яті, стійкість до атак, простота реалізації та оптимізація під 64-розрядні процесори. SQ1-R має досить просту структуру і може бути використаний для заміни алгоритмів потокового шифрування, будучи швидким і стійким шифром. SQ1-R використовує S-блоки це - засаднича складова шифрування з симетричними ключами, яка виконує підстановки. По суті це звичайна таблиця підстановки.

Математично даний шифр може бути описаний наступним чином:

,

,

Де - це внутрішній стан шифру, - стан лічильника, SUDF - функція оновлення стану шифру, OGF - функція виходу.

2. Структура мікропроцесорної системи

2.1 Загальна схема пристрою

Загальна схема пристрою складається з таких структурних блоків:

інтерфейс SPI Master (на вході даних);

блок керування;

генератор псевдовипадкових послідовностей на основі алгоритму SQ1-R;

блок скремблювання;

інтерфейс SPI Slave (на виході даних).

На інтерфейс SPI Slave будуть надходити сигнали SS (вибір slavе, початок його роботи), MISO (надходження даних), MOSI (відправлення даних), CLK (синхросигнал) та дані, які треба скремблювати, тому потрібно з'єднати блок скремблювання з інтерфейсом SPI Master та SPI Slave. SPI Slave передає синхросигнал у блок керування, блок керування, в свою чергу, встановлює готовність передачі даних (отримання 8 біт) та надсилає синхросигнал до блоку генератора ПВП SQ1-R. Отриманий синхросигнал генератор ПВП SQ1-R надсилає до блоку скремблювання. Після завершення скремблювання від блоку скремблювання надходять відповідні сигнали до інтерфейсів SPI Master та SPI Slave.

2.2 Інтерфейс SPI

Інтерфейс SPI дозволяє здійснювати високошвидкісну синхронну передачу даних між мікроконтролерами і периферійними пристроями або між кількома мікроконтролерами (рис. 2.3).

Взаємодія між двома пристроями SPI завжди здійснюється між пристроєм в режимі Master і пристроєм в режимі Slave. На відміну від деяких периферійних пристроїв, таких як датчики, які можуть виступати тільки в ролі Slave, інтерфейс SPI мікроконтролера може бути налаштований як для роботи в режимі Master, так і для роботи в режимі Slave. Режим роботи інтерфейсу SPI мікроконтролера визначається бітом master - регістра керування інтерфейсом SPI.

Схема роботи SPI Лінія вибору Slave SS відіграє центральну роль в конфігуруванні SPI. Залежно від режиму, в якому працює пристрій, і настройки цієї лінії, вона може використовуватися для активації і дезактивації пристроїв

У режимі Master висновок SS, якщо він налаштований як вхід, повинен утримуватися у високому стані. Низький рівень на цій лінії перемкне SPI в режим Slave пристрою та апаратура виконує наступні дії:

біт регістра керування SPI буде скинутий, а система перейде в режим Slave.

буде встановлений прапор переривання SPI регістра стану SPI.

У цій системі активним є пристрій Master. Він надає тактовий сигнал, на основі якого здійснюється послідовна передача даних. Slave пристрій не може генерувати тактовий сигнал, в наслідок чого не може самостійно ініціювати активність. Slave пристрій просто приймає і відправляє дані в той час, коли Master пристрій генерує тактовий сигнал. Однак, Master пристрій генерує тактовий сигнал тільки при передачі даних. Це означає, що Master пристрій для того, щоб отримати дані з Slave пристрою, повинен послати дані Slave пристрою.

2.3 Блок генератор ПВП SQ1-R

Для створення псевдовипадкової гамми яка буде скремблюватись з вхідним сигналом було вибрано схему незалежного генератора псевдовипадкових послідовностей на основі алгоритму SQ1-R його структурна схема зображна на рисунку 2.3.

Основними структурними складовими даного генератора є:

Мікросхема пам'яті (S-блок);

Мікросхема пам'яті (V);

Sr регістр нелінійної суми;

QC квазілічильник;

П'ять блоків XOR;

Циклічного лінійного регістру зсуву.

S-блок є мікросхемою пам'яті, яка являє собою засадничу складову шифрування з симетричними ключами виконуючи підстановки. По суті це звичайна таблиця підстановки, яка приймає на вхід n біт, перетворююча їх по визначеному алгоритмові і повертаючи на на виході m біт. n і m не обов'язково повинні бути рівними. Таблиця замін відіграє домінантну роль

V це - мікросхема пам'яті в якій міститься таблиця розрядністю

N Ч , кожен елемент якого може прийняти значення від 0 до . Схема пам'ті V використовується як накопичувач випадковості, який непередбачуваним способом "колекціонує" випадковість, отриману на попередніх кроках алгоритму.

Sr регістр нелінійної суми має розрядність N. Його особливістю є те, що даний регістр реалізується на основі лінійних регістрів з додаванням в структуру не лінійних елементів додавання.

QC це - N-розрядний квазілічильник який для визначення стану потребує дані про всі його попередні стани.

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

Циклічний лінійний регістр зсуву відіграє роль перетворювача Sr шляхом циклічного зсуву одного біту - це забезпечує не можливість співпадання Sr та QC, адже це призведе до відсутності змін в таблиці S.

2.4 Блок скремблювання

Блок скремблювання є ключовою складовою даного пристрою. Він складається з двох 8-бітних лінійних циклічних регістрів зсуву та блоку XOR.

Задачею регістрів зсуву є забезпечення побітової передачі сигналів вхідного повідомлення та гамми, які надійшли від SPI Master та генератора ПВП до блоку XOR. Блок XOR виконує додавання за модулем 2 бітів вхідного повідомлення та бітів гамми, що фактично є виконанням операції скремблювання. На рисунку 2.3 зображено структурну схему даного блоку.

2.5 Блок керування

Блок керування являє собою сукупність одного N-розрядного регістра та генератора тактових імпульсів. На рисунку 2.4 наведена схема даного блоку мікропроцесорної системи.

Генератор тактових імпульсів приймає сигнали про активацію та дезактивацію пристрою по лінії SS від інтерфейсів SPI Master та SPI Slave, а також відправляє імпульси про початок роботи до генератора псевдовипадкової послідовності на основі алгоритму SQ1-R та блоку скремблювання. Регістр даних містить заповнення таблиці підстановки (S-блоку), яке надсилається до генератора ПВП після отримання генератором тактових імпульсів сигналу про початок роботи.

3. Програмна реалізація Скремблеру на основі алгоримту SQ1-R

Для реалізації поставленого завдання, тобто розробка мікропроцесорної системи скремблювання даних на основі алгоритму SQ1-R, використано мову опису апаратних засобів VHDL та середовище моделювання ModelSim 10.4b. Для перевірки правильності роботи розробленої мікропроцесорної системи необхідно змоделювати її.

3.1 Загальна схема роботи програми

SPI Slave після передачі блоку даних генерує синхросигнал та активує генератор ПВП SQ1-R. Цей процес детально описаний в пункті 2.3.

Після генерації гамма повідомлення, виконується його накладання на вхідні дані, тобто скремблювання (п. 2.4).

Загальна схема роботи програми зображена на рисунку 3.1.

У режимі Master взаємодія з SPI через переривання має сенс у тому випадку, якщо тактова частота CLK генерується шляхом ділення частоти системного тактового генератора на великий коефіцієнт (наприклад, 64 або 128). У цьому випадку процесор може виконувати інші обчислення, а не чекати прийому або передачі наступного байту. У режимі Master пристрій не знає, коли була розпочата передача даних, а реалізація взаємодії з SPI через переривання гарантує, що пристрій відреагує своєчасно і колізій записів не виникне.

Slave не знає, коли Master розпочне нову передачу даних. Переривання є відміннім способом для обробки подібніх невизначених подій, а також це стандартний спосіб для реалізації SPI в режімі Salave.

Принцип роботи генератора ПВП SQ1-R полягає в тому, що при першому запуску генератора відбувається заповнення мікросхем пам'яті S і V, далі біти даних мікросхем додаються за модулем 2, що формує гаму яка передаються на вихід з генератора

Сигнал над яким відбулось скремблювання надсилається за допомогою послідовного інтерфейсу SPI. Спочатку встановлюються порти для SCK, SS, MOSI (PB5, PB2, PB3) в режим виведення. Далі в регістр керування SPI (SPCR) встановлюється 4 біт. Це значить, що SPI буде працювати в режимі Master. Після цього сигнал записується в регістр даних (SPCR). Встановлюється 6 біт в SPCR, що вмикає SPI і починається передача даних. Після закінчення передачі, встановлюється біт SPIF. Алгоритм роботи інтерфейсу SPI зображений на рисунку

Алгоритм роботи інтерфейсу SPI

В результаті, після того як над сигналом відбулось скремблювання він передається за допомогою інтерфейсу SPI.

3.2 Тестування роботи пристрою

Оскільки для генерації гами необхідно задавати поліном, то в розробленій мікропроцесорній системі передбачено це (користувач надсилає вхідні поліноми) рисунок 3.5.

Початкові заповнення РЗЗЗ

Тестування програми відбуватиметься шляхом модуляції. На рисунку 3.6 зображено зсув РЗЗЗ після надходження синхросигналу. Отримавши через зсув РЗЗЗ початкове заповнення мікросхем пам'яті V і S виконуємо п'ять блоків XOR отримуємо гаму, додаємо її за модулем 2 до вхідної послідовності (рис. 3.7).

Загальна схема роботи програми

На рисунку 3.5 зображено процес роботи програми, сигнали lfsr це -вхідна послідовність в РЗЗЗ на основі яких формується гама сигнал. Для подальшого його скремблювання з вхідною послідовністю.

Утворення зашифрованої послідовності

Далі послідовність яка скремблюється передається до блоку SPI Master (рис. 3.8).

Вихідна послідовність

скремблер алгоритм інтерфейс мікропроцесорний

Отже, отримавши результати аналізу роботи мікропроцесорної системи можна зробити висновок, що вона працює коректно, правильно і виконує поставлені на нього задачі: скремблювання вхідної послідовності.

Висновки

У курсовому проекті розроблено та реалізовано мікропроцесорну систему скремблювання даних на основі генератора псевдовипадкових послібовностей реалізованого на алгоритмі SQ1-R.

Серед основних наведених та проаналізованих потокових шифрів, алгоритм SQ1-R має досить високу надійність та швидкість виконання, це дозволить використовувати розроблену мікропроцесорну систему у різноманітних спеціалізованих галузях, де необхідно скремблювати великі об'єми даних за найменший час.

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

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

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

Перелік використаних джерел

1. Klein A. Attacks on the RC4 stream cipher. / A. Klein. Designs, Codes and Cryptography -- 286 с

2. Oversby L. 21 Scrambler/ L. Oversby -- М.: Ardis Publishing , 2002. -- С. 78. -- 156 с.

3. M. Liskov. Tweakable Block Ciphers. Advances in Cryptology - CRYPTO 2002 Proceedings/ M. Liskov, R. Rivest, D. Wagner. Springer-Verlag, 2002. - pp. 31-46.

4. Алгоритм SQ1-R - Режим доступу: http://crypto.pp.ua/2011/02/sq1-r/.

5. Бродин В. Б. Системы на микроконтролерах и БИС программируемой логики / В. Б. Бродин, А. В. Калинин. - М.: Издательство Эком, 2002. - 400 с.

6. Использование интерфейса SPI в мікросхемах - Режим доступа: http://chipspace.ru/stm32-spi/.

7. Асосков А. В. Поточные шифры. / А. В. Асосков, Иванов, А. А. Мирский, А. В. Рузин, А. В. Сланин, А. Н. Тютвин. -- КУДИЦ, 2003. -- 336с.

8. Потокові шифри. Результати зарубіжної відкритої криптології. Режим доступу до статті: http://www.ssl.stu.neva.ru/psw/crypto.html.

9. Основы языка VHDL - Режим доступу: http://www.bsuir.by/vhdl/posts/ osnovy-yazyka-vhdl-listing/#1.4.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.