бесплатные рефераты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Информационная модель описывает представления данных в системе и их взаимосвязь. В качестве инструмента для построения функциональной модели было выбрано CASE-средство фирмы Computer Associates - 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 Разработка криптографической программы R CRYPTO

В качестве основного средства для разработки программного обеспечения была выбрана среда визуального программирования 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. Расшифровка зашифрованного файла возможна только при правильно введенном пароле, который использовался при шифровании этого файла. Экранные формы программы R CRYPTO представлены в приложении Г, фрагмент листинга программы представлен в приложении Д.

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

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

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

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

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

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

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

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

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

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

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

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

Математическая модель программы R CRYPTO представляет собой набор математических и алгоритмических преобразований, производимых над данными, для достижения поставленной цели. Основной функцией является функция шифрования. Схему работы алгоритма шифрования можно описать функциями 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. Во-первых, осуществляется хеширование пароля. Хеширование выполняет несколько функций. Для того чтобы не заставлять пользователя запоминать ключ - длинную последовательность цифр, был разработан метод преобразования строки символов любой длины (так называемого пароля) в блок байт заранее заданного размера (ключ). Для этой операции используется так называемая хеш-функция. Хеш-функцией называется такое математическое или алгоритмическое преобразование заданного блока данных, которое обладает следующими свойствами:

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

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

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

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

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

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

Сначала пароль, введенный пользователем, преобразуется в массив байт 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).

Целостность информации - это гарантия того, что информация сейчас существует в ее исходном виде, то есть при ее хранении или передаче не было произведено несанкционированных изменений. Нарушение этой категории называется фальсификацией сообщения. Для решения этой проблемы в программе R CRYPTO используется электронная цифровая подпись. На основе исходного файла вычисляется хеш-функция - это число, которое более или менее уникально характеризует исходный файл. В принципе, можно найти другой текст, который дает то же самое значение хеш-функции, но изменить в исходном файле десять-двадцать байт так, чтобы текст остался полностью осмысленным, да еще и изменился в выгодную нам сторону (например, уменьшил сумму к оплате в два раза) - чрезвычайно сложно. Электронная подпись состоит из 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-ой байт электронной цифровой подписи),

Страницы: 1, 2, 3


© 2010 РЕФЕРАТЫ