Attribute-based Encryption

Attribute-based Encryption (рус. Шифрование на основе атрибутов, ABE-шифрование) — разновидность алгоритмов шифрования с открытым ключом, в которых закрытый ключ, применяемый пользователем для расшифрования данных, зависит от некоторых атрибутов пользователя (например, должность, место жительства, тип учётной записи). Идея ABE была впервые опубликована Amit Sahai и Brent Waters[1] и была в дальнейшем развита в работах Vipul Goyal, Omkant Pandey, Amit Sahai и Brent Waters[2].

Общая схема Attribute-based Encryption

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

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

Владелец данных шифрует данные при помощи открытого ключа и некоторого набора атрибутов.

Пользователь может расшифровать данные при помощи собственного закрытого ключа, который он получает от доверенного центра. Проверяется соответствие между атрибутами, которые составляют закрытый ключ пользователя, и атрибутами зашифрованных данных. Если число совпадающих атрибутов превышает установленный порог d {\displaystyle d} , закрытый ключ пользователя сможет расшифровать данные. (Пусть, например, атрибуты шифрованных данных {«Кафедра радиотехники», «Преподаватель», «Студент»}, d = 2 {\displaystyle d=2} . Чтобы пользователь смог расшифровать данные и получить к ним доступ, в наборе атрибутов, составляющих его закрытый ключ, должны присутствовать по крайней мере два из трёх атрибутов шифрованных данных).

Структуры доступа

Пусть { P 1 , P 2 , . . . , P n } {\displaystyle \{P_{1},P_{2},...,P_{n}\}}  — множество атрибутов. Набор A 2 { P 1 , P 2 , . . . , P n } {\displaystyle \mathbb {A} \subseteq 2^{\{P_{1},P_{2},...,P_{n}\}}} называется монотонным, если:

B , C : B A , B C C A {\displaystyle \forall B,C:B\in \mathbb {A} ,B\subseteq C\to C\in \mathbb {A} } .

Структура доступа (монотонная структура доступа) — набор (монотонный набор) A {\displaystyle \mathbb {A} } непустых подмножеств { P 1 , P 2 , . . . , P n } {\displaystyle \{P_{1},P_{2},...,P_{n}\}} , то есть A 2 { P 1 , P 2 , . . . , P n } { } {\displaystyle \mathbb {A} \subseteq 2^{\{P_{1},P_{2},...,P_{n}\}}\setminus \{\varnothing \}} . Наборы атрибутов, которые входят в A {\displaystyle \mathbb {A} }  — авторизованные наборы, пользователям с ними разрешён доступ к данным; наборы, которые не принадлежат A {\displaystyle \mathbb {A} }  — неавторизованные наборы атрибутов.

Применение схемы шифрования на основе атрибутов в её первоначальном виде ограничено монотонными структурами доступа. В 2007 году было предложено обобщение[3] схемы на случай немонотонных структур, однако оно не является эффективным[4].

Структура доступа может быть представлена в виде дерева, в котором узлы-листья представляют собой атрибуты, а остальные узлы характеризуются своими дочерними вершинами и пороговыми значениями. Пусть, например, узел x {\displaystyle x} имеет n u m x {\displaystyle num_{x}} дочерних вершин; его пороговое значение k x {\displaystyle k_{x}} , 0 < k x n u m x {\displaystyle 0<k_{x}\leqslant num_{x}} . Если пороговое значение этого узла k x = 1 {\displaystyle k_{x}=1} , то он представляет собой логический элемент «ИЛИ», поскольку для достижения порогового значения достаточно присутствия у пользователя одного из дочерних атрибутов. Если же пороговое значение k x = n u m x {\displaystyle k_{x}=num_{x}} , то он, очевидно, реализует элемент «И».

Описание алгоритма

Пусть G 1 {\displaystyle G_{1}} , G 2 {\displaystyle G_{2}}  — билинейные группы порядка p {\displaystyle p} ( p {\displaystyle p}  — простое), g {\displaystyle g}  — генератор группы G 1 {\displaystyle G_{1}} ;

e : G 1 × G 2 G 2 {\displaystyle e:G_{1}\times G_{2}\to G_{2}}  — билинейное отображение;

