Шифрование на основе атрибутов (Attribute based encryption)

Шифрование на основе атрибутов (Attribute based encryption)

Сегодня предприятия испытывают возрастающее давление экономических и рыночных факторов, вынуждающее их осваивать новые ИТ-модели, такие как облачные вычисления. В результате внедрение облачных вычислений распространяется все шире, и некоторые аналитики предсказывают, что в следующем десятилетии от 30 до 50% ИТ-сервисов могут быть перемещены в облако.[1] Облачные вычисления объединяют ресурсы инфраструктуры и предоставляют данные ресурсы по запросу с возможностью масштабирования в общей многопользовательской и гибкой облачной среде. Но, на ряду с этим, облачная инфраструктура представляет повышенные риски и более ограниченную возможность контроля. В этом заключаются главные проблемы облачных вычислений – защита информации и доверие пользователей по отношению к облачным провайдерам, аутентификация участников информационного обмена. Однако эти проблемы могут быть решены с помощью использования криптографических методов.

Для аутентификации пользователей используется криптография с открытым ключом. В таких криптосистемах каждый пользователь имеет свой закрытый ключ и связанный с ним открытый ключ. Удостоверяющий центр (УЦ) – объект, которому доверяют все пользователи, гарантирует подлинность открытых ключей. Для этого УЦ для каждого открытого ключа выпускает сертификат. Сертификат содержит открытый ключ пользователя и идентифицирующую этого пользователя информацию, а также другую служебную информацию. Сертификат заверяется электронной цифровой подписью (ЭЦП) УЦ. Получаемый объект называется сертификатом открытого ключа пользователя. Таким образом, криптосистемам, которые используют инфраструктуру открытых ключей, необходима система управления цифровыми сертификатами, которая, как правило, слишком сложна в обслуживании и функционировании [2].

Чтобы уменьшить сложность, присущую традиционным асимметричным криптосистемам, из-за наличия системы управления цифровыми сертификатами Ади Шамир (Adi Shamir) предложил схему шифрования, основанную на идентификаторах (ID-based encryption, IBE), вскоре идея IBE была улучшена в работе Амита Сахаи (Amit Sahai) и Брента Уотерса (Brent Waters) [3]. Амит Сахаи и Брент Уотерс ввели понятие шифрования на основе атрибутов (Attribute based encryption, ABE).

Шифрование на основе атрибутов можно рассматривать как обобщение шифрования, основанного на идентификаторах [4, 5]. Однако в отличие от IBE, криптосистемы на основе атрибутного шифрования могут так же применяться и для контроля доступа к шифрованным данным [6]. В данной работе рассмотрены две различные схемы атрибутного шифрования для контроля доступа к шифрованным данным.

1 Криптосистемы на основе атрибутов

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

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

Пусть A={A_1,A_2,...,A_n} – множество атрибутов. Набор \Lambda \subseteq 2^{\{A_1,A_2,...,A_n\}} назовем монотонным, если \forall B,C: B\in \Lambda ,B\subseteq C\Rightarrow C\in \Lambda . Монотонная структура доступа – непустой монотонный набор \Lambda \subseteq 2^{\{P_1,P_2,...,P_n\}}.

Набор атрибутов, который принадлежат множеству \Lambda назовем авторизованным набором атрибутов. Набор атрибутов, который не принадлежит множеству \Lambda назовем неавторизованным набором атрибутов.

Далее под структурой доступа будем понимать монотонную структуру доступа. Стоит заметить, что в 2007 году авторы ABE-схемы предложили обобщенную схему на случай немонотонных структур доступа [7], однако в 2013 году ЧенгЧи Ли (Cheng-Chi Lee), Пей-Шан Чунг (Pei-Shan Chung), и Мин-Шенг Хуанг( Min-Shiang Hwang) в работе "Исследование схем шифрования на основе атрибутов в облачных средах"[8] показали, что такая схема является неэффективной.

Пусть G_1, G_2 – мультипликативные циклические группы простого порядка p. Элемент g – образующий элемент группы G_1. Отображение \varphi :G_1\times G_1\to G_2 будем называть билинейным отображением, если выполняются следующие условия:

  • билинейность: \forall u,v\in G_1,a,b\in Z_p: \varphi (u^a,v^b)=\varphi (u,v)^{ab}
  • невырожденность: \varphi (g,g)\neq 1

