Защита информации Энергетической компании (KEGOC)

 

Некоммерческое акционерное общество

«АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ»

Кафедра "Компьютерных технологий"










КУРСОВАЯ РАБОТА

на тему: Защита информации Энергетической компании (KEGOC)

Специальность: 5В070400 Вычислительная техника и программное обеспечение





Выполнил: Илияс А.А. Группа: ВТ-12-4

Руководитель: ст. преп. Тергеусизова А.С.







Алматы, 2015 г


Содержание

защита информация алгоритм

Задание

Введение

Глава 1

.1 Виды угроз

.2 Характер происхождения угроз

.3 Классы каналов несанкционированного получения информации

.4 Источники появления угроз

.5 Причины нарушения целостности информации

.6 Потенциально возможные злоумышленные действия

.7 Определение класса защиты информации

Глава 2

.1 Определение требований к защите информации

.2 Классифицирование автоматизированной системы

.3 Определение факторов, влияющие на требуемый уровень защиты информации

.4 Выбрать или разработать способы и средства защиты информации

.5 Построить архитектуру систем защиты информации

.6 Рекомендации по увеличению уровня защищенность

Глава 3

.1 Область применения. История происхождения алгоритма. Авторы алгоритма

.2 Математический алгоритм - подробное описание

.3 Сравнение с другими алгоритмами-аналогами (1-2примера): достоинства и недостатки

.4 Описание исходного кода программы

.5 Описание программной реализации

Графическая часть.

Заключение

Список литературы

Приложение



Задание


Первая буква фамилииРекомендуемые объекты защиты информацииРекомендуемые алгоритмы [13]Создание программной реализации алгоритмаПримечание ИЭнергетическая компания (KEGOC) 1) Блочный шифр CA-1.1. 2) Блочный шифр SKIPJACK.1) CA-1.1; 2) SKIPJACK.(8),(14),(16)



Введение


Те или иные способы защиты информации использовались людьми на протяжений тысячелетий. Но именно в течение нескольких последних десятилетий криптография - наука о защите информации - переживает невиданный доселе прогресс, обусловленный, как минимум двумя важными факторами: 1) бурное развитие вычислительной техники и ее повсеместное использование привело к тому, что теперь в подавляющем большинстве случаев криптография защищает именно компьютерную информацию; 2) тогда как раньше криптография была уделом государственных структур, сейчас криптографические методы защиты могут использовать обычные люди и организации, хотя бы для защиты своей собственной переписки от посторонних глаз. То же самое касается и разработки криптографических алгоритмов - известно множество алгоритмов шифрования, и далеко не все из них разработаны «в недрах спецслужб» или научными институтами - встречаются весьма удачные и широко используемые алгоритмы, разработанные частными лицами.

В данной курсовой работе я рассматриваю следующие алгоритмы: .1. и SKIPJACK.- это блочный шифр, основанный на клеточных автоматах и разработанный Говардом Гутовицом (Howard Gutowitz) [677, 678, 679]. Он шифрует 384-битовые блоки открытого текста 1088-битовым ключом (на самом деле используется два ключа - 1024-битовый и 64- битовый). Из-за природы клеточных автоматов алгоритм наиболее эффективен при реализации в больших параллельных интегрированных схемах. CA-1.1 использует как обратимые, так и необратимые правила клеточного автомата. При обратимом правиле каждое состояние структуры получается из единственного предшествующего состояния, а при необратимом правиле у каждого состояния может быть несколько предшественников. При шифровании необратимые правила пошагово обращаются во времени. Для продвижения обратно от текущего состояния случайным образом должно выбираться одно из состояний-предшественников. Этот процесс многократно повторяется. Таким образом, обратная итерация служит для смешивания случайной информации с информацией сообщения. CA-1.1 использует особый сорт частично линейного необратимого правила, такого, что для любого данного состояния может быть быстро построено случайное состояние-предшественник. На некоторых стадиях шифрования используются и обратимые правила.разработан NSA в качестве алгоритма шифрования для микросхем Clipper и Capstone (см. разделы 24.16 и 24.17). Так как этот алгоритм объявлен секретным, его подробности никогда не публиковались. Он будет реализован только как защищенная от взлома аппаратура. Этот алгоритм объявлен секретным не потому, что это повышает его надежность, а потому что NSA не хочет, чтобы Skipjack использовался без механизма условного вручения ключей Clipper. Агентство не хочет, чтобы программные реализации алгоритма распространились по всему миру.



Глава 1


.1 Виды угроз. Основные нарушения


Физической целостности (уничтожение, разрушение элементов);

Логической целостности (разрушение логических связей);

Содержания (изменение блоков информации, внешнее навязывание ложной информации);

Конфиденциальности (разрушение защиты, уменьшение степени защищенности информации);

Прав собственности на информацию (несанкционированное копирование, использование).


.2 Характер происхождения угроз


Умышленные факторы

Хищение носителей информации

Подключение к каналам связи

Перехват электромагнитных излучений (ЭМИ)

Несанкционированный доступ

Разглашение информации

Копирование данных

Естественные факторы

Несчастные случаи (пожары, аварии, взрывы)

Стихийные бедствия (ураганы, наводнения, землетрясения)

Ошибки в процессе обработки информации (ошибки пользователя, оператора, сбои аппаратуры)

Три наиболее выраженные угрозы:

подверженность физическому искажению или уничтожению;

возможность несанкционированной (случайной или злоумышленной) модификации;

опасность несанкционированного (случайного и преднамеренного) получения информации лицами, для которых она не предназначена.


.3 Классы каналов несанкционированного получения информации


Рассмотрим относительно полное множество каналов несанкционированного получения информации, сформированного на основе такого показателя, как степень взаимодействия злоумышленника с элементами объекта обработки информации и самой информацией.

К первому классу относятся каналы от источника информации при НСД к нему.

Хищение носителей информации.

Копирование информации с носителей (материально-вещественных, магнитных и т. д.).

Подслушивание разговоров (в том числе аудиозапись).

Установка закладных устройств в помещение и съем информации с их помощью.

Выведывание информации обслуживающего персонала на объекте.

Фотографирование или видеосъемка носителей информации внутри помещения.

Ко второму классу относятся каналы со средств обработки информации при НСД к ним.

Снятие информации с устройств электронной памяти.

Установка закладных устройств в СОИ.

Ввод программных продуктов, позволяющих злоумышленнику получать информацию.

Копирование информации с технических устройств отображения (фотографирование с мониторов и др.).

К третьему классу относятся каналы от источника информации без

Получение информации по акустическим каналам (в системах вентиляции, теплоснабжения, а также с помощью направленных микрофонов).

