Главная              Рефераты - Информатика

Защита информационной системы криптографическими алгоритмами - дипломная работа

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Кабардино-Балкарский государственный

университет им. Х.М. Бербекова»

ФАКУЛЬТЕТ ИНФОРМАТИКИ И УПРАЛЕНИЯ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ

ОБРАБОТКИ ИНФОРМАЦИИ

Тарчоков Исмаил Святославович

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

«Защита информационной системы криптографическими алгоритмами»

Руководитель ВКР:

Ассистент кафедры АСОИ Атаев З.З.

Рецензент:

доцент кафедры АИТ, к. т. н. Алоев А.Б.

Допущен к защите

Зав. кафедры АСОИ

доцент, к.т.н. Тлостанов Ю.К.

Нальчик 2006 г.


Состав и содержание технического задания:

1. Основание для выполнения: приказ № 57/О от 27.02.2006.

2. Сроки выполнения ВКР: 16.02.2006-23.06.2006.

3. Цель выполнения ВКР: Целью дипломного проекта является разработка подсистемы криптографической защиты экономической информации в рамках ЭИС ООО «Транспортник». В качестве объекта автоматизации выбран бухгалтерский отдел автотранспортного предприятия.

4. Назначение ВКР:

· Провести анализ деятельности предприятия

· Разработать криптографическую программу

· Рассчитать экономическую эффективность проекта

· Определить требования к безопасности и экологичности проекта

5. Требования к ВКР:

5.1.Требования к функциям системы:

· Прием заказа, его оформление, обработка информации по всем видам услуг и формирование выходных форм в соответствии с заказом клиента;

· Обработка информации по клиентам;

· Обработка отчетно-финансовой информации предприятия за отчетные периоды;

· Защита информации от несанкционированного доступа и администрирование системы.

5.2.Требования к ВКР по видам обеспечения:

5.2.1.Требования к минимальной аппаратной конфигурации:

· Процессор 900 Mhz;

· Память 256 Mb;

· Дисковое пространство 20 Gb;

· Видеоадаптер 32 Mb;

· Модем 56 Kbps.

5.2.2. Требования к программным средствам:

· ОС MS Windows 2000/XP/2003

· MS Office 2000/XP/2003

· MS SQL Server 2000/2005

· Borland C++ Builder 6.0

· Total commander/Far manager

6. Состав и содержание ВКР

6.1. Техническое проектирование:

· Функциональная модель криптографической защиты;

· Классификация криптоалгоритмов;

· Реализация клиентской части;

· Администрирование и защита данных в SQLServer.

6.2. Рабочее проектирование в соответствии с требованиями на разработку;

6.3. Отладка и тестирование системы;

6.4. Разработка сопроводительной документации.

7. Оформление ВКР

7.1. Оформление пояснительной записки ВКР, в соответствии с методическими указаниями на дипломное проектирование;

7.2. Оформление графической части ВКР в соответствии с методическими указаниями на «Дипломное проектирование»;

7.3. Оформление сопроводительной документации к ВКР (отзыв, рецензия, допуск к защите, соответствующие подписи).


АННОТАЦИЯ

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

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

В первой главе описываются современные технологии и модели баз данных, а также принципы распределенной обработки в современных СУБД. Дается характеристика одной из самых распространенных СУБД – MicrosoftSQLServer, перечисляются преимущества использования интерфейса прикладного программирования (API) для доступа к базам данных. Текст сопровождается подробными пояснениями и схемами.

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

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

Приложение включает листинг программных модулей.


Содержание

Введение

1 Общесистемная часть

1.1 Характеристика предприятия

1.2 Организационная структура предприятия

1.3 Документооборот предприятия

1.4 Технико-экономические показатели работы предприятия

1.6 Использование информационных технологий

1.7 Обоснование необходимости защиты информации

1.8 Информационная модель

2. Проектная часть

2.1 Функциональная модель криптографической защиты

2.2 Классификация криптоалгоритмов

2.3 Разработка криптографической программы RCRYPTO

2.4 Описание программы RCRYPTO

2.5 Блок-схема алгоритма

2.6 Математическая модель программы RCRYPTO

3 Расчет экономической эффективности проекта

4 Безопасность и экологичность проекта

4.1 Классификация вредных факторов

4.2 Эргономика

4.3 Обеспечение оптимальной освещенности

Заключение

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

Приложение А

Приложение Б

Приложение В

Приложение Г

Приложение Д


Введение

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

Целью дипломного проекта является разработка подсистемы криптографической защиты экономической информации в рамках ЭИС ООО «Транспортник». В качестве объекта автоматизации выбран бухгалтерский отдел автотранспортного предприятия.

Для достижения цели необходимо решить следующие задачи:

– Провести анализ деятельности предприятия

– Разработать криптографическую программу

– Рассчитать экономическую эффективность проекта

– Определить требования к безопасности и экологичности проекта

В общесистемной части дипломного проекта проводится анализ деятельности предприятия:

– Исследуется организационная структура предприятия

– Изучается документооборот предприятия

– Рассматриваются технико-экономические показатели

– Разрабатывается функциональная модель

– Описываются используемые на предприятии информационные технологии

– Обосновывается необходимость защиты информации

В проектной части дипломного проекта описывается разработка криптографической программы RCRYPTO. RCRYPTO – это криптографическая программа, предназначенная для шифрования файлов всех типов.

Программа RCRYPTO выполняет следующие функции:

– Шифрование файлов,

– Сжатие файлов,

– Добавление электронной цифровой подписи,

– Расшифровка зашифрованных файлов,

– Усиление защищенности данных,

– Облегчение работы с криптоалгоритмом со стороны человека,

– Обеспечение совместимости потока данных с другим программным обеспечением.

В качестве основного средства для разработки программного обеспечения была выбрана среда визуального программирования C++ BUILDER 6, поддерживающая технологию объектно-ориентированного программирования.

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

В четвертой части дипломного проекта определяются требования к организации рабочего места программиста, производится расчет производственного освещения .

1. Общесистемная часть

1.1 Характеристика предприятия

Общество с ограниченной ответственностью «Транспортник», образовано в результате учреждения. Действует на основании Устава и законодательства Российской Федерации. Учредителями общества и его участниками являются юридические и физические лица. Целью общества является извлечение прибыли. Общество имеет гражданские права и исполняет гражданские обязанности, необходимые для осуществления деятельности, не запрещенной законом. Для осуществления основного вида деятельности обществу необходимо иметь специальное разрешение (лицензию). Общество в течение срока действия специального разрешения (лицензии) вправе осуществлять только виды деятельности, предусмотренные специальным разрешением (лицензией), и сопутствующие виды деятельности. Общества с ограниченной ответственностью – это самая распространенная форма предпринимательской деятельности. Связано это обстоятельство с главной особенностью присущей всем обществам: ограниченностью ответственности учредителей по обязательствам фирмы пределами вклада в уставный фонд. Если фирма не может выполнить свои обязательства перед контрагентами, то учредители не отвечают своим личным имуществом по обязательствам (долгам) предприятия. Мера имущественной ответственности ограничивается тем имуществом, которым обладает само предприятие. В свою очередь общество не несет ответственности по обязательствам своих участников. Участниками общества могут быть как физические, так и юридические лица. Закон ограничивает число участников такой структуры. Если число учредителей превысит 50, то оно должно быть преобразовано в акционерное общество. Высшим органом власти является общее собрание учредителей. Собрание принимает все принципиальные решения по вопросам деятельности фирмы. Общество может создавать филиалы и представительства.

Преимущества этой организационно-правовой формы:

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

– Каждый участник имеет возможность контролировать деятельность общества;

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

Недостатки:

– Все изменения в уставе требуют перерегистрации;

– Изменения состава участников требует перерегистрации;

– Перераспределение долей уставного капитала между учредителями требует перерегистрации.

Основными видами деятельности общества являются:

– Оказание автотранспортных услуг;

– Ремонт и техническое обслуживание автотранспортных средств и дорожно-строительной техники;

– Оказание тракторных услуг;

– Ремонт и техническое обслуживание тракторных средств;

– Ремонт и эксплуатация легкового транспорта и автобусов;

– Изготовление и реализация продукции производственного и непроизводственного характера и др.

Общество является юридическим лицом по законодательству Российской Федерации и имеет в собственности обособленное имущество, учитываемое на самостоятельном балансе. Общество имеет печать, содержащую название общества, адрес, идентификационный номер. Реализация продукции, выполнение услуг осуществляется по ценам и тарифам, установленным обществом самостоятельно, кроме случаев, предусмотренных законодательством. Общество может от своего имени приобретать и осуществлять имущественные и личные имущественные права, исполнять обязанности, быть истцом и ответчиком в суде. Общество в процессе своей деятельности ведет работу по учёту и бронированию военнообязанных в соответствии с требованиями законодательства Российской Федерации. Персональная ответственность за проведение этой работы возлагается на исполнительного директора. Общество несет ответственность по своим обязательствам всем принадлежащим ему имуществом. Общество не отвечает по обязательствам своих участников. Участники общества не отвечают по его обязательствам и несут риск убытков, связанных с деятельностью общества, в пределах стоимости внесенного ими вклада. Внешними органами, контролирующими различные стороны деятельности ООО «Транспортник» являются: налоговая инспекция, внебюджетные фонды (пенсионный фонд, фонд медицинского страхования, фонд социального страхования), банк.

1.2 Организационная структура предприятия

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

Организационное проектирование включает следующие этапы:

– Деление организации по горизонтали на блоки, соответствующие важнейшим направлениям деятельности.

– Установление соотношения полномочий различных должностей, установление цепей команд, дальнейшее их деление на более мелкие подразделения.

– Определение должностных обязанностей

Департаментализация – это процесс деления организации на отдельные блоки, которые могут называться отделами, отделениями или секторами. При департаментализации особую значимость приобретает вопрос о том, как разделить деятельность сотрудников организации по горизонтали и вертикали (по горизонтали – какие задачи должна решать каждая структурная единица; по вертикали – на какой ступени иерархической структуры должны приниматься важнейшие решения). Каждый должен иметь такой объем полномочий, который необходим для решения поставленных перед ним задач. Организационная структура ООО «Транспортник» является централизованной, то есть руководство оставляет за собой большую часть полномочий для принятия важных решений.

Служба эксплуатации автотранспорта выполняет следующие функции:

– Составляет разнарядку на подачу автотранспорта,

– Обеспечивает ритмичную работу транспорта на линии,

– Обеспечивает правильное и своевременное оформление всей эксплуатационной документации,

– Осуществляет контроль выхода транспортных средств на линию согласно путевым листам,

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

– Составляет рациональные маршруты грузоперевозок.

Плановый отдел выполняет следующие функции:

– Занимается составлением сводной производственной программы автотранспортного предприятия,

– Занимается составлением штатного расписания,

– Нормирование материальных и трудовых затрат,

– Рассчитывает калькуляцию стоимости автотранспортных услуг,

– Заключает договора на перевозку грузов с другими организациями.

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

Организационная структура ООО «Транспортник» представлена на рисунке 1.1.

Рисунок 1.1 Организационная структура ООО «Транспортник»

1.3 Документооборот предприятия

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

Бухгалтерский отдел состоит из четырех человек:

– Бухгалтер по расчетам с поставщиками и заказчиками,

– Бухгалтер материального стола,

– Расчетчик,

– Главный бухгалтер.

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

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

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

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

– Сводная расчетная ведомость, которая составляется расчетчиком, и отражает все затраты на заработную плату.

Документооборот ООО «Транспортник» представлен на рисунке 1.2.


Рисунок 1.2. Документооборот ООО «Транспортник»

1.4 Технико-экономические показатели работы предприятия

Предприятие организует реализацию товаров и услуг с целью удовлетворения потребностей рынка и получения прибыли. Это становится реальным тогда, когда предприятие располагает возможностью систематически корректировать свои на­учно-технические, производственные и сбытовые планы в соответствии с изменениями рыночной конъюнктуры, маневрировать собственными материальными и интеллектуальными ресурсами. Данная возможность основывается на точных, своевременных и экономически обоснованных расчетах технико-экономических показателей работы предприятия. При проведении расчетов необходимы прикладные и фундаментальные исследования, применение информационных технологий. Все это позволяет предприятию хорошо ориентироваться в ходе и перспективах технико-экономического развития производства. Технико-экономические показатели ООО «Транспортник» представлены в таблице 1.1.

Таблица 1.1 Основные технико-экономические показатели