Будем говорить, что группа G_i билинейна, если групповая операция в G_i и билинейное отображение \varphi эффективно вычислимы. Заметим, что отображение \varphi симметричное:

\varphi (g^a,g^b)=\varphi (g,g)^{ab}=\varphi (g^b,g^a)

1.1 Дерево доступа

Пусть \tau – дерево, представляющее собой структуру доступа. Каждый узел дерева, который не является листом, представляет собой пороговый логический элемент. Каждый из них описывается с помощью потомков и порогового значения. Обозначим через num_x– число наследников узла x и k_x – пороговое значение. Тогда для каждого узла x выполняется условие 0 < k_x \le num_x. Следовательно, при k_x=1 пороговый логический элемент представляет собой логический элемент ИЛИ, при k_x=num_x пороговый логический элемент представляет собой логический элемент И. Каждый узел-лист x дерева \tau описывается одним атрибутом и пороговым значением k_x=1.

Для работы с деревом доступа определим несколько функций. Пусть parent(x) – родитель узла x в дереве; att(x) определена тогда и только тогда, когда x – узел-лист и обозначает атрибут, связанный с этим листом в дереве. В дереве доступа \tau также определена функция упорядочивания между потомками каждого узла, то есть, потомки будут пронумерованы значениями от 1 до num. Функция index(x) возвращает такое число, связанное с узлом x, где каждое значение индекса уникально и связано с узлом в структуре доступа для данного ключа произвольным образом.

Пусть \tau – дерево доступа с корнем r. Обозначим \tau_x– поддерево \tau , корнем которого является узел x. Тогда \tau тоже самое, что \tau_r. Будем говорить, что \tau_x (\gamma )=1, если набор атрибутов \gamma удовлетворяет дереву доступа \tau_x. Значение \tau_x(\gamma ) считается рекурсивно следующим образом. Если x – узел, который не является листом, определим количество \tau_{x^{*}}(\gamma ) для всех потомков x^{*} узла x. \tau_x(\gamma ) возвращает 1 тогда и только тогда, когда как минимум k_x потомков вернули значение равное 1. Если же x является листом, то \tau_x(\gamma ) будет иметь значение 1 тогда и только тогда, когда att(x)\in \gamma .

Приведем пример. Предположим, что отделы ФБР по коррупции в государственном секторе в Кноксвиле и Сан-Франциско расследующие обвинения во взяточничестве вовлекающие лоббиста (человека, оказывающего давление на членов конгресса) из Сан-Франциско и конгрессмена из Теннесси. Главный агент ФБР может захотеть зашифровать конфиденциальную заметку так, что только персонал, имеющий определённые полномочия или атрибуты сможет принять её. Например, главный агент может указать следующую структуру доступа для принятия этой информации:

((Отдел корр.в гос.секторе) И ((Кноксвиль) ИЛИ (Сан-Франциско))) ИЛИ (Уровень доступа > 5) ИЛИ (Имя:Чарли Эппс)

Такой записью главный агент имел ввиду то, что данная заметка должна быть видна только агентами, работающими в отделениях по коррупции в государственном секторе из Конксвиля или Сан-Франциско, представителями ФБР очень высокого уровня в цепочке управления и консультанту Чарли Эппсу.

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

1.2 Пример построения структуры доступа

Давайте предположим, что мы хотим безопасно передать данную статью,, определённому и заранее оговоренному кругу лиц. Допустим мы хотим сделать так, чтобы эта работа была доступна студентам и преподавателям кафедры 42. Однако мы также захотели сделать эту работу доступной для преподавателей с кафедры 44. Введём следующие атрибуты: a – "студент", b – "42 кафедра", c – "преподаватель", d – "работа на 44 кафедре", где a, b, c, d \in A, A – множество атрибутов. В такой случае структура доступа выглядит следующим образом:

ab\cup ac\cup ad\cup bc\cup bd\cup cd

ab\cup ac\cup ad\cup bc\cup bd\cup cd=ab\cup a(c\cup d)\cup b(c\cup d)\cup cd=(a\cup b)(c\cup d)\cup ab\cup cd