Получение информации по виброакустическим каналам (с использованием акустических датчиков, лазерных устройств).

Использование технических средств оптической разведки (биноклей, подзорных труб и т. д.).

Использование технических средств оптико-электронной разведки (внешних телекамер, приборов ночного видения и т. д.).

Осмотр отходов и мусора.

Выведывание информации у обслуживающего персонала за пределами объекта.

Изучение выходящей за пределы объекта открытой информации (публикаций, рекламных проспектов и т. д.).

К четвертому классу относятся каналы со средств обработки информации без НСД к ним.

Электромагнитные излучения СОИ (паразитные электромагнитные излучения (ПЭМИ), паразитная генерация усилительных каскадов, паразитная модуляция высокочастотных генераторов низкочастотным сигналом, содержащим конфиденциальную информацию).

Электромагнитные излучения линий связи.

Подключения к линиям связи.

Снятие наводок электрических сигналов с линий связи.

Снятие наводок с системы питания.

Снятие наводок с системы заземления.

Снятие наводок с системы теплоснабжения.

Использование высокочастотного навязывания.

Снятие с линий, выходящих за пределы объекта, сигналов, образованных на технических средствах за счет акустоэлектрических преобразований.

Снятие излучений оптоволоконных линий связи.

Подключение к базам данных и ПЭВМ по компьютерным сетям.


.4 Источники угроз (понимается непосредственный исполнитель угрозы в плане ее негативного воздействия на информацию)


люди;

технические устройства;

модели, алгоритмы, программы;

технологические схемы обработки;

внешняя среда. Предпосылки появления угроз:

объективные (количественная или качественная недостаточность элементов системы) - причины, не связанные непосредственно с деятельностью людей и вызывающие случайные по характеру происхождения угрозы;

субъективные - причины, непосредственно связанные с деятельностью человека и вызывающие как преднамеренные (деятельность разведок иностранных государств, промышленный шпионаж, деятельность уголовных элементов и недобросовестных сотрудников), так и непреднамеренные (плохое психофизиологическое состояние, недостаточная подготовка, низкий уровень знаний) угрозы информации.


.5 Причины нарушения целостности информации


Субъективные

. Преднамеренные

Диверсия (организация пожаров, взрывов, повреждений электропитания и др.)

Непосредственные действия над носителем (хищение, подмена носителей, уничтожение информации)

Информационное воздействие (электромагнитное облучение, ввод в компьютерные системы разрушающих программных средств, воздействие на психику личности психотропным оружием)

. Непреднамеренные

Отказы обслуживающего персонала (гибель, длительный выход из строя)

Сбои людей (временный выход из строя)

Ошибки людей

Объективные, непреднамеренные

Отказы (полный выход из строя) аппаратуры, программ, систем питания и жизнеобеспечения

Сбои (кратковременный выход из строя) аппаратуры, программ, систем питания и жизнеобеспечения

Стихийные бедствия (наводнения, землетрясения, ураганы)

Несчастные случаи (пожары, взрывы, аварии)

Электромагнитная несовместимость


.6 Потенциально возможные злоумышленные действия


Использование служебного положения, т.е. незапланированного просмотра(ревизии) документов;

Подкуп или шантаж персонала или отдельных пользователей, имеющих определенные полномочия;

Внедрение агентов в число персонала системы (в том числе, возможно, и в группу, ответственную за безопасность);

Перехват побочных электромагнитных, акустических и других излучений устройств;

Хищение производственных отходов (распечаток, записей, списанных носителей информации и т.п.)


.7 Определение класса защиты информации


Есть несколько классов защиты информации:

класс 4 (К4) - информационные системы, для которых нарушение заданной характеристики безопасности персональных данных, обрабатываемых в них, не приводит к негативным последствиям для субъектов персональных данных;

класс 3 (К3) - информационные системы, для которых нарушение заданной характеристики безопасности персональных данных, обрабатываемых в них, может привести к незначительным негативным последствиям для субъектов персональных данных;

класс 2 (К2) - информационные системы, для которых нарушение заданной характеристики безопасности персональных данных, обрабатываемых в них, может привести к негативным последствиям для субъектов персональных данных;

класс 1 (К1) - информационные системы, для которых нарушение заданной характеристики безопасности персональных данных, обрабатываемых в них, может привести к значительным негативным последствиям для субъектов персональных данных.

По данным задачи (Энергетическая компания (KEGOC)) в нашем случае будет К1 защиты информации.




Глава 2


.1 Определение требований к защите информации


Для современных криптографических систем защиты информации сформулированы следующие общепринятые требования:

зашифрованное сообщение должно поддаваться чтению только при наличии ключа;

число операций, необходимых для определения использованного ключа шифрования по фрагменту шифрованного сообщения и соответствующего ему открытого текста;

должно быть не меньше общего числа возможных ключей;

число операций, необходимых для расшифровывания информации путем перебора всевозможных ключей должно иметь строгую нижнюю оценку и выходить за пределы возможностей современных компьютеров (с учетом возможности использования сетевых вычислений);

знание алгоритма шифрования не должно влиять на надежность защиты;

незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при использовании одного и того же ключа;

структурные элементы алгоритма шифрования должны быть неизменными;

дополнительные биты, вводимые в сообщение в процессе шифрования, должен быть полностью и надежно скрыты в шифрованном тексте;

длина шифрованного текста должна быть равной длине исходного текста;

не должно быть простых и легко устанавливаемых зависимостью между ключами, последовательно используемыми в процессе шифрования;

любой ключ из множества возможных должен обеспечивать надежную защиту информации;

алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования.


.2 Классифицирование автоматизированной системы


Под автоматизированной системой (АС) будем понимать механизм, реализующий информационную технологию. Этот механизм содержит две составляющих: людей, занимающихся эксплуатацией и обслуживанием АС и информационную систему (ИС) как программный-информационный-технический комплекс. То есть ИС это совокупность базы данных, СУБД, приложений, реализующих задачи пользователей и соответствующих технических средств (компьютеры, сетевое оборудование, периферия и т.п.).

Традиционно в последние годы сложилось так, что вопросы проектирования ИС достаточно подробно излагаются во многих учебниках и учебных курсах. Но ИС, хотя и очень важная, но только часть АС. Правда, термин АС часто заменяют термином корпоративная ИС, киберфирма и т.п. Проектирование АС - это отдельное научно-техническое направление, включающее в себя проектирование ИС, анализ и реинжиниринг организаций, проектирование Human relation, т.е. всего, что связано с человеческим фактором. В соответствии с ЖЦ инженерного изделия различают следующие виды АС:

