Все о геологии :: на главную страницу! Геовикипедия 
wiki.web.ru 
Поиск  
  Rambler's Top100 Service
 Главная страница  Конференции: Календарь / Материалы  Каталог ссылок    Словарь       Форумы        В помощь студенту     Последние поступления
   Геология | Курсы лекций
 Обсудить в форуме  Добавить новое сообщение
Вперед Вверх Назад Содержание Предметный указатель
Вперед: 9. Интеллектуальные карточки в банковских системах Вверх: 8. Банковские криптографические протоколы Назад: 8.3.4 Переводимая электронная монета   Содержание   Предметный указатель


8.4 Электронные бумажники

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

В автономных системах электронных платежей термин "электронный бумажник" употребляется обычно для обозначения устройства, предназначенного для предотвращения злоупотреблений со стороны клиентов (т. е. повторной траты одной и той же электронной монеты). Электронные бумажники были предложены Шаумом [BCCFP] как устройства, состоящие из микрокомпьютера, который контролирует клиент и которому он доверяет, и защищенного устройства, называемого наблюдателем. Назначение наблюдателя состоит в контроле за всеми платежами, которые производит клиент. Поскольку платеж без содействия наблюдателя невозможен, это обеспечивает в автономных системах электронных платежей такую же безопасность банка, как в централизованных системах. Однако, при этом требуется, чтобы содержимое наблюдателя было недоступно клиенту. Таким образом, в данной модели безопасность банка основывается не только на математических, но и на физических предположениях. Отметим все же, что эти предположения весьма слабые: достаточно, чтобы задача доступа к содержимому наблюдателя не была слишком простой. Ведь во всех автономных системах электронных платежей, основанных на использовании бумажников, сохраняется контроль повторной траты, который осуществляется во время выполнения транзакции депозита (на случай, если будет "взломана" защита наблюдателя). С другой стороны, безопасность клиента обеспечивается тем, что наблюдатель не общается с внешним миром непосредственно, а только через компьютер клиента.

Ниже мы приводим описание схемы электронной подписи для бумажников с наблюдателями [CrP] и автономной системы электронных платежей из работы Брандса [Brand].

В работе [CrP] рассматривается задача создания схемы электронной подписи, в которой клиент подписывает сообщения совместно с наблюдателем и только такие подписи считаются действительными, но при этом должна обеспечиваться безусловная неотслеживаемость действий клиента, даже если содержимое наблюдателя станет известно противнику.

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

В работе [CrP] сформулированы следующие требования к протоколу выдачи валидаторов (A обозначает компьютер клиента, а OA -- его наблюдателя):     1. Клиент не может получить валидатор, для которого он знает секретный ключ.

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

    3. Идентификатор наблюдателя может быть известен VIC.

    4. VIC не получает никакой информации о выданном им валидаторе.

    5. Открытый ключ валидатора (и подпись для него) известны только A; VIC и OA не получают о них никакой информации.

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

Схема подписи, основанная на валидаторах, должна удовлетворять следующим требованиям (получатель подписи называется проверяющим):

    1. A и OA совместно могут подписать любое сообщение.

    2. Если A следует протоколу, то OA, VIC и проверяющий совместно не могут вычислить секретный ключ A.

    3. Если OA и VIC оба следуют протоколу выдачи валидатора, то A не может самостоятельно подписать сообщение, которое не желает подписывать наблюдатель.

    4. Протокол проверки подписи должен быть интерактивным.

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

Ниже приводятся протокол выдачи валидаторов и основанная на валидаторах схема подписи, предложенные в работах [BCCFP] и [CP92], и цитируемые по статье [CrP].

Пусть $ p$ и $ q$ -- простые числа, причем $ q$ делит $ p-1$ и $ g\in\mathbb{Z}_p*$ -- элемент порядка $ q$. Тогда $ G_q$ -- группа, порождаемая $ g$. Пусть $ G$ -- другой порождающий группы $ G_q$ такой, что A не знает дискретный логарифм $ G$ по основанию $ g$. Открытый ключ VIC есть $ Y=G^x$, где $ x$ -- его секретный ключ. Кроме того, предполагается, что всем участникам протоколов известна некоторая криптографическая (в работе она названа односторонней -- one-way) хэш-функция $ H$, отображающая входы произвольной длины в $ \mathbb{Z}_q$.

