Научная статья на тему 'Среда разработки композиционных криптосистем'

Среда разработки композиционных криптосистем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
219
37
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кукарцев Анатолий Михайлович, Старовойтов Сергей Александрович, Шестаков Василий Сергеевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Composition cryptosystem integrated development environment

It is presented program project, which solves one of the basic tasks to applied cryptography, it is increasing to velocities data processing in cryptographic system without safety level changes. Possibility to describe the algorithms to cryptographies is realized in the algebra form. The Project is developed on the base designed a crypto language, well-adapted under hardware particularities family processor Pentium II/III/Pro.

Текст научной работы на тему «Среда разработки композиционных криптосистем»

где параметр 1 О [0, 1] моделирует частоту появления посторонних значений, а Р(выбросы) - некоторая вероятностная модель посторонних значений.

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

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

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

Библиографический список

1. Васильев, В. И. Распознающие системы : справ. / В. И. Васильев. Киев : Наукова думка, 1983. С. 422

2. Форсайт, Д. А. Компьютерное зрение. Современный подход : пер. с англ. / Д. А. Форсайт, Ж. Понс. М. : Вильямс, 2004. С. 928

M.N. Favorskaya

PROBABILISTIC METHODS OF VIDEOFLOW SEGMENTATION AS THE PROBLEM WITH MISSING DATA

It is devoted to classification ofprobabilistic methods for image segmentation. The approach based on the method of maximum probability is discussed in detail. The formal set up of problem with missing data is considered, also the algorithm of its realization is proposed. The problem of videoflow segmentation on basis of multilevel moving model is analyzed.

УДК 004.4

А. М. Кукарцев, С. А. Старовойтов, В. С. Шестаков СРЕДА РАЗРАБОТКИ КОМПОЗИЦИОННЫХ КРИПТОСИСТЕМ

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

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

Проблема безопасности важной (ценной) информации издревле волновала человечество. Спустя десятки веков до нас дошли многие способы сокрытия информации, один из самых известных - шифр Цезаря, которым пользовался римский император. Еще примерно 50 лет назад криптографией занималось исключительно государство. Но на сегодняшний день проблемы сохранности информации уже не являются исключительно задачами государства. Мы сталкиваемся с защитой наших интересов в области обеспечения безопасности информации

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

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

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

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

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

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

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

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

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

Любая информация имеет свою ценность. Ценность информации определяют относительно. Приведем самое простое определение: информация ценна настолько, насколько будут велики экономические потери при ее утечке (разглашении). Также ценность информации зависит от времени. Как правило, если речь идет о коммерческой информации, то ее ценность убывает за несколько дней или недель. Криптостойкость алгоритма характеризуется временем взлома. Таким образом, для информации разного назначения (разной ценности) целесообразно использовать различные значения криптостойкостей, что позволит более эффективно использовать вычислительные и временные ресурсы [1]. Согласно общим требованиям, «криптостойкость алгоритма должна зависеть целиком и полностью от длины ключа» [2]. Следовательно, одним из критериев проектируемой криптосистемы является возможность менять размер ключа, что влияет на затраты вычислительных ресурсов и время обработки.

Готовые реализации криптосистем имеют заранее определенную длину ключа (или узкий диапазон). А длина ключа задается на стадии проектирования реализации криптосистемы и не может быть изменена на стадии использования реализации криптосистемы. Поэтому первой нашей задачей является обеспечение гибкости изменения длины ключа.

Готовая реализация криптосистемы не позволяет менять длину ключа и другие параметры. Если это аппаратная система шифрования (микросхема), то, при всем желании, количество регистров и «зашитую» логику невозможно изменить. Если это программная система шифрования, то очень сложно менять откомпилированный код программы (адреса, размеры операндов, сложность операций и пр.). Это задача была решена разделением создания реализации криптосистемы на два этапа:

1) стадия проектирования (фактическое программирование);

2) стадия использования (выполнение).

Программирование реализаций криптосистем ведется на языках высокого уровня, таких как С++, и обязательно низкого уровня - ассемблер. Использование языков низкого уровня (ассемблеров) связано с тем, что каждый криптоалгоритм содержит критичные по времени участ-

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