АСНИ - автоматизированная система научных исследований (Основная цель: моделирование и проведение экспериментов. Решаемые задачи и инструментарий: математическая статистика, планирование эксперимента, методы оптимизации, имитационное моделирование);

САПР - система автоматизированного проектирования (Основная цель: автоматизация процессов расчетов и проектирования. Решаемые задачи: изготовление конструкторской документации, смет, заказных спецификаций, оптимизация проектных решений, снижение сроков проектирования);

АСТПП - автоматизированная система технологической подготовки производства (Основная цель: подготовить конкретное предприятие с его конкретными материальными и человеческими ресурсами к выпуску того или иного изделия или переходу на новую технологию. Решаемые задачи: составление маршрутных и технологических карт, расчет и оптимизация загрузки людей и оборудования; расчеты потребностей и планирование запасов и т.п);

АСУТП - автоматизированная система управления технологическими процессами (Основная цель: управление изготовлением готовой продукции в основном для непрерывных производств, например, производства аммиачной селитры. Решаемые задачи: задачи автоматического управления и регулирования);

ГПС - гибкие производственные системы (набор производственных модулей, станков с числовым программным управлением, промышленных роботов, из которых можно создать технологическую систему). ( Основная цель: автоматизация дискретного производства, например производство автомобилей. Решаемыезадачи: механическая, термическая идр обработка, перемещение изделия и компонентов между производственными модулями, складирование и т.п.);

АСУП - автоматизированная система управления предприятием (Основная цель: решает задачи организации управления и экономики. Основные задачи: бух учет, планирование, кадры, снабжение, сбыт и т.п.)

Зарубежный аналог АСУП - это общеуправленческие системы (MIS - management information system и EIS - executive information system):

Кроме того можно классифицировать АСУП по:

по отраслям производства, например, банковские учетные и управленческие системы, управление дискретным промышленным производством, системы профилактической и режимной деятельности органов МВД и др.,

по видам деятельности, например, управление работой склада, система маркетинговых исследований, аналитическая система для работы на фондовом рынке и др.,

по применяемым методам обработки информации, например, электронный архив, корпоративная система управления процессом выполнения офисных работ, система статистических расчетов и др.


.3 Определение факторов, влияющие на требуемый уровень защиты информации


На уровень защиты информации влияют следующие факторы, обуславливаемые характером обрабатываемой информации:

Степень секретности - высокая, так как по линиям телефонной связи может передаваться информация, имеющая высокую государственную, коммерческую или иную важность.

Объем - высокий, так как по линиям телефонной связи передается наибольший объем передаваемой информации, по сравнению с другими способами коммуникации.

Интенсивность обработки - высокая, так как высок объем передаваемой информации, а также частота передачи информации.


.4 Выбор или разработка способов и средств защиты информации


Для обеспечения защиты информации по телефонным линиям и каналам связи можно использовать следующие технические средства, предназначенные для защиты отдельного приемного устройства:

Фильтр «Гранит-8». Предназначен для обеспечения защиты речевой информации от утечки за счет акустоэлектрических преобразований через двухпроводные линии: открытые телефонные сети, сети радиотрансляции, системы директорской и диспетчерской связи. Назначение фильтра - пропускать сигналы в речевом диапазоне частот при нормальном режиме работы телефонной линии и задерживать высокочастотные сигналы, которые подаются в линию при высокочастотном навязывании.

Подавитель сотовых телефонов «Жезл». Изделие предназначено для блокирования несанкционированной работы сотовых телефонов, работающих в следующих стандартах: CDMA-450, GSM-900, GSM-1800, 3G (UMTS-2100).


.5 Архитектура систем защиты информации



2.6 Рекомендации по увеличению уровня защиты информации


Для повышения уровня защиты передаваемой информации целесообразно применение различных устройств, предназначенных для предотвращения прослушивания телефонных разговоров. Некоторые из них:

Устройство защиты телефонных линий от прослушивания "ГИ-1500".

Устройство защиты телефонных линий от прослушивания "ГИ-1500" предназначено для выведения из строя устройств съема информации в проводных линиях связи, а также в обесточенной электросети. Устройство предназначено для защиты от несанкционированного прослушивания переговоров, как по телефону, так и в помещении с помощью устройств, работающих в проводных линиях, либо в электросети.

Устройство защиты телефонных переговоров «ЦИКАДА-М». Устройство предназначено для защиты телефонных переговоров на участке линии от абонента до ГАТС. Принцип действия прибора основан на маскировке спектра речи широкополосной шумовой помехой и компенсации постоянного напряжения линии. Прибор формирует синфазную и дифференциальную шумовую помеху как при «положенной», так и при «поднятой» трубке защищаемого телефонного аппарата. Прибор предназначен для эксплуатации как на городских, так и на местных телефонных линиях.



Глава 3


.1 Область применения. История происхождения алгоритма. Авторы алгоритма


Алгоритм CA-1.1:.1 использует как обратимые, так и необратимые правила клеточного автомата. При обратимом правиле каждое состояние структуры получается из единственного предшествующего состояния, а при необратимом правиле у каждого состояния может быть несколько предшественников. При шифровании необратимые правила пошагово обращаются во времени. Для продвижения обратно от текущего состояния случайным образом должно выбираться одно из состояний-предшественников. Этот процесс многократно повторяется. Таким образом, обратная итерация служит для смешивания случайной информации с инфорамацией сообщения.

Так как CA-1.1 представляет собой новый алгоритм, слишком рано делать какие-либо заявления о его безопасности. Гутовиц упоминает некоторые возможные вскрытия, включая дифференциальный криптоанализ, но ему не удалось вскрыть алгоритм. В качестве стимула Гутовиц предложил награду в 1000 долларов для "первого человека, который разработает доступную процедуру вскрытия CA-1.1."CA-l.1 запатентован [678], но доступен для некоммерческого использования. При необходимости получить лицензию на алгоритм или объявленную награду за криптоанализ обращайтесь к Говарду Гутовицу по адресу Howard Cutowitz, ESPCI, Laboratorie d'Electronique, 10 rue Vauquelin, 75005 Paris, France.



3.2 Математический алгоритм

- это блочный шифр, основанный на клеточных автоматах и разработанный Говардом Гутовицом (Howard Gutowitz) [677, 678, 679]. Он шифрует 384-битовые блоки открытого текста 1088-битовым ключом (на самом деле используется два ключа - 1024-битовый и 64- битовый). Из-за природы клеточных автоматов алгоритм наиболее эффективен при реализации в больших параллельных интегрированных схемах.


.3 Сравнение с другими алгоритмами-аналогами(1-2примера): достоинства и недостатки

