Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

yoXQhMGFeN

.pdf
Скачиваний:
1
Добавлен:
15.04.2023
Размер:
2.85 Mб
Скачать

Протокол обмена ключами между абонентами А и Б состоит в следующем:

1.Абонент А выбирает свой секретный ключ ‒ целое число nA, которое меньше n, вычисляет: РА = nА∙G и пересылает координаты точки РА абоненту Б.

2.Аналогично, абонент Б выбирает свой секретный ключ ‒ целое

число nБ, которое меньше n, вычисляет: РБ = nБ∙G и пересылает координаты точки РБ абоненту А.

3.С помощью своего секретного ключа nА и присланного значения РБ абонент А генерирует секретный ключ: К = nА∙РБ.

4.Аналогично, абонент Б генерирует секретный ключ: К* = nБ ∙ РА. Докажем, что у них получилось одно и то же:

К = nА ∙ РБ = nА (nБ∙G) = nБ (nА∙G) = nБ ∙ РА = К*

Таким образом, в ходе обмена ключами необходимо дважды

выполнить умножение точки, принадлежащей эллиптической группе, на положительное целое число.

Чтобы взломать эту схему, злоумышленник должен вычислить k по данным G и kG, что является трудно решаемой задачей.

п. 3. Шифрование с использованием эллиптических кривых

Этап создания ключей. Абонент А выбирает эллиптическую группу Ер(а, b), генерирующую точку G(х1, у1), натуральное число nА > 1 и находит произведение: РА = nА∙G.

Ер(а, b), G и РА представляют собой открытый ключ, доступный каждому, кто хочет передать секретное сообщение абоненту А.

Число nА ‒ это секретный ключ абонента А.

Этап шифрования. Пусть абонент Б решает послать сообщение абоненту А. Каждому блоку m открытого текста ставится во взаимно однозначное соответствие точка Pm на эллиптической кривой.

Для того, чтобы отправить абоненту А сообщение Рm, пользователь Б выбирает случайное положительное целое число k и вычисляет точки:

Rm = k∙G, Tm = Рm + k∙PА.

Шифрованный текст представляет собой пару этих точек: [Rm, Tm]. Этап дешифрования. Чтобы расшифровать присланное сообщение

[Rm, Tm], абонент А умножает первую точку в паре на секретный ключ В и вычитает результат из второй точки:

Рm* = Tm – nА∙Rm.

Докажем, что преобразование обратимо:

Рm* = Tm – nА∙Rm = (Рm+k∙PА) – nА(k∙G) = Рm+k∙(nА∙G) – nА(k∙G) = Рm.

50

Таким образом, в ходе шифрования и дешифрования также необ-

ходимо выполнять математические операции над точками, принадлежащими эллиптической группе.

п. 4. Описание программного приложения

В процессе разработки пакета лабораторных работ по дисциплине «Математические методы защиты информации» автором было создано программное приложение, реализующее математические операции над точками эллиптической группы; среда программирования – Delphi 2010. Интерфейс приложения представлен на рис. 2.

Рис. 2. Интерфейс программного приложения

Программное приложение позволяет пользователю:

по заданным параметрам р, а, b рассчитать все точки эллиптической группы;

найти сумму двух заданных точек;

определить произведение точки на число;

вычислить порядок точки в эллиптической группе.

При нажатии на кнопку “Points” все точки данной группы отображаются в одноимённом списке.

51

После того как список сформирован, координаты точек, над которыми необходимо произвести математическую операцию, можно не только вводить вручную в поля редактирования, но и выбирать из списка. Для этого достаточно выбрать щелчком левой кнопки мыши нужный элемент в списке, а затем щёлкнуть в одной из ячеек – x или y – вводимой точки.

Результат любой из операций (суммирования, умножения на число, нахождения порядка) не только отображается в соответствующем поле, но

иподсвечивается в списке.

Внастоящее время данный программный продукт находит применение в рамках учебного курса «Математические методы защиты информации», а именно: при выполнении студентами лабораторной работы по теме: «Эллиптические кривые в криптографии».

Литература

1.Болотов А.А., Гашков С.Б., Фролов А.Б. Элементарное введение в

эллиптическую криптографию. Протоколы криптографии на эллиптических кривых. – Москва: КомКнига, 2006. – 280 с.

2.Осипов Д. Delphi. Профессиональное программирование. – СПб.: Символ-

Плюс, 2006. – 1056 с.

3.Смарт Н. Криптография. – М.: Техносфера, 2006. – 528 с.

4.Ярмолик В.Н. Алгоритм обмена ключами в эллиптической группе [Элек-

тронный ресурс]. – Режим доступа: http://life-prog.ru/view_teorinfo.php?id=15 (дата обращения: 01.11.2016).

5.Ярмолик В.Н. Криптосистемы на основе эллиптических кривых [Электрон-

ный ресурс]. – Режим доступа: http://life-prog.ru/view_teorinfo.php?id=15 (дата обращения: 01.11.2016).