Показатели Единица измерения Базисный период 2003 г. Отчетный период 2004 г. Отклонение Отчетный период в % к базисному
1 2 3 4 5 6
Выручка от реализации тыс. руб. 12592 12986 394 103,13
Себестоимость автотранспортных услуг тыс. руб. 4800 4868 68 101,42
Прибыль (убытки) отчетного года тыс. руб. 7013 7306 293 104,18
Среднесписочная численность, в том числе: чел. 101 101 0 100,00
рабочих чел. 81 81 0 100,00
специалистов чел. 20 20 0 100,00
Фонд оплаты труда, в том числе тыс. руб. 1760,8 1901,8 141 108,01
рабочих тыс. руб. 1206,6 1301,6 95 107,87
специалистов тыс. руб. 554,2 600,2 46 108,30
Показатели Единица измерения Базисный период 2003 г. Отчетный период 2004 г. Отклонение Отчетный период в % к базисному
Среднемесячная заработная плата, в том числе: тыс. руб. 2,74 2,99 0,25 109,12
на одного рабочего тыс. руб. 1,55 1,64 0,09 105,81
на одного специалиста тыс. руб. 4,54 5 0,46 110,13
Наличие подвижного состава, в том числе: един. 174 174 0 100,00
грузовые автомобили един. 120 120 0 100,00
специальные един. 13 13 0 100,00
автобусы и м/а един. 17 17 0 100,00
легковые автомобили един. 5 5 0 100,00
тракторы-бульдозеры един. 19 19 0 100,00

1.5 Функциональная модель ведения бухгалтерского учета

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

В качестве инструмента для построения функциональной модели было выбрано CASE-средство фирмы ComputerAssociates – BPwin, поддерживающее методологию IDEF0, и входящее в число лучших на сегодняшний день. Язык моделирования бизнес-процессов IDEF0 был предложен более 20 лет назад Дугласом Россом и назывался первоначально SADT (Structured Analysis and Design Technique - Методология Структурного Анализа и Проектирования). Основу методологии IDEF0 составляет графический язык описания бизнес-процессов. Модель в нотации IDEF0 представляет собой совокупность иерархически упорядоченных и взаимосвязанных диаграмм. Каждая диаграмма является единицей описания системы и располагается на отдельном листе. Процесс моделирования какой-либо системы в IDEF0 начинается с определения контекста, то есть наиболее абстрактного уровня описания системы в целом. В контекст входит определение цели и точки зрения на модель. Контекстная диаграмма является вершиной древовидной структуры диаграмм и представляет собой самое общее описание системы и ее взаимодействия с внешней средой. После описания системы в целом проводится ее разбиение на крупные фрагменты. Этот процесс называется функциональной декомпозицией, а диаграммы, которые описывают каждый фрагмент и взаимодействие фрагментов, называются диаграммами декомпозиции. После декомпозиции контекстной диаграммы проводится декомпозиция каждого большого фрагмента системы на более мелкие и так далее, до достижения нужной степени детализации. Диаграммы – главные компоненты модели. На диаграммах все функции производственной системы и интерфейсы представлены как блоки и стрелки. Блоки (работы) обозначают поименованные процессы, функции или задачи, которые происходят в течение определенного времени и имеют распознаваемые результаты. Все блоки модели нумеруются. Номер состоит из префикса и числа. Контекстная диаграмма дерева имеет номер А0. Декомпозицией контекстной диаграммы являются диаграммы А1, А2, А3 и т.д. Номера блоков нижнего уровня декомпозиции имеют номер родительской диаграммы и очередной порядковый номер, например декомпозицией блока А3 будут блоки с номерами А31, А32, А33 и т.д. Таким образом, образуется иерархия, где каждый подфункций имеет родительский процесс и несколько дочерних подфункций, образуя дерево. Взаимодействие блоков между собой и с внешним миром описывается в виде стрелок. Различается четыре типа стрелок – стрелка входа, стрелка выхода, стрелка управления и стрелка механизма. Каждый тип стрелок подходит к определенной стороне прямоугольника, изображающего работу, или выходит из нее (Рисунок 1.3).

Рисунок 1.3 Представление системы по методологии IDEF

Стрелки, входящие в блок с левой стороны, стрелки входа, показывают все данные, которые необходимы для выполнения функции. Допускается, что функция может не иметь ни одной стрелки входа. Результатом выполнения функции являются стрелки выхода. Каждая функция должна иметь хотя бы одну стрелку выхода. Стрелка выхода рисуется как исходящая из правой грани работы. Стрелки управления регулируют выполнение функций. Это могут быть правила, стратегии, процедуры или стандарты, которыми руководствуется функция. Каждый блок должен иметь хотя бы одну стрелку управления. Стрелка управления рисуется как входящая в верхнюю грань блока. Управление влияет на выполнение функции, но не преобразуется ею. Механизмы – стрелки, входящие в нижнюю грань блока, показывают средства, с помощью которых осуществляется выполнение функции. "Механизм" может быть человеком, компьютером, машиной или любым другим устройством, которое помогает выполнять данную функцию. Сам функциональный блок с его входами, управлениями и выходами показывает, что делает система. Механизм определяет, каким образом эта функция выполняется.

В основе методологии IDEF0 лежат следующие правила:

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

2. С дугами связаны надписи (или метки) на естественном языке, описывающие данные, которые они представляют. Дуги показывают, как функции между собой взаимосвязаны, как они обмениваются данными и осуществляют управление друг другом. Выходы одной функции могут быть входами, управлением или исполнителями для другой. Дуги могут разветвляться и соединяться.

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

1.6 Использование информационных технологий

На предприятии ООО «Транспортник» используется ЭИС «1С: Предприятие». ЭИС 1С: Предприятие предоставляет широкие возможности ведения автоматизированного учета на предприятиях, в организациях и учреждениях, независимо от их вида деятельности и формы собственности, с различным уровнем сложности учета. 1С: Предприятие позволяет организовать эффективный бухгалтерский, кадровый, оперативный торговый, складской и производственный учет, а также расчет заработной платы. В бухгалтерском отделе используется программа 1С: Бухгалтерия. 1С: Бухгалтерия – это универсальная программа массового назначения для автоматизации бухгалтерского учета. Она может использоваться на предприятиях разных направлений деятельности и форм собственности. 1С: Бухгалтерия предоставляет бухгалтеру гибкие возможности учета:

– Произвольная структура кода счета дает возможность использовать длинные коды счетов (субсчетов) и вести многоуровневые планы счетов с большим уровнем вложенности;

– Возможность работы с несколькими планами счетов позволяет вести учет в нескольких системах учета (например, российской и GAAP);

– 1С: Бухгалтерия содержит встроенные механизмы ведения количественного и валютного учета;

– На любом счете можно вести многомерный (до 5-ти разных разрезов) и многоуровневый (до 10-ти уровней вложенности) аналитический учет;

– 1С: Бухгалтерия поддерживает ведение консолидированного учета, поэтому может применяться в централизованных бухгалтериях.

Программа позволяет автоматизировать ведение всех разделов бухгалтерского учета:

– Операции по банку и кассе,

– Основные средства и нематериальные активы,

– Материалы,

– Товары и услуги, выполнение работ,

– Учет производства продукции,

– Учет валютных операций,

– Взаиморасчеты с организациями,

– Расчеты с подотчетными лицами,

– Начисление зарплаты,

– Расчет НДФЛ и ЕСН,

– Расчеты с бюджетом и другие.

Типовая конфигурация 1С: Бухгалтерии соответствует принятой методологии бухгалтерского учета в хозрасчетных организациях и позволяет вести налоговый учет в соответствии с требованиями главы 25 НК РФ. Предусмотрен как ручной ввод операций, так и работа «от документа» с автоматическим формированием проводок по различным разделам учета. В комплект поставки включено более 30 форм отчетности в налоговые органы, внебюджетные фонды и органы статистики. Программа поставляется с типовой конфигурацией, предназначенной для учета в хозрасчетных организациях. 1С: Бухгалтерия может также использоваться с другими (специально созданными) конфигурациями, учитывающими различные особенности учета.

В комплект поставки входит ряд средств, облегчающих самостоятельное освоение программы:

– Путеводитель по конфигурации,

– Пособие "Введение в конфигурирование",

– Руководство по ведению налогового учета и многое другое.

1С: Бухгалтерия представляет собой 1С: Предприятие с компонентой "Бухгалтерский учет" и типовой конфигурацией. Компонента "Бухгалтерский учет" может быть использована для реализации любой схемы бухгалтерского учета.

Бухгалтерский отдел состоит из четырех человек:

1. Бухгалтер по расчетам с поставщиками и заказчиками

2. Бухгалтер материального стола

3. Расчетчик

4. Главный бухгалтер

Автоматизированное рабочее место каждого из них включает в себя персональный компьютер. Все компьютеры объединены в локальную сеть. Локальная вычислительная сеть представляет собой систему распределенной обработки информации, охватывающей территорию автотранспортного предприятия. При помощи общего канала связи локальная вычислительная сеть объединяет все абонентские узлы предприятия, включающие персональные компьютеры, внешние запоминающие устройства, дисплеи, печатающие и копирующие устройства, сканеры. Важнейшей характеристикой ЛВС является скорость передачи информации. В идеале при посылке и получении данных через сеть время отклика должно быть почти таким же, как если бы они были получены от ПК пользователя, а не из некоторого места вне сети. Это требует скорости передачи данных от 1 до 10 Мбит/с. ЛВС должна не только быстро передавать информацию, но и легко адаптироваться к новым условиям, иметь гибкую архитектуру, которая позволяла бы располагать АРМ там, где это потребуется. У пользователя должна быть возможность добавлять и перемещать рабочие места или другие устройства сети, а также отключать их в случае надобности без прерывания работы в сети. ЛВС подсистемы ЭИС ООО «Транспортник» выполняет различные функции по передаче данных, включая пересылку данных, обмен с внешними запоминающими устройствами, доступ к файлам и базам данных, обработку сообщений. ЛВС допускает подключение большого набора стандартных и специальных средств: ЭВМ, терминалов, устройств внешней памяти, принтеров, плоттеров, контрольного и управляющего оборудования, аппаратуры подключения к другим сетям. ЛВС должна доставлять данные с высокой степенью надежности, допускать простое подключение новых устройств и отключение старых без нарушения работы сети длительностью не более 1 секунды. Под топологией сети понимают конфигурацию физических соединений компонентов ЛВС (файловый сервер, рабочие станции). Тип топологии определяет производительность и надежность в эксплуатации сети PC, для которых имеет значение также время обращения к ФС. В ЛВС ООО «Транспортник» используется топология «Звезда». Топология сети влияет на такие показатели, как надежность, расширяемость (наращиваемость), стоимость, задержка и пропускная способность. Задержка сети - это время передачи информационных сообщений между абонентами, т.е. время между выдачей сообщения из абонента-источника и его приемом абонентом-получателем (адресатом). Пропускная способность - это максимальное число битов абонентских сообщений, которые могут передаваться через сеть в единицу времени. В качестве линии связи выступает коаксиальный кабель. Коаксиальный кабель обладает широкой полосой рабочих частот. Это означает, что он может переносить множество потоков данных, что и является основным его преимуществом. Таким образом, с помощью коаксиального кабеля можно создавать высокоскоростные ЛВС. Другими преимуществами коаксиального кабеля являются его относительно высокая помехоустойчивость, способность переносить сигналы на значительные расстояния, а также то, что он используется чаще других. Существует несколько размеров коаксиальных кабелей. Стандартный кабель Ethernet, называемый "толстым" кабелем, имеет толщину, равную приблизительно 12 мм. "Толстый" кабель более помехоустойчив, менее подвержен повреждениям, он обеспечивает передачу данных на более дальние расстояния, однако его сложнее подсоединить к устройствам. Коаксиальный кабель имеет среднюю цену, применяется для связи на большие расстояния (несколько километров) для передачи основной и широкополосной информации. Скорость передачи информации от 1 до 10 Мбит/с, а в некоторых случаях может достигать 50 Мбит/с. В данном случае это выгодно с экономической точки зрения, если учесть, что данная ЛВС расположена только на территории предприятия.

1.7 Обоснование необходимости защиты информации