d {\displaystyle d}  — пороговое значение.

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

Генерация открытого ключа и универсального ключа

Доверенный центр случайным образом выбирает t 1 , . . . , t n , y {\displaystyle t_{1},...,t_{n},y} из конечного поля Z q {\displaystyle Z_{q}} и вычисляет открытый ключ P K = ( T 1 = g t 1 , . . . , T n = g t n , Y = e ( g , g ) y ) {\displaystyle PK=(T_{1}=g^{t_{1}},...,T_{n}=g^{t_{n}},Y=e(g,g)^{y})} , где g {\displaystyle g}  — генератор некоторой билинейной группы G 1 {\displaystyle G_{1}} порядка p {\displaystyle p} ( p {\displaystyle p}  — простое). На этом этапе также генерируется универсальный ключ M K = ( t 1 , . . . , t n , y ) {\displaystyle MK=(t_{1},...,t_{n},y)} .

Генерация закрытых ключей

Доверенный центр генерирует закрытый ключ для каждого пользователя U {\displaystyle U} ; A U {\displaystyle A_{U}}  — набор атрибутов пользователя. Случайным образом выбирается полином q {\displaystyle q} степени d 1 {\displaystyle d-1} такой, что выполняется q ( 0 ) = y {\displaystyle q(0)=y} . Закрытый ключ пользователя D = { D i = g q ( i ) t i } i A U {\displaystyle D=\{D_{i}=g^{\frac {q(i)}{t_{i}}}\}_{\forall i\in A_{U}}} .

Шифрование

Владелец данных шифрует сообщение M G 2 {\displaystyle M\in G_{2}} с использованием набора атрибутов A C T {\displaystyle A_{C}T} и случайно выбранного числа s Z q {\displaystyle s\in Z_{q}} : C T = ( A C T , E = M Y s = e ( g , g ) y s , { E i = g t i s } i A U ) {\displaystyle CT=(A_{CT},E=MY^{s}=e(g,g)^{ys},\{E_{i}=g^{t_{i}s}\}_{\forall i\in A_{U}})}

{\displaystyle }

Расшифрование

Если | A U A C T | d {\displaystyle \left|A_{U}\cap A_{C}T\right|\geqslant d} , из i A U A C T {\displaystyle i\in A_{U}\cap A_{C}T} выбирается d {\displaystyle d} атрибутов для вычисления значений e ( E i , D i ) = e ( g , g ) q ( i ) s {\displaystyle e(E_{i},D_{i})=e(g,g)^{q(i)s}} , Y s = e ( g , g ) q ( 0 ) s = e ( g , g ) y s {\displaystyle Y^{s}=e(g,g)^{q(0)s}=e(g,g)ys} .

Исходное сообщение M = E Y s {\displaystyle M={\frac {E}{Y^{s}}}} .

Закрытые ключи в такой схеме генерируются по принципу разделения секрета: части секрета y включаются в компоненты D i {\displaystyle D_{i}} закрытого ключа пользователя; закрытому ключу соответствует случайный полином q ( i ) {\displaystyle q(i)} . В результате соединения нескольких закрытых ключей нельзя получить новый закрытый ключ, что предотвращает возможность атаки в результате сговора пользователей.

Key-policy Attribute-based Encryption (ABE-шифрование с правилом доступа на основе закрытого ключа)

В 2006 году в работе Goyal[2] была предложена схема ABE-шифрования с правилом доступа на основе закрытого ключа (Key-policy Attribute-based Encryption). В ней шифрованные данные описываются набором атрибутов, а правило доступа к данным содержится в закрытом ключе пользователя. Если набор атрибутов данных соответствует структуре доступа в закрытом ключе пользователя, данные могут быть расшифрованы. Например, данные зашифрованы с атрибутами {«Кафедра радиотехники» {\displaystyle \wedge } «Студент»}, а закрытый ключ пользователя соответствует структуре доступа {«Кафедра радиотехники» {\displaystyle \wedge } («Преподаватель» {\displaystyle \vee } «Студент»)}. Атрибуты зашифрованных данных соответствуют структуре доступа закрытого ключа пользователя, поэтому пользователь сможет расшифровать данные.

