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


8.2.2 Схемы Шаума

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

В обеих схемах банк вырабатывает два больших простых числа $ p$ и $ q$ и публикует их произведение $ N=pq$, сохраняя множители в секрете (инициализация схемы электронной подписи RSA). Кроме того, выбирается и публикуется некоторая односторонняя функция $ f\colon\mathbb{Z}_N\rightarrow
\mathbb{Z}_N$. Устанавливается соглашение, согласно которому экспоненте, равной $ i$-му нечетному простому числу, соответствует номинал в $ 2^{i-1}$, скажем, центов. Т. е., предъявитель пары $ (n,f(n)^{1/3}\bmod N)$ является владельцем электронной банкноты достоинством в 1 цент. Если в этой паре вместо корня кубического присутствует корень 7-ой степени, то банкнота имеет достоинство 4 цента, а если 21-ой степени -- то 5 центов. Иными словами, для банкноты достоинством $ S$ центов необходим корень степени, равной произведению всех простых, соответствующих единицам в двоичном представлении числа $ S$.

В первой схеме все банкноты, выдаваемые банком, имеют одинаковое достоинство. Для простоты изложения будем, как и в [Chaum], предполагать, что оно равно 15 центам. Тогда подпись банка на банкноте, это -- корень $ h$-ой степени, где $ h=3\cdot 5\cdot 7\cdot 11$. Для этой схемы нужен также еще дополнительный модуль RSA $ N_1$, который используется в работе с так называемой копилкой (см. ниже). Этот модуль выбирается и публикуется таким же образом, как и модуль $ N$.

В транзакции снятия со счета покупатель выбирает случайное значение $ n_1\in\mathbb{Z}_N$ и вычисляет $ f(n_1)$. Ему нужно получить подпись банка на этой банкноте, т. е. вычислить $ f(n_1)^{1/h}$. Но просто послать значение $ f(n_1)$ банку покупатель не может, поскольку для снятия денег со счета он должен идентифицировать себя. Поэтому, если банк получает $ f(n_1)$, он в дальнейшем всегда узнает данную банкноту и неотслеживаемость будет потеряна. Решение проблемы состоит в использовании затемненной подписи: покупатель выбирает случайное значение $ r_1\in\mathbb{Z}_N$, $ r_1\ne0$, вычисляет $ f(n_1)r_1^h\bmod N$ и посылает это значение банку. Множитель $ r_1^h$ часто называют затемняющим множителем. Банк вычисляет значение $ f(n_1)^{1/h}r_1\bmod N$ и возвращает его покупателю. Покупатель легко "снимает" затемняющий множитель и получает подписанную банкноту $ f(n_1)^{1/h}\bmod N$.

Предположим, теперь, что покупатель желает заплатить продавцу 5 центов. Для этого он вычисляет $ f(n_1)^{1/3\cdot 7}\bmod N$, просто возводя полученную банкноту в 55-ую степень, и создает копилку, выбирая случайное значение $ j$ и вычисляя $ f(j)s_1^{5\cdot 11}\bmod
N_1$. Здесь опять $ s_1^{5\cdot 11}$ -- затемняющий множитель. Транзакция платежа начинается с пересылки значений $ n_1$, $ f(n_1)^{1/3\cdot 7}\bmod N$, $ f(j)s_1^{5\cdot 11}\bmod
N_1$, а также суммы платежа (5 центов) продавцу. Продавец, в свою очередь, передает всю эту информацию банку. Банк легко проверяет, что пара $ (n_1,f(n_1)^{1/3\cdot 7})$ представляет собой подлинную банкноту достоинством 5 центов. Он проверяет по специальному регистру, не была ли банкнота с номером $ n_1$ потрачена ранее. Если нет, записывает в регистр вновь полученную банкноту и посылает продавцу уведомление о завершении транзакции платежа, а также "сдачу" 10 центов для покупателя, возвращаемую через копилку: $ f(j)^{1/5\cdot
11}s_1\bmod N_1$.

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

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

