Разработка алгебраической библиотеки конечных полей для обобщенных криптографических алгоритмов
Особенность создания программной библиотеки конечных полей для дальнейшего использования в качестве алгебраической структуры для ассиметричных схем шифрования на языке Java. Основная характеристика представленной UML схемы программного комплекса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 26.06.2018 |
Размер файла | 85,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Липецкий государственный технический университет
РАЗРАБОТКА АЛГЕБРАИЧЕСКОЙ БИБЛИОТЕКИ КОНЕЧНЫХ ПОЛЕЙ ДЛЯ ОБОБЩЕННЫХ КРИПТОГРАФИЧЕСКИХ АЛГОРИТМОВ
Приньков А.С.
Николаев Д. А.
Криптографические методы считаются надежным способом защиты информации. В связи с колоссально быстрым ростом вычислительной мощности электронно-вычислительных машин возникает потребность в постоянном усовершенствовании средств защиты. В последнее время улучшение криптосистем всё чаще выполняется путем интеграции новых алгебраических структур или изменения характеристик существующих. Здесь и далее, криптосистема - это завершенная комплексная модель, способная производить двусторонние криптопреобразования над произвольными данными. Криптосистема выполняет три основные функции: усиление защищенности данных, облегчение работы с криптоалгоритмом со стороны человека и обеспечение совместимости потока данных с другим программным обеспечением.
Цель данной работы - создать эффективную, обобщенную программную библиотеку, включающую в себя реализацию конечных полей, для использования криптосистемами на языке Java.
Конечное поле, или поле Галуа-- поле, состоящее из конечного числа элементов. Наиболее известным примером конечного поля является поле классов вычетов по простому модулю, то есть факторкольцо . Если F - конечное поле, тогда оно состоит из pn элементов, где простое число p является характеристикой поля, а натуральное число n является степенью поля над его простым подполем. Поля одинаковых порядков совпадают с точностью до изоморфизма. Конечные поля получили повсеместное применение в криптографии. На данный момент на их использовании базируются такие криптосистемы, как схема Эль-Гамаля, алгоритм Чаума, RSA, криптосистема Рабина, схема Шнора и т.д. Их криптостойкость основана на сложности вычисления однонаправленных [1] функций на конечных полях [2]. Построение поля GF(pn) , где p - простое число, n - натуральное число, начинается с построения его примарного подполя (которое совпадает со всем полем при n = 1). Примарное поле строится как кольцо вычетов по модулю p, которое в виду простоты p не имеет делителей нуля и поэтому является полем. Далее построение происходит следующим образом: , где - неприводимый многочлен над полем .
Для разработки был выбран язык программирования Java из-за его кроссплатформенности, популярности. Немаловажно, что подавляющее количество мобильных устройств и серверов работают на виртуальной машине Java. При нынешних темпах развития индустрии портативных устройств и web, потребность в разработке такой библиотеки набирает актуальность. Существуют аналогичные криптографические пакеты. Среди которых большая часть коммерческие и узкоспециализированные (IAIK, JCE, Digt Trusted Java). программный библиотека алгебраический шифрование
Другим решением является бесплатный пакет Bouncy Castle. Их общий недостаток отсутствие обобщенности, из-за этого приходится дублировать код в двух случаях: при разработке нового алгоритма и при добавлении алгебраической структуры к уже существующему. Что противоречит стандартам объектно-ориентированного подхода и в дальнейшем приводит к уменьшению стабильности и нарушению целостности библиотеки. У всех этих библиотек, помимо этого, есть и другие существенные недостатки: использование статических структур, отсутствие открытого доступа к алгебраическим модулям, некорректная работа с кириллицей. Главным же недостатком обобщенного подхода является скорость работы, в связи с использованием технологии позднего связывания.
Для начала необходимо спроектировать структуру библиотеки, показанную на рисунке 1. Она составлена в соответствие с классическими определениями абстрактной алгебры [3].
Оцифровка каждого символа (char) алфавита на конечном поле (характеристики p) производится следующим образом:
С помощью механизма наследования и шаблонов становится возможным использование обобщенных схем шифрования и динамическое подключение алгебраических структур. Под динамическим подключением понимается возможность выбора используемой алгебраической структуры на стадии выполнения программы. Также, данный подход допускает независимое добавление алгебраических структур для криптосистем, при условии согласованности с архитектурой библиотеки. Данная библиотека является полностью независимой и может быть использована любой криптографической системой.
Безусловно, даже при разработке обобщенного программного обеспечения необходимо учитывать специфику реализуемых объектов, как минимум для оптимизации вычислений. Выделим некоторые из использованных численных методов. На полях по определению существуют две операции, и на конечных в том числе. В нашем случае, ресурсозатратными операциями являются умножение и возведение в степень. Умножение возможно оптимизировать с помощью сведения умножения на побитовый сдвиг и поразрядное дополнение, после разложения объекта по двоичному базису на исходном поле. Для возведения в степень целесообразно использовать дихотомический алгоритм возведения в степень, который применим для объектов любой природы. В отличие от возведения по определению (полиномиальная сложность) он характеризуется логарифмической сложностью. Кроме того, для кеширования элементов поля использован паттерн проектирования «Фабрика», что существенно ускоряет вычисления с течением времени использования библиотеки. Следует отметить, что вышеперечисленные методы оптимизация дают наибольший выигрыш при двоичной архитектуре компьютера.
После проектирования реализуем программный комплекс, используя инструменты обобщенного и рефлексивного программирования. В качестве идентифицирующего элемента будем использовать суперкласс Object, все классы являются его подклассами. Для передачи информации между объектами воспользуемся строковым типом, из-за возможности сериализции любых данных в строковые и обратной десериализации. Для оптимизации всех вычислений и генераций будем использовать алгоритмы, приведенные в [4, 5]. Проблема с использованием кириллицы решена посредством увеличения размерности характеристик конечных полей.
Библиотека содержит следующие основные классы и интерфейсы:
1. AddSemiGroup - это интерфейс полугруппы по сложению, обязующий реализовать операцию сложения и нейтральный элемент.
2. MultSemiGroup - интерфейс полугруппы по умножению.
3. AddGroup - интерфейс группы по сложению, дополняющий функцией обращения элемента.
4. MultGroup - соответствующий интерфейс группы по умножению. Мультипликативную группу поля образует поле Галуа без нулевого элемента. Эта группа является циклической, то есть в ней есть порождающий элемент, а все остальные получаются возведением в степень порождающего.
5. SemiRing, SemiField, Ring - абстрактные классы, реализующие родительские методы, наследуясь от них можно добавить произвольную алгебраическую структуру.
6. Field - обобщенный класс поля, реализующий интерфейсы групп по сложению и умножению.
Оценим работоспособность библиотеки (таблица 2) на примере поточного шифрования текста определенной длины криптосистемой Эль-Гамаля, используя реализацию на ЭВМ (таблица 1). Результаты представлены, как среднее арифметическое 500 запусков шифрования.
Рис. 1 - Структура алгебраической библиотеки
Таблица 1 - Технические характеристики ЭВМ
Процессор |
CPU CryptoHash |
CPU Fibonacci |
CPU Blowfish |
|
4 x intel Core i5-4210U 2.7 GHz |
287 |
1.82 |
4.71 |
Таблица 2 - Практические вычисления
Размер текста, символы UTF-16 |
, секунды |
GF(pn), секунды |
|
10 |
0.04 -0.1 |
0.003 - 0.01 |
|
100 |
0.2 - 0.4 |
0.07 - 0.1 |
|
1000 |
0.6 - 0.9 |
0.15 - 0.4 |
|
10000 |
2.2 - 3.5 |
1.3 - 1.9 |
Таким образом, полученные нами данные указывают на реальность практического использования библиотеки. Также, становится заметным что учет специфики конечных полей (Zp и GF(pn)) благоприятно отражается на скорости вычислений.
Литература
1. Левин Л. А. Односторонние функции // Проблемы передачи информации. 2003. T. 39. №1. C. 103-117.
2. Росошек С. К. Криптосистемы в группах автоморфизмов групповых колец абелевых групп // Фундаментальная и прикладная математика, 2007, том 13, № 3, с. 157-164.
3. Винберг Э. Б. Курс алгебры. - Новое издание, перераб. и доп. - М.: МЦНМО, 2011 - 592с. ил.
4. Панкратова И. А. Теоретико - числовые методы криптографии. Томск: Томский государственный университет. 2009. 120 с.
5. Василенко О. Н. Теоритико - числовые методы в криптографии. М.: МЦНМО, 2003
Аннотация
В статье рассмотрена - разработка программной библиотеки конечных полей для дальнейшего использования в качестве алгебраической структуры для ассиметричных схем шифрования на языке Java. Также, в статье представлены UML схема программного комплекса, описание основных классов и результаты апробации разработанного программного обеспечения. Рассмотрены численные методы, используемые при разработке, учитывающие специфику алгебраических структур. Приведен сравнительный анализ, существующих решений.
Ключевые слова: конечные поля, криптосистема, алгебраическая библиотека, криптография.
This article discusses the development of finite fields of software libraries for future use as algebraic structure for cryptographic asymmetric encryption schemes in Java. Also, in the article the UML diagram software package, a description of the main classes and the results of testing of the developed software. We describe the numerical methods used in the development, taking into account the specifics of algebraic structures. The article includes a comparative analysis of existing solutions.
Keywords: finite fields, cryptosystem, algebraic library, cryptography.
Размещено на Allbest.ru
...Подобные документы
Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.
дипломная работа [676,6 K], добавлен 16.06.2015Принцип работы Java. Аплеты как особенность Java-технологии, характеристика методов их защиты. Модель безопасности JDK1.2 и концепция "песочницы". Иерархия криптографических сервисов, алгоритмов. Объектная организация криптографической подсистемы Java.
реферат [54,8 K], добавлен 09.09.2015Программное обеспечение для реализации алгоритмов поиска базиса пространства аннигиляторов, статических соотношений для алгебраических атак и алгебраической иммунности для функции, заданной трейс представлением. Оценки порядка алгебраической иммунности.
курсовая работа [561,9 K], добавлен 30.05.2014Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.
курсовая работа [508,1 K], добавлен 10.11.2014Открытие конкурса NESSIE на разработку криптографических алгоритмов и на создание методики оценки их безопасности и эффективности. Результаты конкурса: отбор ассиметричных схем шифрования и вариантов цифровой подписи; проблемы их лицензирования.
реферат [44,5 K], добавлен 09.05.2011Сравнение производительности программных реализаций алгоритмов шифрования с оптимизациями под языки С и Java. История разработки, сущность, принципы шифрования и успехи в криптоанализе таких алгоритмов шифрования как AES, RC4, RC5, RC6, Twofish и Mars.
реферат [1,3 M], добавлен 13.11.2009Решение дифференциальных уравнений с частными производными. Метод конечных элементов, история развития, преимущества и недостатки. История разработки программной системы. Задачи, решаемые с помощью программного комплекса, области применения ANSYS.
презентация [1,7 M], добавлен 07.03.2013Проектирование программы, которая ведет учет книг в книгохранилище библиотеки. Выбор языка программирования. Разработка и элементы тестового приложения, его структура. Заполнение основных полей для добавления книги. Тестирование программы, ее алгоритм.
курсовая работа [1,5 M], добавлен 20.11.2015Структура и компоненты Delphi 7, их функциональные особенности и назначение. Системная информация утилиты настройки BDE. Свойства полей базы данных и ее главные объекты. Разработка и содержание руководства пользователя. Требования к надежности программы.
курсовая работа [1,6 M], добавлен 10.05.2016Обзор криптографических классов библиотеки Framework Class Libr: классы алгоритмов симметричного и асимметричного шифрования, хеширования. Классы-форматеры и деформатеры. Классы для формирования и проверки цифровой подписи. Примеры применения классов.
курсовая работа [30,0 K], добавлен 27.12.2011Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.
курсовая работа [41,2 K], добавлен 19.12.2010История криптографии. Сравнение алгоритмов шифрования, применение в операционной системе. Анализ продуктов в области пользовательского шифрования. Включение и отключение шифрования на эллиптических кривых. Использование хеш-функции. Электронная подпись.
курсовая работа [492,6 K], добавлен 18.09.2016Теоретические и практические основы грамматик, теория конечных автоматов-распознавателей. Эквивалентные и недостижимые состояния конечных автоматов. Классификация грамматик и порождаемых ими языков. Разработка программного комплекса построения грамматик.
курсовая работа [654,2 K], добавлен 14.11.2010Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.
курсовая работа [27,4 K], добавлен 07.08.2007Основы криптографических систем. Алгоритм создания открытого и секретного ключей. Схема передачи шифрованной информации и алгоритм для цифровой подписи. Преимущества и недостатки системы RSA. Основные формулы для создания RSA-ключей шифрования.
курсовая работа [683,6 K], добавлен 18.12.2011Алгоритмы и стандарты криптографических преобразований. Криптографические преобразования на основе специального программного обеспечения. Метод криптографических преобразований на основе жесткой логики. Аналоги модуля шифрования и дешифрования данных.
курсовая работа [971,6 K], добавлен 30.01.2018Исследование элементов эллиптических кривых, необходимых для реализации криптографических протоколов. Изучение алгоритмов арифметики точек эллиптической кривой и способов генерации кривых для криптографических алгоритмов. Описание алгоритмов шифрования.
курсовая работа [371,2 K], добавлен 07.08.2012Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.
курсовая работа [645,0 K], добавлен 26.03.2014Основы создания мидлетов (midlet) - MIDP приложений для мобильных устройств на языке Java. Особенности устройств, для которых мидлеты предназначены. Библиотеки javax.microedition. Практические примеры создания MIDP приложений для телефона и их запуск.
методичка [25,9 K], добавлен 30.06.2009Особенность разработки алгоритмов для базы данных "Поэты". Анализ реализации анимации с помощью многофункциональной кроссплатформенной библиотеки SFML. Характеристика схемы алгоритма работы меню. Осуществление запуска программы через VisualStudio.
курсовая работа [4,4 M], добавлен 10.05.2019