Дистанционный электронный образовательный ресурс «Алгебраический процессор НИУ МЭИ»

advertisement
Дистанционный электронный
образовательный ресурс «Алгебраический
процессор НИУ МЭИ»
Авторы статьи: Фролов А.Б., «НИУ«МЭИ», профессор,
abfrolov@mail.ru; , Винников А.М., «НИУ «МЭИ», магистр,
al.vin@bk.ru Гашков С.Б., МГУ им. М.В. Ломоносова, профессор,
sbgashkov@gmail.com ; Крыгин М.А., «НИУ«МЭИ», аспирант,
<makrygin@gmail.com>
Описаны
состав,
область
применения,
поддерживаемые
алгебраические
структуры,
функциональность
алгебраической
библиотеки дистанционного электронного образовательного ресурса
«Алгебраический процессор НИУ МЭИ», и его особенности как
программного продукта.
Состав, область применения и адрес ресурса
Дистанционный электронный образовательный ресурс
(ЭОР)
Алгебраический процессор НИУ МЭИ обеспечивает удаленный доступ
к алгебраическим библиотекам, в частности к алгебраической
библиотеке MPEI AAL(MPEI Algebraic Abstractions Library), при
вычислениях в различных числовых, полиномиальных и эллиптических
структурах по составляемым с подсказками алгебраического процессора
программам или по готовым программам из лабораторного практикума.
Он был создан в развитие локальной версии [1,2,3] и представляет
собой комплекс программных средств, объединенных дистанционным
интерактивным web-интерфейсом, обеспечивающим удаленный доступ
как к теоретическим материалам изучаемых курсов, так и к
интерактивным программам взаимодействия с вычислительными
ресурсами в процессе реализации алгебраических вычислений с
визуализацией результатов.
Он поддерживает теоретическое и практическое изучение свойств и
алгоритмов конечных групп, колец, полей, групп точек эллиптических
кривых и основанных на этих алгебраических структурах алгоритмов и
протоколов, изучаемых в различных дисциплинах. Передаваемые webтранзакции разделяются на два класса: транзакции, доступные
конкретному пользователю
и транзакции,
доступные
всем
пользователям сети, что позволяет моделировать работу защищенных
коммуникационных систем и атак на них. Также обеспечивается
дистанционный доступ к формированию и использованию
-1-
информационного содержания лабораторного практикума и доступ к
системной информационной поддержке дистанционного ресурса.
Ресурс предназначен для использования при выполнении
лабораторных работ, курсовых и дипломных проектов, выпускных
работ бакалавров и других видов самостоятельной работы, а также для
демонстрации изучаемых алгебраических аспектов дисциплины и
моделирования работы систем на их основе при чтении лекций.
Используется в частности при подготовке бакалавров и магистров по
направлениям 230100 «Информатика и вычислительная техника»,
010400 «Прикладная математика и информатика».
Теоретические разделы ресурса подготовлены авторами на основе
изданий [4,5]. Функциональные возможности ресурса достаточны для
воспроизведения (моделирования) и программирования большинства
алгоритмов и криптографических протоколов, приведенных в этих
изданиях.
Ресурс доступен по адресу http://mm.mpei.ac.ru:8080/ (id:user, без
пароля, временами страница может быть недоступна).
Поддерживаемые алгебраические структуры
Ниже перечислены алгебраические структуры, в которых возможны
вычисления
с
использованием
интерактивных
средств
«Алгебраического процессора».
1. Z , Z n , Fp  кольцо целых чисел, кольца вычетов по модулю n,
простые поля характеристики p;
GF
( p 2 )  квадратичные расширения простых полей GF ( p) ;
2.
3. GF (2)[ X ], GF (2)[ X ] f ( X ) , GF (2n )  кольца многочленов над полем
GF(2), кольца вычетов по модулю многочлена f(X), поля GF (2n ) ;
4. GF (3)[ X ], GF (3)[ X ] f ( X ) , GF (3n )  кольца многочленов над полем
GF(3), кольца вычетов по модулю многочлена f(X) , поля GF (3n ) ;
5. GF (2m )  расширения четверной степени полей GF (2m ) ,
4
порождаемые корнем многочлена 1  Y  Y 4 ;
6. GF (3m )  расширения шестой степени полей GF (3m ) , порождаемые
6
корнем многочлена 2  Y  Y 6 ;
7. EC (GF ( p))  группы точек эллиптических кривых над полями простой характеристики;
8. EC (GF ( p 2 ))  группы точек эллиптических кривых над квадратичными расширениями полей простой характеристики;
-2-
9. EC (GF (2n ))  группы точек эллиптических кривых над полями характеристики два;
10. EC (GF (3n ))  группы точек эллиптических кривых над полями
характеристики три.
При выборе любой из этих структур по соответствующему элементу
панели пользователь получает меню операций для работы с любой из
алгебраических структур, перечисленных в обозначении элемента. При
выборе необходимой операции пользователь получает подсказку о
формате ее представления в программе.
В ряде случаев, например при вычислении порядка элемента той
или иной группы, используется разложение порядка группы. Для
вычисления порядка и его разложения предусматривается вызов
функций вычисления порядка и последующего его разложения.
Разложение порядков мультипликативных групп полей характеристики
два и три
может быть получено из базы данных на основе
каннингемовского проекта (The Cunningham Project) [6] в
интерактивном режиме. Для разложения других больших чисел
используется функция msieve библиотеки [7], а для вычисления
порядков эллиптических кривых – функции schoof и schoof2
библиотеки M.I.R.A.C.L. [8]. Если условия выполнения операции или
исходные данные не соответствуют требуемым, то при попытке ее
выполнения появится сообщение с описанием исключения. Например,
при выполнении сложения в GF (2n ) передаваемый модулярный
многочлен должен быть неприводимым. Если это не так, то появится
предупреждение и выполнение операции будет прервано. При
сложении в GF (2n ) f ( X ) операция с таким полиномом выполнится.
Имеются операции генерации и тестирования простых чисел,
неприводимых
и
примитивных
многочленов
над
полями
характеристики два и три. Таким образом, интерфейс дистанционной
версии сохраняет функциональность интерфейса локальной версии
«Алгебраического процессора» и устроен таким образом, чтобы все
необходимое для вычислений, характерных для современных
криптографических протоколов было «под рукой», что позволяет
сосредоточиться на изучении их особенностей, не отвлекаясь на
рутинное программирование. В дистанционной версии воспроизведён
лабораторный практикум локальной версии [1].
Существенным преимуществом дистанционной версии является
возможность вычислений по составляемым или готовым программам.
На рис.1 приведен пример программы генерации и тестирования
простого числа заданной длины в битах, которая может быть выполнена
-3-
на сервере кафедры математического моделирования (ММ) «НИУ
«МЭИ» с любого удаленного компьютера.
На рис. 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
При работе с дистанционным алгебраическим
рекомендуется использовать браузер Google Chrom.
процессором
Примечание. Для наблюдения процесса дистанционного исполнения
программы на рис. 1 и других программ можно вызвать Алгебраический
процессор по адресу http://mm.mpei.ac.ru:8080/
далее скопировать программу на рис. 1 в правое окно рабочего стола и
по кнопке «Поехали» получить результат в левом окне. Особенности
составления подобных программ, использования языка pyton,
библиотеки MPEI AAL можно увидеть в справке, открывающейся
нажатием панели «Справка» верхнего меню (рекомендуется ее
открывать в отдельной вкладке).
-4-
Рис.3. Скриншот фрагмента листингов программы и результата. В
верхней строке меню «Алгебраический процессор», «Практикум», «Авторы»,
«Руководство», «Справка», «Выйти», «Настройка». В следующие строке меню
элементы панели перечисленных выше алгебраических структур и «Примеры».
Ниже слева поле для размещения программы (показан рассмотренный выше
пример), справа – поле результата вычислений (по кнопке «Поехали» внизу).
«Настройка» это создание и редактирование образовательных ресурсов.
«Руководство» это пример составления программы в динамике.
Общая характеристика и функциональность библиотеки MPEI
AAL, доступной посредством дистанционного алгебраического
процессора « НИУ«МЭИ».
Теоретическую базу алгебраической библиотеки составляют теория
конечных полей и теория эллиптических кривых.
MPEI AAL – это статически
подключаемая библиотека,
разработанная на языке программирования C++, использующая STL
(Standard Template Library – стандартная библиотека шаблонов для
С++), содержащая 29 классов.
MPEI AAL включает функции, реализующие:
1. Теоретико-числовые алгоритмы: вычисления символов Лежандра и
Якоби, извлечения квадратного корня из квадратичного вычета по
модулю простого числа и по составному модулю с известным его
разложением; различные модификации алгоритма Евклида
(основной, расширенный, бинарный, основной, расширенный
бинарный, расширенный для нахождения обратного элемента).
2. В числовых и полиномиальных кольцах и конечных полях основные
(сложение, умножение) и производные (деление с остатком,
приведение по модулю, обращение, возведение в степень)
операции.
3. В группах точек эллиптических кривых основные (сложение и
удвоение, взятие противоположной точки) и производные (взятие
точки, вложение данных и скалярное умножение, искажающее
отображение, спаривание) операции.
-5-
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, включающую средства для работы со многими сетевыми
протоколами, элементами интерфейса пользователя, форматами
сериализации данных и криптографическими протоколами, что
позволяет создавать на его основе сложные приложения. Также в
языке имеется набор встроенных средств для научных вычислений:
поддерживаются многозначные и комплексные числа, построение
графиков и диаграмм и даже символьные вычисления.
-6-
Благодаря использованию в Python сборщика мусора, программист
может не беспокоиться об утечках памяти при использовании
динамических объектов библиотеки.
Использование генератора интерфейсов SWIG позволяет сократить
до минимума необходимую работу и обработать большой объем кода.
SWIG автоматически генерирует функции доступа для заданных
структур, классов и функций по специальным файлам (интерфейсным
модулям). На выходе получается динамическая (разделяемая)
библиотека, которую интерпретатор может подключать в качестве
расширения.
На рис. 4 показаны отношения компонентов среды разработки
библиотеки MPEI AAL. Созданием такой среды мы обеспечиваем
независимость разрабатываемой нами библиотеки от различных
компиляторов и языков программирования.
4.
CppUnit
Lite (компонент
для
создания и
автоматического
запуска
тестов)
Алгебраическая
библиотека MPEI AAL
Классы библиотеки
Языковая привязка
(binding)
Наборы тестов
(AALT)
Модули Интерфейса
SWIG
Рис. 4. Отношения компонентов среды разработки библиотеки MPEI AAL
Работа дистанционной версии алгебраического процессора
заключается в предоставлении совместного доступа к интерпретатору
для удаленных пользователей. Благодаря использованию на сервере
языка python можно решить большинство задач с помощью множества
доступных средств сетевого взаимодействия. Особое внимание уделено
работоспособности приложения
в случаях изменения количества
пользователей и, соответственно, нагрузки на сервер, освобождению
неиспользуемых ресурсов, а также контролю возможных рисков
недоброкачественного их использования (переполнения памяти,
глубины рекурсии, зависаний).
На стороне клиента используется набор шаблонов верстки,
оформления и компонентов веб-интерфейса. Компоненты на стороне
клиента подобраны для максимальной совместимости с различными
устройствами и разными разрешениями экранов. Используются
возможности адаптивной верстки, когда на большом расширении
используется растягивающаяся разметка, при уменьшении - ширина
-7-
колонок в сетке макета фиксируется, а там, где это необходимо,
элементы выравниваются вертикально вместо использования обтекания.
В заключение приведем заимствованное программное обеспечение и
параметры сервера и программного обеспечения собственно ресурса.
Заимствования. На сервере помимо библиотеки MPEI AAL
используется функция msieve библиотеки [Msieve integer factorization
library. http://www.boo.net/~jasonp/qs.html], функции schoof и schoof2
библиотеки M.I.R.A.C.L. [Multiprecision Integer and Rational Arithmetic
C/C++ Library. www.cs.sunysb.edu/.../implement.shtml], интерпретатор
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-0100792а.
1.
2.
3.
4.
Литература
Фролов А.Б., Гашков С.Б., Винников А.М Электронный образовательный
ресурс "Алгебраический процессор". Труды VI Международной научнопрактической конференции "Современные информационные технологии и
ИТ-образование". 12-14 декабря 2011, Москва, МГУ им. М.В. Ломоносова.
2011. C. 599-606.
Фролов А.Б., Гашков С.Б., Винников А.М Электронный образовательный
ресурс "Алгебраический процессор". Труды международной научнометодической конференции «Информатизация инженерного образования
ИНФОРИНО 2012». Издательский дом МЭИ. С.517-520.
Программное средство «Алгебраический процессор»// А.Б. Фролов,
С.Б. Гашков, А.Ю. Белова, С.В. Морозов, С.Ю. Жебет, И.И. Щуров. В кн.
Информатизация инженерного образования. Электронные образовательные
ресурсы МЭИ. Вып. 3. 2008. С. 271 - 274.
Болотов А.А., Гашков С.Б., Фролов А.Б. Часовских А.А. Элементарное
введение
в
эллиптическую
криптографию.
Алгебраические
и
алгоритмические основы. Изд. 2, доп. М.: Комкнига. 2012.
-8-
5.
6.
7.
8.
9.
Болотов А.А., Гашков С.Б., Фролов А.Б. Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических
кривых. Изд. 2, доп. М.: Комкнига. 2012.
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.
http://www.ans.org/online_bks/conm22
Msieve integer factorization library. http://www.boo.net/~jasonp/qs.html
Multiprecision
Integer
and
Rational
Arithmetic
C/C++
Library.
www.cs.sunysb.edu/.../implement.shtml
Guido van Rossum. Python/C API Reference Manual. CreateSpace, 2009.
-9-
Download