Атака на информацию – это умышленное нарушение правил работы с информацией. Атаки на информацию могут принести предприятию огромные убытки. В последнее время сообщения об атаках на информацию, о хакерах и компьютерных взломах наполнили все средства массовой информации. Дать определение атаке на информацию на самом деле очень сложно, поскольку информация, особенно в электронном виде, представлена сотнями различных видов. Информацией можно считать и отдельный файл, и базу данных, и одну запись в ней, и целиком программный комплекс. И все эти объекты могут подвергнуться и подвергаются атакам со стороны некоторой социальной группы лиц. При хранении, поддержании и предоставлении доступа к любому информационному объекту его владелец, либо уполномоченное им лицо, накладывает явно либо самоочевидно набор правил по работе с ней. Умышленное их нарушение классифицируется как атака на информацию. С массовым внедрением компьютеров во все сферы деятельности человека объем информации, хранимой в электронном виде, вырос в тысячи раз. И теперь скопировать за полминуты и унести дискету с файлом, содержащим, например, план оказания автотранспортных услуг, намного проще, чем копировать или переписывать кипу бумаг. А с появлением компьютерных сетей даже отсутствие физического доступа к компьютеру перестало быть гарантией сохранности информации. Возможные последствия атак на информацию:

– Экономические потери – раскрытие коммерческой информации может привести к серьезным прямым убыткам на рынке,

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

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

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

Естественно, компьютерные атаки могут принести и огромный моральный ущерб. Понятие конфиденциального общения давно уже стало "притчей во языцех". Само собой разумеется, что никакому пользователю компьютерной сети не хочется, чтобы его письма кроме адресата получали еще 5-10 человек. А именно так и происходит в тысячах и десятках тысяч случаев. Умышленные действия человека являются основной причиной повреждений электронной информации, и составляют 10% всех случаев. То есть, каждый десятый случай повреждения электронных данных связан с компьютерными атаками. Добравшись до информации, злоумышленники предпринимают следующие действия: в 16% случаев – производилась кража информации с различными последствиями, в 12% случаев информация была сфальсифицирована. В тех случаях, когда идет речь о безопасности, в отношении информации и информационно-вычислительных систем применяются общепринятые термины о свойствах этих объектов – категории.

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

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

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

– Аутентичность – гарантия того, что источником информации является именно то лицо, которое заявлено как ее автор; нарушение этой категории также называется фальсификацией, но уже автора сообщения.

На сегодняшний день не существует разумных по критерию "цена/надежность" носителей информации, не доступных к взлому. Строение файлов, их заголовки и расположение в любой операционной системе может быть прочитано при использовании соответствующего программного обеспечения. Для бизнес-класса и частной переписки данная проблема решается гораздо проще и дешевле – с помощью криптографии. Любой объем информации от байта до гигабайта, будучи зашифрован с помощью более или менее стойкой криптосистемы, недоступен для прочтения без знания ключа. И уже совершенно не важно, хранится он на жестком диске, на дискете или компакт-диске, не важно под управлением какой операционной системы. Против самых новейших технологий и миллионных расходов здесь стоит математика, и этот барьер до сих пор невозможно преодолеть.

1.8 Информационная модель

Информационная модель описывает представления данных в системе и их взаимосвязь. В качестве инструмента для построения функциональной модели было выбрано CASE-средство фирмы ComputerAssociates – ERwin, поддерживающее методологию IDEF1X. Методология IDEF1X – один из подходов к семантическому моделированию данных, который основан на концепции Сущность – Отношение (Entity– Relationship). Это инструмент для анализа информационной структуры систем различной природы. Сущность представляет множество реальных или абстрактных предметов (людей, объектов, мест, событий, состояний, идей, пар предметов и т.д.), обладающих общими атрибутами или характеристиками. Отдельный элемент этого множества называется "экземпляром сущности". Сущность обладает одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через отношение. Атрибуты однозначно идентифицируют каждый экземпляр сущности. Каждый атрибут идентифицируется уникальным именем. Атрибуты изображаются в виде списка их имен внутри блока ассоциированной сущности, причем каждый атрибут занимает отдельную строку. Определяющие первичный ключ атрибуты размещаются наверху списка и отделяются от других атрибутов горизонтальной чертой. Атрибут может быть формально определен как функция, отображающая набор сущностей, или набор связей, или набор значений, или декартово произведение набора значений. Каждая сущность может обладать любым количеством отношений с другими сущностями модели. Отношению дается имя, выражаемое грамматическим оборотом глагола. Имя отношения всегда формируется с точки зрения родителя, так что может быть образовано предложение, если соединить имя сущности-родителя, имя отношения, выражение мощности и имя сущности-потомка. Пример IDEF1X-модели показан на рисунке 1.4.


Рисунок 1.4 Пример IDEF1X-модели

Информационная модель, построенная с помощью IDEF1X-методологии, представляет логическую структуру информации об объектах системы. Эта информация является необходимым дополнением функциональной IDEF0-модели, детализируя объекты, которыми манипулируют функции системы. Таким образом, использование методологии IDEF1X позволяет строить информационные модели, описывающие взаимоотношения между объектами и процессами внутри системы. На информационной модели они отображаются в виде сущностей и соответствующих атрибутов и взаимоотношений между ними. В информационной модели представлены основные участвующие в рассматриваемом процессе документы в виде сущностей и атрибутов. Также в информационной модели показаны как связи сущностей между собой, так и использование информации, содержащейся в одних сущностях, при формировании других.

2. Проектная часть

2.1 Функциональная модель криптографической защиты

После внедрения подсистемы криптографической защиты информации в функциональной модели ведения бухгалтерского учета произойдут небольшие изменения. Эти изменения связаны только с тем, что документы, полученные в результате обработки, будут зашифровываться при помощи криптографической программы. Например, диаграмма А4 «Осуществить свод финансовых результатов деятельности предприятия» после внедрения подсистемы криптографической защиты информации будет выглядеть так, как показано на рисунке 2.1.

Рисунок 2.1 Диаграмма А4 «Осуществить свод финансовых результатов деятельности предприятия»


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

2.2 Классификация криптоалгоритмов

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

В зависимости от наличия либо отсутствия ключа, кодирующие алгоритмы делятся на тайнопись и криптографию. В зависимости от соответствия ключей шифрования и дешифрования – на симметричные и асимметричные. В зависимости от типа используемых преобразований – на подстановочные и перестановочные. В зависимости от размера шифруемого блока – на потоковые и блочные шифры. Сама криптография не является высшей ступенью классификации смежных с ней дисциплин. Наоборот, криптография совместно с криптоанализом (целью которого является противостояние методам криптографии) составляют комплексную науку – криптологию. В русскоязычных текстах по данному предмету встречаются различные употребления основных терминов, таких как "криптография", "тайнопись" и некоторых других. Более того, и по классификации криптоалгоритмов можно встретить различные мнения. В отношении криптоалгоритмов существует несколько схем классификации, каждая из которых основана на группе характерных признаков. Таким образом, один и тот же алгоритм "проходит" сразу по нескольким схемам, оказываясь в каждой из них в какой-либо из подгрупп.

Основной схемой классификации всех криптоалгоритмов является следующая:

1. Тайнопись.

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

2. Криптография с ключом.

Алгоритм воздействия на передаваемые данные известен всем сторонним лицам, но он зависит от некоторого параметра – "ключа", которым обладают только отправитель и получатель.

– Симметричные криптоалгоритмы.

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

Любой криптоалгоритм с ключом можно превратить в тайнопись, просто "зашив" в исходном коде программы некоторый фиксированный ключ.

– Асимметричные криптоалгоритмы.

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

В зависимости от характера воздействий, производимых над данными, алгоритмы подразделяются на:

– Перестановочные.

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

– Подстановочные.

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

В зависимости от размера блока информации криптоалгоритмы делятся на:

– Потоковые шифры.

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

– Блочные шифры

Единицей кодирования является блок из нескольких байтов. Результат кодирования зависит от всех исходных байтов этого блока.
Блочные шифры шифруют целые блоки информации как единое целое – это значительно увеличивает стойкость преобразований к атаке полным перебором и позволяет использовать различные математические и алгоритмические преобразования.

На сегодняшний день разработано достаточно много стойких блочных шифров. Практически все алгоритмы используют для преобразований определенный набор биективных (обратимых) математических преобразований Характерной особенностью блочных криптоалгоритмов является тот факт, что в ходе своей работы они производят преобразование блока входной информации фиксированной длины и получают результирующий блок того же объема, но недоступный для прочтения сторонним лицам, не владеющим ключом. Таким образом, схему работы блочного шифра можно описать функциями Z=EnCrypt(X,Key) и X=DeCrypt(Z,Key) Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Исходный (X) и зашифрованный (Z) блоки данных также имеют фиксированную разрядность, равную между собой, но необязательно равную длине ключа. Блочные шифры являются основой, на которой реализованы практически все криптосистемы. Методика создания цепочек байт, зашифрованных блочными алгоритмами, позволяет шифровать пакеты информации неограниченной длины. Криптоалгоритм разрабатываемой программы является блочным шифром.

2.3 Разработка криптографической программы RCRYPTO

В качестве основного средства для разработки программного обеспечения была выбрана среда визуального программирования C++ BUILDER 6.

C++ BUILDER 6 – это комбинация нескольких важнейших технологий:

– Высокопроизводительный компилятор в машинный код;

– Объектно-ориентированная модель компонент;

– Визуальное (а, следовательно, и скоростное) построение приложений.

Компилятор, встроенный в C++ BUILDER 6, обеспечивает высокую производительность, необходимую для построения приложений. Этот компилятор в настоящее время является самым быстрым в мире. Он предлагает легкость разработки и быстрое время проверки готового программного блока, и в то же время обеспечивает качество кода. Кроме того, C++ BUILDER 6 обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно). В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в C++ BUILDER 6 мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10 - 20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь. В C++ BUILDER 6 компиляция производится непосредственно в родной машинный код. В то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения. Объектно-ориентированная модель программных компонент заключается в максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды C++ BUILDER 6. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в C++ BUILDER 6 написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми BORLAND или третьими фирмами, и объектами, которые вы можете создать. В стандартную поставку C++ BUILDER 6 входят основные объекты, которые образуют удачно подобранную иерархию.

Требования к разрабатываемой программе:

1. Удобный графический пользовательский интерфейс (GUI)

2. Простота в обращении

3. Обеспечение шифрования всех типов файлов

4. Надежность функционирования

5. Невысокая стоимость

6. Способность к изменению и дополнению

7. Наличие справочной системы

2.4 Описание программы R CRYPTO

R CRYPTO – это криптографическая программа, предназначенная для шифрования файлов всех типов. «Сердцем» криптографической программы является криптоалгоритм. Разработанная криптографическая программа является завершенной комплексной моделью, способной производить двусторонние криптопреобразования над данными произвольного объема.

Программа R CRYPTO выполняет следующие функции:

– Шифрование файлов,

– Сжатие файлов,

– Добавление электронной цифровой подписи,

– Расшифровка зашифрованных файлов,

– Усиление защищенности данных,

– Облегчение работы с криптоалгоритмом со стороны человека,

– Обеспечение совместимости потока данных с другим программным обеспечением.

Программа R CRYPTO имеет два вида интерфейса: Классический вид и Интерфейс R CRYPTO. При первом запуске программы появляется окно с предложением выбора вида интерфейса. При первом использовании программы рекомендуется выбирать Классический вид, так как он наиболее приближен к стандартному интерфейсу программ под WINDOWS. В процессе работы программы вид интерфейса можно сменить в любой момент. Шифрование файлов осуществляется по оригинальному алгоритму с использованием симметричного ключа, который формируется на основании пароля, введенного пользователем. Минимальная длина пароля – 10 символов. В результате хеширования пароля ключ достигает необходимой длины. Алгоритм шифрования является блочным шифром, то есть информация шифруется блоками определенной длины (255 байт). Шифрование каждого последующего блока данных зависит от всех предыдущих. В процессе шифрования происходит также сжатие данных, что обеспечивает еще большую надежность шифрования, так как между зашифрованными блоками данных отсутствует корреляционная зависимость. Временная задержка в проверке пароля не позволяет злоумышленникам узнавать пароль методом полного перебора. Кроме того, к зашифрованному файлу добавляется электронная цифровая подпись, которая позволяет проверять целостность информации. Размер исходного файла дожжен быть не меньше 100 байт. Зашифрованный файл имеет расширение r_cr. Расшифровка зашифрованного файла возможна только при правильно введенном пароле, который использовался при шифровании этого файла. Экранные формы программы RCRYPTO представлены в приложении Г, фрагмент листинга программы представлен в приложении Д.

2.5 Блок-схема алгоритма

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

Нужно понимать, что предписание считается алгоритмом, если оно обладает тремя следующими свойствами:

– Однозначностью,

– Массовостью,

– Результативностью.

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