Ныне существует набор библиотек, свободно подключаемых к языкам программирования высокого уровня, таких как C++. Этот набор библиотек больше известен как OpenSSL. Но его использование затруднено тем, что необходимо знание программирования (хоть и менее глубокое); библиотеки являются импортными, а после выхода в США закона «Об ограничение экспорта технологий» [1], их криптостойкости заранее ограниченны, что приводит к снижению необходимого уровня безопасности; коды библиотек компилируются без проработки критичных участков криптоалгоритмов на языках низкого уровня, и соответственно, слабо оптимизированы под аппаратные возможности различных типов процессоров.

Закон «Об ограничение экспорта технологий» также влияет и на существующие криптографические средства, например, стандарт безопасности SSL 2.0 в России обладает низкой длиной ключа, а ведь именно по нему ведутся сделки и проверка банковских счетов с указанием PIN через Интернет.

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

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

- рядовые пользователи информационных систем (пользователи);

- криптографы, криптоаналитики и математики (алгебраисты) без особых познаний в области программирования языков высокого и низкого уровня;

- программисты.

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

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

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

Реализации криптосистем могут разрабатываться как композиции ранее реализованных алгоритмов. Так, например, один из самых известных стандартов шифрования DES вскрывается примерно за двое суток «лобовым» (прямым перебором возможных ключей) вскрытием при имеющихся на сегодняшний день вычислительных ресурсах. Сегодня сам DES уже не используется в своем классическом виде, а используются его модификации. Модифицирование алгоритма DES пошло по двум путям: наращивание длины ключа и многоразовое шифрование DES с разными ключами. Таким образом, если рассматривать второй путь, то криптостойкость может быть повышена просто многократным шифрованием одним и тем же алгоритмом. Но это верно не для всех алгоритмов, здесь есть маленькая алгебраическая «ловушка». Может получиться так, что многоразовое шифрование с разными ключами может дать эффект одноразового шифрования с каким-то третьим ключом, и при «лобовом» вскрытии этот ключ подойдет. Другими словами, важно, чтобы алгоритмы не образовывали группу относительно операции композиции. DES не обладает таким свойством, а, например, алгоритм, использующий только операцию ХОг, обладает таким свойством. Покажем это подробнее.

Обозначим Ек - алгоритм зашифрования на ключе к, тогда для алгоритма БЕ8 Ек Ф о Ек [1], но для алгоритма на основе ХОг имеем выражение Ек = ° Ек более

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

Пусть Е® и Е^2 - различные алгоритмы шифрования, т. е. исключено математическое влияние одного алгоритма на другой (не имеют одновременно одинаковых операций в одинаковой последовательности над одинаковыми множествами), тогда Р1 и Р2 - вероятности их «взлома» (фактические криптостойкости) с учетом как «лобового» вскрытия, так и аналитического вскрытия, т. е. анализа алгоритма.

Покажем, что они не образуют группу, относительно операции композиции. Пусть А и А2 - множества алгоритмов с одинаковым (в рамках рассматриваемого множества) набором операций, соответственно образованных алгоритмами Е^ и е£2) при разных возможных ключах к1и к2, а так как алгоритмы различны, то Е^2 й А1 и Е^ й А2, А1 п А2 = 0, тогда так как алгоритмы матема-тиче1ски не зависимы, то их композиция есть композиция их операций, отличных от первого набора операций

(£д_1) о Е^ г Аг) и от второго набора операций (Ек} о Ек2> г А,), следовательно их композиция есть новый набор операций (множество композиций А3), т. е. новый алгоритм с вероятностью взлома Р1 • Р2. Но наиболее интересен другой факт: так как алгоритмы алгебраически независимы (используют различную логику), реализация их композиции может дать выигрыш во времени обработки информации.

Обозначим через ^ и время обработки информа-

“ 1 2 12 гг(1) Л 2) 77(12) ,^(1)