Пусть один из участников схемы – студент кафедры 42 Косолов Э.А. Данный пользователь обладает атрибутами "кафедра 42" и "студент". Остальными атрибутами данный участник не обладает. Другими словами: a=1, b=1, c=0, d=0. Первое слагаемое структуры доступа даст 1 и, следовательно, значение всей структуры даст значение 1 для этого пользователя, то есть данный участник сможет расшифровать нашу работу.

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

ab\cup ac\cup ad\cup bc\cup bd\cup cd=a(b\cup d)\cup bd\cup c(b\cup d)=(a\cup c)(b\cup d)\cup bd

Важно заметить и то, что дерево, соответствующее структуре доступа: (a\cup b)(c\cup d)\cup ab\cup cd представляет собой пороговый логический элемент с пороговым значением k_x=2, то есть для получения истинного значения в этом дереве необходимо обладать как минимум двумя атрибутами-наследниками.

Пусть теперь другой участник схемы – студент кафедры 44 Бычко Г.П. Данный участник обладает только атрибутом "студент", так как он не имеет отношения к 42 кафедре, не является преподавателем и не работает на кафедре. В таком случае структура доступа для данного участника будет иметь значение 0, что и ожидалось, так как участник не подходит под критерии, установленные лицом, зашифровавшим данные.

Если бы мы хотели сделать нашу работу доступной (помимо условий, описанных выше) только для студентов, 4-го курса и старше. Также было бы хорошей идеей сделать работу доступной для заместителя декана факультета, чтобы он мог в любое время ознакомится с нашей работой. В таком случае следует добавить атрибуты "старше 4-го курса" (обозначим данный атрибут через e) и "заместитель декана" (обозначим данный атрибут через f). В таком случае наша структура доступа примет следующий вид:

((a\cup c)(b\cup d)\cup bd)e\cup f

1.3 Общая схема шифрования на основе атрибутов

Общая схема шифрования на основе атрибутов состоит из четырёх алгоритмов: Инициализации (Setup), генерации закрытого ключа пользователя (KeyGen), шифрования (Encrypt), и расшифрования (Decrypt):

Инициализация
Setup(): Доверенный центр случайным образом выбирает элементы t_i\in Z_p и случайный элемент y\in Z_p, i = \overline{1,n}. Тогда открытый ключ PK и мастер ключ MK:

PK=(T_1=g^{t_1},\cdots,T_n=g^{t_n},Y=\varphi (g,g)^y,

MK=(t_1,\cdots,t_n,y).

Генерация закрытого ключа пользователя
KeyGen(\tau ,MK): Алгоритм возвращает ключ, с помощью которого пользователь сможет расшифровать сообщение, зашифрованное с использованием атрибутов A. Генерация закрытого ключа осуществляется по следующему правилу. Для каждого узла x дерева \tau задаётся многочлен q_x степени d_x=k_x-1, причем q_x(0)=q_{parant(x)}(index(x)). Для корневого узла задается полином такой, что q_r(0)=y. Затем случайно выбирается d_r значений для того, чтобы полностью определить многочлен q_r. Для других узлов x выбирается d_x значений для того, чтобы полностью определить многочлен q_x. Тогда закрытый ключ пользователя:

D=\{D_i=g^{\frac{q(i)}{t_i}}\}, где i=att(x).

Шифрование
Encrypt(A,PK,M): Пользователь шифрует сообщение M\in G_2 с использованием набора атрибутов A и случайно выбранного числа s\in Z_p, тогда шифртекст:

CT=(A,E=MY^s,\{E_i=T_{i}^s\}_{i\in A})

Расшифрование
Decrypt(CT,D): Пользователь расшифровывает шифртекст CT, используя свой закрытый ключ D. Определим рекурсивный алгоритм Decrypt(CT,D)=\varphi (D_x,E_i)=\varphi (g^{\frac{q_x(0)}{t_i}},g^{st_i})=\varphi (g,g)^{sq_x(0)}, тогда для корневого узла r имеем

DecryptNode(CT,D,r) = \varphi (g,g)^{ys} = Y^s.

Тогда исходное сообщение

M=\frac{E}{Y^s}.

2 Схемы шифрования на основе атрибутов

Схемы шифрования на основе атрибутов делятся на два вида:

  • схема шифрования с правилом доступа на основе ключа (KP-ABE).
  • схема шифрования с правилом доступа на основе шифртекста (CP-ABE).

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

2.1 Критерии для построения криптосистем на основе атрибутов

Ченг-Чи Ли, Пей-Шан Чунг и Мин-Шенг в работе [8] выделяют несколько критериев, которым должна удовлетворять криптосистема на основе атрибутов. Рассмотрим данные критерии.

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

К2: Детальный контроля доступа.
В группе пользователей система предоставляет различные правила доступа для каждого отдельного участника группы. Таким образом, пользователи, которые находятся в одной группе могут иметь различные правила доступа к данным.

К3: Масштабируемость.
Число зарегистрированных пользователей не должно влиять на производительность системы.

К4: Контроль действий
Недопустима передача атрибутов секретного ключа авторизованного пользователя другим лицам.

К5: Отзыв прав пользователя.
Если пользователь выходит из системы, то система может отозвать права данного пользователя. Пользователь, чьи права были отозваны, уже не сможет получить доступ к данным.

К6: Невозможность сговора.
Пользователи не могут объединять свои атрибуты, чтобы расшифровать данные, поскольку каждый атрибут связан с многочленом или случайным числом. Таким образом, пользователи не могут вступать в сговор друг с другом.

2.2 Атрибутная схема шифрования с правилом доступа на основе ключа

Атрибутная схема шифрования с правилом доступа на основе ключа была предложена Гоалом (Goyal) в 2006 году в работе "Attribute-Based Encryption forFine-Grained Access Control of Encrypted Data" [9]. В предложенной схеме каждый шифртекст помечается некоторым набором описательных атрибутов, а в закрытом ключе пользователя содержится правило доступа к шифрованным данным. Данные могут быть расшифрованы только тогда, когда набор атрибутов данных соответствует структуре доступа в закрытом ключе пользователя. Структура доступа формируется в виде условий, принимающих при проверке истинное или ложное значение и соединяемых с помощью логических операций «И» и «ИЛИ».

Атрибутная схема шифрования с правилом доступа на основе ключа, как и классическая схема ABE-шифрования, состоит из 4-х алгоритмов: инициализации (генерация открытого ключа и универсального ключа), генерации закрытого ключа пользователя, шифрования и расшифрования. Рассмотри схему подробнее.

Введем некоторые обозначения. A_{U-KP} – структура доступа в закрытом ключе пользователя. A_{CT} – атрибуты, используемые для шифрования данных.

Инициализация
Setup(): Доверенный центр случайным образом выбирает элементы t_i\in Z_p и случайный элемент y\in Z_p, i = \overline{1,n}. Тогда открытый ключ PK и мастер ключ MK:

PK=(T_1=g^{t_1},\cdots,T_n=g^{t_n},Y=\varphi (g,g)^y),

MK=(t_1,\cdots,t_n,y).

Генерация закрытого ключа пользователя
KeyGen(A_{U-KP},PK,MK): Третья доверенная сторона генерирует компоненты закрытого ключа для каждого узла x, тогда закрытый ключ:

D=\{D_x=g^{\frac{q_x(0)}{t_i}}\},

где i равен узлу листа в структуре доступа.

Шифрование
Encrypt(A_{CT},PK,M): Пользователь шифрует сообщение M\in G_2 с использованием набора атрибутов A_{CT} и случайно выбранного числа s\in Z_p, тогда шифртекст:

CT=(A_{CT}=MY^s,\{E_i=T_{i}^s\}_{i\in A_{CT}}).

Расшифрование
Decrypt(CT,D): Данный алгоритм является рекурсивным. На вход алгоритму поступает шифртекст, секретный ключ пользователя, набор атрибутов, которые ассоциированы с секретным ключом пользователя. Определим рекурсивный алгоритм

DecryptNode(CT,D,x)=\varphi (D_x,E_i)=\varphi (g^{\frac{q_x(0)}{t_i}},g^{st_i})=\varphi (g,g)^{sq_x(0)}.

Пусть i – лист и он содержится в структуре доступа секретного ключа, тогда применяется алгоритм DecryptNode. Если i – узел, то алгоритм DecryptNode применяется для наследников узла. Последний этап – применение алгоритма DecryptNode для корня дерева, то есть вычисляется \varphi (g,g)^{sy}=Y^s. Таким образом, исходное сообщение M может быть получено следующим образом:

M=\frac{E}{Y^s}.

2.3 Атрибутная схема шифрования с правилом доступа на основе шифртекста

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

Атрибутная схема шифрования с правилом доступа на основе шифртекста, как и классическая схема ABE-шифрования, состоит из 4-х алгоритмов: инициализации (генерация открытого ключа и универсального ключа), генерации закрытого ключа пользователя, шифрования и расшифрования. В дополнение предоставляется пятый алгоритм – делегат (delegat).

Инициализация.
Не принимает входных параметров, кроме неявного параметра безопасности. Алгоритм возвращает открытый ключ PK и мастер ключ MK.

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

Шифрование.
Алгоритм шифрования принимает открытые параметры PK, сообщение M и структуру доступа \Lambda над множеством атрибутов. Алгоритм шифрует M и производит шифртекст CT, такой, что только пользователь, обладающий набором атрибутов, удовлетворяющих структуре доступа, будет способен расшифровать сообщение. Будем считать, что зашифрованный текст неявно содержит \Lambda .

Расшифрование.
Алгоритм расшифрования принимает параметры PK, шифртекст CT, который содержит политику доступа \Lambda , секретный ключ SK, который является секретным ключом для множества атрибутов S. Если набор атрибутов S удовлетворяет структуре доступа \Lambda , то алгоритм расшифрует шифртекст и вернёт сообщение M.

Делегат.
Алгоритм принимает на вход параметры секретного ключа SK для некоторого набора атрибутов S и набор \widehat{S}\subseteq S. Возвращает секретный ключ \widehat{SK}набора атрибутов \widehat{S}.

Пусть G_1, G_2 – билинейные группы простого порядка p. Элемент g – образующий элемент группы G_1. Отображение \varphi :G_1\times G_1\to G_2 – билинейное.

Определим коэффициент Лагранжа \Delta_{(i,s)} для i\in Z_p и набора S элементов из Z_p:

\Delta_{(i,S)}(x)=\prod_{(j\in S,j \neq i)}\frac{x-j}{i-j}.

Определим хеш-функцию H:\{0,1\}^{*}\to G_1, которая будет отображать любой атрибут, представленный в двоичном виде, в элемент группы G_1.

Рассмотрим схему подробнее.

Инициализация
Setup(): Доверенный центр выбирает билинейную группу G_1 простого порядка p, g – образующий элемент группы G_1. Выбираются два случайных числа \alpha ,\beta \in Z_p, тогда открытый ключ PK и мастер ключ MK:

PK=(G_1,g,h,f,\varphi (g,g)^{\alpha } ),

MK=(\beta ,g^\alpha ),

где h=g^\beta , f=g^{(\frac{1}{\beta })}.

Генерация закрытого ключа пользователя
KeyGen(S,MK): Алгоритм генерации ключа принимает в качестве входных данных набор атрибутов S и возвращает ключ, которые ассоциированы с этим набором атрибутов. Выбирается случайное число r\in Z_p, для каждого атрибута j\in S выбираются числа z_j\in Z_p, тогда секретный ключ:

SK=(D,\{D_j,D_{j}^*\}_{j\in s}),

где D=g^{\frac{\alpha +r}{\beta }}, D_j=g^r H(j)^{r_j}, D_{j}^*=g^{r_j}.

Шифрование
Encrypt(\tau ,PK,M): Для шифрования выбирается многочлен q_x для каждого узла x в дереве \tau . Многочлены выбираются сверху вниз, начиная с корня R следующим образом. Для каждого узла x дерева задаётся многочлен q_x степени d_x=k_{x}-1, причем q_x(0)=q_{parant(x)}(index(x)). Начиная с корня R выбирается случайное число s\in Z_p такое, что q_R(0)=s. Затем случайно выбирается d_R значений для того, чтобы полностью определить многочлен q_R. Для других узлов x выбирается d_x значений для того, чтобы полностью определить многочлен q_x.

Пусть Y – множество листьев в \tau , тогда шифртекст есть следующий набор:

CT=(\tau ,\widehat{C},C,\{C_y,C_{y}^*\}_{y\in }),

где \widehat{C}=M\varphi (g,g)^{\alpha s}, C=h^s, C_y=g^{q_y(0)}, C_{y}^*=H(att(y)^{q_y (0)}).

Делегат
Delegate(SK,S): Выбираются случайные числа \widehat{r} \widehat{r_k} для любых k\in \widehat{S}, где \widehat{S}\subseteq Sформируется новый закрытый ключ:

\widehat{SK}=(\widehat{D},\{\widehat{D_k},\widehat{D_{k}^*}\}_{k\subseteq \widehat{S}}),

где \widehat{D}=Df^{\widehat{r}}, \widehat{D_k}=D_k g^{\widehat{r}}H(k)^{\widehat{r_k}}, \widehat{D_{k}^*}=D_{k}^* g^{\widehat{r}}.

Расшифрование
Decrypt(CT,SK): Определим рекурсивный алгоритм DecryptNode(CT,SK,x) следующим образом. Если узел x – лист, то i=att(x) и если i\in S, то

DecryptNode(CT,SK,x)=\frac{\varphi (D_i,C_x)}{\varphi (D_{i}^*,C_{x}^*)}=\frac{\varphi (g^{r}H(i)^{r_i},h^{q_x(0)})}{\varphi (g^{r_i},H(i)^{q_x(0)})}=\varphi (g,g)^{rq_x(0)}

если i\notin S, то

DecryptNode(CT,SK,x)=\bot

Если x не является листом, то для всех узлов-наследников z узла x рекурсивно вызывается DecryptNode(CT,SK,z), результат сохраняется и обозначается как F_z. Пусть S_x – случайное множество потомков узла z таких, что F_z\neq \bot, |S_x|=k_x. Если S_x=\emptyset, то функция возвратит \bot. В противном случае вычисляется следующее значение

F_x=\prod_{z\in S_x}F_z^{\Delta_{i,S_{x^*}}(0)}=\prod_{z\in S_x}(\varphi (g,g)^{rq_z(0)})^{\Delta_{i,S_{x^*}}(0)}

\prod_{z\in S_x}(\varphi (g,g)^{rq_{patent(z)}(index(z))})^{\Delta_{i,S_{x^*}}(0)}

\prod_{z\in S_x}(\varphi (g,g)^{rq_{x}(i)})^{\Delta_{i,S_{x^*}}(0)}=\varphi (g,g)^{rq_x(0)}

где i=index(z), S_{x^{*} }=\{index(z):z\in S_{x}\}

Расшифрование начинается с вызова функции DecryptNode для корня R дерева \tau , если набор атрибутов удовлетворяет дереву \tau , то вычисляется

A=DecryptNode(CT,SK,r)=\varphi (g,g)^{rq_R(0)}=\varphi (g,g)^{rs}

тогда исходное сообщение

M=\frac{\widehat{C}}{\varphi (C,D)/A}=\frac{\widehat{C}}{\varphi (h^s,g^{(\alpha +r)/\beta )})/\varphi (g,g)^{rs}}

