Кафедра информационных систем управления 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Кафедра информационных систем управления



МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Белорусский государственный университет

ФАКУЛЬТЕТ ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ

Кафедра информационных систем управления

 

 

БОРИСЕВИЧ

Иван Владимирович

 

РАЗРАБОТКА СЕРВИСОВ БЕЗОПАСНОСТИ В

АРХИТЕКТУРЕ SMART

 

Дипломная работа

 

Научный руководитель:

доктор физико-математических наук,

доцент Т. В. Галибус

 

 

Допущена к защите:

 

«___» ______________ 2016 г.

 

Зав. кафедрой информационных систем управления

доктор технических наук, профессор В. В. Краснопрошин

 

 

 

 

 

Минск, 2016

Реферат

Дипломная работа, 46 страниц, 10 рисунков, 10 источников, 1 таблица.

Ключевые слова: SMART, ОБЛАЧНЫЕ ИНФРАСТРУКТУРЫ, ШИФРОВАНИЕ, ABE, КОНТРОЛЬ ДОСТУПА.

Объект исследования: система контроля доступа.

Цель работы: разработать модификацию алгоритма шифрования с атрибутами. На основе данной модификации реализовать прототип системы защиты и контроля доступа.

Методология проведения работы: изучение литературы, системный подход, технологии разработки компьютерных систем.

Результат работы: рабочий прототип системы контроля доступа.

Область применения результатов: облачные инфраструктуры.

Рэферат

Дыпломная работа, 46 старонак, 10 малюнкаў, 10 крыніц, 1 табліца.

Ключевые слова: SMART, ВОБЛАЧНЫЯ ІНФРАСТРУКТУРЫ, ШЫФРАВАННЕ, ABE, КАНТРОЛЬ ДОСТУПУ.

Аб'ект даследавання: систэма кантролю доступу.

Мэта работы: распрацаваць мадыфікацыю алгарытму шыфравання з атрыбутамі. На аснове дадзенай мадыфікацыі рэалізаваць прататып сістэмы аховы і кантролю доступу.

Метадалогія правядзення работы: вывучэнне літаратуры, сістэмны падыход, тэхналогіі распрацоўкі камп'ютарных сістэм.

Вынік работы: рабочы прататып сістэмы кантролю доступу.

Вобласць прымянення вынікаў: воблачныя інфраструктуры.

Abstract

Degree work, 50 pages, 10 pictures, 10 sources, 1 table.

Key words: SMART, CLOUD INFRASTRUCTURES, ENCRYPTION, ABE, ACCESS CONTROL.

Research subject: access control system.

Purpose: ABE algorithm modification building, security and access control system development based on this algorithm modification.

Work methodology: literature studying, systematic approach, computer systems development technologies.

Result: working access control system prototype.

Field: cloud infrastructures.

ОГЛАВЛЕНИЕ

 

ВВЕДЕНИЕ. 5

ГЛАВА 1. ПРОБЛЕМА БЕЗОПАСНОСТИ В КОРПОРАТИВНЫХ ОБЛАЧНЫХ ИНФРАСТРУКТУРАХ.. 6

1.1 Основные термины и понятия. 6

1.2 Проблема обеспечения безопасности в корпоративном облачном хранилище. 7

1.3 Постановка задачи. 8

1.4 Выводы.. 9

ГЛАВА 2. МОДЕЛИ И АЛГОРИТМЫ.. 10

2.1 Эллиптические кривые. 10

2.2 Понятие структуры доступа в ABE. 13

2.3 Классическая система шифрования с атрибутами (ABE) 14

2.4 Система атрибутного шифрования с политикой доступа на основе шифртекста (CP-ABE) 16

2.5 Модификация алгоритма CP-ABE. 18

2.6 Выводы.. 20

ГЛАВА 3. РАЗРАБОТКА СИСТЕМЫ ШИФРОВАНИЯ И КОНТРОЛЯ ДОСТУПА.. 21

3.1 Архитектура системы.. 21

3.2 Выбор программных средств для разработки. 22

3.3 Реализация архитектуры.. 23

3.4 Выводы.. 24