52

УДК 004.432

ББК 32.973.26-018.1

В.С. Полухина

ФГБОУ ВО «Мурманский арктический государственный университет» г. Мурманск, Россия

ПРИМЕНЕНИЕ ФУНКЦИОНАЛЬНОГО ЯЗЫКА ПРОГРАММИРОВАНИЯ F# ДЛЯ WEB-РАЗРАБОТКИ

Аннотация. В этой статье описаны основные концепции, характерные для функциональных языков. Описан пример использования проекта WebSharper для создания достаточно простой формы для заполнения данных клиента.

Ключевые слова: функциональное программирование, F#, web-разработка.

Victoria Polukhina

Murmansk Arctic State University

Murmansk, Russia

USE OF THE FUNCTIONAL PROGRAMMING LANGUAGE F#

FOR WEB-DESING

Abstract. This article provides a comprehensive description of all the basic concepts usually attributed to functional languages. Describes the example of WebSharper project to create a fairly simple form to fill out customer data.

Key words: functional programming, F#, web-desing.

Для начала хотелось бы пояснить, зачем же изучать язык программирования F# и что такое функциональное программирование вообще.

Функциональное программирование – это способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени для функции и задание для этого имени выражения, вычисляющего значение функции, а единственным правилом композиции – оператор суперпозиции функции. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передач управления.

До недавнего времени считалось, что функциональные языки используются в основном в исследовательских проектах, потому что для реальных задач они недостаточно производительны. Действительно, в таких языках в большом количестве используются сложные структуры данных и реализован сложный механизм вызова функций.

Однако в последнее время наблюдается тенденция все большей популярности функционального подхода в область индустриального программирования. Современные функциональные языки – такие как Haskell, Ocaml, Scheme, Erlang – приобретают все большую популярность. В до-

53

вершение всего в недрах Microsoft Research на базе OCaml был разработан язык F# для платформы .NET, который было решено включить в базовую поставку Visual Studio 2010 наравне с традиционными языками C# и Visual Basic.NET. Это беспрецедентное решение открывает возможности функционального программирования для большого круга разработчиков на платформе .NET, позволяя им разрабатывать фрагменты программных систем на разных языках в зависимости от решаемой задачи.

Растущую популярность функционального подхода также можно объяснить двумя факторами. Во-первых, проблемы, связанные с производительностью функциональных языков, перестают играть важную роль, что способствует их распространению. В наше время проще немного пожертвовать производительностью, но сэкономить на высокооплачиваемом труде программиста. Функциональный подход способствует более высокому уровню абстракции при написании программ, что ведет к большему уровню повторного использования кода, экономя время, идущее на разработку и отладку. Благодаря отсутствию побочных эффектов отладка упрощается. Во-вторых, растет актуальность параллельного и асинхронного программирования [2].

Функциональное программирование хорошо использовать для webпроектов, т.к. оно очень похоже на функциональный подход. Web – это обработка данных, когда на запрос пользователя формируется какая-то webстраница в ответ, и при этом, сами страницы не содержат в себе состояния, и для хранения состояния приходится использовать хитрые методы, такие как cookies. А функциональное программирование устроено примерно также.

Во-вторых, в распределенных web-системах очень много асинхронного программирования. Представим себе систему планирования командировок, в которой нам нужно использовать внешний сервер бронирования билетов. Если мы вызываем функцию бронирования и ждем, пока она вернет нам результат, то наша система теряет на какое-то время взаимодействие с пользователем. Поэтому в удаленных системах, когда время реакции системы может быть значительным, используется асинхронный режим программирования. Однако такое программирование на традиционных языках крайне затруднено. И тут нам приходят на помощь функциональные языки программирования.

Посмотрим, как же мы можем использовать функциональное программирование на F# для интернет-проектов. Поскольку F# это полноценный язык платформы DOT.NET, то он может использоваться везде, там же где используется язык C#.

На самом деле, если использовать Visual Studio, то она не поддерживает использование F# для визуального построения проекта на web forms. Это не очень большая потеря, потому что, на самом деле, F# удобно использовать для обработки данных и ничего не мешает проектировать сам по себе интерфейс на C# и традиционным образом, а обработку данных

54

спрятать в отдельную библиотеку. Это наиболее часто используемый сценарий. Этот же сценарий очень хорошо работает для ASP.NET MVC, поскольку для программирования модели, контроллеров удобно использовать функциональный подход.

Существует прекрасный и интересный проект WebSharper, который позволяет нам писать клиентский и серверный код на языке F#. На этом языке создается как та часть системы, которая работает на сервере, так и клиентский код. Это становится возможным благодаря механизму Quotations, который присутствует в F#. Он позволяет нам оставлять часть кода в виде исходного дерева выражений F# и, таким образом, WebSharper транслирует необходимый код в JavaScript.

Проект на WebSharper состоит из двух частей (см. рис. 1). WebApplication содержит в себе элемент управления. А основную часть страницы мы программируем на языке F# в нутрии другого проекта WebSharperProject. Основной файл Main.fs, описывает саму программу.