ции для реализаций алгоритмов , Е^ , Ек ’ и Ек соответственно. Примем условие, что Р12 = Р1 • Р2 ~ Р3, другими словами, композиция алгоритмов дает примерно такую же вероятность взлома, что и первый алгоритм при ключе к3, причем к1 < к3 и, следовательно, t1 < Так

как логика алгоритмов Е(1) и Ек2) различна, как различ-

к1 к2

ны и их реализации, может получиться вариант, при котором t12 < Фактически это означает, что мы получаем аналогичную криптостойкость, но на ключах меньшего размера и с выигрышем по времени обработки информации. Важно отметить еще одну особенность композиций криптоалгоритмов: вследствие того, что алгоритмы имеют разную природу и разную криптостойкость, верно выражение Р12 = Р1 • Р2 = Р21, но также верно, что t12 ф t . Откуда получаем еще возможный вариант повышения производительности: каждый алгоритм имеет коэффициент увеличения объемов данных, фактически его можно определить как отношение единицы объема данного на входе алгоритма к единице объема данных на выходе алгоритма. Для различных алгоритмов он не одинаков, а в композициях он будет определять объем промежуточных (в рамках композиции) данных, и следовательно, скорость обработки.

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

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

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

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

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

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

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

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

- обеспечить гибкое изменение длины ключа;

- ориентировать проект на различный круг пользователей: от рядовых до специалистов;

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

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

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

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

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

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

Data_=_64_bits_/ Data = 32

Рис. 1

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

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

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

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

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

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

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

1) последовательное преобразование каждого модуля, написанного на криптоязыке к языку С++ с необходимыми ассемблерными вставками;

2) преобразование схемы к языку XML (Extended Markup Language - расширенный язык разметки). На его базе удобно формировать структурные схемы. Здесь же программируется сценарий поведения, происходит «сшивание» блоков схемы в одну целостную программу;

3) добавление служебной (отладочной) информации, если проект компилируется в режиме отладки;

4) финальную компиляцию проекта.

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

Рассмотрим на примере алгоритма ECC структуру и правила написание модулей.

Приведем структуру (рис. 2) и описание криптоалгоритма ECC (листинг 1). Этот алгоритм имеет три потока данных: входящий поток, исходящий поток и технологический поток. Входящий и исходящий потоки предназначены для приема/передачи основных данных (рис. 1). Технологический канал является каналом ввода/вывода служебных данных, таких как ключи, параметры алгоритма и пр.

Лбстбнг 1. Алгорбтм ЕСС name ECC