Алгоритм шифрования отличается от первоначальной версии ABE на этапах генерации закрытых ключей и, соответственно, расшифрования: закрытый ключ пользователя генерируется соответственно необходимой структуре доступа. При разделении секрета для вершин от корня до каждой конечной вершины x выбирается полином q x {\displaystyle q_{x}} такой, что q x ( 0 ) = q p a r e n t ( x ) ( i n d e x ( x ) ) {\displaystyle q_{x}(0)=q_{parent(x)}(index(x))} , где p a r e n t ( x ) {\displaystyle parent(x)}  — узел-родитель по отношению к x {\displaystyle x} , а i n d e x ( x ) {\displaystyle index(x)}  — номер вершины x {\displaystyle x} среди вершин, принадлежащих тому же родителю. Таким образом, q r ( 0 ) {\displaystyle q_{r}(0)} соответствует универсальному ключу y {\displaystyle y} , который распределяется по листьям дерева, соответствующим компонентам закрытого ключа.

Ciphertext-policy Attribute-based Encryption (ABE-шифрование с правилом доступа на основе шифротекста)

В 2007 году Bethencourt и др. предложили в своей работе[5] схему ABE-шифрования с правилом доступа на основе шифротекста. Контроль доступа производится схожим с CK-ABE образом, однако правило доступа к данным содержится не в закрытом ключе пользователя, а в самих шифрованных данных (шифротексте); закрытый ключ пользователя в то же время соответствует набору атрибутов. Если атрибуты, которые содержатся в закрытом ключе пользователя, соответствуют структуре доступа шифротекста, пользователь может расшифровать данные. Если, например, структура доступа, содержащаяся в данных: {«Кафедра радиотехники» {\displaystyle \wedge } («Преподаватель» {\displaystyle \vee } «Студент»)}, а набор атрибутов в закрытом ключе пользователя: {«Кафедра радиотехники» {\displaystyle \wedge } «Преподаватель»}, пользователь сможет получить доступ к данным.

Схема ABE c немонотонными структурами доступа

Изначально в схемах шифрования на основе атрибутов на структуры доступа накладывалось ограничения, а именно подразумевалась монотонность этих структур. Дерево, соответствующее структуре, могло содержать логические элементы «И», «ИЛИ», но не логический элемент «НЕ», что накладывало некоторые ограничения на возможные правила доступа.

Например, если преподаватель кафедры радиотехники хочет разделить некоторые данные со студентами, но не выпускниками, структура доступа должна выглядеть как {«Кафедра радиотехники» {\displaystyle \wedge } «Студент» {\displaystyle \wedge } «НЕ_Выпускник»}.

Способ расширения алгоритма на случай немонотонных структур доступа было предложено в 2007 году в работе Ostrovsky и др.[3]. В пространство атрибутов вместе с каждым элементом добавляется его отрицание; таким образом, общее количество возможных атрибутов увеличивается вдвое по сравнению с классической схемой. В остальном принцип работы алгоритма остается прежним.

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

См. также

Примечания

  1. Amit Sahai and Brent Waters, Fuzzy Identity-Based Encryption Cryptology ePrint Archive, Report 2004/086 Архивная копия от 15 октября 2013 на Wayback Machine (2004)
  2. 1 2 Vipul Goyal, Omkant Pandey, Amit Sahai and Brent Waters, Attribute-Based Encryption for Fine-Grained Access Control of Encrypted Data ACM CCS (2006) Архивная копия от 5 декабря 2014 на Wayback Machine
  3. 1 2 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.
  4. 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
  5. J. Bethencourt, A. Sahai, and B. Waters, Ciphertext-policy attribute-based encryption, in Proceedings of IEEE Symposium on Security and Privacy, pp. 321V334, 2007
Перейти к шаблону «Симметричные криптосистемы»
Потоковые шифры
Сеть Фейстеля
SP-сеть
Другие
Перейти к шаблону «Криптосистемы с открытым ключом»
Алгоритмы
Факторизация целых чисел
Дискретное логарифмирование
Криптография на решётках
Другие
Теория
Стандарты
Темы
Перейти к шаблону «Хеш-алгоритмы»
Общего назначения
Криптографические
Функции формирования ключа
Контрольное число (сравнение)
Применение хешей