Алгоритм программы RCRYPTO состоит из следующих основных процедур: шифрование, расшифровка, проверка электронной цифровой подписи.

Алгоритм решения задачи может быть представлен в виде словесного описания или графически – в виде блок-схемы. Для разработки структуры программы удобно пользоваться записью алгоритма в виде блок-схемы (в англоязычной литературе используется термин flowchart). Для изображения основных алгоритмических структур и блоков на блок-схемах используют специальные графические символы. Они приведены на рисунке 2.2.

Рисунок 2.2 Обозначения, используемые в блок-схемах алгоритмов

Представление алгоритма в виде блок-схемы позволяет программисту уяснить последовательность действий, которые должны быть выполнены для решения задачи, убедиться в правильности понимания поставленной задачи. При программировании в среде C++ BUILDER 6 алгоритм решения задачи представляет собой совокупность алгоритмов процедур обработки событий. Блок-схема алгоритма программы приведена в приложении В.

2.6 Математическая модель программы RCRYPTO

Математическая модель программы RCRYPTO представляет собой набор математических и алгоритмических преобразований, производимых над данными, для достижения поставленной цели. Основной функцией является функция шифрования. Схему работы алгоритма шифрования можно описать функциями Z = EnCrypt (X, Key) и X = DeCrypt (Z, Key). Для преобразований алгоритм шифрования использует определенный набор биективных (обратимых) математических функций. В качестве биективной функции используется функция сложения. Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Key получается на основе пароля, введенного пользователем. Криптоалгоритм является идеально стойким, если прочесть зашифрованный блок данных можно только перебрав все возможные ключи, до тех пор, пока сообщение не окажется осмысленным. Так как по теории вероятности искомый ключ будет найден с вероятностью 1 / 2 после перебора половины всех ключей, то на взлом идеально стойкого криптоалгоритма с ключом длины N потребуется в среднем 2N-1 проверок. Таким образом, в общем случае стойкость блочного шифра зависит только от длины ключа и возрастает экспоненциально с ее ростом. Кроме этого условия к идеально стойким криптоалгоритмам применяется еще одно очень важное требование, которому они должны обязательно соответствовать. При известных исходном и зашифрованном значениях блока ключ, которым произведено это преобразование, можно узнать также только полным перебором. Ситуации, в которых постороннему наблюдателю известна часть исходного текста, встречаются повсеместно. Это могут быть стандартные надписи в электронных бланках, фиксированные заголовки форматов файлов, довольно часто встречающиеся в тексте длинные слова или последовательности байт. В свете этой проблемы описанное выше требование не является ничем чрезмерным и также строго выполняется стойкими криптоалгоритмами, как и первое.

Таким образом, на функцию стойкого блочного шифра Z = EnCrypt (X, Key) накладываются следующие условия:

1. Функция EnCrypt должна быть обратимой.

2. Не должно существовать иных методов прочтения сообщения X по известному блоку Z, кроме как полным перебором ключей Key.

3. Не должно существовать иных методов определения, каким ключом Key было произведено преобразование известного сообщения X в сообщение Z, кроме как полным перебором ключей.

Выполнение всех этих условий осуществляется следующим образом:

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

– Хеш-функция имеет бесконечную область определения,

– Хеш-функция имеет конечную область значений,

– Она необратима,

– Изменение входного потока информации на один бит меняет около половины всех бит выходного потока, то есть результата хеш-функции.

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

В программе RCRYPTO хеширование пароля осуществляется следующим образом:

Сначала пароль, введенный пользователем, преобразуется в массив байт P [1 .. X].

Где P [1 .. X] – коды символов введенного пользователем пароля (кодировка ANSI – Windows-1251). Фрагмент таблицы символов ANSI представлен в таблице 2.1.

X – длина пароля (в символах).


Таблица 2.1 Фрагмент таблицы символов ANSI (Windows-1251)