ГЛАВА 4. ПРИМЕНЕНИЕ РАЗРАБОТАННОЙ СИСТЕМЫ.. 26

4.1 Постановка прикладной задачи. 26

4.2 Тестирование разработанной системы.. 26

4.3 Выводы.. 28

ЗАКЛЮЧЕНИЕ. 29

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ.. 30

ПРИЛОЖЕНИЯ.. 31

Приложение 1. Основные классы бизнес-логики системы контроля доступа. 31

 

ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ И ТЕРМИНОВ

ABE – шифрование на основе атрибутов

CP-ABE – атрибутное шифрование на основе шифртекста

SMART – Small & Medium-sized Enterprise Data Analytic in Real Time, Анализ данных малых и средних предприятий в реальном времени

VCS – Система контроля версий

СУБД – Система управления базой данных

 

 

ВВЕДЕНИЕ

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

Всё больше предприятий переходят на использование облачных вычислений ввиду различных рыночных и экономических факторов.

Количество информации стремительно растёт, поэтому необходимо обеспечить безопасное хранение, передачу и обработку таких объёмов разнородных данных, извлекаемых из различных источников.

SMART — система, которая предназначена для работы с Big Data - хранения и анализа большого объёма данных различного типа. Данная система использует облачную инфраструктуру и предназначена для малых и средних предприятий, т. е. является корпоративной системой хранения и обработки данных.

Целью теоретической части работы является исследование проблемы обеспечения эффективного контроля доступа в корпоративной облачной инфраструктуре. Цель практической части работы – построить алгоритм контроля доступа и разработать прототип системы на его основе.

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

ГЛАВА 1. ПРОБЛЕМА БЕЗОПАСНОСТИ В КОРПОРАТИВНЫХ ОБЛАЧНЫХ ИНФРАСТРУКТУРАХ

1.1 Основные термины и понятия

В рамках данной работы будут использоваться следующие основные термины и понятия.

Контроль доступа – процесс управления защитой программ и данных от несанкционированного доступа лицами (пользователями), не имеющими соответствующих прав.

Шифрование – преобразование информации, которое является обратимым и предназначено для предотвращения доступа к этой информации лицам, не прошедшим авторизацию, т. е. не имеющим прав на доступ. Существует два основных типа шифрования: симметричное, когда сообщение шифруется и дешифруется одним и тем же ключом, а в асимметричном сообщение шифруется открытым ключом, который доступен всем пользователям, и дешифруется закрытым (приватным) ключом. Поэтому асимметричная система шифрования также называется системой шифрования с открытым ключом.

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

Корпоративное хранилище данных – это специальным образом организованный массив данных предприятия (организации), обрабатываемый и хранящийся в едином аппаратно-программном комплексе, который обеспечивает быстрый доступ к оперативной и исторической информации, многомерный анализ данных, получение прогнозов и статистики и др. [2]

Аутентификация – процедура проверки подлинности. Существует несколько разновидностей аутентификации:

- сравнение введённого пользователем логина и пароля с сохранённым в базе данных паролем;

- проверка электронной цифровой подписи (ЭЦП), например, электронного письма;

- сравнение контрольной суммы файла со значением суммы, завленной отправителем этого файла.

 

Постановка задачи

В рамках данной работы поставлены следующие задачи:

- рассмотреть классический алгоритм шифрования на основе атрибутов (ABE);

- построить модификацию алгоритма ABE, которая будет удовлетворять 6 вышеописанным критериям;

- разработать архитектуру системы защиты и контроля доступа, определить основные компоненты;

- выбрать программные средства для реализации прототипа данной системы;

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

Выводы

В данной главе были получены следующие результаты:

- рассмотрены основные термины и определения, используемые в рамках данной работы;

- исследованы проблемы обеспечения безопасности в корпоративных облачных инфраструктурах;

- поставлены основные задачи.

 

ГЛАВА 2. МОДЕЛИ И АЛГОРИТМЫ

Эллиптические кривые

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

Билинейное преобразование – это преобразование, которое имеет следующий вид:

 

φ: G1 × G1 → G2 (2.1)

 

Здесь G1 и G2 – мультипликативные циклические группы простого порядка p.