.1 использует особый сорт частично линейного необратимого правила, такого, что для любого данного состояния может быть быстро построено случайное состояние-предшественник. На некоторых стадиях шифрования используются и обратимые правила. Обратимые правила (простые параллельные перестановки подблоков состояния) нелинейны. Необратимые правила полностью определяются ключом, а обратимые зависят как от ключа, так и от случайной информации, вставленной в ходе шифрования необратимыми правилами. CA-1.1 основан на структуре блочных связей. То есть, обработка блока сообщения частично отделена от обработки потока случайной информации, вставленной при шифровании. Эта случайная информация служит для связи друг с другом стадий шифрования. Она также может быть использована для связи с потоком шифротекста. Информация связи генерируется как часть шифрования.

Если же взять в сравнение Skipjack, то даже если у Skipjack нет ключей, слабых в смысле DES, ряд особенностей процесса использования ключа может сделать одни ключи сильнее других. У Skipjack может быть 270 сильных ключей, гораздо больше чем у DES, вероятность случайно выбрать один из этих сильных ключей будет приблизительно 1 к 1000. Лично я думаю, что пространство ключей Skipjack - плоское, но то, что об этом никто не заявил публично, вызывает тревогу.

Алгоритм SKIPJACK:разработан NSA в качестве алгоритма шифрования для микросхем Clipper и Capstone (см. разделы 24.16 и 24.17). Так как этот алгоритм объявлен секретным, его подробности никогда не публиковались. Он будет реализован только как защищенная от взлома аппаратура.

Этот алгоритм объявлен секретным не потому, что это повышает его надежность, а потому что NSA не хочет, чтобы Skipjack использовался без механизма условного вручения ключей Clipper. Агентство не хочет, чтобы программные реализации алгоритма распространились по всему миру.

Безопасен ли Skipjack? Если NSA захочет создать безопасный алгоритм, оно, скорее всего, это сделает. С другой стороны, если NSA захочет создать алгоритм с лазейкой, то оно сможет сделать и это. Вот что было опубликовано [1154, 462].

Это итеративный блочный шифр.

Размер блока - 64 бита.

Алгоритм использует 80-битовый ключ.

Он может быть использован в режимах ECB, CBC, 64-битовый OFB, либо 1-, 8-, 16-, 32- или 64-битовый CFB.

Операция шифрования или дешифрирования состоит из 32 этапов.начало работу над ним в 1985 и завершило проверку в 1990.

В документации на микросхему Mykotronx Clipper утверждается, что задержка в выдаче результата, присущая алгоритму Skipjack, составляет 64 такта. Это означает, что на каждый этап приходится два такта: один предположительно для подстановки с помощью S-блока, а другой - для заключительного XOR в конце каждого этапа. (Не забывайте, перестановки при аппаратных реализациях не занимают времени.) В документации Mykotronx эта двухтактная операция называется "G-блоком", а все вместе - "сдвигом". (Часть G-блока носит название "F-таблицы" и является таблицей констант, а может быть таблицей функций.)По одним слухам Skipjack использует 16 S-блоков, а по другим для хранения S-блоков нужно всего 128 байт памяти. Непохоже, чтобы оба этих слуха были правдой.Еще один слух утверждает, что этапы Skipjack, в отличие от DES, работают не с половиной блока. Это вместе с замечанием о "сдвигах" и случайном заявлении на Crypto '94 о том, что в Skipjack применяется "48-битовая внутренняя структура", позволяет сделать вывод, что алгоритм по своей схеме похож на SHA (см. раздел 18.7), но использует четыре 16-битовых подблока. Три подблока, обработанные зависящей от ключа однонаправленной функцией, дают 16 битов, которые подвергаются операции XOR с оставшимся подблоком. Затем весь блок циклически сдвигается на 16 битов и поступает на вход следующего этапа, или сдвига. При этом также используются 128 байтов данных S-блока. Я подозреваю, что S-блоки зависят от ключа.По своей структуре Skipjack вероятно похож на DES. NSA понимает, что его защищенная от взлома аппаратура в конце концов будет вскрыта и исследована, они не будут рисковать никакими передовыми криптографическими методами.То, что NSA планирует использовать алгоритм Skipjack для шифрования своей Системы защиты сообщений (Defense Messaging System, DMS), свидетельствует о безопасности алгоритма. Чтобы убедить скептиков, NIST разрешил комиссии "уважаемых неправительственных экспертов . . . получить доступ к конфиденциальным подробностям алгоритма, чтобы они исследовали его возможности и опубликовали результаты своих исследований " [812].В предварительном отчете этой комиссии экспертов [262] (окончательного отчета не было, и возможно никогда не будет) сообщалось:Принимая во внимание, что стоимость вычислительных мощностей уменьшается в два раза каждые 18 месяцев, сложность вскрытия Skipjack сравняется с сегодняшней сложностью вскрытия DES только через 36 лет. Следовательно, риск, что Skipjack будет взломан в ближайшие 30-40 лет, незначителен.Незначителен и риск взлома Skipjack с помощью более быстрых способов вскрытия, включая дифференциальный криптоанализ. У алгоритма не слабых ключей, отсутствует и свойство комплиментарности. Эксперты в отсутствие времени для самостоятельного большого исследования алгоритма изучили представленное NSA описание разработки и проверки алгоритма Устойчивость Skipjack к криптоанализу не зависит от хранения в тайне самого алгоритма. Итак, участники дискуссии не смогли поработать с алгоритмом достаточно долго, чтобы прийти к каким-нибудь выводам самостоятельно. Все, что они смогли сделать - это взглянуть на результаты, показанные им NSA.Остался без ответа вопрос, является ли плоским пространство ключей Skipjack. Даже если у Skipjack нет ключей, слабых в смысле DES, ряд особенностей процесса использования ключа может сделать одни ключи сильнее других. У Skipjack может быть 270 сильных ключей, гораздо больше чем у DES, вероятность случайно выбрать один из этих сильных ключей будет приблизительно 1 к 1000. Лично я думаю, что пространство ключей Skipjack - плоское, но то, что об этом никто не заявил публично, вызывает тревогу.Skipjack запатентован, но в соответствии с соглашением о секретности патента [1122] этот патент хранится в тайне. Патент будет опубликован тогда и только тогда, когда алгоритм Skipjack будет успешно восстановлен кем-то посторонним. Это дает возможность правительству воспользоваться и преимуществом защиты патентом, и преимуществом конфеденциальности торгового секрета.



3.4 Описание исходного кода программы приведено в приложении


.5 Описание программной реализации (алгоритмическая часть). Тщательно комментированный исходный код программы


Рисунок 2 - головная форма программы


Рисунок 3 - создаем текстовый файл для шифрования