3 Практическое применение шифрования на основе атрибутов, сервис privateBook

В настоящее время существует некоторое количество модулей для языков программирования, позволяющих применить технологию шифрования на основе атрибутов в различных приложениях. Одним из таких модулей является Charm [10] для языка программирования python. С использованием данного модуля в апреле 2014 года Майло Ватанаби (Milo Watanabe) разработал прототип клиент-северного приложения с использованием шифрования на основе атрибутов [11]. Свое приложение автор назвал privateBook, так как данный сервис имитирует онлайн-дневник.

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

В privateBook участвуют три стороны: сервер, которые предоставляет услуги, клиент, которые использует сервис и третья доверенная сторона, которая хранит, создает и распространяет ключи для клиента и сервера. Данная схема представлена на рисунке 1.

Шифрование на основе атрибутов (Attribute based encryption)
Рисунок 1 – Процесс шифрования / расшифрования в privateBook.

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

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

Регистрация сервера. Это первый этап, в котором сервер связывается с третей доверенной стороной, предоставляя список атрибутов \Lambda , которые созданы для политики доступа. Третья доверенная сторона хранит список атрибутов \Lambda .

Распределение ключей. Третья доверенная сторона генерирует публичный ключ PK и мастер ключ MK, которые используются для генерации закрытого ключа D. Список атрибутов \Lambda , публичный ключ PK и закрытый ключ D хранятся у третей доверенной стороны. Затем закрытый ключ D отправляется серверу, данный ключ используется для расшифровывания данных, а публичный ключ PK отправляется клиенту, данный ключ используется для шифрования данных.