Преобразование обладает следующими полезными свойствами:

- билинейность: ∀u, v ∈ G1; a, b ∈ Zp: φ(ua,vb) = φ(u,v)ab;

- невырожденность: φ(g, g) ≠ 1.

Эллиптическая кривая – множество точек, которые описываются следующим уравнением:

y2 = x3 + ax2 + bx + c (2.2)

 

Т. е. эллиптическая кривая – это кривая третьей степени, либо кубическая кривая.

На рисунке ниже изображён график одной из эллиптических кривых:

 

 

Рисунок 2.1 Пример эллиптической кривой

Проблема применения эллиптических кривых в криптографии представлена в работе [10].

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

Криптография рассматривает два вида эллиптических кривых (ЭК):

- ЭК над конечным полем Zp простого порядка p (оно же и кольцо вычетов по модулю p);

- ЭК над бинарным конечным полем GF(2m).

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

Пусть есть 2 точки ЭК A(xa, ya) и B(xb, yb). Тогда сумма этих точек вычисляется следующим образом:

xA+B = α2 – xb – xa yA+B = -yb + α(xa – xb) (2.3)

Графически сложение двух точек выглядит следующим образом:

Рисунок 2.2 Сложение двух точек эллиптической кривой

Для сложения точек P и Q, необходимо провести между ними прямую линию, которая обязательно пересечет кривую в какой-либо третьей точке R. Отразим точку R относительно горизонтальной оси координат и получим искомую точку P+Q.

Эллиптические кривые над полем GF(2m) обладают одним очень важным преимуществом: элементы этого поля можно легко представить в виде n-битных кодовых слов, что увеличивает скорость аппаратной реализации алгоритмов, основанных на ЭК.

Все математические операции на эллиптических кривых над конечным полем производятся в соответствии со свойствами конечного поля, над которым построена эллиптическая кривая. Т.е. для вычисления, например, суммы двух точек кривой E над кольцом вычетов все операции производятся по модулю числа p.

В случае использования бинарного поля возникает проблема при сложении двух одинаковых элементов, т. е. в результате сумма их равна 0. Характеристика такого поля равна 2, т. к. 0 ⊕ 0 = 0 и 1 ⊕ 1 = 0. Поэтому над данным полем необходимо использовать ЭК следующего вида:

 

y2 + xy = x3 + ax2 + b, b ≠ 0 (2.4)

 

Существуют различные атаки на эллиптические кривые:

- алгоритм Шенкса;

- алгоритм Полига-Хеллмана (алгоритм решения дискретного логарифма).

Основные преимущества ЭК:

- возможность использования ключа небольшой длины (в отличие от «классической» асимметрической криптографии);

- скорость работы алгоритмов, построенных на эллиптических кривых, намного больше, чем у классических асимметрических алгоритмов (например, RSA), поскольку ускорение достигается за счёт использования структуры бинарного конечного поля;

- эффективное использование ограниченных вычислительных ресурсов ввиду небольшой длины ключа и высокой скорости работы.

Основные недостатки ЭК:

- сложность в изучении, что увеличивает вероятность возникновения различных уязвимостей и ошибок при разработке систем;

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

Выводы

В данной главе получены следующие основные результаты:

- рассмотрены эллиптические кривые и их применение в криптографии;

- рассмотрено понятие структуры доступа;

- рассмотрен классический алгоритм шифрования на основе атрибутов;

- изучен алгоритм атрибутного шифрования на основе шифртекста (CP-ABE);

- построена модифицированная версия алгоритма CP-ABE.

Архитектура системы

Архитектура прототипа системы контроля доступа представлена следующим образом:

 

 

Рисунок 3.1 Архитектура прототипа системы

 

Ключи групп генерируются с использованием мастер-ключа и публичного ключа. Для каждой группы генерируется (либо обновляется) некоторое множество пар ABE-ключей (E, D) (E – открытый, D - закрытый) для каждого файла (share), а также генерируется множество AES-ключей для симметричного шифрования файлов. Данные AES-ключи являются перманентными и генерируются только один раз. Каждый пользовательский файл шифруется соответствующим AES-ключом и хранится на сервере в зашифрованном виде.