Рисунок 4 - находим его расположение


Рисунок 5 - выбираем текстовый файл

Рисунок 6 - прописываем ключ для шифрования (8 символов)


Рисунок 7 - файл успешно зашифрован

Рисунок 8 - находим в программе данный файл


Рисунок 9 - прописываем аналогичный ключ для дешифрования

Рисунок 10 - файл успешно дешифрован


Рисунок 11 - расположение расшифрованного файла в программе

Рисунок 12 - открытие данного файла для проверки



Заключение


Важно знать, что характерной особенностью электронных данных является возможность легко и незаметно искажать, копировать или уничтожать их. Поэтому необходимо организовать безопасное функционирование данных в любых информационных системах, т.е. защищать информацию. Защищённой является информация, не изменившая в процессе передачи, хранения и сохранения достоверность, полноту и целостность данных.

Наибольший ущерб информации и информационным системам наносят неправомерные действия сотрудников и компьютерные вирусы. Для защиты информации в компьютерах и информационных сетях широко используются разнообразные программные и программно-технические средства защиты. Они включают различные системы ограничения доступа на объект, сигнализации и видеонаблюдения.

К наиболее практикуемым способам защиты информации относится её кодирование, предполагающее использование криптографических методов защиты информации. Оно не спасает от физических воздействий, но в остальных случаях служит надёжным средством.



Список литературы


1. Шеннон К. Теория связи в секретных системах /Сб.: «Работы по теории информации и кибернетике».- М.: Иностранная литература, 1963.- С. ЗЗЗ-402.

. Белов Е.Б., Лось В.П., Мещеряков Р.В., Шелупанов А.А. Основы информационной безопасности. - М.: Горячая линия - Телеком, 2006.- 544 с.

. Галатенко В.А., Основы информационной безопасности. - М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2003. - 280 с.

. Шаньгин В.Ф. Защита компьютерной информации. Эффективные методы и средства. - М.: ДМК Пресс, 2008. - 544 с.

. Корт С.С. Теоретические основы защиты информации: Учебное пособие. - М.: Гелиос АРВ, 2004. - 240 с.




Приложение

WindowsApplication1.Properties {System;

/// <summary>

/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.

/// </summary>

// Этот класс создан автоматически классом StronglyTypedResourceBuilder

// с помощью такого средства, как ResGen или Visual Studio.

// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen

// с параметром /str или перестройте свой проект VS.

[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]class Resources {static global::System.Resources.ResourceManager resourceMan;static global::System.Globalization.CultureInfo resourceCulture;

[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]Resources() {

}

/// <summary>

/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.

/// </summary>

[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]static global::System.Resources.ResourceManager ResourceManager {{(object.ReferenceEquals(resourceMan, null)) {::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsApplication1.Properties.Resources", typeof(Resources).Assembly);= temp;

}resourceMan;

}

}

/// <summary>

/// Перезаписывает свойство CurrentUICulture текущего потока для всех

/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.

/// </summary>

[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]static global::System.Globalization.CultureInfo Culture {{resourceCulture;

}{= value;

}

}

}

}WindowsApplication1.Properties {

[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));static Settings Default {{defaultInstance;

}

}

}

}WindowsApplication1