Шифрование на стороне клиента. Пользователь шифрует данные M используя свою политику \gamma и ключ PK. Полученный шифртекст E отправляется серверу.

Ответ сервера. Сервер расшифровывает шифртекст E с использованием ключа D. Функция расшифровывания вернет либо исходные данные M, либо логическое выражение "Ложь". Если \Lambda удовлетворяет \gamma , то данные могут быть обработаны сервером и сервер оповестит клиента об успешной операции, иначе сервер оповестит клиента о неудаче.

Рассмотрим privateBook подробнее.

Приложение privateBook имитирует онлайл-дневник: пользователь может создать собственную учетную запись, а затем, например, оставить заметку о себе, которая будет отображаться на личной странице.

Сервис privateBook состоит из трех частей:

  • Страница регистрации сервера. Страница, на которой сервер создает список атрибутов, а третья доверенная сторона хранит ключи и множество атрибутов \Lambda в своей базе
  • Страница регистрации клиента. Страница, на которой пользователь задает свою политику, идентифицирующую его информацию, данные записываются в таблицу "Политика"
  • Домашняя страница. Страница, на которой пользователь оставляет свои заметки, которые будут отображать на личной странице. Все заметки хранятся на сервере в зашифрованном виде с некоторой дополнительной информацией.
    Рассмотрим каждый этап для реализации аналогичного privateBook сервиса.