Все закрытые ключи D шифруются одним общим AES-ключом, защищенным схемой разделения секрета.

Таким образом, когда пользователь загружает некоторый файл, ему передаются следующие данные:

- компонент общего AES-ключа, декомпозированного с помощью алгоритма разделения секрета; передаётся по защищённому каналу с использованием протокола передачи EKE;

- файловый AES-ключ и собственно зашифрованный файл;

- пара ABE-ключей (E, D).

 

На стороне клиента (например, приложение на мобильном устройстве) происходит восстановление общего AES-ключа по его компоненту и введённому пользователем PIN-коду. Далее восстановленный AES-ключ дешифрует секретный ABE-ключ D из пары (E, D). Наконец, с помощью ключа D дешифруется и файловый AES-ключ, который расшифровывает файл, и пользователь получает к нему доступ.

Если же у пользователя нет прав на доступ к файлу, соответствующий файловый AES-ключ не расшифруется.

Реализация архитектуры

Построение схемы базы данных системы для хранения ключей, файлов, пользователей и групп осуществлялось в программе MySQL Workbench. Схема БД представлена ниже.

 

 

Рисунок 3.2 Схема базы данных разработанной системы

 

Программная реализация прототипа системы имеет многослойную структуру и состоит из следующих слоёв:

- ядро – состоит из функций генерации ключей, шифрования и дешифрования, которые работают с массивами байт и числами;

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

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

Поскольку система имеет клиент-серверную архитектуру, каждый слой делится на два подслоя – для серверной и для клиентской части.

Класс-сервис также делится на клиентскую и серверную части: клиентская часть считывает и затем десериализует ключи, а также считывает зашифрованные данные из пользовательских файлов (и записывает дешифрованные данные), а серверная сериализует и сохраняет ключи в файл.

Структурная схема разработанного прототипа представлена на следующем рисунке:

 

 

Рисунок 3.3 Структурная схема прототипа и основные классы

 

В Приложении 1 приведён исходный код всех основных классов, составляющих бизнес-логику системы.

Выводы

В данной главе были получены следующие основные результаты:

- на основе модифицированного алгоритма CP-ABE построена архитектура системы шифрования и контроля доступа, определены основные компоненты и связи между ними;

- выбраны программные средства для реализации прототипа системы на основе построенной архитектуры;

- описана структурная схема прототипа, реализованы основные классы бизнес-логики для серверной и клиентской части системы.

 

Выводы

На данном этапе были получены следующие основные результаты:

- протестирован прототип системы на предмет производительности;

- продемонстрированы основные этапы работы клиентского приложения;

- приведены результаты тестирования в виде графиков.

 

 

ЗАКЛЮЧЕНИЕ

Рассмотренная в представленной работе проблема обеспечения безопасности в корпоративной инфраструктуре SMART является довольно актуальной.

В результате выполнения данной работы были получены следующие основные результаты:

- рассмотрены основные термины и определения, используемые в рамках данной работы;

- исследованы проблемы обеспечения безопасности в корпоративных облачных инфраструктурах;

- рассмотрены эллиптические кривые и их применение в криптографии;

- рассмотрено понятие структуры доступа;

- рассмотрен классический алгоритм шифрования на основе атрибутов;

- изучен алгоритм атрибутного шифрования на основе шифртекста (CP-ABE);

- построена модифицированная версия алгоритма CP-ABE

- на основе полученной модификации алгоритма CP-ABE построена архитектура системы шифрования и контроля доступа, определены основные компоненты и связи между ними;

- выбраны программные средства для реализации прототипа системы на основе построенной архитектуры;

- описана структурная схема прототипа, реализованы основные классы бизнес-логики для серверной и клиентской части системы;

- протестирован прототип системы на предмет производительности;

- продемонстрированы основные этапы работы клиентского приложения;

- приведены результаты тестирования в виде графиков.