{class Form1

{

/// <summary>

/// Требуемые перемены для дизайна

/// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// Очистка всех используемых ресурсов.

/// </summary>

/// <param name="disposing">верно, если управляемые ресурсы должны быть размещены; иначе, неверно.</param>

protected override void Dispose(bool disposing)

{(disposing && (components != null))

{.Dispose();

}.Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Требуемый метод для поддержки дизайнера - не модифицировать

/// содержание этого метода с редактором кода.

/// </summary>void InitializeComponent()

{.textBox1 = new System.Windows.Forms.TextBox();.label1 = new System.Windows.Forms.Label();.tKey = new System.Windows.Forms.TextBox();.button2 = new System.Windows.Forms.Button();.button3 = new System.Windows.Forms.Button();.treeView1 = new System.Windows.Forms.TreeView();.panel1 = new System.Windows.Forms.Panel();.panel2 = new System.Windows.Forms.Panel();.listBox1 = new System.Windows.Forms.ListBox();.splitter1 = new System.Windows.Forms.Splitter();.menuStrip1 = new System.Windows.Forms.MenuStrip();.файлToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();.зашифроватьToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();.расшифроватьToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();.label2 = new System.Windows.Forms.Label();.comboBox1 = new System.Windows.Forms.ComboBox();.panel3 = new System.Windows.Forms.Panel();.panel6 = new System.Windows.Forms.Panel();.button1 = new System.Windows.Forms.Button();.label4 = new System.Windows.Forms.Label();.progressBar1 = new System.Windows.Forms.ProgressBar();.label3 = new System.Windows.Forms.Label();.panel4 = new System.Windows.Forms.Panel();.panel5 = new System.Windows.Forms.Panel();.panel1.SuspendLayout();.panel2.SuspendLayout();.menuStrip1.SuspendLayout();.panel3.SuspendLayout();.panel6.SuspendLayout();.panel4.SuspendLayout();.panel5.SuspendLayout();.SuspendLayout();

//

// textBox1

// .textBox1.Dock = System.Windows.Forms.DockStyle.Fill;.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));.textBox1.Location = new System.Drawing.Point(0, 0);.textBox1.Name = "textBox1";.textBox1.Size = new System.Drawing.Size(959, 20);.textBox1.TabIndex = 0;.textBox1.Text = "C:\;

//

// label1

// .label1.AutoSize = true;.label1.Location = new System.Drawing.Point(8, 16);.label1.Name = "label1";.label1.Size = new System.Drawing.Size(25, 13);.label1.TabIndex = 4;.label1.Text = "Key";

//

// tKey

// .tKey.Location = new System.Drawing.Point(57, 13);.tKey.MaxLength = 8;.tKey.Name = "tKey";.tKey.Size = new System.Drawing.Size(90, 20);.tKey.TabIndex = 5;.tKey.Text = "saferkey";.tKey.UseSystemPasswordChar = true;

//

// button2

// .button2.Location = new System.Drawing.Point(11, 36);.button2.Name = "button2";.button2.Size = new System.Drawing.Size(137, 23);.button2.TabIndex = 10;.button2.Text = "Encrypt";.button2.UseVisualStyleBackColor = true;.button2.Click += new System.EventHandler(this.button2_Click);

//

// button3

// .button3.Location = new System.Drawing.Point(153, 36);.button3.Name = "button3";.button3.Size = new System.Drawing.Size(136, 23);.button3.TabIndex = 11;.button3.Text = "Decrypt";.button3.UseVisualStyleBackColor = true;.button3.Click += new System.EventHandler(this.button3_Click);

//

// treeView1

// .treeView1.Dock = System.Windows.Forms.DockStyle.Left;.treeView1.ImeMode = System.Windows.Forms.ImeMode.On;.treeView1.Location = new System.Drawing.Point(0, 0);.treeView1.Name = "treeView1";.treeView1.Size = new System.Drawing.Size(195, 479);.treeView1.TabIndex = 22;.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);

//

// panel1

// .panel1.Controls.Add(this.panel2);.panel1.Controls.Add(this.splitter1);.panel1.Controls.Add(this.treeView1);.panel1.Dock = System.Windows.Forms.DockStyle.Fill;.panel1.Location = new System.Drawing.Point(0, 0);.panel1.Name = "panel1";.panel1.Size = new System.Drawing.Size(959, 479);.panel1.TabIndex = 24;

//

// panel2

// .panel2.Controls.Add(this.listBox1);.panel2.Dock = System.Windows.Forms.DockStyle.Fill;.panel2.Location = new System.Drawing.Point(198, 0);.panel2.Name = "panel2";.panel2.Size = new System.Drawing.Size(761, 479);.panel2.TabIndex = 25;

//

// listBox1

// .listBox1.Dock = System.Windows.Forms.DockStyle.Fill;.listBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;.listBox1.FormattingEnabled = true;.listBox1.Location = new System.Drawing.Point(0, 0);.listBox1.Name = "listBox1";.listBox1.Size = new System.Drawing.Size(761, 472);.listBox1.TabIndex = 0;.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);

//

// splitter1

// .splitter1.Location = new System.Drawing.Point(195, 0);.splitter1.Name = "splitter1";.splitter1.Size = new System.Drawing.Size(3, 479);.splitter1.TabIndex = 24;.splitter1.TabStop = false;

//

// menuStrip1

// .menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {.файлToolStripMenuItem});.menuStrip1.Location = new System.Drawing.Point(0, 0);.menuStrip1.Name = "menuStrip1";.menuStrip1.Size = new System.Drawing.Size(959, 24);.menuStrip1.TabIndex = 25;.menuStrip1.Text = "menuStrip1";

//

// файлToolStripMenuItem

// .файлToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {.зашифроватьToolStripMenuItem,.расшифроватьToolStripMenuItem,.exitToolStripMenuItem});.файлToolStripMenuItem.Name = "файлToolStripMenuItem";.файлToolStripMenuItem.Size = new System.Drawing.Size(37, 20);.файлToolStripMenuItem.Text = "File";

//

// зашифроватьToolStripMenuItem

// .зашифроватьToolStripMenuItem.Name = "зашифроватьToolStripMenuItem";.зашифроватьToolStripMenuItem.Size = new System.Drawing.Size(115, 22);.зашифроватьToolStripMenuItem.Text = "Encrypt";.зашифроватьToolStripMenuItem.Click += new System.EventHandler(this.button2_Click);

//

// расшифроватьToolStripMenuItem

// .расшифроватьToolStripMenuItem.Name = "расшифроватьToolStripMenuItem";.расшифроватьToolStripMenuItem.Size = new System.Drawing.Size(115, 22);.расшифроватьToolStripMenuItem.Text = "Decrypt";.расшифроватьToolStripMenuItem.Click += new System.EventHandler(this.button3_Click);

//

// exitToolStripMenuItem

// .exitToolStripMenuItem.Name = "exitToolStripMenuItem";.exitToolStripMenuItem.Size = new System.Drawing.Size(115, 22);.exitToolStripMenuItem.Text = "Exit";.exitToolStripMenuItem.Click += new System.EventHandler(this.выходToolStripMenuItem_Click);

//

// label2

// .label2.AutoSize = true;.label2.Location = new System.Drawing.Point(150, 15);.label2.Name = "label2";.label2.Size = new System.Drawing.Size(44, 13);.label2.TabIndex = 26;.label2.Text = "Rounds";

//

// comboBox1

// .comboBox1.DisplayMember = "1";.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;.comboBox1.FormatString = "N2";.comboBox1.Items.AddRange(new object[] {

"1",

"2",

"3",

"4",

"5",

"6",

"7",

"8",

"9",

"10"});.comboBox1.Location = new System.Drawing.Point(201, 12);.comboBox1.Name = "comboBox1";.comboBox1.Size = new System.Drawing.Size(88, 21);.comboBox1.TabIndex = 27;.comboBox1.ValueMember = "1";

//

// panel3

// .panel3.Controls.Add(this.panel6);.panel3.Controls.Add(this.label4);.panel3.Controls.Add(this.progressBar1);.panel3.Controls.Add(this.label3);.panel3.Controls.Add(this.button3);.panel3.Controls.Add(this.comboBox1);.panel3.Controls.Add(this.label2);.panel3.Controls.Add(this.label1);.panel3.Controls.Add(this.tKey);.panel3.Controls.Add(this.button2);.panel3.Dock = System.Windows.Forms.DockStyle.Top;.panel3.Location = new System.Drawing.Point(0, 0);.panel3.Name = "panel3";.panel3.Size = new System.Drawing.Size(959, 103);.panel3.TabIndex = 28;

//

// panel6

// .panel6.Controls.Add(this.button1);.panel6.Controls.Add(this.textBox1);.panel6.Dock = System.Windows.Forms.DockStyle.Bottom;.panel6.Location = new System.Drawing.Point(0, 81);.panel6.Name = "panel6";.panel6.Size = new System.Drawing.Size(959, 22);.panel6.TabIndex = 31;

//

// button1

// .button1.Dock = System.Windows.Forms.DockStyle.Right;.button1.Location = new System.Drawing.Point(884, 0);.button1.Name = "button1";.button1.Size = new System.Drawing.Size(75, 22);.button1.TabIndex = 1;.button1.Text = "Refresh";.button1.UseVisualStyleBackColor = true;.button1.Click += new System.EventHandler(this.button1_Click);

//

// label4

// .label4.AutoSize = true;.label4.Location = new System.Drawing.Point(295, 41);.label4.Name = "label4";.label4.Size = new System.Drawing.Size(131, 13);.label4.TabIndex = 30;.label4.Text = "Encryption time 0 seconds";

//

// progressBar1

// .progressBar1.Location = new System.Drawing.Point(298, 12);.progressBar1.Name = "progressBar1";.progressBar1.Size = new System.Drawing.Size(380, 23);.progressBar1.TabIndex = 29;.progressBar1.Visible = false;

//

// label3

// .label3.AutoSize = true;.label3.Location = new System.Drawing.Point(3, 67);.label3.Name = "label3";.label3.Size = new System.Drawing.Size(34, 13);.label3.TabIndex = 28;.label3.Text = "Путь:";

//

// panel4

// .panel4.Controls.Add(this.panel5);.panel4.Controls.Add(this.panel3);.panel4.Dock = System.Windows.Forms.DockStyle.Fill;.panel4.Location = new System.Drawing.Point(0, 24);.panel4.Name = "panel4";.panel4.Size = new System.Drawing.Size(959, 582);.panel4.TabIndex = 29;

//

// panel5

// .panel5.Controls.Add(this.panel1);.panel5.Dock = System.Windows.Forms.DockStyle.Fill;.panel5.Location = new System.Drawing.Point(0, 103);.panel5.Name = "panel5";.panel5.Size = new System.Drawing.Size(959, 479);.panel5.TabIndex = 29;

//

// Form1

// .AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;.ClientSize = new System.Drawing.Size(959, 606);.Controls.Add(this.panel4);.Controls.Add(this.menuStrip1);.MainMenuStrip = this.menuStrip1;.Name = "Form1";.Text = "SAFER K-64";.Load += new System.EventHandler(this.Form1_Load);.panel1.ResumeLayout(false);.panel2.ResumeLayout(false);.menuStrip1.ResumeLayout(false);.menuStrip1.PerformLayout();.panel3.ResumeLayout(false);.panel3.PerformLayout();.panel6.ResumeLayout(false);.panel6.PerformLayout();.panel4.ResumeLayout(false);.panel5.ResumeLayout(false);.ResumeLayout(false);.PerformLayout();


}

#endregionSystem.Windows.Forms.TextBox textBox1;System.Windows.Forms.Label label1;System.Windows.Forms.TextBox tKey;System.Windows.Forms.Button button2;System.Windows.Forms.Button button3;System.Windows.Forms.TreeView treeView1;System.Windows.Forms.Panel panel1;System.Windows.Forms.Panel panel2;System.Windows.Forms.Splitter splitter1;System.Windows.Forms.ListBox listBox1;System.Windows.Forms.MenuStrip menuStrip1;System.Windows.Forms.ToolStripMenuItem файлToolStripMenuItem;System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;System.Windows.Forms.ToolStripMenuItem зашифроватьToolStripMenuItem;System.Windows.Forms.ToolStripMenuItem расшифроватьToolStripMenuItem;System.Windows.Forms.Label label2;System.Windows.Forms.ComboBox comboBox1;System.Windows.Forms.Panel panel3;System.Windows.Forms.Panel panel4;System.Windows.Forms.Panel panel5;System.Windows.Forms.Label label3;System.Windows.Forms.ProgressBar progressBar1;System.Windows.Forms.Label label4;System.Windows.Forms.Panel panel6;System.Windows.Forms.Button button1;

}

}System;System.Collections.Generic;System.Text;WindowsApplication1

