Project:Sandbox

https://www.mediawiki.org/w/index.php?title=Project:Sandbox&action=submit

Билинейное спаривание
Пусть $$G, H, G_T$$ циклические группы порядка $$p$$, где $$p$$ - простое число. Пусть $$g$$ - генератор группы $$G$$, $$h$$ - генератор группы $$H$$. Тогда отображение $$e: G \times H \rightarrow G_T$$ называется билинейным спариванием, если $$e(g,h)$$ - генератор $$G_T$$ и $$e(g^a,h^b) = e(g,h)^{ab}$$ $$$$ $$$$

Monotone Span Programs
Пусть $$\Upsilon : \{0,1\}^n \rightarrow \{0,1\}$$ - монотонная булева функция. Monotone span program для $$\Upsilon$$ над полем $$F$$ есть матрица $$M$$ размера $$l \times t$$ с элементами из поля $$F$$, вместе с функицей маркировки $$a: [l] \rightarrow [n]$$ которая связывает каждую строку матрицы $$M$$ с входной переменной $$\Upsilon$$, такая что для каждого $$(x_1, \ldots ,x_n) \in \{0,1\}^n$$ удовлетворяет следующему: $$\Upsilon(x_1, \ldots ,x_n) = 1 \Longleftrightarrow \exists \overrightarrow{v} \in F^{1 \times l}: \overrightarrow{v}M = [1, 0, 0, \ldots, 0]$$ и $$(\forall i : x_{a(i)} = 0 \Rightarrow v_{i} = 0)$$

другими словами $$\Upsilon(x_1, \ldots ,x_n) = 1$$ т.т.т.к строки матрицы $$M$$ нумеруются \{i|x_{a(i)}=1\} span the вектор [1,0,0, \ldots, 0].

Назовем $$l$$ длиной, $$t$$ - шириной of the span program, $$l + t$$ размером of the span program. Каждая монотонная булева функция может быть предсавлена как некоторая монотонная span program, большой класс do have comapct monotone span programs. In particular, given a circuit expressed using threshold gates, with the i-th gate being an ... threshold gate, it is easy to recursively construct a monotone span program with length ... and width ... .

Атрибутные подписи
Пусть $$A$$ - универсальный набор атрибутов (?). A claim-predicate over $$A$$ есть монотонная булева функция, входы которой связаны с атрибутами $$A$$. Будем говорить что $$A' \in A$$ satisfies a claim-predicate $$\Upsilon$$, если $$\Upsilon(A')=1$$

Определение. Схема с подписью на основе атрибутов (ABS) параметризируется универсальным множеством атрибутов $$A$$ и множеством сообщений $$M$$, и состоит из четрыех алгоритмов:


 * ABS.TSetup (to be run by a signature trustee:: формирует пуббличные данные $$TPK$$)
 * ABS.ASetup (to be run by an attribute-issuing authority: генерует пару ключей $$APK, ASK$$)
 * ABS.AttrGen: Прнимает на вход $$(ASK, A' \in A)$$, на выходе - ключ подписи $$SK_{A'}$$
 * ABS.Sign: Принимает на вход $$(PK = (TPK, APK), SK_{A'}, m \in M, \Upsilon)$$, где $$\Upsilon(A')=1$$, на выходе - подпись $$\sigma$$
 * ABS.Ver: Принимает на вход $$(PK=(TPK, APK), m, \Upsilon, \sigma)$$, на выходе - булево значение (true, false)

Определение. Назовем схему ABS корректной, если для любых $$TPK \leftarrow ABS.TSetup, APK, m, A', SK_{A'} \leftarrow ABS.AttrGen(ASK, A'), \Upsilon : \Upsilon(A')=1, \sigma \leftarrow ABS.Sign(PK= (TPK, APK), SK_{A'},m,\Upsilon)$$, выполняется $$ABS.Ver(PK=(TPK,APK), m, \Upsilon, \sigma)=1$$.