Таким образом, все поставленные в работе теоретические и практические задачи были выполнены.

 

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Шифрование на основе атрибутов (Attribute based encryption) / teh-box [Электронный ресурс] (http://teh-box.ru/informationsecurity/attribute-based-encryption.html)

2. Понятие корпоративного облачного хранилища данных (http://www.prj-exp.ru/dwh/what_is_dwh.php)

3. Amit Sahai and Brent Waters, Fuzzy Identity-Based Encryption Cryptology ePrint Archive, Report 2004/086 (2004)

4. Julio C.S. dos Anjos, Marcos D. Assunção, Jean Bez, "SMART: An Application Framework for Real Time

5. Big Data Analysis on Heterogeneous Cloud Environments", 2015

6. Cheng-Chi Lee, Pei-Shan Chung, and Min-Shiang Hwang, A Survey on Attribute-based Encryption Schemes of Access Control in Cloud Environments, International Journal of Network Security, Vol.15, No.4, PP.231-240, July 2013

7. J. Bethencourt, A. Sahai, and B. Waters, "Ciphertext-policy attribute-based encryption", in Proceedings of IEEE Symposium on Security and Privacy, pp. 321V334, 2007

8. R. Ostrovsky, A. Sahai, and B. Waters, "Attribute-based encryption with non-monotonic access structures", in Proceedings of the 14th ACM conference on Computer and communications security, pp. 195-203, 2007.

9. Протоколы обеспечения безопасности доступа к базам данных / cryptowiki [Электронный ресурс]

10. Эллиптическая криптография: теория (https://habrahabr.ru/post/188958/)

 

ПРИЛОЖЕНИЯ

Приложение 1. Основные классы бизнес-логики системы контроля доступа

Слой ядра

 

Серверная часть:

 

import domain.*;

import it.unisa.dia.gas.jpbc.Element;

import it.unisa.dia.gas.jpbc.Field;

import it.unisa.dia.gas.jpbc.Pairing;

import it.unisa.dia.gas.jpbc.PairingParameters;

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory;

import it.unisa.dia.gas.plaf.jpbc.pairing.a.TypeACurveGenerator;

import users.Group;

 

import java.math.BigInteger;

import java.util.ArrayList;

import java.util.HashMap;

 

public class ServerCore {

 

private Pairing pairing;

private PairingParameters pairingParameters;

private Field<Element> G0;

private Field<Element> G1;

private Field<Element> Zr;

private Element g;

private HashMap<String, Group> groups;

private ArrayList<String> groupNames;

 

private boolean aesKeysGenerated = false;

 

private StorageKey commonAESKey;

 

public ServerCore(HashMap<String, Group> groups) {

this.groups = groups;

groupNames = new ArrayList<>(groups.keySet());

AESCore.init();

}

 

/**

* @return all groups

*/

public HashMap<String, Group> getGroups() {

return groups;

}

 

/**

* Creates pairing mapping and groups

*/

public void setup() {

createGenerator();

}

 

/**

* Generates master key containing components ti (attributes)

* @return master key object

*/

public MskT generateMasterKey() {

Element y = Zr.newRandomElement();

 

HashMap<String, Element> smallTis = new HashMap<>(); // ti

 

for (String attribute: groupNames) {

Element ti = Zr.newRandomElement();

smallTis.put(attribute, ti);

}

 

return new MskT(y, smallTis);

}

 

/**

* Generates common public key containing components g^ti

* @param masterKey master key

* @return common public key object

*/

public PubT generatePublicKey(MskT masterKey) {

Element egg = pairing.pairing(g, g);

Element Y = egg.powZn(masterKey.getY());

 

HashMap<String, Element> bigTis = new HashMap<>(); // Ti = g^ti

for (String attribute: groupNames) {

Element bigTi = g.duplicate();

bigTi = bigTi.powZn(masterKey.getKeyComponent(attribute));

bigTis.put(attribute, bigTi);

}

 

return new PubT(pairing, G0, G1, Zr, g, Y, bigTis);

}

 

public StorageKey generateCommonAESKey(int aesKeyLength) {

commonAESKey = AESCore.generateKey(aesKeyLength);

return commonAESKey;

}

 

/**

* Generates for each group:

* 1) D - private group key set (Dij - key component for file j in group i)

* 2) AES key set for all files in this group

* 3) S - share parameters (Sij - parameter for file j belonging to group i)

* @param masterKey - master key

* @param publicKey common public key that provides components g^ti

* @param aesKeyLength - length of AES key

*/

public void generateGroupsKeys(MskT masterKey, PubT publicKey, int aesKeyLength) {

Element w = Zr.newRandomElement();

 

for (String groupName: groupNames) {

Group group = groups.get(groupName);

int numberOfFiles = group.getNumberOfFiles();

 

for (int i = 0; i < numberOfFiles; i++) {

 

// group keys generation

 

Element g = this.g.duplicate();

Element t = masterKey.getKeyComponent(groupName).duplicate();

Element y = masterKey.getY().duplicate();

y = y.mul(w);

y = y.div(t);

group.getGroupKey().addComponent(AESCore.encrypt(g.powZn(y).toBytes(), commonAESKey)); // Di = g^(y*w/t)

 

// share parameters generation

 

Element shareParameter = Zr.newRandomElement();

group.addShareParameter(shareParameter); // Sij

 

Element Ei = publicKey.getKeyComponent(groupName).duplicate();

Element s = shareParameter.duplicate();

s = s.div(w);

 

CphT cipherText = new CphT();

cipherText.setPublicShareKeyComponent(Ei.powZn(s));

cipherText.setFileNumber(i);

cipherText.setGroupName(groupName);

 

group.addCipherText(cipherText); // Ei

 

// AES keys generation

 

if (!aesKeysGenerated)

group.addFileKey(AESCore.generateKey(aesKeyLength));

}

}

 

if (!aesKeysGenerated)

aesKeysGenerated = true;

}

 

/**

* Encrypts ONE file (AES key) of ONE group

* @param message input bytes

* @param publicKey common public key

* @param s share parameter

* @return encrypted output

*/

public BigInteger enc(byte[] message, PubT publicKey, Element s) {

BigInteger M = new BigInteger(message);

 

Element Ys = publicKey.Y.duplicate();

Ys = Ys.powZn(s);

 

return M.multiply(Ys.toBigInteger());

}

 

private void createGenerator() {

int rbits = 32; // bit length of numbers ti for master key

int qbits = 64;

 

TypeACurveGenerator curveGenerator = new TypeACurveGenerator(rbits, qbits);

pairingParameters = curveGenerator.generate();

 

initAlgebraicStructures();

g = G0.newRandomElement();

}

 

public void useExistingParams(PairingParameters parameters, byte[] gBytes) {

this.pairingParameters = parameters;

initAlgebraicStructures();

g = G0.newElement();

g.setFromBytes(gBytes);

}

 

@SuppressWarnings("unchecked")

private void initAlgebraicStructures() {

pairing = PairingFactory.getPairing(pairingParameters);

G0 = pairing.getG1();

G1 = pairing.getGT();

Zr = pairing.getZr();

}

 

public PairingParameters getPairingParameters() {

return pairingParameters;

}

 

public Element getGroupGeneratorElement() {

return g;

}

 

}

 

 

Клиентская часть:

 

import domain.CphT;

import it.unisa.dia.gas.jpbc.Element;

import it.unisa.dia.gas.jpbc.Pairing;

 

import java.math.BigInteger;

 

public class ClientCore {

 

private Pairing pairing;

 

public ClientCore(Pairing pairing) {

this.pairing = pairing;

AESCore.init();

}

 

/**

* Decrypts cipher text with component of group key (Di)

* @param cipherText contains encrypted data E and public share key Ei

* @param groupKeyComponent Di

* @return decrypted data

*/

public byte[] dec(CphT cipherText, Element groupKeyComponent) {

Element Ei = cipherText.getPublicShareKeyComponent();

BigInteger E = cipherText.getEncryptedData();

 

if (E == null)

return null;

BigInteger result = E.divide(pairing.pairing(Ei, groupKeyComponent).toBigInteger());

return result.toByteArray();

}

}

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Белорусский государственный университет

ФАКУЛЬТЕТ ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ

Кафедра информационных систем управления

 

 

БОРИСЕВИЧ

Иван Владимирович

 



Поделиться:


Последнее изменение этой страницы: 2016-08-10; просмотров: 212; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.102.112 (0.319 с.)