Рис. 1. Структура проекта на WebSharper

Рассмотрим на примере проект, который представляет собой достаточно простую форму для заполнения данных клиента (см. рис. 2).

Рис. 2. Web-форма для заполнения данных клиента

55

Эта форма также автоматически контролирует правильность ввода – указываются галочками или крестиками правильность заполнения поля (см. рис. 3). В конце ввода получаем полные данные клиента из нашей формы (см. рис. 4).

Рис. 3. Web-форма для заполнения имени и возраста клиента

Рис. 4. Полные данные клиента из формы

Вот такая достаточно сложная логика, на самом деле, выполняется на языке JavaScript и просто программируется на языке F#. Рассмотрим саму программу, а точнее ее главный файл Main.fs. В начале кода программы описываются типы данных (см. рис. 5), которые нам оказываются удобными для передачи информации между полями формы.

Рис. 5. Код программы, описывающий типы данных полей

56

Далее описываются промежуточные элементы управления: поле ввода, которое позволяет вводить произвольный текст. Поле InputInt вводит целое число и использует проверку целостности этого числа (см. рис. 6).

Рис. 6. Описание промежуточных элементов управления

Сама форма также строится из отдельных полей вода с помощью специального оператора комбинирования «<*>» (рис. 7). Описание интерфейса носит декларативный характер, мы не задумываемся о разметки страниц, о передачи управления.

Рис. 7. Формы описания полей

При помощи такого описательного образа мы можем задать функционирование достаточно сложного web-интерфейса, поместив его внутрь ка- кого-то корпоративного дизайна с помощью механизма Master Page в самом ASP.NET приложении. Мы получаем очень удобный механизм для создания приложений, ориентированных на данные.

В заключении хотелось бы сформулировать основной и главный принцип целесообразности использования функционального языка F# при web-разработки. Функциональный подход способствует более высокому

57

уровню абстракции при написании программ, что ведет к большему уровню повторного использования кода, экономя время, идущее на разработку и отладку. Благодаря отсутствию побочных эффектов отладка упрощается. Иными словами, функциональному программисту приходится больше думать, но меньше писать кода и меньше отлаживать.

Литература

1.Зыков С. В. Введение в теорию программирования. Функциональный подход

[Электронный ресурс]. – Режим доступа: http://www.intuit.ru/department/ se/tppfunc/ (дата обращения: 20.09.2016).

2.Сошников Д.В. Программирование на F#. – М.: ДМК Пресс, 2011. – 192 с.

58

УДК 338.5:622.323 ББК 65.305.143

В.С. Полухина, Г.Б. Сафонов

ФГБОУ ВО «Мурманский арктический государственный университет» г. Мурманск, Россия

СОВРЕМЕННЫЕ ПРОБЛЕМЫ В ОЦЕНКЕ ВОЛАТИЛЬНОСТИ ЦЕН ПРИ РЕАЛИЗАЦИИ ДЕЯТЕЛЬНОСТИ ФЕДЕРАЛЬНОЙ АНТИМОНОПОЛЬНОЙ СЛУЖБЫ В ТЕКУЩИХ УСЛОВИЯХ СОЦИАЛЬНО-ЭКОНОМИЧЕСКОГО РАЗВИТИЯ

Аннотация. В данной статье рассматриваются современные проблемы в оценке волатильности цен на рынке нефтепродуктов. Описан новый методологический подход к прогнозированию волатильности цен на рынке нефтепродуктов, отличающийся более высокой вероятностью правильной идентификации рыночной ситуации.

Ключевые слова: нефтяная отрасль, волатильность цен, методологический подход.

Victoria Polukhina, Grigory Safonov

Murmansk Arctic State University Murmansk, Russia

CONTEMPORARY ISSUES IN ASSESSMENT OF PRICE VOLATILITY IN REALIZATION OF FEDERAL ANTIMONOPOLY SERVICE ACTIVITIES IN CURRENT CONDITIONS OF SOCIO-ECONOMIC DEVELOPMENT

Abstract. This article considers the contemporary issues in assessment of the oil market price volatility. A new methodological approach to the forecasting of price volatility in the oil market, characterized by a higher probability of correct identification of the market situation.

Key words: oil industry, price volatility, methodological approach.

В настоящее время в нефтяной отрасли появились три группы ограничений, которые препятствуют реализации проектов в Арктической зоне и России в целом. К ним относятся снижение цен на нефть, санкции, заключающиеся в запрете на поставку оборудования и технологий и ограничение привлечения финансирования со стороны западных банков и других источников.

Наиболее уязвимым сегментом в нефтедобыче является разработка месторождений на шельфе Арктики, воздействие на который со стороны всех ограничений является критичным или очень важным (см. табл. 1). Это связано не только с высокими затратами и необходимостью привлекать зарубежное финансирование, но и, прежде всего, с отсутствием отечествен-

59

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]