Винников А.М. 1 Фролов А.Б.2
гООО «СофтИнжиниринг», г. Москва, магистр, программист, al.vin@bk.ru
2 Национальный исследовательский университет «МЭИ», г. Москва, д.т.н., профессор,
abfrolov@mail . ru
ВЕРСИИ АЛГЕБРАИЧЕСКОГО ПРОЦЕССОРА НИУ «МЭИ» ДЛЯ ПОДДЕРЖКИ
ЦИКЛОВ ДИСЦИПЛИН
КЛЮЧЕВЫЕ СЛОВА
Алгебраический процессор НИУ «МЭИ», дистанционная версия, ОС Windows версии XP или выше, ОС Linux, однопоточный сервер, многопоточный сервер, python, VisualC+ +2008, bottle.py.
АННОТАЦИЯ
На основе опыта использования дистанционной версии Алгебраического процессора НИУ «МЭИ» в преподавании цикла дисциплин по современной компьютерной алгебре и методам защиты информации даны рекомендации по созданию преподавателями собственных версий Алгебраического процессора и практикума для соответствующих циклов дисциплин.
Дистанционная версия алгебраического процессора НИУ «МЭИ» [1,2] используется авторами в процессе преподавания цикла дисциплин по современной компьютерной алгебре и криптографическим методам защиты информации, а также в научной работе преподавателей и студентов [3]. При этом преподаватель имеет возможность создавать практикум, включающий теоретические описания по разделам дисциплины, например тексты лекций и сопровождающие их описания практических заданий, снабжаемые ссылками на компьютерные программы (в виде exe-файлов или программ на языке python с использованием, при необходимости функций алгебраической библиотеки MPEI AAL). Наряду с краткими сведениями об Алгебраическом процессоре НИУ «МЭИ» ниже приводятся рекомендации по созданию преподавателями его собственных версий.
Дистанционный электронный образовательный ресурс (ЭОР) Алгебраический процессор «НИУ «МЭИ» обеспечивает удаленный доступ к алгебраическим библиотекам, в частности к алгебраической библиотеке MPEI AAL (MPEI Algebraic Abstractions Library), при вычислениях в различных числовых, полиномиальных и эллиптических структурах по составляемым с подсказками алгебраического процессора программам или по готовым программам из лабораторного практикума. Он был создан в развитие локальной версии [4,5,6] и представляет собой комплекс программных средств, объединенных дистанционным интерактивным web-интерфейсом, обеспечивающим удаленный доступ как к теоретическим материалам изучаемых курсов, так и к интерактивным программам взаимодействия с вычислительными ресурсами в процессе реализации алгебраических вычислений с визуализацией результатов.
Он поддерживает теоретическое и практическое изучение свойств и алгоритмов конечных групп, колец, полей, групп точек эллиптических кривых и основанных на этих алгебраических структурах алгоритмов и протоколов, изучаемых в различных дисциплинах. Передаваемые web-транзакции разделяются на два класса: транзакции, доступные конкретному пользователю и транзакции, доступные всем пользователям сети, что позволяет моделировать работу защищенных коммуникационных систем и атак на них. Также обеспечивается дистанционный доступ к формированию и использованию информационного содержания лабораторного практикума и доступ к системной информационной поддержке дистанционного ресурса.
Ресурс предназначен для использования при выполнении лабораторных работ, курсовых и дипломных проектов, выпускных работ бакалавров и других видов самостоятельной работы, а также для демонстрации изучаемых алгебраических аспектов дисциплины и моделирования работы систем на их основе при чтении лекций. Используется в частности при подготовке бакалавров и магистров по направлениям 230100 «Информатика и вычислительная техника», 010400 «Прикладная математика и информатика».
Теоретические разделы ресурса подготовлены авторами на основе изданий [7,8]. Функциональные возможности ресурса достаточны для воспроизведения (моделирования) и программирования большинства алгоритмов и криптографических протоколов, приведенных в этих изданиях.
В практикуме алгебраического процессора можно исполнять любые программы на языке Python с использованием при необходимости функций алгебраической библиотеки MPEI AAL. Ниже перечислены алгебраические структуры, в которых возможны вычисления с использованием интерактивных средств «Алгебраического процессора» на основе этой библиотеки:
• кольцо целых чисел, кольца вычетов по модулю n, простые поля; квадратичные расширения простых полей; кольца многочленов над полями характеристики 2 и 3, кольца вычетов по модулю многочлена f(X) таких полей; группы точек эллиптических кривых над простыми полями, над квадратичными расширениями таких полей, над расширениями полей характеристики два и три.
При выборе любой из этих структур пользователь получает меню соответствующих операций. При выборе необходимой операции пользователь получает подсказку о формате ее представления в программе.
Имеются операции генерации и тестирования простых чисел, неприводимых и примитивных многочленов над полями характеристики два и три. Существенным преимуществом дистанционной версии является возможность вычислений по составляемым или готовым программам.
В дистанционном ЭОР Алгебраический процессор «НИУ «МЭИ» (Свидетельство о государственной регистрации программы для ЭВМ № 2013615738 от 19 июня 2013г.) для выполнения программ используется интерпретатор языка Python, к возможностям которого добавлены функции Алгебраической библиотеки MPEI AAL. Связывание осуществляется через прикладной программный интерфейс языка (C API), который позволяет вызывать в программах функции из библиотек и других компилируемых модулей, написанных на C и C++. Реализован способ автоматизации связывания с помощью генератора интерфейсов SWIG (англ. Simplified Wrapper and Interface Generator) [9]. Такой подход позволил интегрировать разные программные компоненты, предоставляя доступ к компилируемому коду при отсутствии его аналога на скриптовом языке. Использование генератора интерфейсов SWIG позволяет сократить до минимума необходимую работу и обработать большой объем кода. SWIG автоматически генерирует функции доступа для заданных структур, классов и функций по специальным файлам (интерфейсным модулям). На выходе получается динамическая (разделяемая) библиотека, которую интерпретатор может подключать в качестве расширения.
Работа дистанционной версии алгебраического процессора заключается в предоставлении совместного доступа к интерпретатору для удаленных пользователей. Благодаря использованию на сервере языка Python можно решить большинство задач с помощью множества доступных средств сетевого взаимодействия. Особое внимание уделено работоспособности приложения в случаях изменения количества пользователей и, соответственно, нагрузки на сервер, освобождению неиспользуемых ресурсов, а также контролю возможных рисков недоброкачественного их использования (переполнения памяти, глубины рекурсии, зависаний). На стороне клиента используется набор шаблонов верстки, оформления и компонентов веб-интерфейса. Компоненты на стороне клиента подобраны для максимальной совместимости с различными устройствами и разными разрешениями экранов. Используются возможности адаптивной верстки, когда на большом расширении используется растягивающаяся разметка, при уменьшении — ширина колонок в сетке макета фиксируется, а там, где это необходимо, элементы выравниваются вертикально вместо использования обтекания.
Каждый преподаватель, располагающий компьютером с ОС Windows версии XP или выше (или ОС Linux ) по приведенным ниже рекомендациям может создать свою копию алгебраического процессора для изучения определенного цикла дисциплин.
Дополнительно при наличии внешнего имени, как, например, у сервера МЭИ (mpei.ac.ru) или статического IP-адреса он может сделать свою копию доступной для других пользователей. Для этого при первом запуске нужно разрешить доступ к процессору в появившемся окне брандмауэра Windows. Тогда любой пользователь (студент или преподаватель), у которого есть адрес практикума, может открыть в браузере (для чтения и выполнения заданий, редактирования и исполнения компьютерных программ) практикум любого преподавателя, по объявленным им
внешнему адресу или IP. Следует учесть, что в состав дистрибутива входит только однопоточный сервер — это значит, что одновременно может выполняться только одна программа, остальные ждут, когда она завершится. Чтобы снять это ограничение нужно устанавливать или включать в дистрибутив многопоточный сервер, который поддерживается bottle.py, например, cherrypy .
Запуск алгебраического процессора производится запуском исполняемого файла дистрибутива — dist.exe. Сообщение об ошибке в появившемся окне нужно игнорировать. После этого можно открыть процессор в браузере по адресу http://localhost:8080/. Логин: admin. Пароль: 123. Изменить пароль и создать других пользователей можно в настройках через меню в правом верхнем углу экрана.
Для работы алгебраического процессора на компьютере должна стоять библиотека Visual C++ 2008 Redistributable library (vcredist_x86.exe). Все остальные компоненты, в том числе исполняемый модуль библиотеки MPEI AAL, включены в дистрибутив dist.exe. На данный момент библиотека в дистрибутиве собрана без поддержки факторизации и определения порядка эллиптических кривых. Системные требования к компьютеру отсутствуют.
Ниже в настоящем разделе даны рекомендации по сборке своего дистрибутива алгебраического процессора на собственном компьютере при наличии соответствующих навыков. Сборка алгебраического процессора в ОС Linux:
1. Скачать последнюю версию процессора из репозитария https: //github.com/radixvinni / aalpy.
2. Необходимо собрать библиотеку AAL из исходных кодов через команду
Cmake по инструкции: http://mm.mpei.ac.ru:8080/help/dev. На выходе должны получиться файлы _AAL.so и AAL.py. Их нужно скопировать в директорию с процессором.
3. Запуск осуществляется через вызов aal.py из каталога процессора. Также можно настроить службу /etc/init.d/aal или /etc/init/aal — она обеспечивает перезапуск в случае сбоя или зависания
Сборка файла dist.exe в ОС Windows:
1. Распаковать архив aalpy.7z в папку C:\AAL-Py\aalpy. Архив содержит:
код из репозитария https://github.com/radixvinni/aalpy (только там версия для linux); собранные на компиляторе VS С++2008 привязки библиотеки AAL для python без внешних модулей — полную сборку нужно делать по инструкции
http://subversion.assembla.com/svn/mpei_ask/MPEI_ASK/Documentation/%d0%98%d0%bd %d1%81%d1%82%d1%80%d1%83%d0%ba%d1%86%d0%b8%d1%8f%20%d0%bf%d0%be %20%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b5%20%d0%bf %d1%80%d0%b8%d0%b2%d1%8f%d0%b7%d0%be%d0%ba%20MPEI%20AAL.doc. Туда же можно скопировать практикум (wiki.db и assets/doc).
2. Установить python-2.7.10.msi.
3. Установить расширение для компиляции скриптов в исполняемые файлы py2exe.
4. Открыть Командную строку и выполнить в ней: cd C:\AAL-Py\aalpy
C:\Python27\python.exe C:\AAL-Py\aalpy\setup.py py2exe
5. Скопировать assets, views и wiki.db из aalpy в dist.
6. Выделить все файлы в папке dist и добавить их в архив dist.7z (7zip должен быть установлен).
7. Выполнить в командной строке: cd C:\AAL-Py\aalpy\dist
copy /b 7zsd.sfx + config.ini + dist.7z dist.exe
Для создания информационного и программного обеспечения цикла дисциплин в алгебраическом процессоре при запуске исполняемого файла дистрибутива процессора в папке временных файлов(%TEMP%) создаётся база данных практикума wiki.db и папка для статических файлов практикума assets\doc.
В ней для каждой дисциплины цикла нужно создать папки с ее названием, и в ней папки Теоретическое введение, Программы, Задания. В папке теоретическое введение размещаются pdf-файлы теоретических разделов, например, лекций, в папке Программы текстовые файлы исполняемых программ с комментариями в формате .py, в папке Задания — тексты заданий к данному разделу дисциплины со ссылками на исполняемые программы. В режиме администрирования для данной дисциплина создаётся работа с ее названием и далее связанные с
этой работой Задания по разделам (лекциям дисциплины). Для каждого раздела создаются задания со ссылками на используемые программы.
Работа выполнена при финансовой поддержке РФФИ, проект 14-01-00671а.
Литература
1. Фролов А.Б., Винников А.М., Гашков С.Б., Крыгин М.А. Дистанционный электронный образовательный ресурс 'Алгебраический процессор "НИУ "МЭИ". Современные информационные технологии и ИТ-образование. Сборник избранных трудов VIII Международной научно-практической конференции. Под ред. проф. В.А. Сухомлина. — М.: ИНТУИТ.РУ 2013. С.267-273.
2. Фролов А.Б., Винников А.М., Крыгин М.А., Марьин Н.Ю. Алгебраический процессор для моделирования многосторонних вычислений. Труды Международной научно-методической конференции "Информатизация инженерного образования" — ИНФ0РИН0-2014 (Москва, 15-16 апреля 2014 г.). — М.: Издательство МЭИ, 2014. С. 485-488.
3. Alexander Frolov, Alexander Vinnikov. FSM Simulation of Cryptographic Protocols Using Algebraic Processor. Proceedings of the Ninth International Conference on Dependability and Complex Systems DepCoS-RELCOMEX. June 30 — July 4, 2014, Brunow, Poland.Volume 286 of the series Advances in Intelligent Systems and Computing pp 189-198
4. Фролов А.Б., Гашков С.Б., Винников А.М Электронный образовательный ресурс "Алгебраический процессор". Труды VI Международной научно-практической конференции "Современные информационные технологии и ИТ-образование". 12-14 декабря 2011, Москва, МГУ им. М.В. Ломоносова. 2011. C. 599-606.
5. Фролов А.Б., Гашков С.Б., Винников А.М Электронный образовательный ресурс "Алгебраический процессор". Труды международной научно-методической конференции «Информатизация инженерного образования ИНФОРИНО 2012». Издательский дом МЭИ. С.517-520.
6. Программное средство «Алгебраический процессор»// А.Б. Фролов, С.Б. Гашков, А.Ю. Белова, С.В. Морозов, С.Ю. Жебет, И.И. Щуров. В кн. Информатизация инженерного образования. Электронные образовательные ресурсы МЭИ. Вып. 3. 2008. С. 271 — 274.
7. Болотов А.А., Гашков С.Б., Фролов А.Б. Часовских А.А. Элементарное введение в эллиптическую криптографию. Алгебраические и алгоритмические основы. Изд. 2, доп. М.: КомКнига. 2012.
8. Болотов А.А., Гашков С.Б., Фролов А.Б. Элементарное введение в эллип-тическую криптографию. Протоколы криптографии на эллиптических кривых. Изд. 2, доп. М.: КомКнига. 2012.
9. Guido van Rossum. Python/C API Reference Manual. CreateSpace, 2009.