{

key_length

in_length

mode

scale<gep> = key_length

scale<data> = in_length

in

out

tec

tec

1

ECC

out

Рис. 2

Заголовок любого модуля представляет собой точку сопряжения с общей схемой, т. е. является интерфейсом между XML и криптоязыком внутри модуля. Рассмотрим его подробнее. Изначально из общей схемы передаются параметры длин данных key_length и in_length, они и определяют диапазоны значений всех переменных, используемых в криптоалгоритме. Таким образом, здесь декларируется независимость криптоалгоритма от длины его ключа. Это достигается тем, что каждый криптоалгоритм рано или поздно закончится конечным рядом математических преобразований. Наборы этих преобразований сгруппированы в библиотеки. В листинге 1 используются библиотеки data и gep. Инструкция scale (масштаб) фактически настраивает библиотеки на длины ключей и данных. Ниже приведен список имен используемых потоков данных. Поле mode фактически определяет режим работы алгоритма: зашифрование или расшифрование. Это поле настраивается автоматически в зависимости от режима работы модуля в конкретный момент времени в общей структуре алгоритма, т. е. определяется сценарием поведения.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

После заголовка следует написание собственно алгоритма (блока), причем блок может иметь любое предназначение, т. е. выполнять различные функции, такие как генерация, фильтрация, кодирование данных и пр. Написание алгоритма представляют собой набор областей данных и команд. Области данных являются статическими, т. е. имеют глобальную для модуля область видимости. Все области данных имеют одно имя data. И фактически разделяются только для наглядности, например,

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

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

Подробнее остановимся на библиотеках. Они фактически созданы для упрощения работы с языком и расширения возможного круга пользователей. В них описываются объекты множества и разрешенные операции над ними. Самым низким уровнем этой модели являются Базовые библиотеки типов. Эти библиотеки содержат первую надстройку над аппаратной частью процессора, т. е. в них описываются базовые структуры, такие как операции над большими числами, битовые операции и пр. Под каждый набор инструкций процессора пишется конкретная библиотека. Это и обеспечивает аппаратную гибкость проекта. В любой процедуре, объявленной в библиотеке, может быть код ассемблера. Базовые библиотеки могут писаться сразу на языке C++. В листинге 3 приведен состав библиотеки gep, на которую ссылаются ранее показанные переменные. В библиотеке описываются только представитель множества данных алгебраической структуры и операции над множеством. Операции допускают побитовую работу с данными. Информация в листинге 3 дана сжато.

Лбстбнг 2. Данные ЕСС

name ECC {...}

data

{

gep.point public_key table abc

}

data

{

num.integer private_key

}

Лбстбнг 3. Ббалботека gep namelib gep

{

length

scale<num> = length num.integer a num.integer b num.integer p predeclare point G }

declare point

{

numeric.integer x numeric.integer y

}

declare point(A) == point(B) declare point(A) + point(B)

{ .

L = B / A (mod p)

Библиотека описывается своим ключевым словом и содержит также как и алгоритм, заголовок, в котором приведены связи с библиотеками и внутренние данные. Всякий объект описывается в отдельном блоке и его имя описывается ключевым словом declare. Для описания операции необходимо использовать это же ключевое слово с именами типов, после которых в скобках указываются фактические параметры. Если не достаточно имен операторов (+, -, * и пр.), возможно использование инфиксных и префиксных функций с именем, не совпадающим с ключевыми словами. Например, declare point(A) f point(B) f point(C) - трехарная функция-оператор в инфиксной форме с тремя фактическими параметрами A,

B, C, все типа point. Ее префиксная форма выглядит иначе: declare f point(A) point(B) point(C).

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

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

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

Проект ориентирован на широкий круг пользователей различной квалификации. Проект может создаваться на этапе схемы, при этом не требуется высокая квалификация пользователя. Применение криптоязыка позволяет реализовывать алгоритмы различной природы и с использованием «сквозного» масштабирования данных позволяет абстрагироваться от аппаратных особенностей реализация, перекладывая всю «нагрузку» на Базовые библиотеки типов. При этом приближение криптоязыка к языку алгебраических операций дает возможность использовать его криптографам, криптоаналитикам, математикам и студентам, изучающим криптографию. Так как реализация криптоалгоритма в рамках показанной модели упирается в Базовые библиотеки типов, проект содержит наиболее часто используемые из них, ориентированные на распространенные в России аппаратные платформы семейства Pentium II/III/Pro и их аналоги фирмы AMD.

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

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

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

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

На сегодняшний день уже разработаны все основные уровни проекта, кроме интегрированной среды разработки, отладки и консоли аудита. В разработке представлены «дружественный интерфейс», отладка, аналитическая часть консоли аудита, отладка криптоязыка. Создается реализация ЭЦП. Проект выполнен примерно на 40%.

Библиографический список

1. Девянин, П. Н. Теоретические основы компьютерной безопасности : пособие для вузов / П. Н. Девянин [и др.]. М. : Радио и связь, 2000. 192 с.

2. Шнайер, Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си / Б. Шнайер. М. : Изд-во ТРИУМФ, 2003. 816 с.

A. M. Kukartsev, S. A. Starovoitov, V. S. Shestakov COMPOSITION CRYPTOSYSTEM INTEGRATED DEVELOPMENT ENVIRONMENT

It is presented program project, which solves one of the basic tasks to applied cryptography, it is increasing to velocities data processing in cryptographic system without safety level changes. Possibility to describe the algorithms to cryptographies is realized in the algebra form. The Project is developed on the base designed a crypto language, well-adapted under hardware particularities family processor Pentium II/III/Pro.

i Надоели баннеры? Вы всегда можете отключить рекламу.