Фролов А.Б. \ Винников А.М. 2, Гашков С.Б. 3,Крыгин М.А.4
1 «НИУ«МЭИ», профессор, abfrolov@mail . ru 2 «НИУ «МЭИ», магистр, al. vin @ bk. ru 3 МГУ им. М.В. Ломоносова, профессор, [email protected] 4 «НИУ«МЭИ», аспирант, <[email protected]>
Дистанционный электронный образовательный ресурс «Алгебраический процессор «НИУ «МЭИ»
КЛЮЧЕВЫЕ СЛОВА:
Электронный образовательный ресурс, алгебраическая библиотека, дистанционное образование.
АННОТАЦИЯ:
Описаны состав, область применения, поддерживаемые алгебраические структуры, функциональность алгебраической библиотеки дистанционного электронного образовательного ресурса «Алгебраический процессор «НИУ «МЭИ», и его особенности как программного продукта.
Состав и область применения
Дистанционный электронный образовательный ресурс (ЭОР) Алгебраический процессор «НИУ «МЭИ» обеспечивает удаленный доступ к алгебраическим библиотекам, в частности к алгебраической библиотеке MPEI AAL (MPEI Algebraic Abstractions Library), при вычислениях в различных числовых, полиномиальных и эллиптических структурах по составляемым с подсказками алгебраического процессора программам или по готовым программам из лабораторного практикума. Он был создан в развитие локальной версии [1,2,3] и представляет собой комплекс программных средств, объединенных дистанционным интерактивным web-интерфейсом, обеспечивающим удаленный доступ как к теоретическим материалам изучаемых курсов, так и к интерактивным программам взаимодействия с вычислительными ресурсами в процессе реализации алгебраических вычислений с визуализацией результатов.
Он поддерживает теоретическое и практическое изучение свойств и алгоритмов конечных групп, колец, полей, групп точек эллиптических кривых и основанных на этих алгебраических структурах алгоритмов и протоколов, изучаемых в различных дисциплинах. Передаваемые web-транзакции разделяются на два класса: транзакции, доступные конкретному пользователю и транзакции, доступные всем пользователям сети, что позволяет моделировать работу защищенных коммуникационных систем и атак на них. Также обеспечивается дистанционный доступ к формированию и использованию информационного содержания лабораторного практикума и доступ к системной информационной
поддержке дистанционного ресурса.
Ресурс предназначен для использования при выполнении лабораторных работ, курсовых и дипломных проектов, выпускных работ бакалавров и других видов самостоятельной работы, а также для демонстрации изучаемых алгебраических аспектов дисциплины и моделирования работы систем на их основе при чтении лекций. Используется в частности при подготовке бакалавров и магистров по направлениям 230100 «Информатика и вычислительная техника», 010400 «Прикладная математика и информатика».
Теоретические разделы ресурса подготовлены авторами на основе изданий [4,5]. Функциональные возможности ресурса достаточны для воспроизведения (моделирования) и программирования большинства алгоритмов и криптографических протоколов, приведенных в этих изданиях.
Поддерживаемые алгебраические структуры
Ниже перечислены алгебраические структуры, в которых возможны вычисления с использованием интерактивных средств «Алгебраического процессора».
1. 2, , Fp - кольцо целых чисел, кольца вычетов по модулю п, простые поля характеристики р;
2. GF (р2) - квадратичные расширения простых полей ^ (р);
3. ^(2)[Х] ^(2)[Х]ях)> ^(2") - кольца многочленов над полем GF(2], кольца вычетов по модулю многочленаДХ], поля GF(2");
4. ^(3)[х] ^(3)[х]/(х)' ^(3") - кольца многочленов над полем GF(3), кольца вычетов по модулю многочлена ДХ] , поля GF (3");
5. GF(2т ) - расширения четверной степени полей GF(2т), порождаемые корнем многочлена 1+^+Y4;
6. GF(3т ) - расширения шестой степени полей GF(3т), порождаемые корнем многочлена 2+^ + Y6;
7. ЕС(^(р)) - группы точек эллиптических кривых над полями простой характеристики;
8. ЕС^(р2)) - группы точек эллиптических кривых над квадратичными расширениями полей простой характеристики;
9. EC(GF(2")) - группы точек эллиптических кривых над полями характеристики два;
10. ЕС(GF(3")) - группы точек эллиптических кривых над полями характеристики три.
При выборе любой из этих структур по соответствующему элементу панели пользователь получает меню операций для работы с любой из алгебраических структур, перечисленных в обозначении элемента. При выборе необходимой операции пользователь получает подсказку о формате ее представления в программе.
В ряде случаев, например при вычислении порядка элемента той или иной группы, используется разложение порядка группы. Для вычисления порядка и его разложения предусматривается вызов функций вычисления порядка и последующего его разложения. Разложение порядков мультипликативных групп полей характеристики два и три может быть получено из базы данных на основе каннингемовского проекта (The Cunningham Project) [6] в интерактивном режиме. Для разложения других больших чисел используется функция msieve библиотеки [7], а для вычисления порядков эллиптических кривых - функции schoof и schoof2 библиотеки M.I.R.A.C.L. [8]. Если условия выполнения операции или исходные данные не соответствуют требуемым, то при попытке ее выполнения появится сообщение с описанием исключения. Например, при выполнении сложения в GF(2n) передаваемый модулярный многочлен должен быть неприводимым. Если это не так, то появится предупреждение и выполнение операции будет прервано. При сложении в GF(2")Лх) операция с таким полиномом выполнится.
Имеются операции генерации и тестирования простых чисел, неприводимых и примитивных многочленов над полями характеристики два и три. Таким образом, интерфейс дистанционной версии сохраняет функциональность интерфейса локальной версии «Алгебраического процессора» и устроен таким образом, чтобы все необходимое для вычислений, характерных для современных криптографических протоколов было «под рукой», что позволяет сосредоточиться на изучении их особенностей, не отвлекаясь на рутинное программирование. В дистанционной версии воспроизведён лабораторный практикум локальной версии [1].
Существенным преимуществом дистанционной версии является возможность вычислений по составляемым или готовым программам.
На рис.1 приведен пример программы генерации и тестирования простого числа заданной длины в битах, которая может быть выполнена на сервере кафедры математического моделирования (ММ) «НИУ «МЭИ» с любого удаленного компьютера.
На рис. 2. Показан результат, доставленный на удаленный компьютер.
_На рис. 3 дан скриншот листингов программы и результата._
p=Integer()
print "Получение псевдопростого числа p=", print p.GeneratePrime(100) order=Integer()
print "p-1=", order.Sub(p,Integer(1))
res=FactorizationAlgorithms(order).MsieveDecomposition() print "Разложение p-1:", res.toList()
print "Подтверждение по тесту Люка, что p есть простое число: " print Integer().ModifiedTestLuka(res, p)
Рис. 1. Программа получения простого числа заданной длины (в битах)
Получение псевдопростого числа p= AAL.Integer(1201116649474191988201436713489) p-1= AAL.Integer(1201116649474191988201436713488) Разложение p-1: [('2', '4'), ('3', '1'), ('4159', '1'), ('6016653890529534284089909', '1')]
Подтверждение по тесту Люка, что p есть простое число: True
Рис. 2. Результат исполнения программы на рис. 1
Общая характеристика и функциональность библиотеки MPEI AAL, доступной посредством дистанционного алгебраического
процессора « НИУ«МЭИ»
Теоретическую базу алгебраической библиотеки составляют теория конечных полей и теория эллиптических кривых.
MPEI AAL - это статически подключаемая библиотека,
разработанная на языке программирования C++, использующая STL (Standard Template Library - стандартная библиотека шаблонов для С++), содержащая 29 классов.
MPEI AAL включает функции, реализующие:
1. Теоретико-числовые алгоритмы: вычисления символов Лежандра и Якоби, извлечения квадратного корня из квадратичного вычета по модулю простого числа и по составному модулю с известным его разложением; различные модификации алгоритма Евклида (основной, расширенный, бинарный, основной, расширенный бинарный, расширенный для нахождения обратного элемента).
Алгебраический процессор Практикум Авторы Руководство Справка Выйти Настройки»
GF(3trt),GF(3m)[YJY10 w GF(2n4)]GF(2rHVJY'' EC(GF(p))- EC(GF2)~ EC(GF3)» GF(3)[X|,GF(3HX|,:xl,GF(3n)» GF(2)IX], GF(2)[X]„x. GF(2n>» Z,Z„,Fe- GF(p2)» EC(GF(p2))» Примеры-
1 p=Integer()
2 print "Получение псевдопростого числа р=",
3 print p.GeneratePrime(l0ö)
4 order=lnteger()
5 print "p-l=", order.Sub(p,Integer(i)) G res-FactorizationAlgorithms(order).HsieveDecomposition()
7 prinr "Разложение p-1:", res.toList()
9 i' in. Integer().ModifiedTestLuka(res, p)
Рис.3. Скриншот фрагмента листингов программы и результата. В верхней строке меню «Алгебраический процессор», «Практикум», «Авторы», «Руководство», «Справка», «Выйти», «Настройка». В следующие строке меню элементы панели перечисленных выше алгебраических структур и «Примеры». Ниже слева поле для размещения программы (показан рассмотренный выше пример), справа - поле результата вычислений (по кнопке «Поехали» внизу). «Настройка» это создание и редактирование образовательных ресурсов. «Руководство» это пример составления программы в динамике.
2. В числовых и полиномиальных кольцах и конечных полях основные
(сложение, умножение) и производные (деление с остатком, приведение по модулю, обращение, возведение в степень) операции.
3. В группах точек эллиптических кривых основные (сложение и удвоение,
взятие противоположной точки) и производные (взятие точки,
Получение псевдопростого числа р= AAL.Integei~(89397967844439 6264020998566383)
р-1= AAL.Integer{893979678444396264020998566382) Разложение p-1: [('2', Ч1), ('31153-, Ч'), ('126481', Ч') , СS936411, -1-), ('191094680315807', Ч")]
вложение данных и скалярное умножение, искажающее отображение, спаривание) операции. 4. Алгоритмы генерации и тестирования больших простых чисел, неприводимых и примитивных многочленов, многочленов, порождающих нормальный базис, образующих элементов и элементов высокого порядка.
Особенности дистанционного ЭОР Алгебраический процессор «НИУ «МЭИ» как программного продукта
В дистанционном ЭОР Алгебраический процессор «НИУ «МЭИ» (Свидетельство о государственной регистрации программы для ЭВМ № 2013615738 от 19 июня 2013г.) для выполнения программ, аналогичных программе, показанной выше, используется интерпретатор языка Python, к возможностям которого добавлены функции Алгебраической библиотеки MPEI AAL. Связывание осуществляется через прикладной программный интерфейс языка (C API), который позволяет вызывать в программах функции из библиотек и других компилируемых модулей, написанных на C и C++. Реализован способ автоматизации связывания с помощью генератора интерфейсов SWIG (англ. Simplified Wrapper and Interface Generator) [9].
Такой подход позволил интегрировать разные программные компоненты, предоставляя доступ к компилируемому коду при отсутствии его аналога на скриптовом языке. Он обладает следующими преимуществами:
1. Скриптовый движок Python, предоставляя доступ к алгебраической библиотеке в режиме командной оболочки, что позволяет ускорить работу с библиотекой, поскольку нет необходимости перекомпилировать выполняемый код.
2. Есть возможность автоматизировать выполнение определенных операций на различных наборах входных данных с использованием текстовых скриптов.
3. C++ хорошо подходит для алгебраических задач, когда быстродействие играет важную роль. Однако для рядовых задач, по статистике, только 20% времени тратится на выполнения 80% кода. Для этих 80% не критичного к времени выполнения кода используется интерпретируемый язык высокого уровня. Такой вариант сочетает лучшие качества обоих программных сред: быстроту компилируемого C++ и богатую стандартную библиотеку Python, включающую средства для работы со многими сетевыми протоколами, элементами интерфейса пользователя, форматами сериализации данных и криптографическими протоколами, что позволяет создавать на его основе сложные приложения. Также в языке имеется набор встроенных средств для научных вычислений: поддерживаются многозначные и комплексные числа, построение графиков и диаграмм и даже символьные вычисления.
4. Благодаря использованию в Python сборщика мусора, программист может не беспокоиться об утечках памяти при использовании динамических объектов библиотеки.
Использование генератора интерфейсов SWIG позволяет сократить до минимума необходимую работу и обработать большой объем кода. SWIG автоматически генерирует функции доступа для заданных структур, классов и функций по специальным файлам (интерфейсным модулям). На выходе получается динамическая (разделяемая) библиотека, которую интерпретатор может подключать в качестве расширения.
На рис. 4 показаны отношения компонентов среды разработки библиотеки MPEI AAL. Созданием такой среды мы обеспечиваем независимость разрабатываемой нами библиотеки от различных компиляторов и языков программирования.
CppUnit Lite (компонент для создания и автоматического запуска тестов)
Алгебраическая библиотека MPEI AAL
Классы библиотеки
Наборы тестов (AALT) ~
Модули Интерфейса
Рис. 4. Отношения компонентов среды разработки библиотеки MPEI AAL
Работа дистанционной версии алгебраического процессора заключается в предоставлении совместного доступа к интерпретатору для удаленных пользователей. Благодаря использованию на сервере языка python можно решить большинство задач с помощью множества доступных средств сетевого взаимодействия. Особое внимание уделено работоспособности приложения в случаях изменения количества пользователей и, соответственно, нагрузки на сервер, освобождению неиспользуемых ресурсов, а также контролю возможных рисков недоброкачественного их использования (переполнения памяти, глубины рекурсии, зависаний).
На стороне клиента используется набор шаблонов верстки, оформления и компонентов веб-интерфейса. Компоненты на стороне клиента подобраны для максимальной совместимости с различными устройствами и разными разрешениями экранов. Используются возможности адаптивной верстки, когда на большом расширении используется растягивающаяся разметка, при уменьшении - ширина колонок в сетке макета фиксируется, а там, где это необходимо, элементы выравниваются вертикально вместо использования обтекания.
В заключение приведем заимствованное программное обеспечение и параметры сервера и программного обеспечения собственно ресурса.
Заимствования.
На сервере помимо библиотеки MPEI AAL используется функция msieve библиотеки [7], функция schoof и schoof2 библиотеки M.I.R.A.C.L. [8], интерпретатор python 2.7.2, фреймворк bottle.py 0.11, сервер cherrypy 3.1.2, субд sqlite 3.7.7.
На стороне клиента (через сервер) используются следующие библиотеки: prettyprint.js, bootstrap, ace editor, cleditor, jqconsole, knonckout.js При создании раздела «Справка» использованы программы pydoc, markdown, xsltproc. Все заимствованные и использованные при создании ресурса программы, как и дистанционный алгебраический процессор, распространяются для образовательных целей свободно.
Параметры сервера. ОС Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686). Процессор Intel(R) Celeron(R) CPU 2.00GHz.
Память 1GB, диск 110GB, сеть Broadcom Corporation BCM4401 100Base-T и Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+. Общий объем программного обеспечения (без текстовых файлов). Библиотека AAL 3,9мб(код).
Дист. версия 146.2 кб код, 158.2 кб интерфейс и справка, 1мб картинки, 8.4 мб файлы практикума. все вместе 9.8мб.
Работа выполнена при финансовой поддержке РФФИ, проект 11-01-00792а.
Литература
1. Фролов А.Б., Гашков С.Б., Винников А.М Электронный образовательный ресурс 'Алгебраический процессор". Труды VI Международной научно-практической конференции "Современные информационные технологии и ИТ-образование". 12-14 декабря 2011, Москва, МГУ им. М.В. Ломоносова. 2011. C. 599-606.
2. Фролов А.Б., Гашков С.Б., Винников А.М Электронный образовательный ресурс "Алгебраический процессор". Труды международной научно-методической конференции «Информатизация инженерного образования ИНФОРИНО 2012». Издательский дом МЭИ. С.517-520.
3. Программное средство «Алгебраический процессор»// А.Б. Фролов, С.Б. Гашков, А.Ю. Белова, С.В. Морозов, С.Ю. Жебет, И.И. Щуров. В кн. Информатизация инженерного образования. Электронные образовательные ресурсы МЭИ. Вып. 3. 2008. С. 271 - 274.
4. Болотов А.А., Гашков С.Б., Фролов А.Б. Часовских А.А. Элементарное введение в эллиптическую криптографию. Алгебраические и алгоритмические основы. Изд. 2, доп. М.: Комкнига. 2012.
5. Болотов А.А., Гашков С.Б., Фролов А.Б. Элементарное введение в эллип-тическую криптографию. Протоколы криптографии на эллиптических кривых. Изд. 2, доп. М.: Комкнига. 2012.
6. John Brillhart D.H., Lehmer, J.L. Selfridge, Bryant Tuckerman, and S.S. Wagstaff, Jr. Factorisations of b"±1, b=2,3,6,7,10,11 up to high powers. Amer. Math. Soc., Providence, Rhode Island, 2002. http: //www.ans.org/online_bks/conm22
7. Msieve integer factorization library. http://www.boo.net/~jasonp/qs.html
8. Multiprecision Integer and Rational Arithmetic C/C++ Library. www.cs.sunysb.edu/.../implement.shtml
9. Guido van Rossum. Python/C API Reference Manual. CreateSpace, 2009.