Протоколы основаны на предположении о трудности сертифицированной задачи дискретного логарифмирования, т. е. задачи вычисления дискретных логарифмов при известной факторизации $ p-1$.

Замечание 2.  В работе [CrP] в описаниях протоколов авторы опускают модули, по которым приводятся вычисляемые величины, и в некоторых случаях, не указывают, из каких множеств выбираются случайные величины. Мы цитируем протоколы в соответствии с оригиналом. Недостающие подробности, как правило, легко восстанавливаются по контексту.


Протокол выдачи валидатора     1. A выбирает $ j,s\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$, вычисляет $ g^sG^j$ и посылает это значение OA ($ s$ -- часть секретного ключа, известная A, а $ G^j$ -- затемняющий множитель).

    2. OA выбирает $ t\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$ и посылает A значение $ g^t$ ($ s+t$ -- секретный ключ).

    3. A вычисляет открытый ключ $ h=g^sg^t$, выбирает $ k\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$, вычисляет затемненный открытый ключ $ B=hG^{j+k}$ и посылает OA значение $ k$.

    4. OA вычисляет $ B=(g^sG^j)g^tG^k$ и подпись $ \sigma(B)$ для $ B$, вычисленную с помощью изначальной схемы электронной подписи, и посылает подпись A.

    5. A проверяет полученную от OA подпись и передает VIC значение $ B$ и подпись $ \sigma(B)$.

    6. VIC проверяет подпись, чтобы убедиться, что значение $ B$ было выбрано с участием наблюдателя. Затем выбирает $ w\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$, вычисляет $ (a_0,b_0)=(G^w,B^w)$ и $ V_0=B^x$. VIC высылает A значения $ a_0$, $ b_0$ и $ V_0$.

    7. A выбирает случайные $ u$ и $ v$ и вычисляет $ a=a_0^uG^v$ и $ b=(b_0/a_0^{j+k})^uh^v$, $ V=V_0/Y^{j+k}$ и соответствующий запрос $ c=H(h,V,a,b)$. Затем A вычисляет $ c_0=c/u\bmod q$ и посылает это значение VIC.

    8. VIC вычисляет $ r_0=w+c_0x$ и посылает это значение A.

    9. A вычисляет $ r=v+ur_0$ и проверяет, что $ G^r=aY^c$ и $ h^r=bV^c$.

Четверка $ (V,a,b,r)$ является подписью для открытого ключа $ h$.


В описании схемы подписи предполагается, что A предварительно высылает открытый ключ $ h$ и подпись для него проверяющему. Подписывается сообщение $ m\in G_q$.


Схема подписи     1. OA выбирает $ w\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$, вычисляет $ a_0=g^w$, $ b_0=m^w$, $ z_0=m^t$ и посылает A значения $ a_0$, $ b_0$ и $ z_0$.

    2. A выбирает случайные $ u$ и $ v$ и вычисляет $ a=a_0^ug^v$, $ b=b_0^um^v$ и $ z=z_0m^s$. Затем A вычисляет $ c=H(m,z,a,b)$, $ c_0=c/u$ и посылает OA запрос $ c_0$.

    3. OA вычисляет ответ $ r_0=w+c_0t$ и посылает его A.

    4. A проверяет, что $ g^{r_0}=a_0g^{tc_0}$ (значение $ g^t$ известно после выполнения протокола выдачи валидатора) и что $ m^{r_0}=b_0z_0^{c_0}$. Далее A вычисляет $ r=ur_0+v+cs$ и посылает проверяющему пятерку $ (m,z,a,b,r)$.

    5. Проверяющий вычисляет $ c=H(m,z,a,b)$ и проверяет, что $ g^r=ah^c$ и $ m^r=bz^c$.


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

В работе [CrP] даны наброски доказательств стойкости этих протоколов. Поскольку определения и формулировки в этих тезисах недостаточно строгие, мы не приводим их в данном обзоре.

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


Инициализация системы. Такая же, как в исходной системе электронных платежей Брандса.