Предположим, что покупатель получил в банке вторую банкноту с номером $ n_2$ и желает заплатить тому же или другому продавцу сумму в 3 цента. Тогда в транзакции платежа он может использовать копилку со "сдачей", оставшейся после первого платежа, и послать продавцу $ n_2$, $ f(n_2)^{1/3\cdot 5}\bmod N$, $ f(j)^{1/5\cdot
11}s_2^{7\cdot 11}\bmod N_1$. Платеж выполняется таким же образом, как было описано выше, и в результате покупатель получит копилку $ f(j)^{1/5\cdot 11\cdot 7\cdot 11}\bmod
N_1$.

В транзакции депозита покупатель кладет накопленную в копилке сумму на свой счет в банке. Для этого он посылает банку значения $ j$, $ f(j)^{1/5\cdot 7\cdot 11\cdot 11}
\bmod N_1$ и указывает сумму. Банк проверяет копилку так же, как банкноту, т. е. устанавливает наличие всех корней с объявленными покупателем кратностями, а также проверяет, что копилка с номером $ j$ не использовалась ранее ни в одной транзакции депозита. Если все условия выполнены, банк вычисляет сумму, находящуюся в копилке, и зачисляет ее на счет покупателя.

Чем больше платежей выполняется с одной и той же копилкой и чем больше клиентов в системе, тем ниже шансы банка отследить действия каждого из них.

Вторая схема, предложенная в работе [Chaum], основывается на тех же идеях, поэтому здесь описываются только ее отличия от предыдущей. Во-первых, используется только один модуль (в описаниях мы его опускаем). Во-вторых, банк может выдавать банкноты различного достоинства. А именно, пусть $ h$, как и выше, соответствует максимальному достоинству банкноты и $ g\mid h$. Тогда банк может выдать банкноту, достоинство которой соответствует числу $ g$. Кроме того, пусть $ d$ соответствует сумме платежа, где $ d\mid g$, и $ c=g/d$ -- "сдаче".

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

$\displaystyle n,\ f(n)^{1/d},\ c,\ ms^c.
$

Банк возвращает покупателю (через продавца) значение

$\displaystyle m^{1/c}\cdot s\cdot f\left(f(n)^{1/c}\right).
$

Число $ m$ может быть выбрано как $ f(n_1)$ для некоторого нового значения $ n_1$, что позволяет в дальнейшем использовать "сдачу" в новом платеже без необходимости промежуточного депозита и снятия со счета. Т. е., "сдача" становится такой же электронной банкнотой, как и сумма, снятая со счета.

Множитель $ f(f(n)^{1/c})$ в значении, возвращаемом банком, необходим для того, чтобы покупатель мог вычислить $ m^{1/c}$ только тогда, когда он знает $ f(n)^{1/c}$.

Транзакция депозита в данной схеме ничем не отличается (с криптографической точки зрения) от транзакции платежа.

"Сдача", возвращенная в транзакции платежа, может быть разделена на несколько банкнот. Предположим, например, что в последнем платеже было $ d=5\cdot 11$, $ c=3\cdot 7$, а значение $ m$ было сформировано как $ m=f(n_1)^3f(n_2)^7$. Тогда, после снятия затемняющих множителей со значения, возвращенного банком, будет получена величина $ a=m^{1/21}$. После этого покупатель вычисляет

$\displaystyle u$ $\displaystyle =3^{-1}\bmod 7,$    
$\displaystyle v$ $\displaystyle =3u\mskip-\medmuskip\mkern5mu \mathbin{\rm div}\penalty900\mkern5mu\mskip-\medmuskip7,$    
$\displaystyle f(n_1)^{1/7}$ $\displaystyle =(a^3f(n_2)^{-1})^u\cdot f(n_1)^{-v},$    
$\displaystyle f(n_2)^{1/3}$ $\displaystyle =a\cdot f(n_1)^{-1/7}.$    

В результате получены две банкноты достоинством в 1 и 4 цента соответственно.

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

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


Вперед Вверх Назад Содержание Предметный указатель
Вперед: 8.2.3 Проблемы арбитража Вверх: 8.2 Электронные платежи Назад: 8.2.1 Общая схема   Содержание   Предметный указатель


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

TopList Rambler's Top100