{Safer

{string text;string key;int RoundValue;int Round

{{ return RoundValue; }{ RoundValue = value; }

}string Text

{{ return text; }{ text = value; }

}string Key

{{(key.Length != 8)

{new Exception("Encryption key must have 8 bytes");

}key;

}{(value.Length != 8)

{new Exception("Encryption key must have 8 bytes");

}= value;

}

}

// левое циклирующее смещение байта. For example, 111001 смещаем циклирующе на 2 bytes = 100111uint LeftCicle(uint value, int count)

{(value >> count) + (((value << (32 - count)) >> (32 - count)) << count);

}

// получаем улучшенный ключ шифрованияbyte[] GetKey(int round, byte[] key)

{[,] b = new char[round + 1, 8];(int i = 0; i < round + 1; i++)

{

// постоянный для улучшения[i, 0] = '1';

b[i, 1] = '6';[i, 2] = '7';[i, 3] = '3';[i, 4] = '3';[i, 5] = 'B';[i, 6] = '1';[i, 7] = 'E';

}(int i = 2; i <= round; i++)

{(int j = 0; j < key.Length; j++)

{uByte = LeftCicle(Convert.ToUInt32(key[j]), 3);specB = Convert.ToUInt32(Convert.ToByte(b[i, j]));

// сложение модуля 256[j] = Convert.ToByte((uByte + specB) % 256);

}

}key;

}

// получаем 8-байтовый рациональные незашифрованные данные

private byte[] GetTextBlock8Byte(string source, int blockNumber)

{eight = 8;[] b = Encoding.Default.GetBytes(source);[] resultBlock = new byte[eight];firstByte = blockNumber * eight;j = 0;(int i = firstByte; i < firstByte + eight; i++)

{(i >= b.Length)[j] = 0;[j] = b[i];++;

}resultBlock;

}int GetTextBlockLength(string source)

{[] b = Encoding.Default.GetBytes(source);(b.Length % 8 == 0)b.Length / 8;b.Length / 8 + 1;

}

// XORbyte XOR(byte text, byte key)

{Convert.ToByte(Convert.ToInt32(text) ^ Convert.ToInt32(key));

}

// сложение модуля 256byte Mod256(byte text, byte key)

{Convert.ToByte((Convert.ToInt32(text) + Convert.ToInt32(key)) % 256);

}

// обратное сложение модуля 256byte DiffMod256(byte text, byte key)

{y = Convert.ToInt32(text);k = Convert.ToInt32(key);(y < k)+= 256;Convert.ToByte(y - k % 256);

}

// операция E. использование матричного значения карты

private byte E(byte text)

{[] replacement = new int[256] { 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63, 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247, 64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, 255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, 129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, 4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, 32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217, 0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194, 249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10, 193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80, 2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126, 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237, 128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97, 253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5, 225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40 };t = Convert.ToInt32(text);Convert.ToByte(replacement[t]);

}

// операция L. использование матричного значения карты

private byte L(byte text)

{[] replacement = new int[256] { 128, 0, 176, 9, 96, 239, 185, 253, 16, 18, 159, 228, 105, 186, 173, 248, 192, 56, 194, 101, 79, 6, 148, 252, 25, 222, 106, 27, 93, 78, 168, 130, 112, 237, 232, 236, 114, 179, 21, 195, 255, 171, 182, 71, 68, 1, 172, 37, 201, 250, 142, 65, 26, 33, 203, 211, 13, 110, 254, 38, 88, 218, 50, 15, 32, 169, 157, 132, 152, 5, 156, 187, 34, 140, 99, 231, 197, 225, 115, 198, 175, 36, 91, 135, 102, 39, 247, 87, 244, 150, 177, 183, 92, 139, 213, 84, 121, 223, 170, 246, 62, 163, 241, 17, 202, 245, 209, 23, 123, 147, 131, 188, 189, 82, 30, 235, 174, 204, 214, 53, 8, 200, 138, 180, 226, 205, 191, 217, 208, 80, 89, 63, 77, 98, 52, 10, 72, 136, 181, 86, 76, 46, 107, 158, 210, 61, 60, 3, 19, 251, 151, 81, 117, 74, 145, 113, 35, 190, 118, 42, 95, 249, 212, 85, 11, 220, 55, 49, 22, 116, 215, 119, 167, 230, 7, 219, 164, 47, 70, 243, 97, 69, 103, 227, 12, 162, 59, 28, 133, 24, 4, 29, 41, 160, 143, 178, 90, 216, 166, 126, 238, 141, 83, 75, 161, 154, 193, 14, 122, 73, 165, 44, 129, 196, 199, 54, 43, 127, 67, 149, 51, 242, 108, 104, 109, 240, 2, 40, 206, 221, 155, 234, 94, 153, 124, 20, 134, 207, 229, 66, 184, 64, 120, 45, 58, 233, 100, 31, 146, 144, 125, 57, 111, 224, 137, 48 };t = Convert.ToInt32(text);Convert.ToByte(replacement[t]);

}

// обратная операция PHT (Pseudo Hadamard Transform)byte[] IPHT(byte x1, byte x2)

{intX1 = Convert.ToInt32(x1);intX2 = Convert.ToInt32(x2);diff1 = -intX1 + 2 * intX2;(diff1 < 0)+= 256;diff2 = intX1 - intX2;(diff2 < 0)+= 256;intY1 = diff1 % 256;intY2 = diff2 % 256;[] b = new byte[2];[1] = Convert.ToByte(intY1);[0] = Convert.ToByte(intY2);b;

}

// операция PHT (Pseudo Hadamard Transform)byte[] PHT(byte x1, byte x2)

{intX1 = Convert.ToInt32(x1);intX2 = Convert.ToInt32(x2);intY1 = (2 * intX1 + intX2) % 256;intY2 = (intX1 + intX2) % 256;[] b = new byte[2];[0] = Convert.ToByte(intY1);[1] = Convert.ToByte(intY2);b;

}byte[] execPHTStage(byte[] x, int round)

{[] b = new byte[8];[] temp = new byte[2];= this.PHT(x[0], x[1]);(round != 0)

{[0] = temp[0];[4] = temp[1];

}

{.Copy(temp, 0, b, 0, 2);

}= this.PHT(x[2], x[3]);(round != 0)

{[1] = temp[0];[5] = temp[1];

}

{.Copy(temp, 0, b, 2, 2);

}= this.PHT(x[4], x[5]);(round != 0)

{[2] = temp[0];[6] = temp[1];

}

{.Copy(temp, 0, b, 4, 2);

}= this.PHT(x[6], x[7]);(round != 0)

{[3] = temp[0];[7] = temp[1];

}

{.Copy(temp, 0, b, 6, 2);

}b;

}byte[] execIPHTStage(byte[] x, int round)

{[] b = new byte[8];[] temp = new byte[2];= this.IPHT(x[0], x[1]);(round != 0)

{[0] = temp[0];[2] = temp[1];

}.Copy(temp, 0, b, 0, 2);= this.IPHT(x[2], x[3]);(round != 0)

{[4] = temp[0];[6] = temp[1];

}.Copy(temp, 0, b, 2, 2);= this.IPHT(x[4], x[5]);(round != 0)

{[1] = temp[0];[3] = temp[1];

}.Copy(temp, 0, b, 4, 2);= this.IPHT(x[6], x[7]);(round != 0)

{[5] = temp[0];[7] = temp[1];

}.Copy(temp, 0, b, 6, 2);b;

}

// шифрование SAFER K-64byte[] encrypt()

{sourceLength = this.GetTextBlockLength(this.Text);[] key = Encoding.Default.GetBytes( this.Key );[] bigKey;[] bigKey2;[] sourceBlock = new byte[8];[] result = new byte[sourceLength * 8];(int round = 0; round < this.Round; round++)

{r = 0;(int i = 0; i < sourceLength; i++)

{= this.GetTextBlock8Byte(this.Text, i);

// улучшение ключа шифрования= this.GetKey(2 * (i + 1) - 1, key);= this.GetKey(2 * (i + 1), key);(int j = 0; j < sourceBlock.Length; j++)

{(j + 1)

{1:4:5:8:[r] = this.XOR(sourceBlock[j], bigKey[j]);[r] = this.E(result[r]);[r] = this.Mod256(result[r], bigKey2[j]);;:[r] = this.Mod256(sourceBlock[j], bigKey[j]);[r] = this.L(result[r]);[r] = this.XOR(result[r], bigKey2[j]);;

}++;

}[] temp = new byte[8];.Copy(result, r - 8, temp, 0, 8);= this.execPHTStage(temp, 1);= this.execPHTStage(temp, 2);= this.execPHTStage(temp, 0);.Copy(temp, 0, result, r - 8, 8);

}

}result;

}

// дешифрование SAFER K-64byte[] decrypt()

{sourceLength = this.GetTextBlockLength(this.Text);[] key = Encoding.Default.GetBytes(this.Key);[] bigKey;[] bigKey2;[] sourceBlock = new byte[8];[] result = new byte[sourceLength * 8];(int round = 0; round < this.Round; round++)

{r = 0;(int i = 0; i < sourceLength; i++)

{= this.GetTextBlock8Byte(this.Text, i);[] temp = new byte[8];.Copy(sourceBlock, 0, temp, 0, 8);= this.execIPHTStage(sourceBlock, 1);= this.execIPHTStage(temp, 2);= this.execIPHTStage(temp, 0);.Copy(temp, 0, result, r, 8);= this.GetKey(2 * (i + 1) - 1, key);= this.GetKey(2 * (i + 1), key);(int j = 0; j < sourceBlock.Length; j++)

{(j + 1)

{1:4:5:8:[r] = this.DiffMod256(result[r], bigKey2[j]);[r] = this.L(result[r]);[r] = this.XOR(result[r], bigKey[j]);;:[r] = this.XOR(result[r], bigKey2[j]);[r] = this.E(result[r]);[r] = this.DiffMod256(result[r], bigKey[j]);;

}++;

}

}

}result;

}

}

}System;System.Collections.Generic;System.Windows.Forms;WindowsApplication1

{class Program

{

/// <summary>

/// Главная входная точка для приложения

/// </summary>

[STAThread]void Main()

{.EnableVisualStyles();.SetCompatibleTextRenderingDefault(false);.Run(new Form1());

}

}

}


Некоммерческое акционерное общество «АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ» Кафедра "Компьютерных технологий"

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