Національний авіаційний університет
Інститут інформаційно-діагностичних систем
Кафедра безпеки інформаційних технологій
РОЗРАХУНКОВО ГРАФІЧНА робота
(пояснювальна записка)
з дисципліни: “Алгоритмічне проектування криптосистем”
Виконала: студентка 532 групи ІКІТ Лукієнко Н.А.
Керівник: доцент Тимошенко М.П.
Київ 2013
НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ
Інститут інформаційно-діагностичних систем
Кафедра безпеки інформаційних технологій
ЗАВДАННЯ
на виконання розрахунково графічної роботи
Тема: Разработка программного VHDL проекта криптографического процессора текстовой информации в среде Active-HDL
Виконала: ___________________/ студентка 532 групи ІКІТ Лукієнко Н.А.
Керівник: __________________/ к.д.н. доц. Тимошенко М.П.
Тема: Разработка программного VHDL проекта криптографического процессора текстовой информации в среде Active-HDL
Цель работы:
Изучить приемы метода программного проектирования электронных технических средств защиты информации на языке VHDL.
Изучить приемы проектирования и моделирования работы программных проектов криптопроцессоров в среде Active HDL 8.1.
Объём часов на выполнение: 8 часов.
Задание на выполнение работы:
Процессор должен шифровать текстовую информацию заданного объёма представленную символами ASII. Текстовая информация должна содержать фамилию, имя, отчество студента, номер группы (оставшаяся часть может быть произвольной). Пример шифруемой текстовой информации:
Gornostajev Ivan Petrovich grupa 519!!! Произвольная часть: Maman hello is!! / \ \
Исходная текстовая информация в процессоре должна храниться в созданном Вами файле ОС, читаться из файла и затем перезаписываться в массив объявленный в программном проекте.
Используемый метод шифрования информации выбирается в соответствии с таблицей № 1: ( Смотри таблицу № 1)
Зашифрованный код символа в формате std_logic_vector должен на выходной порт.
Дешифрованный код символа в формате character должен пересылаться на выходной порт, а также должен быть записан в созданный Вами файл ОС.
После разработки и успешной компиляции VHDL проекта, построить, используя Waveform Editor, временную диаграмму работы проекта и, используя модуль Simulator, промоделировать работу проекта. Убедиться в правильности получения дешифрованной текстовой информации.
Руководящие материалы для разработки проекта процессора:
Материалы лекций.
Созданные Вами VHDL проекты при выполнении лабораторных работ.
Описание языка VHDL и учебные VHDL проекты, содержаться в файле VHDL_TUTORIAL3.doc
Примеры учебных VHDL проектов можно также найти в папке Labor.
Форма Отчетности:
Составить отчет, оформленный в соответствии ГОСТ в котором должны присутствовать следующие разделы:
Титульный лист с указанием Темы;
Цель работы;
Задание на проектирование;
Краткие теоретические сведения о языке VHDL;
Блок-схема алгоритма функционирования проекта;
VHDL проект криптографического процессора;
Временная диаграмма работы процессора;
Выводы по работе;
Список литературы;
Защитить расчетно-графическую работу до 15 декабря 2013 года.
Краткие теоретические сведения.
ПОРЯДОК ВИКОНАННЯ РОБОТИ
VHDL является аббревиатурой термина VHSIC (сверхбыстродействующая интегральная схема -Very High Speed Integrated Circuits) и термина Hardware Description Language (Язык Описания Аппаратных средств). В середине 1980-х годов американское Министерство обороны и институт IEEE спонтировали разработку этого языка описания цифровой аппаратуры с целью получить простые методы проектирования сверхбыстродействующих ИС. Он стал теперь одним из стандартных промышленных языков, который широко используется для описания работы цифровых систем. Другой широко используемый язык описания цифровой аппаратуры это язык Verilog. Оба эти мощные языки позволяют описывать и имитировать работу сложных цифровых систем.
Третьим представителем языков HDL является язык - ABEL (Advanced Boolean Equation Language - Расширенный Язык Boolean Уравнений), который был целенаправленно разработан для создания проектов цифровых устройств посредством Программируемых Логических Устройств (PLD - Programmable Logic Devices). Язык ABEL менее мощен, чем другие два языка и менее популярен в промышленности. Это справочное пособие содержит основные положения языка VHDL, которые определенны в стандарте IEEE 1076-1993.
Хотя язык VHDL внешне выглядит, как и другие языки традиционные программирования (имеет в своей конструкции литералы, разделители, операторы и т.д.) он имеет некоторые важные отличительные характеристики.
Основные характеристики языка:
Проекты цифровых устройств созданные с помощью языка имеют как правило иерархическую структуру.
Каждый автономный проектируемый модуль (субблок проектируемого цифрового устройства) имеет:
четкий интерфейс для того, чтобы соединяться с другими модулями;
точную спецификацию внутреннего устройства проектируемого модуля описывающую концепцию функционирование модуля.
Спецификации VHDL проектов моделей (субблоков) могут использовать или математические алгоритмы, описывающие их работу или описание аппаратной структуры проектируемого модуля. В соответствии с уровнями абстракций проектов описания модуля может иметь такие типы: поведенческий, потоковый, структурный (компонентный).
Использование событийного принципа управления при моделировании алгоритма работы проекта.
Моделирование Протекания параллельных процессов (Concurrency Process) в электрических схемах, временной анализ (timing) сигналов и их параметров, синхронную и асинхронную схем электрических- принципиальных цифровых устройств.
VHDL поддерживается Инструментальными средствами синтеза (Системами автоматизированного проектирования разных фирм), которые могут создавать прямо из описания VHDL проекта его аппаратную реализацию (Связанные между собой структуры логических элементов содержащихся в СБИС).
Используя VHDL, Вы можете проектировать, имитировать (моделировать) и синтезировать практически любое цифровое устройство, начиная от простой комбинационной схемы до законченной микропроцессорной системы на СБИС.
Перечисленные выше возможности языка VHDL поддерживают такие его средства:
Библиотеки, пакеты;
Проекты: интерфейс (entity) проекта, архитектура (architecture) проекта;
Подпрограммы: подпрограммы-функции, подпрограммы процедуры;
Скалярные типы данных: перечисления, числовые, физические;
Программные объекты данных: константы, переменные, сигналы, порты, идентификаторы;
Математические операции: логические, отношений (сравнения), арифметические;
Программные операции: назначения значений сигналам, присвоения значений переменным, связывания портов и сигналов;
Математические выражения: логические, алгебраические, логико-алгебраические;
Операторы объявления (Операторы декларации) программных объектов;
Операторы комбинаторной логики: простого назначения значения сигналу, условного назначения значения сигналу, селективного назначения значения сигналу, оператор process, оператор внедрения (реализации) компонента, оператор generate;
Операторы регистровой логики: оператор process, простого назначения значения сигналу, оператор условной передачи управления, оператор цикла, оператор выбора;
В противоположность процедурным языкам программирования, которые обеспечивают способы для вычисления значений абстрактных данных и управления ими, язык VHDL описывают цифровую систему, учитывая ее многогранность (многоплановость), поведение, структуру, функциональные свойства, физические свойства, а также взаимодействуют со специальной аппаратурой физически реализующей проект цифровой системы в СБИС.
Обычно для создания аппаратной реализации проекта цифрового устройства приходится выполнять такие этапы.
Разработка Иерархической блок-схема проекта. Выяснение базового конструктивно-технологического метода и стандартных блоков на уровне структурной схемы.
Большие логические проекты являются обычно иерархическими и VHDL дает Вам хорошую структуру {каркас} для того, чтобы определить модули (субпроекты) и их интерфейсы.
Программирование{Кодирование}. Запись VHDL кода для модулей, их интерфейсов.
Компиляция (Трансляция). Анализ общего кода (программы) вашего VHDL проекта для выявления синтаксических ошибок и проверка его на предмет совместимости с другими модулями, которые содержатся в его структуре. Трансляция также создает внутреннюю информацию о структуре проекта, которая необходима для моделирования его работы.
Моделирование (Имитация). Имитация позволяет Вам определить и применить входные воздействия к вашему проекту и наблюдать выходную реакцию. Имитация - часть большего шага, называемого проверкой функциональной работоспособности (verification ) проекта. Функциональный контроль выполняется, для того чтобы проверить логику работы Вашего проекта без учета временных соотношений и задержек распространения сигналов на логических элементах.
Синтез. Преобразование VHDL описания в набор примитивов или логических элементов, которые могут быть ассемблированы в конкретной технологии.
Компоновка/Монтаж и Маршрутизация (Fitting / Placement & Routing ). Это отображение проекта на карте синтезирующих элементов содержащихся в СБИС.
Временной анализ. Это стадия, получения фактических задержек реализованного в СБИС цифровой схемы проекта, вследствие длинных соединений, электрических нагрузок, и других известных факторов.
Как говорилось выше, хотя язык VHDL внешне выглядит, как и другие языки программирования (имеет в своей конструкции литералы, разделители, операторы и т.д.) он имеет некоторые важные отличия на которых следует особо остановиться. Аппаратный язык описания VHDL по существу является языком параллельного программирования, то есть в его конструкции существуют команды (операторы), которые соответствуют логическим вентилям. Эти команды выполняются (вычисляются) по параллельному принципу. Суть этого принципа состоит в том, что как только сигнал, содержащийся в описании проектируемого цифрового устройства, изменяет свое значение (как только свершается событие на сигнале), то все операторы принимающие участие в его обслуживании запускаются мгновенно на исполнение и в один и тот же момент времени выдают конечный результат. Программа, написанная на HDL языке, имитирует физическое поведение систем (обычно цифровых систем) сигналы, в которой распространяются мгновенно. Такая программа позволяет также формировать временную спецификацию (время задержки распространения сигнала на логическом элементе), а так же как описывать систему как соединение различного рода компонент (components) и функциональных блоков.
Базовая структура VHDL файла (Basic Structure of a VHDL file)
Проект любого цифрового устройства на языке VHDL это прежде всего программа, которая содержит в своей конструкции ключевые и зарезервированные слова. Эти слова не могут использоваться как имена сигналов или как идентификаторы. Ключевые слова, зарезервированные слова и определяемые пользователем идентификаторы - нечувствительны к регистру (case insensitive). Строки с комментариями в VHDL программе начинаются с двух смежных дефисов (-) и игнорироваться компилятором. VHDL компилятор также игнорирует концы строк и пустые пространства. VHDL - это язык со строгим контролем типов (is a strongly typed), который подразумевает, что каждая используемая в проекте программная величина (константа, переменная, сигнал) всегда должна иметь тип. В объявлении каждой программной величины (программного объекта данных) тип (Туре) определяет ее информационные характеристики, допустимые числовые значения программного объекта и допустимые операции над ним. Кроме того, согласно требованию строгого контроля типов в языке VHDL запрещено напрямую (без дополнительных конвертирующих преобразований) выполнять операции над программными объектами данных разных типов.
В языке VHDL (как и в классических языках программирования) из ключевых, зарезервированных слов и других лексических элементов строятся
образования, которые принято называть операторами. Оператором в языке VHDL считается любая запись, начинающаяся с ключевого слова и заканчивающаяся символом точка с запятой.
В языке VHDL операторы, с точки зрения их функционального программного назначения (как при поведенческой, так и при структурной методологии описания проектов) приято делить на 2 группы:
Декларирующие операторы (Операторы объявления программных объектов, программных объектов данных, типов программных объектов данных)',
Выполняемые операторы.
С точки зрения конструктивного устройства операторы обеих групп принято подразделять на 2 класса:
Простые (однострочные) операторы; (Простой оператор представляет собой текстовую запись, располагающуюся, как правило, на одной строку, которая не содержит в своем составе других операторов)
Составные (многострочные) операторы. (Составной оператор представляет собой текстовую запись, занимающую, как правило, много строк, которая содержит в своем составе другие операторы)
Ход работы
Исходный текст:
Информация для шифрования:
Lukienko_Natasha_Anatoliivna_5kurs_kafedra_bezopasnosti_informatsionnih_ tehnologiyN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Информация для шифрования и ее представление кодах ASCI (HEX): 47 6е 61 74 65 6е 6Ь 6f 5f 53 65 72 67 69 79 5f 4f 6c 65 6b 73 61 6e 64 72 6f 76 69 63 68 5f 35 6b 75 72 73 5f 6b 61 66 65 64 72 61 5f 62 65 7a 6f 70 61 73 6e 6f 73 74 69 5f 69 6e 66 6f 72 6d 61 74 73 69 6f 6e 6e 69 68 5f20 74 65 68 6e 6f6c 6f 67 69 79 4e 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 2. 2. Базовая операция, применяемая для шифрования информации:
СШ на основе одноразового блокнота (квадрат Виженера)
Пусть ключом у нас будут первые буквы ФИО:
42 6f 64 а длинна этого ключа будет 32 бит
Используемые конвертирующие функции:
CONV- конвертирующая функция из
STD_LOGIC_VECTOR в BIT_VECTOR
BIT_VECTOR в STD_LOGIC_VECTOR
STD_LOGIC_VECTOR в CHARACTER
CHARACTER в STD_LOGIC_VECTOR
STD_LOGIC_VECTOR в INTEGER
CONV8 - конвертирующая функция из INTEGER в
STD_LOGIC_VECTOR
Функции конвертации содержаться в отдельном файле CONVERTfunc.vhd