Код символа Символ Код символа Символ Код символа Символ
32 58 : 123 [
33 ! 59 ; 124 |
34 " 60 < 125 ]
35 # 61 = 126 ~
36 $ 62 > 127
37 % 63 ? 192 А
38 & 64 @
39 65 A 223 Я
40 ( 224 а
41 ) 90 Z
42 * 91 [ 255 я
43 + 92 \
44 , 93 ]
45 - 94 ^
46 . 95 _
47 / 96
48 0 97 a
57 9 122 z

Затем на основании пароля получается ключ:

K [1 .. 255] – ключ.

K [i] = (P [1] + P [2] + … + P [n]) + P [i], где i = 1 .. X (2.1)

Если X < 255, тогда производятся следующие преобразования:

K [X + 1 .. 255] = 114 (2.2)

114 – код символа «r»

Z = K [1] (2.3)

Если K [i] = Z,

то K [i] = K [i – 1] + Z, (2.4)

иначе Z = K [i], где i = 2 .. 255 (2.5)

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

Все алгоритмы сжатия данных качественно делятся на:

– Алгоритмы сжатия без потерь, при использовании которых данные на приемной восстанавливаются без малейших изменений,

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

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

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

Таблица 2.2 Матрица блока исходной информации

Байт №1 Байт №2 Байт №255
M1,1 M2,1 M255,1
M1,2 M2,2 M255,2
M1,3 M2,3 M255,3
M1,4 M2,4 M255,4
M1,5 M2,5 M255,5
M1,6 M2,6 M255,6
M1,7 M2,7 M255,7
M1,8 M2,8 M255,8

Где Mi , j – бит информации.

Затем осуществляется попытка сжатия строк M1, j … M255, j .

Эти строки представляется в виде количества подряд идущих нулей (0) или единиц (1). Если полученная таким образом информация занимает объем больше 32 байт, тогда эта строка представляется в исходном виде. Если общий объем блока перекодированной информации превышает 255 байт, тогда весь исходный блок представляется в исходном виде без изменений. После осуществления всех этих преобразований происходит непосредственно шифрование информации.

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

Функция EnCrypt выглядит следующим образом:

Z [i] = S [i] + K [j] + Z [i – 1], (2.6)

Где Z – зашифрованный байт,

S – исходный байт,

K – ключ (j = 1 .. 255).

Целостность информации – это гарантия того, что информация сейчас существует в ее исходном виде, то есть при ее хранении или передаче не было произведено несанкционированных изменений. Нарушение этой категории называется фальсификацией сообщения. Для решения этой проблемы в программе RCRYPTO используется электронная цифровая подпись. На основе исходного файла вычисляется хеш-функция – это число, которое более или менее уникально характеризует исходный файл. В принципе, можно найти другой текст, который дает то же самое значение хеш-функции, но изменить в исходном файле десять-двадцать байт так, чтобы текст остался полностью осмысленным, да еще и изменился в выгодную нам сторону (например, уменьшил сумму к оплате в два раза) – чрезвычайно сложно. Электронная подпись состоит из 10 байт. Структура используемой электронной цифровой подписи представлена в таблице 2.3.


Таблица 2.3 Структура электронной цифровой подписи

S12 S22
S13 S23 S33
S15 S25 S35 S45 S55

S12 – сумма первой половины всех байт исходного файла (1-ый байт электронной цифровой подписи),

S22 – сумма второй половины всех байт исходного файла (2-ой байт электронной цифровой подписи),

S13 – сумма первой 1 / 3 всех байт исходного файла (3-ий байт электронной цифровой подписи),

S23 – сумма второй 1 / 3 всех байт исходного файла (4-ый байт электронной цифровой подписи),

S33 – сумма третьей 1 / 3 всех байт исходного файла (5-ый байт электронной цифровой подписи),

S15 – сумма первой 1 / 5 всех байт исходного файла (6-ой байт электронной цифровой подписи),

S25 – сумма второй 1 / 5 всех байт исходного файла (7-ой байт электронной цифровой подписи),

S35 – сумма третьей 1 / 5 всех байт исходного файла (8-ой байт электронной цифровой подписи),

S45 – сумма четвертой 1 / 5 всех байт исходного файла (9-ый байт электронной цифровой подписи),

S55 – сумма пятой 1 / 5 всех байт исходного файла (10-ый байт электронной цифровой подписи).

S12 + S22 = S13 + S23 + S33 = S15 + S25 + S35 + S45 + S55

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


3. Расчет экономической эффективности проекта

Исходные данные для расчета получены на кафедре АСУ. Для расчета экономической эффективности использованы данные из прайс-листа от «Ферроком». Исходные данные для расчета затрат на разработку и обслуживание программного обеспечения приведены в таблице 3.1. Исходные данные для расчета затрат времени на разработку программного обеспечения приведены в таблице 3.2.

Таблица 3.1 Исходные данные для расчета затрат на разработку и внедрение системы

Показатели Единица измерения Условное обозначение Значение
1 2 3 4
Отчисления во внебюджетные фонды % Отч% 26
Уральский коэффициент % Кур 15
Доплаты из внебюджетных средств % Кдоп 10
Расходы на транспортировку и установку оборудования % Zтр 2
Затраты на материалы (магнитные носители, расходные материалы) % Zмат% 2
Материалы (канцелярские принадлежности, бумага) Руб. М 100
Норма амортизации ЭВМ % аэвм 20
Норма амортизации лицензионного программного обеспечения % апо 40
Затраты на текущий ремонт % Zрем% 5
Прочие расходы % Пр% 1
Стоимость электроэнергии Руб. / кВтч Ц1кВтч 0,74
Количество рабочих дней в году день Драб 247
Количество предпраздничных дней в году день Дпредпр 14
Количество рабочих дней в месяц день Кдн 26
Коэффициент готовности оборудования Кг 0,95
Стоимость компьютера DEPONeos 125 C1.7 / 128M266 / 40G5K / LAN / noKB / Mm Руб. Ск 8062

Продолжение таблицы 3.1

Показатели Единица измерения Условное обозначение Значение
Стоимость монитора LG 17” FlatronF700B, 0.24, 1024x768@85 Гц, ТСО’99 Руб. См 4978
Стоимость операционной системы MicrosoftWindowsXPProfessional Руб. Cw 5000
Стоимость программы BorlandC++ Builder 6 Руб. Cd 1800
Количество функций, реализуемых при помощи лицензионного программного обеспечения n 5
Паспортная мощность ЭВМ кВтч Мэвм 0,25
Оклад программиста Руб. Окл 2500
Продолжительность рабочего дня ч t 8
Время на обслуживание программного обеспечения % Тобсл% 3
Себестоимость автотранспортных услуг Тыс. руб. SS 4868
Прибыль Тыс. руб. PR 7306

Таблица 3.2 Исходные данные для расчета затрат времени на разработку программного обеспечения

Стадия разработки Время разработки (ч)
Всего Машинного
1 2 3
Время на разработку технического задания (tтз) 8
Время на разработку системного проекта (tсп), в том числе: 56
– Время на разработку алгоритма 40
– Время выбора технической реализации алгоритма 8
– Время выбора прикладного программного обеспечения 8
Время на разработку рабочего проекта (tрп), в том числе: 240 240
– Время на разработку рабочей программы 160 160
– Время на отладку программы 80 80
Всего времени на разработку (Т) 304 240

Рассчитаем затраты на разработку программного обеспечения.

Время на разработку программного обеспечения рассчитывается по формуле 3.1:

Т1 = tтз + tсп + tрп (3.1)

Где tтз – время на разработку технического задания (ч),

tсп – время на разработку системного проекта (ч),

tрп – время на разработку рабочего проекта (ч).

Расчет затрат времени на создание программного обеспечения производится на основе исходных данных, приведенных в таблице.

Т1 = 8 + 56 + 240 = 304 (ч)

Таким образом, время на разработку программного обеспечения составляет 304 часов, в том числе 240 часов с использованием ЭВМ.

Себестоимость машинного часа (руб / ч) рассчитывается по формуле 3.2:

С1маш.часа = Zэвм / (Fд · Кг) (3.2)

Где Zэвм – суммарные затраты, связанные с эксплуатацией ЭВМ (руб.),

Fд – годовой действительный фонд рабочего времени (ч),

Кг – коэффициент готовности ЭВМ

Суммарные затраты, связанные с эксплуатацией ЭВМ, за год рассчитываются по формуле 3.3:

Zэвм = Аэвм + Апо + Zмат + Zрем + Zэн + Пр (3.3)

Где Аэвм – амортизационные отчисления на ЭВМ (руб.),

Апо – амортизационные отчисления лицензионного программного обеспечения (руб.),

Zмат – затраты на материалы (руб.),

Zрем – затраты на текущий ремонт (руб.),

Zэн – затраты на электроэнергию (руб.),

Пр – прочие расходы (руб.).

Амортизационные отчисления вычислительной техники рассчитывают по формуле 3.4:

Аэвм = Цэвмб · аэвм (3.4)

Где Цэвмб – балансовая стоимость ЭВМ (руб.),

аэвм – норма амортизации ЭВМ.

Амортизационные отчисления лицензионного программного обеспечения рассчитываются по формуле 3.5:

Апо = (Cw + Cd) · апо (3.5)

Где Cw – стоимость операционной системы,

Cd – стоимость программ,

апо – норма амортизации лицензионного программного обеспечения.

Апо = (5000 + 1800) · 0,4 = 2720 (руб.)

Балансовую стоимость ЭВМ вычисляют по формуле 3.6:

Цэвмб = Цэвм · (1 + Zтр) (3.6)

Где Цэвм – цена ЭВМ (руб.),

Zтр – затраты на транспортировку (%).

Цену ЭВМ рассчитывают по формуле 3.7:

Цэвм = Ск + См (3.7)

Где Ск – стоимость компьютера (руб.),

См – стоимость монитора (руб.),

Цэвм = 8062 + 4978 = 13040 (руб.)

Цэвмб = 11447 · (1 + 0,02) = 13300,8 (руб.)

Затраты на материалы рассчитываются по формуле 3.8:

Zмат = Zмат% · Цэвмб (3.8)

Где Цэвмб – балансовая стоимость ЭВМ (руб.),

Zмат% – затраты на материалы (%).

Zмат = 0,02 · 13300,8 = 266,02 (руб.)

Расходы на текущий ремонт оборудования рассчитываются по

формуле 3.9:

Zрем = Zрем% · Цэвмб (3.9)

Где Цэвмб – балансовая стоимость ЭВМ (руб.),

Zмат% – затраты на текущий ремонт (%).

Zрем = 0,05 · 13300,8 = 665,04 (руб.)

Расчет расходов на электроэнергию производится по формуле 3.10:

Zэн = Fд · Мэвм · Ц1кВтч · Кг (3.10)

Где Fд – годовой действительный фонд рабочего времени ЭВМ (ч),

Мэвм – паспортная мощность ЭВМ (кВтч),

Ц1кВтч – стоимость одного киловатт-часа электроэнергии (руб.),

Кг – коэффициент готовности ЭВМ.

Годовой действительный фонд рабочего времени ЭВМ рассчитывается по формуле 3.11:

Fд = Драб · t – Дпредпр · 1 (3.11)

Где Драб – количество рабочих дней в году,

t – продолжительность рабочего дня,

t = 8 часов.

Дпредпр – количество предпраздничных дней в году,

Fд = 247 · 8 – 14 · 1 = 1962 (ч)

Zэн = 1962 · 0,25 · 0,74 · 0,95 = 344,82 (руб.)

Прочие расходы рассчитываются по формуле 3.12:

Пр = Пр% · Цэвмб (3.12)

Где Цэвмб – балансовая стоимость ЭВМ (руб.),

Пр% – Прочие расходы (%).

Пр = 0,01 · 13300,8 = 133,01 (руб.)

Аэвм = 13300,8 · 0,2 = 2660,16 (руб.)

Zэвм = 2660,16 + 2720 + 266,02 + 665,04 + 344,82 + 133,01 = 6789,05 (руб.)

С1маш.часа = 6789,05 / (1962 · 0,95) = 3,64 (руб.)

Стоимость разработки программного продукта рассчитывается по формуле 3.13:

Спп = М + ФЗП + Отч + Сэвм + Н (3.13)

Где М – затраты на материалы (руб.),

ФЗП – фонд заработной платы программиста (руб.),

Отч – отчисления на социальные нужды (руб.),

Сэвм – затраты, связанные с эксплуатацией ЭВМ (руб.),

Н – накладные расходы, связанные с созданием программного обеспечения (руб.).

Фонд заработной платы программиста рассчитывается по формуле 3.14:

ФЗП = Окл · t · (1 + Кдоп) · (1 + Кур) (3.14)

Где Окл – оклад программиста (руб.),

tм – число месяцев на создание программного продукта,

Кдоп – коэффициент дополнительной заработной платы (доплаты из внебюджетных средств),

Кур – уральский коэффициент.

Число месяцев на создание программного продукта рассчитывается по формуле 3.15:

tм = Т1 / (Кдн · t) (3.15)

Где Т1 – время на разработку программного обеспечения (ч),

Кдн – Количество рабочих дней в месяц,

t – продолжительность рабочего дня.

t = 8 часов.

tм = 304 / (26 · 8) = 1,46

ФЗП = 2500 · 1,46 · (1 + 0,1) · (1 + 0,15) = 4617,25 (руб.)

Отчисления на социальные нужды рассчитываются по формуле 3.16:

Отч = ФЗП · Отч% (3.16)

Где ФЗП – фонд заработной платы программиста (руб.),

Отч% – отчисления во внебюджетные фонды (%).

Отч = 0,26 · 4617,25 = 1200,49 (руб.)

Затраты, связанные с эксплуатацией ПЭВМ, рассчитываются по формуле 3.17:

Сэвм = С1маш.часа · Т2 (3.17)

Где С1маш.часа – себестоимость машинного часа (руб / ч),

Т2 – время, затраченное на машинную реализацию программного обеспечения (ч).

Сэвм = 3,64 · 240 = 873,6 (руб.)

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

Н = ФЗП · 0,12 (3.18)

Н = 4617,25 · 0,12 = 554,07 (руб.)

Спп = 100 + 4617,25 + 1200,49 + 873,6 + 554,07 = 7345,41 (руб.)

Рассчитаем затраты на покупку лицензионного программного обеспечения.

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

– Операционнаясистема Microsoft Windows XP Professional,

– Программа BorlandC++ Builder 6.

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

Таким образом, затраты на покупку лицензионного программного обеспечения рассчитаем по формуле 3.19:

Зпо = (Cw + Cd) / n (3.19)

Где Cw – стоимость операционной системы (руб.),

Cd – стоимость программ (руб),

n – количество функций, реализуемых при помощи лицензионного программного обеспечения.

Зпо = (5000 + 1800) / 5 = 1360 (руб.)

Единовременные капитальные вложения на создание программного обеспечения рассчитываются по формуле 3.20:

Екап = Спп + Зпо (3.20)

Где Спп – стоимость разработки программного продукта (руб.),

Зпо – затраты на покупку лицензионного программного обеспечения (руб.).

Екап = 7345,41 + 1360 = 8705,41 (руб.)

Рассчитаем затраты, связанные с обслуживанием разработанного программного обеспечения.

Время на обслуживание программного обеспечения рассчитывается по формуле 3.21:

Тобсл = Кдн · t · 12 · Тобсл% (3.21)

Где Fд – годовой действительный фонд рабочего времени,

Тобсл% – время на обслуживание программного обеспечения (%).

Тобсл = 26 · 8 · 12 · 0,03 = 74,88 (ч)

Затраты на обслуживание программного обеспечения рассчитываются по формуле 3.22:

Зобсл = Тобсл · (С1маш.часа + С1чел.часа ) (3.22)

Где Тобсл – время на обслуживание программного обеспечения (ч),

С1маш.часа – себестоимость машинного часа (руб.),

Счел.часа – себестоимость человеко-часа (руб.).

Себестоимость человеко-часа рассчитывается по формуле 3.23:

(3.23)

Где Окл – оклад программиста (руб.),

Отч% – отчисления во внебюджетные фонды (%),

Кдн – количество рабочих дней в месяц.

t – продолжительность рабочего дня (ч).

t = 8 часов.

Fд – годовой действительный фонд рабочего времени (ч).

Зобсл = 74,88 · (3,64 + 19,27) = 1715,5 (руб.)

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

Зобщ = Екап + Зобсл (3.24)

Где Екап – единовременные капитальные вложения на разработку программного продукта (руб.),

Зобсл – затраты на обслуживание программного продукта (руб.).

Зобщ = 8705,41 + 1715,5 = 10420,91 (руб.)

Сравним общие затраты на разработку и обслуживание программного продукта с годовой себестоимостью автотранспортных услуг и с прибылью (формулы 3.25 и 3.26).

Дсс = (Зобщ / SS) · 100 (3.25)

Где Зобщ – общие затраты на разработку и обслуживание программного продукта,

SS – годовая себестоимость автотранспортных услуг.

Дсс = (10420,91 / 4868000) · 100 = 0,21 %

Дпр = (Зобщ / PR) · 100 (3.26)

Где Зобщ – общие затраты на разработку и обслуживание программного продукта,

PR – годовая прибыль.

Дпр = (10420,91 / 7306000) · 100 = 0,14 %

Таким образом, затраты на разработку программного обеспечения являются незначительными и составляют 0,21 % годовой себестоимости автотранспортных услуг, или 0,14 % прибыли. В то же время, хищение или подмена информации может привести к негативным последствиям:

– Экономические потери – раскрытие коммерческой информации может привести к серьезным прямым убыткам на рынке.

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

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

4 Безопасность и экологичность проекта

4.1 Классификация вредных факторов

При работе с компьютерной техникой пользователь испытывает значительную нагрузку, как физическую (сидячее положение, нагрузка на глаза), так и умственную, что приводит к снижению его трудоспособности к концу рабочего дня. В связи с этим актуальны вопросы защиты пользователей от разнообразных вредных воздействий, возникающих в процессе работы с ЭВМ. Видеотерминалы становятся все более распространенным средством взаимодействия человека с ЭВМ. Таким образом, встает важная задача: сконструировать рабочее место оператора так, чтобы взаимосвязи в системе "человек-машина" были оптимальными со всех точек зрения. Утомляемость операторов, работающих за дисплейным терминалом, представляет собой серьезную проблему. Рабочее место должно хорошо вентилироваться. В настоящее время с точки зрения шумовой нагрузки достигнут значительный прогресс. Уровень шума в зале (примерно 40 дБ) в соответствии с ГОСТ 12.1.003 – 83 является удовлетворительным, независимо от количества используемой аппаратуры. По последним исследованиям - работа за видеотерминалом не представляет опасности с точки зрения рентгеновского излучения. Компьютеризированный труд совершается в условиях ограниченной подвижности, связан с длительным статическим мышечным напряжением, а это является самой утомительной формой мышечной деятельности. Труд человека за компьютером может привести к возникновению неврозов, нервно-психических и сердечно-сосудистых заболеваний.

Вредные производственные факторы, которые могут привести к заболеваниям или снижению работоспособности, согласно ГОСТ 12.0.003 – 74:

1. физические:

– повышенная запыленность рабочей зоны;

– повышенная температура воздуха рабочей зоны;

– повышенная или пониженная влажность воздуха;

– повышенная или пониженная подвижность воздуха;

– недостаточная освещенность рабочей зоны;

– прямая и отраженная блесткость;

– повышенный уровень шума на рабочем месте;

– повышенный уровень статического электричества;

– повышенный уровень электромагнитных излучений;

– повышенный уровень ультрафиолетовых излучений;

– повышенный уровень мягкого рентгеновского излучения.

2. психофизиологические:

– перенапряжение анализаторов;

– монотонность;

– неподвижная поза.

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

4.2 Эргономика

Эргономика и эстетика производства являются составными частями культуры производства, то есть комплекса мер, направленных на создание благоприятной рабочей обстановки. Помещения, их размеры (площадь, объем) должны в первую очередь соответствовать количеству работающих и размещаемому в них комплекту технических средств. В них предусматриваются соответствующие параметры температуры, освещения, чистоты воздуха, обеспечивают изоляцию, от производственных шумов. Важную роль в создании благоприятных условий труда играет цвет. Установлено, что физиологическое воздействие цвета на организм зависит от длины его волны. Для обеспечения нормальных условий труда санитарные нормы СН 245 – 71 устанавливают на одного работающего, объем производственного помещения не менее 15 м. Эргономическая безопасность компьютера оценивается по двум перечням требований: к визуальным параметрам дисплеев (с учетомсветового климата рабочего места) и к эмиссионным параметрам и излучениям дисплеев и ПК.

Требования к визуальным параметрам должны гарантировать комфортность работы пользователя. Они разделены на две группы:

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

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

Большое значение имеют характеристики монитора:

– Частота развертки. Применяемая частота кадровой развертки должна быть не ниже чем 72 Гц для исключения мерцания изображения;

– Соответствие применяемого разрешения размерам экрана. Применяемое разрешение должно соответствовать размеру экрана.

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

Рабочее место пользователя представляет собой персональный компьютер типа IBM PC. В комплект входят:

– Системный блок,

– Монитор,

– Клавиатура,

– Мышь.

Таблица 4.1 Размеры рабочего места

Нормируемая величина Значение
Необходимое Фактическое
Высота рабочей поверхности (мм) 680 – 800 700
Высота сидения (мм) 430 430
Расстояние от сидения до нижнего края рабочей поверхности (мм) 150 150
Высота пространства для ног (мм) > 600 700
Ширина пространства для ног (мм) > 500 600
Глубина пространства для ног (мм) > 650 700

Эргономика рабочего места:

– Компьютер выполнен в строгих формах;

– Расстояние от глаз пользователя до монитора составляет 50 – 60 см;

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

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

– Конструкция стола обеспечивает необходимое расстояние и угол наблюдения между экраном дисплея и глазами человека.

Эргономическая безопасность компьютера:

– Используется монитор диагональю 17 дюймов с разрешением 1024 х 768 точек;

– Размер зерна – 0,24 мм;

– Частота развертки – 85 Гц;

– Монитор соответствует стандартам ТСО’99;

– Экран монитора покрыт антибликовым покрытием;

– Рабочие места установлены так, что сотрудники не попадают в опасную зону излучения задней панели монитора.

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

4.3 Обеспечение оптимальной освещенности

В настоящее время 90% информации человек получает с помощью органов зрения. Ее поступление во многом зависит от освещения. При неудовлетворительном освещении человек напрягает зрительный аппарат, что ведет к ухудшению зрения и состояния организма в целом. Нерациональное освещение на рабочем месте в цехе, лаборатории, помещении вычислительного центра, офисе, дома при чтении приводит к повышенной утомляемости, снижению работоспособности, перенапряжению органов зрения и снижению его остроты. Рациональное освещение должно быть спроектировано в соответствии с нормами, приведенными в СНиП 23 – 05 – 95, а также рекомендациями, изложенными в литературе.

Правильно спроектированное и рационально выполненное освещение помещений:

– Оказывает психофизическое воздействие на работающих;

– Способствует повышению эффективности и безопасности труда;

– Снижает утомление;

– Сохраняет высокую работоспособность.

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

1. Фон – это поверхность, на которой происходит различение объекта. Фон характеризуется способностью поверхности отражать падающий на нее световой поток. Эта способность (коэффициент отражения ρ) определяется как отношение отраженного от поверхности светового потока Фот к падающему на нее световому потоку Фпад ; ρ = Фот / Фпад . В зависимости от цвета и фактуры поверхности значения коэффициента отражения находятся в пределах 0,02 .. 0,95; при ρ > 0,4 фон считается светлым; при ρ = 0,2 .. 0,4 – средним; и при ρ < 0,2 – темным.

2. Контраст объекта с фоном k – степень различения объекта и фона – характеризуется соотношением яркостей рассматриваемого объекта (точки, линии, знака, пятна, трещины, риски или других элементов) и фона; k = (Lор – Lо ) / Lор считается большим, если k > 0,5 (объект резко выделяется на фоне), средним при k = 0,2 .. 0,5 (объект и фон заметно отличаются по яркости) и малым при k < 0,2 (объект слабо заметен на фоне).

В таблице 4.2 приведены нормы проектирования искусственного освещения.


Таблица 4.2 Нормы проектирования искусственного освещения

Характеристика зрительной работы Наименьший размер объекта различения, мм Разряд зрительной работы Подразряд зрительной работы Контраст объекта с фоном Характеристика фона Освещенность, лк
1 2 3 4 5 6 8
Наивысшей точности Менее 0,15 I а Малый Темный 1500
б

Малый

Средний

Средний

Темный

1250
Характеристика зрительной работы Наименьший размер объекта различения, мм Разряд зрительной работы Подразряд зрительной работы Контраст объекта с фоном Характеристика фона Освещенность, лк
в

Малый

Средний

Большой

Светлый

Средний

Темный

750
г

Средний

Большой

Большой

Светлый

Светлый

Средний

400
Очень высокой точности 0,15 – 0,3 II а Малый Темный 1250
б

Малый

Средний

Средний

Темный

750
в

Малый

Средний

Большой

Светлый

Средний

Темный

500
г

Средний

Большой

Большой

Светлый

Светлый

Средний

300
Высокой точности 0,3 – 0,5 III а Малый Темный 500
б

Малый

Средний

Средний

Темный

300
в

Малый

Средний

Большой

Светлый

Средний

Темный

300
г

Средний

Большой

Большой

Светлый

Светлый

Средний

200

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

Характеристика зрительной работы – очень высокой точности,

Наименьший размер объекта различения – 0,24 (мм),

Контраст объекта различения с фоном – Большой,

Характеристика фона – Светлый,

Разряд зрительной работы – II,

Подразряд зрительной работы – г,

Освещенность – 300 (лк).

Равномерное освещение горизонтальной рабочей поверхности достигается при определенных отношениях расстояния между центрами светильников L (м) к высоте их подвеса над рабочей поверхностью Нр (м). В расчетах Нр = H.

L = 1,75 H (4.1)

H = 4 (м)

L = 1,75 · 4 = 7 (м)

Число светильников с люминесцентными лампами (ЛЛ) рассчитывается по формуле 4.2:

(4.2)

S – площадь помещения (м2 ).

S = A · B = 8 · 8 = 64 (м2 )

M – расстояние между параллельными рядами (м).

В соответствии с рекомендациями M ≥ 0,6 Нр

Оптимальное значение M = 2 .. 3 м.

M ≥ 0,6 Нр

M = 2,5 (м)

Для достижения равномерной горизонтальной освещенности светильники с ЛЛ рекомендуется располагать сплошными рядами, параллельными стенам с окнами или длинным сторонам помещения. Для расчета общего равномерного освещения рабочей поверхности используют метод светового потока, учитывающий световой поток, отраженный от потолка и стен. Световой поток Ф – это часть лучистого потока, воспринимаемая человеком как свет, характеризующая мощность светового излучения, измеряется в люменах (лм).

Расчетный световой поток (лм) группы светильников с люминесцентными лампами рассчитывается по формуле 4.3:

(4.3)

Ен – нормированная минимальная освещенность (лк).

Ен = 300 (лк)

Z – коэффициент минимальной освещенности.

Z = Еср / Емин (4.4)

Для люминесцентных ламп Z = 1,1.

К – коэффициент запаса.

Значения коэффициента запаса зависят от характеристики помещения: для помещений с большим выделением тепла К = 2; со средним К = 1,8; с малым К = 1,5.

К = 1,5

η – коэффициент использования светового потока ламп (η зависит от КПД и кривой распределения силы света светильника, коэффициента отражения от потолка ρп и стен ρс , высоты подвеса светильников над рабочей поверхностью Нр и показателя помещения i).

Показатель помещения рассчитывается по формуле 4.5:

(4.5)

Где А и В – соответственно длина и ширина помещения (м).

Таблица 4.3 Значения коэффициента использования светового потока

Показатель помещения 1 2 3 4 5
Коэффициент использования светового потока 0,28 .. 0,46 0,34 .. 0,57 0,37 .. 0,62 0,39 .. 0,65 0,40 .. 0,66

Показателю помещения 1 соответствует коэффициент использования светового потока η = 0,4.

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

Тогда Фл.расч = 19800 / 4 = 4950 (лм)

Таблица 4.4 Характеристики люминесцентных ламп

Тип и мощность (Вт) Длина (мм) Световой поток (лм)
1 2 3
ЛДЦ 20 604 820
ЛБ 20 604 1180
ЛДЦ 30 909 1450
ЛБ 30 909 2100
ЛДЦ 40 1214 2100
ЛД 40 1214 2340
ЛДЦ 65 1515 3050
ЛДЦ 80 1515 4070
ЛБ 80 1515 5220

Световой поток выбранной лампы должен соответствовать соотношению 4.6:

Фл.расч = (0,9 .. 1,2) Фл.табл (4.6)

Где Фл.расч – расчетный световой поток (лм),

Фл.табл – световой поток, определенный по таблице (лм).

Возьмем лампы ЛБ80.

4950 = 1,05 · 5220

Фл.расч = 1,05 Фл.табл

Потребляемая мощность (Вт) осветительной установки рассчитывается по формуле 4.7:

P = pNn (4.7)

Где p – мощность лампы (Вт),

N – число светильников (шт.),

n – число ламп в светильнике (для люминесцентных ламп n = 2, 4).

P = 80 · 4 · 4 = 1280 (Вт)

Таким образом, для обеспечения оптимальной освещенности рабочего места пользователя ЭВМ необходим световой поток 19800 лм. Расчеты показали, что для получения такого светового потока необходимо использовать четыре светильника. Эти светильники располагаются в два ряда параллельно стенам с окнами. Каждый светильник состоит из четырех ламп типа ЛБ80. Потребляемая мощность осветительной установки составляет 1280 Вт.

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

1. Определены требования к планировке рабочего места:

– Применение стула с твердой спинкой изогнутой формы,

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

– Конструкция стола обеспечивает необходимое расстояние и угол наблюдения,

2. Определены требования к монитору:

– Диагональ 17 дюймов, разрешение 1024 х 768 точек, размер зерна 0,24 мм, частота развертки 85 Гц, соответствие стандартам ТСО’99,

– Рабочие места установлены так, что сотрудники не попадают в опасную зону излучения задней панели монитора.

3. Произведен расчет оптимального освещения:

– Необходимый световой поток составляет 19800 лм,

– Осветительная установка состоит из четырех светильников по четыре лампы ЛБ80 в каждом светильнике,

– Светильники располагаются в два ряда параллельно стенам с окнами

– Потребляемая мощность осветительной установки составляет 1280 Вт.

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


Заключение

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

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

В проектной части дипломного проекта была разработана криптографическая программа RCRYPTO. В качестве основного средства для разработки программы использовалась среда визуального программирования C++ BUILDER 6. Программа RCRYPTO позволяет шифровать все типы файлов. «Сердцем» криптографической программы является криптоалгоритм. Разработанная криптографическая программа является завершенной комплексной моделью, способной производить двусторонние криптопреобразования над данными произвольного объема. Шифрование файлов осуществляется по оригинальному алгоритму с использованием симметричного ключа, который формируется на основании пароля, введенного пользователем. В результате хеширования пароля ключ достигает необходимой длины. Алгоритм шифрования является блочным шифром, то есть информация шифруется блоками определенной длины. Шифрование каждого последующего блока данных зависит от всех предыдущих. В процессе шифрования происходит также сжатие данных, что обеспечивает еще большую надежность шифрования, так как между зашифрованными блоками данных отсутствует корреляционная зависимость. Временная задержка в проверке пароля не позволяет злоумышленникам узнавать пароль методом полного перебора. Кроме того, к зашифрованному файлу добавляется электронная цифровая подпись, которая позволяет проверять целостность информации. Расшифровка зашифрованного файла возможна только при правильно введенном пароле, который использовался при шифровании этого файла.

В экономической части дипломного проекта была рассчитана экономическая эффективность проекта. Экономическая эффективность от внедрения криптографической защиты информации заключается в предотвращении возможных убытков от хищения или подмены информации. Затраты на создание программного продукта составляют 7170 рублей. Эти затраты являются незначительными и составляют 0,15 % годовой себестоимости автотранспортных услуг, или 0,1 % прибыли.

В то же время, хищение или подмена информации может привести к негативным последствиям:

– Экономические потери – раскрытие коммерческой информации может привести к серьезным прямым убыткам на рынке,

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

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

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

Таким образом, можно сделать вывод об экономической целесообразности создания подсистемы криптографической защиты информации на предприятии ООО «Транспортник».


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

1. Автоматизированные информационные технологии в экономике. Учебник. Под. ред. проф. Г.А. Титоренко. – М.: Юнити, 2000

2. Алферов А.: Основы криптографии. Учебное пособие. – СПб.: БХВ – Петербург, 2002

3. Байбурин В.Б.: Введение в защиту информации. – СПб.: БХВ – Петербург, 2004

4. Безопасность жизнедеятельности. Учебник для вузов. С.В. Белов, А.В. Ильницкая, А.Ф. Козьяков и др. Под общ. ред. С.В. Белова. 2-е изд., испр. и доп. – М.: Высш. шк., 1999

5. Бухгалтерский учет. Богаченко В.М., Кириллова Н.А. – Ростов н/Д: Феникс, 2001

6. Введение в защиту информации в автоматизированных системах. Учебное пособие для вузов. Малюк А.А., Пазизин С.В., Погожин Н.С. 2-е изд. – СПб.: БХВ – Петербург, 2004

7. Вдовенко Л.А.: Системно-информационный подход к оценке экономической деятельности промышленных предприятий. – М.: Финансы и статистика, 1996

8. Вирт Н.: Алгоритмы и структуры данных. Пер. с англ. – М.: Мир, 1999

9. Кокорева О.И.: Реестр WindowsXP. – СПб.: БХВ – Петербург, 2004

10. Комягин В.Б.: 1С: Бухгалтерия 7.7 в вопросах и ответах. Самоучитель. Учебное пособие. – СПб.: БХВ – Петербург, 2004

11. Кондраков Н.П.: Бухгалтерский учет. Учебное пособие. 4-е изд., перераб. и доп. – М.: ИНФРА-М, 2001

12. КультинН.Б.: C++ Builder 6. Программирование на ObjectPascal. – СПб.: БХВ – Петербург, 2001

13. Назарова С.В.: Локальные вычислительные сети. – М: Финансы и статистика, 1995

14. Нанс Б.: Компьютерные сети. – М.: Бином, 1996

15. Немнюгин С.А.: TurboPascal: Практикум. – СПб.: Питер, 2001

16. Основы современной криптографии. Баричев С.Г., Гончаров В.В., Серов Р.Е. – СПб.: БХВ – Петербург, 2001

17. Принципы разработки программного обеспечения. Зелковиц М., Шоу А., Гэннон Д. Пер. с англ. – М.: Мир, 1992

18. Савицкая Г.В.: Анализ хозяйственной деятельности предприятия. Учебник. 2-е изд., испр. и доп. – М.: Инфра-М, 2003

19. Справочная книга для проектирования электрического освещения. Под. ред. Кнорринга Г.Н. – М.: Энергия, 1996

20. Фаронов Д.Е.: Профессиональная работа в C++ BUILDER 6. Библиотека программиста. – СПб.: БХВ – Петербург, 2002

21. Фокс Д.: Программное обеспечение и его разработка. Пер. с англ. – М.: Мир, 1995

22. Хорошева А.Б., Кремлева В.Г.: 1С: Бухгалтерия 7.7 редакция 4.4. Краткий практический курс для начинающего пользователя. Учебное пособие. – СПб.: БХВ – Петербург, 2003

23. Экономика, разработка и использование программного обеспечения ЭВМ. Благодатских В.А., Енгибарян М.А., Ковалевская Е.В. и др. – М.: Финансы и статистика, 1995


Приложение А (Обязательное)

Блок-схема алгоритма программы

Рисунок В.1 Общая блок-схема алгоритма программы


Продолжение приложения А

Рисунок В.2 Продолжение общей блок-схемы алгоритма программы


Продолжение приложения А

Рисунок В.3 Блок-схема алгоритма шифрования


Продолжение приложения А

Рисунок В.4 Продолжение блок-схемы алгоритма шифрования


Продолжение приложения А

Рисунок В.5 Блок-схема алгоритма расшифровки


Продолжение приложения А

Рисунок В.6 Продолжение блок-схемы алгоритма расшифровки


Продолжение приложения А

Рисунок В.7 Блок-схема алгоритма проверки электронной цифровой подписи


Продолжение приложения А

Рисунок В.8 Продолжение блок-схемы алгоритма проверки электронной цифровой подписи


Приложение В (обязательное)

Экранные формы программы RCRYPTO

Рисунок Г.1 Форма «Выбор вида интерфейса»

Рисунок Г.2 Главная форма (классический вид)


Продолжение приложения

Рисунок Г.3 Форма «Сохранение зашифрованного файла» (классический вид)

Рисунок Г.4 Форма «Шифрование» (классический вид)


Продолжение приложения

Рисунок Г.5 Форма «Сохранение расшифрованного файла» (классический вид)

Рисунок Г.6 Форма «Расшифровка» (классический вид)

Рисунок Г.7 Форма «Проверка электронной цифровой подписи»

Продолжение приложения

Рисунок Г.8 Главная форма (интерфейс RCRYPTO)

Рисунок Г.9 Форма «Шифрование» (интерфейс RCRYPTO)


Продолжение приложения

Рисунок Г.10 Форма «Расшифровка» (интерфейс RCRYPTO)

Рисунок Г.11 Форма «Проверка электронной цифровой подписи» (интерфейс RCRYPTO)


Продолжение приложения

Рисунок Г.12 Содержание справочной системы


Приложение Д (обязательное)

Листинг основного криптоалгоритма

#include<stdio.h>

#include<conio.h>

#define EN0 0 /* MODE == encrypt */

#define DE1 1 /* MODE == decrypt */

typedef struct {

unsigned long ek[32];

unsigned long dk[32]; } des_ctx;

extern void deskey(unsigned char *, short);

extern void usekey(unsigned long *);

extern void cpkey(unsigned long *);

extern void des(unsigned char *, unsigned char *);

static void scrunch(unsigned char *, unsigned long *);

static void unscrun(unsigned long *, unsigned char *);

static void desfunc(unsigned long *, unsigned long *);

static void cookey(unsigned long *);

static unsigned long KnL[32] = { 0L };

static unsigned long KnR[32] = { 0L };

static unsigned long Kn3[32] = { 0L };

static unsigned char Df_Key[24] = {

0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,

0xfe,0xdc,0xba,0x98,0x76,0x54, 0x32, 0x10,

0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 } ;

static unsigned short bytebit[8] = {

0200, 0100, 040, 020, 010, 04, 02, 01 };

static unsigned long bigbyte[24] = {

0x800000L, 0x400000L, 0x200000L, 0x100000L,

0x80000L, 0x40000L, 0x20000L, 0x10000L,

0x8000L, 0x4000L, 0x2000L, 0x1000L,

0x800L, 0x400L, 0x200L, 0x100L,

0x80L, 0x40L, 0x20L, 0x10L,

0x8L, 0x4L, 0x2L, 0x1L };

/* Use the key schedule specified in the Standard (ANSI X3.92-1981). */

static unsigned char pc1[56] = {

56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17,

9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35,

62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21,

13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3 };

static unsigned char totrot[16] = {

1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28 };

static unsigned char pc2[48] = {

13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9,

22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1,

40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47,

43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 };

void deskey(key, edf)

unsigned char *key;

short edf;

{

register int i, j, l, m, n;

unsigned char pc1m[56], pcr[56];

unsigned long kn[32];

for ( j = 0; j < 56; j++ )

{ l = pc1[j];

m = l & 07;

pc1m[j] = (key[l >> 3] & bytebit[m]) ? 1 : 0; }

for( i = 0; i < 16; i++ ) {

if( edf == DE1 ) m = (15 - i) << 1;

else m = i << 1;

n = m + 1;

kn[m] = kn[n] = 0L;

for( j = 0; j < 28; j++ ) {

l = j + totrot [i];

if( l < 28 ) pcr[j] = pc1m[l];

else pcr[j] = pc1m[l - 28];

}

for( j = 28; j < 56; j++ )

{ l = j + totrot[i];

if( l < 56 ) pcr[j] = pc1m[l];

else pcr[j] = pc1m[l - 28]; }

for( j = 0; j < 24; j++ ) {

if( pcr[pc2[j]] ) kn[m] = bigbyte[j]; if(pcr[pc2[j+24]] ) kn[n] |=bigbyte[j]; } }

cookey(kn); return; }

static void cookey(raw1)

register unsigned long *raw1; {

register unsigned long *cook, *raw0;

unsigned long dough[32];

register int i;

cook = dough;

for( i = 0; i < 16; i++, raw1++ ) {

raw0 = raw1++;

*cook = (*raw0 & 0x00fc0000L) << 6;

*cook |= (*raw0 & 0x00000fc0L) << 10;

*cook |= (*raw1 & 0x00fc0000L) >> 10;

*cook++ |= (*raw1 & 0x00000fc0L) >> 6;

*cook = (*raw0 & 0x0003f000L) << 12;

*cook |= (*raw0 & 0x0000003fL) << 16;

*cook |= (*raw1 & 0x0003f000L) >> 4;

*cook++ |= (*raw1 & 0x0000003fL);

}

usekey(dough); return; }

void cpkey(into)

register unsigned long *into;

{

register unsigned long *from, *endp;

from = KnL, endp = &KnL[32]; while( from < endp ) *into++ = *from++; return; }

void usekey(from)

register unsigned long *from;

{

register unsigned long *to, *endp;

to = KnL, endp = &KnL[32];

while( to < endp ) *to++ = *from++; return; }

void des(inblock, outblock)

unsigned char *inblock, *outblock; {

unsigned long work[2];

scrunch(inblock, work);

desfunc(work, KnL);

unscrun(work, outblock); return; }

static void scrunch(outof, into)

register unsigned char *outof;

register unsigned long *into; {

*into = (*outof++ & 0xffL) << 24;

*into |= (*outof++ & 0xffL) << 16;

*into |= (*outof++ & 0xffL) << 8;

*into++ = (*outof++ & 0xffL);

*into = (*outof++ & 0xffL) << 24;

*into |= (*outof++ & 0xffL) << 16;

*into |= (*outof++ & 0xffL) << 8;

*into |= (*outof & 0xffL);

return; }

static void unscrun(outof, into)

register unsigned long *outof;

register unsigned char *into; {

*into++ = (*outof >> 24) & 0xffL;

*into++ = (*outof >> 16) & 0xffL;

*into++ = (*outof >> 8) & 0xffL;

*into++ = *outof++ & 0xffL;

*into++ = (*outof >> 24) & 0xffL;

*into++ = (*outof >> 16) & 0xffL;

*into++ = (*outof >> 8) & 0xffL;

*into = *outof & 0xffL;

return; }

static unsigned long SP1[64] = {

0x01010400L, 0x00000000L, 0x00010000L, 0x01010404L,

0x01010004L, 0x00010404L, 0x00000004L, 0x00010000L,

0x00000400L, 0x01010400L, 0x01010404L, 0x00000400L,

0x01000404L, 0x01010004L, 0x01000000L, 0x00000004L,

0x00000404L, 0x01000400L, 0x01000400L, 0x00010400L,

0x00010400L, 0x01010000L, 0x01010000L, 0x01000404L,

0x00010004L, 0x01000004L, 0x01000004L, 0x00010004L,

0x00000000L, 0x00000404L, 0x00010404L, 0x01000000L,

0x00010000L, 0x01010404L, 0x00000004L, 0x01010000L,

0x01010400L, 0x01000000L, 0x01000000L, 0x00000400L,

0x01010004L, 0x00010000L, 0x00010400L, 0x01000004L,

0x00000400L, 0x00000004L, 0x01000404L, 0x00010404L,

0x01010404L, 0x00010004L, 0x01010000L, 0x01000404L,

0x01000004L, 0x00000404L, 0x00010404L, 0x01010400L,

0x00000404L, 0x01000400L, 0x01000400L, 0x00000000L,

0x00010004L, 0x00010400L, 0x00000000L, 0x01010004L };

static unsigned long SP2[64] = {

0x80108020L, 0x80008000L, 0x00008000L, 0x00108020L,

0x00100000L, 0x00000020L, 0x80100020L, 0x80008020L,

0x80000020L, 0x80108020L, 0x80108000L, 0x80000000L,

0x80008000L, 0x00100000L, 0x00000020L, 0x80100020L,

0x00108000L, 0x00100020L, 0x80008020L, 0x00000000L,

0x80000000L, 0x00008000L, 0x00108020L, 0x80100000L,

0x00100020L, 0x80000020L, 0x00000000L, 0x00108000L,

0x00008020L, 0x80108000L, 0x80100000L, 0x00008020L,

0x00000000L, 0x00108020L, 0x80100020L, 0x00100000L,

0x80008020L, 0x80100000L, 0x80108000L, 0x00008000L,

0x80100000L, 0x80008000L, 0x00000020L, 0x80108020L,

0x00108020L, 0x00000020L, 0x00008000L, 0x80000000L,

0x00008020L, 0x80108000L, 0x00100000L, 0x80000020L,

0x00100020L, 0x80008020L, 0x80000020L, 0x00100020L,

0x00108000L, 0x00000000L, 0x80008000L, 0x00008020L,

0x80000000L, 0x80100020L, 0x80108020L, 0x00108000L };

static unsigned long SP3[64] = {

0x00000208L, 0x08020200L, 0x00000000L, 0x08020008L,

0x08000200L, 0x00000000L, 0x00020208L, 0x08000200L,

0x00020008L, 0x08000008L, 0x08000008L, 0x00020000L,

0x08020208L, 0x00020008L, 0x08020000L, 0x00000208L,

0x08000000L, 0x00000008L, 0x08020200L, 0x00000200L,

0x00020200L, 0x08020000L, 0x08020008L, 0x00020208L,

0x08000208L, 0x00020200L, 0x00020000L, 0x08000208L,

0x00000008L, 0x08020208L, 0x00000200L, 0x08000000L,

0x08020200L, 0x08000000L, 0x00020008L, 0x00000208L,

0x00020000L, 0x08020200L, 0x08000200L, 0x00000000L,

0x00000200L, 0x00020008L, 0x08020208L, 0x08000200L,

0x08000008L, 0x00000200L, 0x00000000L, 0x08020008L,

0x08000208L, 0x00020000L, 0x08000000L, 0x08020208L,

0x00000008L, 0x00020208L, 0x00020200L, 0x08000008L,

0x08020000L, 0x08000208L, 0x00000208L, 0x08020000L,

0x00020208L, 0x00000008L, 0x08020008L, 0x00020200L };

static unsigned long SP4[64] = {

0x00802001L, 0x00002081L, 0x00002081L, 0x00000080L,

0x00802080L, 0x00800081L, 0x00800001L, 0x00002001L,

0x00000000L, 0x00802000L, 0x00802000L, 0x00802081L,

0x00000081L, 0x00000000L, 0x00800080L, 0x00800001L,

0x00000001L, 0x00002000L, 0x00800000L, 0x00802001L,

0x00000080L, 0x00800000L, 0x00002001L, 0x00002080L,

0x00800081L, 0x00000001L, 0x00002080L, 0x00800080L,

0x00002000L, 0x00802080L, 0x00802081L, 0x00000081L,

0x00800080L, 0x00800001L, 0x00802000L, 0x00802081L,

0x00000081L, 0x00000000L, 0x00000000L, 0x00802000L,

0x00002080L, 0x00800080L, 0x00800081L, 0x00000001L,

0x00802001L, 0x00002081L, 0x00002081L, 0x00000080L,

0x00802081L, 0x00000081L, 0x00000001L, 0x00002000L,

0x00800001L, 0x00002001L, 0x00802080L, 0x00800081L,

0x00002001L, 0x00002080L, 0x00800000L, 0x00802001L,

0x00000080L, 0x00800000L, 0x00002000L, 0x00802080L };

static unsigned long SP5[64] = {

0x00000100L, 0x02080100L, 0x02080000L, 0x42000100L,

0x00080000L, 0x00000100L, 0x40000000L, 0x02080000L,

0x40080100L, 0x00080000L, 0x02000100L, 0x40080100L,

0x42000100L, 0x42080000L, 0x00080100L, 0x40000000L,

0x02000000L, 0x40080000L, 0x40080000L, 0x00000000L,

0x40000100L, 0x42080100L, 0x42080100L, 0x02000100L,

0x42080000L, 0x40000100L, 0x00000000L, 0x42000000L,

0x02080100L, 0x02000000L, 0x42000000L, 0x00080100L,

0x00080000L, 0x42000100L, 0x00000100L, 0x02000000L,

0x40000000L, 0x02080000L, 0x42000100L, 0x40080100L,

0x02000100L, 0x40000000L, 0x42080000L, 0x02080100L,

0x40080100L, 0x00000100L, 0x02000000L, 0x42080000L,

0x42080100L, 0x00080100L, 0x42000000L, 0x42080100L,

0x02080000L, 0x00000000L, 0x40080000L, 0x42000000L,

0x00080100L, 0x02000100L, 0x40000100L, 0x00080000L,

0x00000000L, 0x40080000L, 0x02080100L, 0x40000100L };

static unsigned long SP6[64] = {

0x20000010L, 0x20400000L, 0x00004000L, 0x20404010L,

0x20400000L, 0x00000010L, 0x20404010L, 0x00400000L,

0x20004000L, 0x00404010L, 0x00400000L, 0x20000010L,

0x00400010L, 0x20004000L, 0x20000000L, 0x00004010L,

0x00000000L, 0x00400010L, 0x20004010L, 0x00004000L,

0x00404000L, 0x20004010L, 0x00000010L, 0x20400010L,

0x20400010L, 0x00000000L, 0x00404010L, 0x20404000L,

0x00004010L, 0x00404000L, 0x20404000L, 0x20000000L,

0x20004000L, 0x00000010L, 0x20400010L, 0x00404000L,

0x20404010L, 0x00400000L, 0x00004010L, 0x20000010L,

0x00400000L, 0x20004000L, 0x20000000L, 0x00004010L,

0x20000010L, 0x20404010L, 0x00404000L, 0x20400000L,

0x00404010L, 0x20404000L, 0x00000000L, 0x20400010L,

0x00000010L, 0x00004000L, 0x20400000L, 0x00404010L,

0x00004000L, 0x00400010L, 0x20004010L, 0x00000000L,

0x20404000L, 0x20000000L, 0x00400010L, 0x20004010L };

static unsigned long SP7[64] = {

0x00200000L, 0x04200002L, 0x04000802L, 0x00000000L,

0x00000800L, 0x04000802L, 0x00200802L, 0x04200800L,

0x04200802L, 0x00200000L, 0x00000000L, 0x04000002L,

0x00000002L, 0x04000000L, 0x04200002L, 0x00000802L,

0x04000800L, 0x00200802L, 0x00200002L, 0x04000800L,

0x04000002L, 0x04200000L, 0x04200800L, 0x00200002L,

0x04200000L, 0x00000800L, 0x00000802L, 0x04200802L,

0x00200800L, 0x00000002L, 0x04000000L, 0x00200800L,

0x04000000L, 0x00200800L, 0x00200000L, 0x04000802L,

0x04000802L, 0x04200002L, 0x04200002L, 0x00000002L,

0x00200002L, 0x04000000L, 0x04000800L, 0x00200000L,

0x04200800L, 0x00000802L, 0x00200802L, 0x04200800L,

0x00000802L, 0x04000002L, 0x04200802L, 0x04200000L,

0x00200800L, 0x00000000L, 0x00000002L, 0x04200802L,

0x00000000L, 0x00200802L, 0x04200000L, 0x00000800L,

0x04000002L, 0x04000800L, 0x00000800L, 0x00200002L };

static unsigned long SP8[64] = {

0x10001040L, 0x00001000L, 0x00040000L, 0x10041040L,

0x10000000L, 0x10001040L, 0x00000040L, 0x10000000L,

0x00040040L, 0x10040000L, 0x10041040L, 0x00041000L,

0x10041000L, 0x00041040L, 0x00001000L, 0x00000040L,

0x10040000L, 0x10000040L, 0x10001000L, 0x00001040L,

0x00041000L, 0x00040040L, 0x10040040L, 0x10041000L,

0x00001040L, 0x00000000L, 0x00000000L, 0x10040040L,

0x10000040L, 0x10001000L, 0x00041040L, 0x00040000L,

0x00041040L, 0x00040000L, 0x10041000L, 0x00001000L,

0x00000040L, 0x10040040L, 0x00001000L, 0x00041040L,

0x10001000L, 0x00000040L, 0x10000040L, 0x10040000L,

0x10040040L, 0x10000000L, 0x00040000L, 0x10001040L,

0x00000000L, 0x10041040L, 0x00040040L, 0x10000040L,

0x10040000L, 0x10001000L, 0x10001040L, 0x00000000L,

0x10041040L, 0x00041000L, 0x00041000L, 0x00001040L,

0x00001040L, 0x00040040L, 0x10000000L, 0x10041000L };

static void desfunc(block, keys)

register unsigned long *block, *keys;

{

register unsigned long fval, work, right, leftt;

register int round;

leftt = block[0];

right = block[1];

work = ((leftt >> 4) ^ right) & 0x0f0f0f0fL;

right ^= work;

leftt ^= (work << 4);

work = ((leftt >> 16) ^ right) & 0x0000ffffL;

right ^= work;

leftt ^= (work << 16);

work = ((right >> 2) ^ leftt) & 0x33333333L;

leftt ^= work;

right ^= (work << 2);

work = ((right >> 8) ^ leftt) & 0x00ff00ffL;

leftt ^= work;

right ^= (work << 8);

right = ((right << 1) | ((right >> 31) & 1L)) & 0xffffffffL;

work = (leftt ^ right) & 0xaaaaaaaaL;

leftt ^= work;

right ^= work;

leftt = ((leftt << 1) | ((leftt >> 31) & 1L)) & 0xffffffffL;

for( round = 0; round < 8; round++ ) {

work = (right << 28) | (right >> 4);

work ^= *keys++;

fval = SP7[ work & 0x3fL];

fval |= SP5[(work >> 8) & 0x3fL];

fval = SP3[(work >> 16) & 0x3fL];

fval |= SP1[(work >> 24) & 0x3fL];

work = right ^ *keys++;

fval |= SP8[ work & 0x3fL];

fval = SP6[(work >> 8) & 0x3fL];

fval |= SP4[(work >> 16) & 0x3fL];

fval = SP2[(work >> 24) & 0x3fL];

leftt ^= fval;

work = (leftt << 28) | (leftt >> 4);

work ^= *keys++;

fval = SP7[ work & 0x3fL];

fval |= SP5[(work >> 8) & 0x3fL];

fval = SP3[(work >> 16) & 0x3fL];

fval |= SP1[(work >> 24) & 0x3fL];

work = leftt ^ *keys++;

fval |= SP8[ work & 0x3fL];

fval = SP6[(work >> 8) & 0x3fL];

fval |= SP4[(work >> 16) & 0x3fL];

fval = SP2[(work >> 24) & 0x3fL];

right ^= fval;

}

right = (right << 31) | (right >> 1);

work = (leftt ^ right) & 0xaaaaaaaaL;

leftt ^= work;

right ^= work;

leftt = (leftt << 31) | (leftt >> 1);

work = ((leftt >> 8) ^ right) & 0x00ff00ffL;

right ^= work;

leftt ^= (work << 8);

work = ((leftt >> 2) ^ right) & 0x33333333L;

right ^= work;

leftt ^= (work << 2);

work = ((right >> 16) ^ leftt) & 0x0000ffffL;

leftt ^= work;

right ^= (work << 16);

work = ((right >> 4) ^ leftt) & 0x0f0f0f0fL;

leftt ^= work;

right ^= (work << 4);

*block++ = right; *block = leftt; return; }

/* Validation sets: *

* Single-length key, single-length plaintext -

* Key : 0123 4567 89ab cdef

* Plain : 0123 4567 89ab cde7

* Cipher : c957 4425 6a5e d31d

*/

void des_key(des_ctx *dc, unsigned char *key){

deskey(key,EN0);

cpkey(dc->ek);

deskey(key,DE1);

cpkey(dc->dk); }

/* Encrypt several blocks in ECB mode. Caller is responsible for

short blocks. */

void des_enc(des_ctx *dc, unsigned char *data, int blocks){

unsigned long work[2];

int i ;

unsigned char *cp;

cp = data;

for(i=0;i<blocks;i++){

scrunch (cp,work);

desfunc(work,dc->ek);

unscrun(work,cp);

cp+=8; } }

void des_dec(des_ctx *dc, unsigned char *data, int blocks)

{

unsigned long work[2];

int i ;

unsigned char *cp;

cp = data; for(i=0;i<blocks;i++){

scrunch (cp,work);

desfunc(work,dc->dk);

unscrun(work,cp);

cp+=8; } }

void main(void)

{

des_ctx dc;

int i ;

unsigned long data[10];

char *cp,key[8] = {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};

char x[8] = {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xe7};

cp = x;

des_key(&dc,key);

des_enc(&dc,cp,1);

printf("Enc(0..7,0..7) = ");

for(i=0;i<8;i++)

printf("%02x ", ((unsigned int) cp[i])&0x00ff);

printf("\n");

des_dec(&dc,cp,1);

printf("Dec(above,0..7) = ");

for(i=0;i<8;i++)

printf("%02x ",((unsigned int)cp[i])&0x00ff);

printf("\n");

cp = (char *) data;

for(i=0;i<10;i++)data[i]=i;

des_enc(&dc,cp,5); /* Enc 5 blocks. */

for(i=0;i<10;i+=2)

printf("Block %01d = %081x %081x\n",i/2,data[i],data[i+1]);

des_dec(&dc,cp,1);

des_dec(&dc,cp+8,4);

for(i=0;i<10;i+=2)

printf("Block %01d = %081x %081x\n",i/2,data[i],data[i+1]);

getch();

}