Открытие счета. U выбирает число $ u_1\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$ и вычисляет $ I=g_1^{u_1}$. U передает значение $ I$ банку, а $ u_1$ хранит в секрете. Для безопасности банка существенно, чтобы значения $ I$ были различными для разных клиентов.

Затем банк выдает U наблюдателя O, у которого в памяти хранится число $ o_1$, выбранное случайным образом из $ \mathbb{Z}_q*$ и недоступное U. Пусть $ A_{\mbox{\tiny O}}=g_1^{o_1}$. Банк вычисляет $ I=A_{\mbox{\tiny O}}(g_1^{u_1})$ и $ z=(Ig_2)^x$ и передает U значения $ A_{\mbox{\tiny O}}$ и $ z$.

Снятие со счета. Прежде чем снять электронную монету со счета, U должен пройти аутентификацию, т. е. доказать банку, что он является владельцем данного счета. Затем выполняется следующий протокол.     1. O выбирает $ o_2\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$ и посылает U значение $ B_{\mbox{\tiny O}}=g_1^{o_2}$. Хотя этот шаг описывается как часть протокола, он может быть выполнен заранее.

    2. Банк выбирает число $ w\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$ и посылает $ a=g^w$ и $ b=(Ig_2)^w$ клиенту U.

    3. U выбирает четыре числа $ s\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q*$, $ x_1,x_2,e\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$ и вычисляет $ A=(Ig_2)^s$, $ B=g_1^{x_1}g_2^{x_2}A_{\mbox{\tiny O}}^{es}B_{\mbox{\tiny O}}$ и $ z'=z^s$. Кроме того, U выбирает числа $ u,v\in_{\mbox{\tiny\rm R}}\mathbb{Z}_q$ и вычисляет $ a'=a^ug^v$ и $ b'=b^{su}A^v$. Затем он вычисляет $ c'=H(A,B,z',a',b')$ и посылает запрос $ c=c'/u \bmod q$ банку.

    4. Банк посылает ответ $ r=(cx+w)\bmod q$ и снимает со счета U соответствующую сумму. U принимает ответ тогда и только тогда, когда $ g^r=h^ca$ и $ (Ig_2)^r=z^cb$. Если эти сравнения выполнены, U вычисляет $ r'=ru+v \bmod q$. Пара $ (A,B)$ и подпись банка $ (z',a',b',r')$ для нее образуют электронную монету.

Платеж. В транзакции платежа U и S выполняют следующий протокол.     1. U посылает S электронную монету: $ A,B,\qopname\relax o{sign}(A,B)$.

    2. Если $ a\ne1$, то S вычисляет запрос $ d=H_0(A,B,ID,t)$, где $ ID$ -- идентификатор S, а $ t$ -- дата и время транзакции. S посылает U значение $ d$.

    3. U вычисляет $ d'=s(d+e)\bmod q$ и посылает это значение наблюдателю O.

    4. Если значение $ o_2$ находится в памяти наблюдателя, то O вычисляет ответ $ r_1'=(d'o_1+o_2)\bmod q$, стирает $ o_2$ и посылает ответ U. В противном случае наблюдатель блокирует выполнение транзакции платежа.

    5. U проверяет, что $ g_1^{r_1'}=A_{\mbox{\tiny O}}^{d'}B_{\mbox{\tiny O}}$. Если равенство выполняется, вычисляет ответы $ r_1=(r_1'+d(u_1s)+x_1)\bmod q$ и $ r_2=(ds+x_2)\bmod q$ и посылает их S. S принимает монету тогда и только тогда, когда $ \qopname\relax o{sign}(A,B)$ является подписью для $ (A,B)$ и $ g_1^{r_1}g_2^{r_2}=A^dB$.

Депозит. Эта транзакция ничем не отличается от транзакции депозита в исходной системе электронных платежей Брандса.


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


Вперед Вверх Назад Содержание Предметный указатель
Вперед: 9. Интеллектуальные карточки в банковских системах Вверх: 8. Банковские криптографические протоколы Назад: 8.3.4 Переводимая электронная монета   Содержание   Предметный указатель


Проект осуществляется при поддержке:
Геологического факультета МГУ,
РФФИ
   

TopList Rambler's Top100