3.1 Регистрация сервера в privateBook

Как уже было сказано выше, сервер создает политику по умолчанию, передавая её третей доверенной стороне, которая сохраняет принятые данные качестве списка атрибутов, а затем генерирует открытый ключ PK и закрытый ключ D. На рисунке 2 показан вывод значении политики по умолчанию, публичного ключа, закрытого ключа.

Шифрование на основе атрибутов (Attribute based encryption)
Рисунок 2 – Значения, которые хранит третья доверенная сторона.

3.2 Хранение и распределение ключей

Третья доверенная сторона создает словарь (ассоциативный массив) ключей и сохраняет его в хранилище ключей. Данный этап показан на рисунке 3.

Шифрование на основе атрибутов (Attribute based encryption)
Рисунок 3 – Элемент в хранилище ключевой информации.

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

3.3 Создание политики пользователя

Новый пользователь в privateBook регистрирует свое имя и политику. Политика пользователя и имя задается на соответствующей странице, настройка политики показана на рисунке 4.

Шифрование на основе атрибутов (Attribute based encryption)
Рисунок 4 – Создание политики пользователя.

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

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

Шифрование на основе атрибутов (Attribute based encryption)
Рисунок 5 – Политики конфиденциальности пользователей.

3.4 Шифрование на стороне клиента и ответ сервера

Допустим, пользователь обновляет заметку на своей личной странице. Обновленные данные шифруются, результатом является словарь, который включает в себя сам шифртекст, политику пользователя и публичный ключ PK. Стоит заметить, что полученный результат занимает большой объем памяти, данный словарь хранится в базе данных privateBook. Результат шифрования показан на рисунке 6. При загрузке домашней страницы пользователя сервер пытается расшифровать данные, в случае успеха на веб-странице отображается заметка, если расшифровать данные не удается на веб-странице будет отображено сообщение с ошибкой: "Страница не может быть отображена, так как ваша политика не удовлетворяет настройкам безопасности".

Шифрование на основе атрибутов (Attribute based encryption)
Рисунок 6 – Результат шифрования.

