Электронный образовательный ресурс «Алгебраический процессор»
А.Б.Фролов, НИУ«МЭИ», профессор, abfrolov@mail.ru;
С.Б.Гашков, МГУ им. М.В. Ломоносова, профессор,
sbgashkov@gmail. com, А.М. Винников, НИУ «МЭИ», студент, al.vin@bk.ru
Описаны состав, область применения, поддерживаемые алгебраические структуры, функциональность алгебраической библиотеки, содержание лабораторного практикума и методические особенности использования электронного образовательного ресурса «Алгебраический процессор», созданного в рамках выполненного НИУ «МЭИ» задания инновационной образовательной программы, а также перспектива совершенствования его программного обеспечения.
Состав и область применения
Электронный образовательный ресурс (ЭОР) «Алгебраический процессор» [1,2] был создан в рамках выполненного Московским энергетическим институтом задания по инновационной образовательной программе. Он представляет собой комплекс программных средств, объединенных интерактивным интерфейсом, обеспечивающим доступ как к теоретическим материалам изучаемых курсов, так и к интерактивным программам взаимодействия с вычислительными ресурсами в процессе реализации алгебраических вычислений с визуализацией результатов.
ЭОР «Алгебраический процессор» поддерживает теоретическое и практическое изучение свойств и алгоритмов конечных групп, колец, полей и основанных на этих алгебраических структурах средств защиты информации, в частности криптографических систем и протоколов. Он отличается широким набором изучаемых алгебраических структур и позволяет выполнять вычисления в них как в интерактивном режиме, так и путем разработки и исследования программ на основе библиотеки классов. Он предназначен для использования при выполнении лабораторных работ, курсовых проектов, выпускных работ бакалавров и других видов самостоятельной работы, а также для демонстрации изучаемых алгебраических, алгоритмических и криптографических аспектов при чтении лекций по дисциплинам, охватывающим задачи защиты информации в компьютерных сетях. Используется в частности при подготовке бакалавров и магистров по направлениям 230100 «Информатика и вычислительная техника», 010500 «Прикладная математика и информатика».
«Алгебраический процессор» включает практикум и комплекс программных средств: библиотеку классов Algebraic Abstractions Library (AAL) на языке программирования C++ и построенные на ее основе визуализирующие процессоры:
1. Prozessor-MPEI («Процессор МЭИ») для вычислений в разнообразных алгебраических структурах и изучения систем шифрования и криптографических протоколов с открытым ключом;
2. Kerberos-KDP и UserKDP для изучения протоколов предварительного распределения ключей в компьютерной сети;
3. Multiplier для сравнительного изучения различных методов умножения в конечных кольцах и полях;
4. SymmetricStream для изучения генераторов псевдослучайных последовательностей и поточных криптосистем;
5. KC RSA, KC Рабина, КС Гольдвассер-Микали, КС Эль Гамаля - для изучения криптосистем с открытым ключом и протоколов с нулевым разглашением секрета.
Теоретические разделы ресурса подготовлены авторами на основе изданий [3,4]. Функциональные возможности ресурса достаточны для воспроизведения (моделирования) и программирования практически всех алгоритмов и криптографических протоколов, приведенных в этих изданиях.
В создании «Алгебраического процессора» под руководством А.Б. Фролова принимали участие профессор МГУ им. М.В. Ломоносова С.Б. Гашков, а также многие студенты и аспиранты МЭИ: Белова А.Ю. и Морозов С.В. (ответственные исполнители), Аношин Е.А., Артемьева П.И., Винников А.М., Волокитин М.В., Денисов М.А., Дроздов А.Б., Жебет С.Ю., Зимаков О.В., Иванченко Д.Л., Мамонтов Ал.И., Панкин А.В., Чернышева Н.В., Шилкин С.О., Щуров И.И.
Поддерживаемые алгебраические структуры
Ниже перечислены алгебраические структуры, в которых возможны вычисления с использованием интерактивных средств «Алгебраического процессора».
1 7 7 F
1. 7, 7n, Fp - кольцо целых чисел, кольца вычетов по модулю n, простые поля характеристики p;
2. GF (p2) - квадратичные расширения простых полей
GF(p) ;
3. GF(2)[X], GF(2)[X]/(Х),GF(2п)- кольца многочленов над полем GF(2), кольца вычетов по модулю многочлена f(X), поля GF (2п);
4. ОЕ(3)[X], GF(3)[X(3п) - кольца многочленов над полем ОЕ(3), кольца вычетов по модулю многочлена $Х) , поля GF(3" ) ;
5. GF(2т ) - расширения четверной степени полей GF(2"), порождаемые корнем многочлена 1+У + у4;
6. GF(3т ) - расширения шестой степени полей GF(3"), порождаемые
корнем многочлена 2+У+
7. ВОЦЗНр))
- группы точек эллиптических кривых над полями простой характеристики;
8. ВОС^Л^р2)) - группы точек эллиптических кривых над квадратичными расширениями полей простой характеристики;
9. В°СР(2')) - группы точек эллиптических кривых над полями характеристики два;
10. ВО(^7(33У) - группы точек эллиптических кривых над полями характеристики три.
При выборе любой из этих структур по соответствующей закладке пользователь получает рабочий стол для работы с любой из алгебраических структур, перечисленных в обозначении закладки. По кнопке «Помощь» верхнего меню вызывается интерактивная справка с детальным описанием рабочего стола закладки и выполняемых операций.
Для выполнения операций в кольцах вычетов, полях или группах точек эллиптических кривых требуется модуль - число или многочлен определенного вида. Для их ввода на рабочем столе каждой закладки предусмотрено соответствующее окно. Перечисленных выше алгебраические структуры 5 и 6 над расширениями расширений полей, используются при реализации операций спаривания в криптографических протоколах, основанных на спаривании. На примере структуры
удобно демонстрировать и изучать искажающие отображения, используемые в таких протоколах.
Для эллиптических кривых над полями
^(2") предусмотрено раз-дельное задание суперсингулярных и несу-персингулярных кривых.
В ряде случаев, например при вычислении порядка элемента той или иной группы, используется разложение порядка группы. Для вычисления порядка и его разложения предусматривается вызов функций вычисления порядка и последующего его разложения. Разложение порядков мультипликативных групп полей характеристики два и три
может быть получено из базы данных на основе каннингемовского проекта (The Cunningham Project) [5] в интерактивном режиме. Для разложения других больших чисел используется функция msieve библиотеки [7], а для вычисления порядков эллиптических кривых - функция shoof2 этой же библиотеки. Если условия выполнения операции или исходные данные не соответствуют требуемым, то при попытке ее выполнения появится сообщение с описанием исключения. Например, при
выполнении сложения в GF(2й) установленный на рабочем столе модулярный многочлен должен быть неприводимым. Если это не так, то появится предупреждение и выполнение операции будет прервано. При
сложении в ^^(2И)/(ж> операция с таким полиномом выполнится. В других случаях, например при вычислении порядка элемента, если заранее не вычислить разложение порядка группы, появится сообщение о необходимости такое разложение получить.
Имеются операции генерации и тестирования простых чисел, неприводимых и примитивных многочленов над полями характеристики два и три.
Таким образом, интерфейс «Алгебраического процессора» устроен таким образом, чтобы все необходимое для вычислений, характерных для современных криптографических протоколов было «под рукой», что позволяет сосредоточиться на изучении их особенностей, не отвлекаясь на рутинное программирование. Этой же цели служат интерактивные справки об алгоритмах выполняемых операций или особенностях протоколов.
Общая характеристика и функциональность библиотеки AAL
Теоретическую базу алгебраической библиотеки составляют теория конечных полей и теория эллиптических кривых.
AAL - это статически подключаемая библиотека, разработанная на языке программирования C++, использующая STL (Standard Template Library - стандартная библиотека шаблонов для С++), содержащая 29 классов.
AAL включает функции, реализующие: 1. Теоретико-числовые алгоритмы: вычисления символов Лежандра и Якоби, извлечения квадратного корня из квадратичного вычета по модулю простого числа и по составному модулю с известным его разложением; различные модификации алгоритма Евклида (основной, расширенный, бинарный, основной, расширенный бинарный, расширенный для нахождения обратного элемента);
2. В числовых и полиномиальных кольцах и конечных полях основные (сложение, умножение) и производные (деление с остатком, приведение по модулю, обращение, возведение в степень) операции;
3. В группах точек эллиптических кривых основные (сложение и удвоение, взятие противоположной точки) и производные (взятие точки, вложение данных и скалярное умножение, искажающее отображение, спаривание) операции.
4. Алгоритмы генерации и тестирования больших простых чисел, неприводимых и примитивных многочленов, многочленов, порождающих нормальный базис, псевдослучайных последовательностей, в том числе криптографически стойких, образующих элементов и элементов высокого порядка.
5. Алгоритмы генерации многочленов и таблиц умножения для оптимальных нормальных базисов и гауссовых нормальных базисов, алгоритмы перехода от нормального базиса того или иного вида к полиномиальному и от полиномиального базиса к нормальному;
6. Алгоритмы матричной алгебры применительно к решению уравнений над конечными полями и тестированию свойств многочленов.
7. Вспомогательные алгоритмы (вычисление значений хеш-функций и др.).
О лабораторном практикуме ЭОР «Алгебраический процессор»
Практикум включает ряд разделов:
• Вычисления в числовых группах, кольцах и полях.
• Вычисления в полиномиальных группах, кольцах и полях.
• Вычисления на эллиптических кривых EC(GF(p)).
• Вычисления на эллиптических кривых EC(GF(2n)).
• Вычисления на эллиптических кривых EC(GF(3n)).
• Алгебраические структуры над расширениями полей.
• Матричный шифр и его криптоанализ.
• Проблемы квадратичного вычета и квадратного корня.
• Проблема дискретного логарифма и алгоритм согласования.
• Тесты разложимости и тесты простоты.
• Факторизация чисел. Криптосистема RSA. Цифровая подпись RSA.
• Криптосистема Рабина.
• Криптосистема ЭльГамаля.
• Криптосистемы Гольдвассер-Микали и Блюма-Гольдвассер.
• Цифровая подпись Эль Гамаля.
• Криптосистема и цифровая подпись Эль Гамаля. Обобщенный вариант.
• Цифровая подпись с возвратом сообщения.
• Цифровая подпись с личностным ключом.
• Протоколы с нулевым разглашение.
• Протоколы согласования ключей по открытым каналам.
• Схема предварительного распределения ключей.
• Распределение ключей в вычислительной сети Kerberos KDP.
• Сравнительный анализ временных характеристик алгоритмов операций в конечных группах, кольцах и полях.
• Линейные рекуррентные последовательности.
• Линейные конгруэнтные последовательности.
• Генераторы псевдослучайных последовательностей.
• Статистические тесты.
Каждый раздел содержит теоретическое введение, одну или две лабораторные работы и, возможно, задания по одному или двум курсовым проектам.
Лабораторная работа №1 и Курсовой проект №1 предполагают выполнение расчетов с использованием итерактивных программных средств Алгебраического процессора, но не разработку собственных программ.
Лабораторная работа №2 и Курсовой проект №2 , если они предусмотрены в соответствующем разделе практикума, связаны с разработкой собственных программ с использованием функций библиотеки AAL, задействованных при выполнении Лабораторной работы №1 или Курсового проекта №1 соответствующего раздела.
О совершенствовании библиотеки и процессора
Многие современные языки программирования позволяют вызывать функции из библиотек и других компилируемых модулей, написанных на C и C++. Для этого в них имеется прикладной программный интерфейс (C API), который позволяет организовать указанные вызовы. Предлагается способ автоматизации связывания Алгебраической библиотеки AAL с помощью генератора интерфейсов SWIG для последующего использования её в скриптах на языке Python [7].
Такой подход позволяет интегрировать разные программные компоненты, предоставляя доступ к компилируемому коду при отсутствии его аналога на скриптовом языке. Он обладает следующими преимуществами:
5. Скриптовый движок Python, предоставляя доступ к алгебраической библиотеке в режиме командной оболочки, что позволяет ускорить работу с библиотекой, поскольку нет необходимости перекомпилировать выполняемый код.
6. Есть возможность автоматизировать выполнение определенных операций на различных наборах входных данных с использованием текстовых скриптов.
7. C++ хорошо подходит для алгебраических задач, когда быстродействие играет важную роль. Однако для рядовых задач, по статистике, только 20% времени тратится на выполнения 80% кода. Для этих 80% не критичного к времени выполнения кода можно использовать интерпретируемый язык высокого уровня. Такой вариант сочетает лучшие качества обоих программных сред: быстроту компилируемого C++ и богатую стандартную библиотеку Python, включающую средства для работы со многими сетевыми протоколами, элементами интерфейса пользователя, форматами сериализации данных и криптографическими протоколами, что позволяет создавать на его основе сложные приложения. Также в языке имеется набор встроенных средств для научных вычислений: поддерживаются многозначные и комплексные числа, построение графиков и диаграмм и даже символьные вычисления.
8. Благодаря использованию в Python сборщика мусора, программист может не беспокоиться об утечках памяти при использовании динамических объектов библиотеки.
Использование генератора интерфейсов SWIG позволяет сократить до минимума необходимую работу и обработать большой объем кода. SWIG автоматически генерирует функции доступа для заданных структур, классов и функций по специальным файлам (интерфейсным модулям). Также поддерживаются конструкторы и деструкторы, перечисляемый тип и некоторые операторы. На выходе получается динамическая (разделяемая) библиотека, которую интерпретатор может подключать в качестве расширения. Также существуют модули, позволяющие встраивать код C/C++ прямо в исходные файлы Python, создавая расширения «на лету» (pyinline, weave).
Таким образом, появилась возможность использовать алгебраические структуры библиотеки во всем множестве языков программирования, для которых поддерживается генерация интерфейсов: Python, PHP, Perl, Ruby, Java, C#, Tcl, Sheme, Ocaml. На рис. 1 показаны отношения компонентов среды разработки библиотеки AAL. Созданием такой среды мы обеспечиваем независимость разрабатываемой нами библиотеки от различных компиляторов и языков программирования. Чтобы использовать код AAL для какого-то языка программирования, достаточно создать проект разработчика для этого языка, запустить имеющиеся в AALT тесты, убедившись в их работе, и сгенерировать соответствующие языковые привязки.
CppUni-tLite (ком-по-нент для создания и автоматического запуска тестов)
Алгебраическая библиотека MPEI AAL
Классы библиотеки
Наборы тестов
Модули Интерфейса
Языковая привязка (binding)
SWIG
Рис. 1. Отношения компонентов среды разработки библиотеки AAL
В будущем с использованием подобных средств планируется создание дистанционной версии алгебраического процессора.
Работа выполнена при финансовой поддержке РФФИ, проект 11 -01 -00792а.
Литература
1. Фролов А.Б., Белова А.Ю., Волокитин М.В., Чернышева Н.В. Алгебраический процессор. М.: Издательский дом МЭИ. 2010.
2. Программное средство «Алгебраический процессор»// А.Б. Фролов, С.Б. Гашков, А.Ю. Белова, С.В. Морозов, С.Ю. Жебет, И.И. Щуров. В кн. Информатизация инженерного образования. Электронные образовательные ресурсы МЭИ. Вып. 3. 2008. С. 271 - 274.
3. Болотов А.А., Гашков С.Б., Фролов А.Б. Часовских А.А. Элементарное введение в эллиптическую криптографию. Алгебраические и алгоритмические основы. Изд. 2, доп. М.: Комкнига. 2012.
4. Болотов А.А., Гашков С.Б., Фролов А.Б. Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых. Изд. 2, доп. М.: Комкнига. 2012.
5. John Brillhart D.H., Lehmer, J.L. Selfridge, Bryant Tuckerman and S.S. Wagstaff, Jr. Factorisations of bn±1, b=2,3,6,7,10,11 up to high powers. Amer. Math. Soc., Providence, Rhode Island, 2002.
6. http://www.ans.org/online_bks/conm22
7. Multiprecission Integer and Rational Arithmetic C/C++ Library. www.cs.sunysb.edu/.../implement.shtml
8. Guido van Rossum. Python/C API Reference Manual. CreateSpace, 2009.