4 Выводы

Схема шифрования на основе атрибутов была предложена Амитом Сахаи и Брентом Уотерс в 2004 году. Данная схема шифрования может рассматриваться как обобщение шифрования, основанного на идентификаторах. Криптосистемы на основе атрибутного шифрования чаще всего применяются для контроля доступа к шифрованным данным и делятся на два вида:

  • схема шифрования с правилом доступа на основе ключа (KP-ABE)
  • схема шифрования с правилом доступа на основе шифртекста (CP-ABE)

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

Стойкость таких криптосистем основана на труднорешаемости билинейной проблемы Диффи – Хеллмана. Каждая схема шифрования на основе атрибутов имеет свои недостатки, в таблице 1 показано, каким критериям К1-К6 удовлетворяет каждая из рассмотренных в данной работе схем.

Таблица 1 – Сравнение схем шифрования на основе атрибутов относительно критериев К1-К6.

Критерий Общая схема KP-ABE CP-ABE
К1 - + +
К2 + + +
К3 - - -
К4 - - +
К5 - + +
К6 + + +

В настоящее время существуют прототипы приложений, которые используют технологию шифрования на основе атрибутов. Примером такого приложения может служить онлайн-дневник "privateBook", данный сервис был представлен в 2014 году Майло Ватанаби.

Криптосистемы на основе идентификационных данных и криптосистемы на основе атрибутов похожи. Например, в основе обоих криптосистем лежит личностная информация каждого участника. Личностная информация в обоих криптосистемах оказывает непосредственное влияние на шифртекст, то есть данные, которые получаются после применения к исходному сообщению операции шифрования. Однако, имеется ряд отличий. В схемах IBE личностная информация является по сути идентификатором, то есть уникальным признаком того или иного участника схемы. Тем самым обеспечивается неотказуемость: пользователь не может отрицать принадлежность его идентификатора к нему. В схемах ABE личностная информация способствует лишь образованию набора атрибутов, присущих конкретному участнику схемы. Другими словами, личностная информация участника помогает определить наличие или отсутствие конкретных и заранее установленных признаков. Более того, вполне закономерной является ситуация, когда два и более участников схемы имеют одинаковый набор атрибутов (например, коллеги одного отдела, одного и того же предприятия). Еще одним отличием является то, что влияние на шифрованные данные для схем IBE и ABE оказывается совершенно различными способами. Так, например, в схемах IBE на шифртекст оказывают влияние закрытый ключ и открытый ключ отправителя, а также открытый ключ получателя, в то время как в схемах ABE на шифртекст оказывают влияние лишь набор атрибутов и связанная с этим набором структура доступа.

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

Заключение

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

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

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

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

Авторы и перевод: Герасимов А.Н, Скрипко А.И

Список использованных источников

1. Создание бизнес-ценности с помощью эффективной всеобъемлющей безопасности в облаке и услуг по внедрению облачных технологий / cisco [Электронный ресурс]

2. Gentry C. Certificate-based encryption and the certificate revocation problem. International Conference on the Theory and Applications of Cryptographic Techniques, Warsaw, Poland, 2003. С. 272–293

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

4. D. Boneh and M. Franklin. Identity-based encryption from the weil pairing. In CRYPTO ’01: Proceedings of the 21st Annual International Cryptology Conference on Advances in Cryptology, pages 213–229. Springer-Verlag, 2001.

5. C. Cocks. An identity based encryption scheme based on quadratic residues. In Proceedings of the 8th IMA International Conference on Cryptography and Coding, pages 360–363, London, UK, 2001. Springer-Verlag.

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

7. 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.

8. 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

9. Vipul Goyal, Omkant Pandey, Amit Sahai and Brent Waters, Attribute-Based Encryption for Fine-Grained Access Control of Encrypted Data ACM CCS (2006)

10. Akinyele, Joseph A. and Garman, Christina and Miers, Ian and Pagano.\Charm: a framework for rapidly prototyping cryptosystems."Journalof Cryptographic Engineering3.2 (2013): 111-128

11. Milo Watanabe. privateBook: Encrypting User Data withAttribute-Based Encryption Using Privacy Policies April 2014