Электронные монеты различного номинала

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

Эта система также основана на схеме электронной подпи­си RSA. Допуская некоторую вольность в обозначениях, будем писать

k1/t mod n вместо kd mod n, где d·t = 1mod j(n),

  и называть эту величину корнем t-й степени из k.

Как и выше, f: Z n —> Z n неко­торая односторонняя функция, которую выбирает и публикует банк.

Устанавливается соглашение, согласно которому корню степени, равной i -му нечетному простому числу, соответствует номинал в 2 i- 1 монет.

Пример: рассмотрим первые простые числа и соответствующие им номиналы монет:

Число 3 5 7 11 13 17 19
i 1 2 3 4 5 6 7
Номинал 1 2 4 8 16 32 64

Итак, предъявитель пары

((k, k1/3 mod n)

является владельцем элект­ронной банкноты достоинством в 1 монету. Если в этой паре вместо корня кубического присутствует корень 7-й степени, то банкнота имеет достоинство 4 монеты.

Если достоинство монеты не является степенью двойки, то нужна составная степень. Если нам нужна банкнота на 3 монеты, то 3=2+1 и корень должен иметь степень 3•5.

Если корень 3•7=21-й степени — то достоинство банкноты в 5=1+4 монет.

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

Все банкноты, выданные банком, имеют достоинство, равное 15 мо­нетам. Тогда подпись банка на банкноте это — корень h -й степени, где

h= 3•5•7•11 так как 15=1+2+4+8=11112.

Для этой схемы нужен также еще дополнительный модуль RSA - n1, который используется в работе с так называемой копилкой. Этот модуль выбирается и публикуется таким же образом, как и модуль n.

Транзакция снятия со счета выполняется таким же образом, как описано выше. В результате покупатель получает электронную банк­ноту

((k1, f (k) 1/h mod n),.

Предположим теперь, что покупатель желает заплатить продавцу 5 монет. Для этого он вычисляет

f (k1)1/3×7mod n,

просто возводя полу­ченную банкноту в 5×11=55-ю степень, и создает копил­ку, выбирая случайное значение j и вычисляя

f (j)• s1 5×11 mod n1.

Здесь опять s1 5×11 - затемняющий множитель.

Транзакция платежа начинается с пересылки значений

(k1 , f (k1)1/3×7mod n), (f (j)• s1 5×11 mod n1),

а также суммы пла­тежа (5 монет) продавцу. Продавец в свою очередь передает всю эту информацию банку.

Банк легко проверяет, что пара

(k1, f (k1)1/3×7mod n)

представляет собой подлинную банкноту достоин­ством 5 монет. Он проверяет по специальному регистру, не была ли банкнота с номером k1 потрачена ранее. Если нет, записывает в регистр вновь полученную банкноту, увеличивает счет продавца на 5 монет и посылает продавцу уведомление о завершении транзакции платежа, а также «сдачу» (10 монет) покупателю, возвращаемую через копилку:

f (j)1/5•11s1 mod n1.

В транзакции депозита покупатель посылает банку копилку

(j, f (j)5×11 mod n1).

Банк проверяет ее таким же образом, как и банкноту в транзакции платежа, и если копилка с номером j подлинная и ранее не использовалась в транзакции депозита, то зачисляет сумму 10 монет на счет покупателя.

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

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

Предположим, что покупатель получил в банке вторую банкноту с номером k2 и желает заплатить тому же или другому продавцу сумму в 3 монеты. Тогда в транзакции платежа он может использовать копил­ку со «сдачей», оставшейся после первого платежа, и послать продавцу

k2 , f (k2) 1/3×5mod n, f (j)1 / 5×11 s1 7×11 mod n1.

Здесь 7×11 – степени, не исполь­зуемые в монете номиналом 3 (3=2+1, i =3;5). Платеж выполняется таким же образом, как было описано выше, и в результате покупатель получит копилку

f (j)1 / 5×11×7×11 mod n1.

B транзакции депозита покупатель кладет накопленную в копил­ке сумму на свой счет в банке. Для этого он посылает банку значения

(j, f (j) 1/ 5×11×7×11 mod n1)

и указывает сумму. Банк проверяет копилку так же, как банкноту, т. е. Уста­навливает наличие всех корней с объявлен­ными покупателем кратностями, а также проверяет, не использовалась ли ранее копилка с номером j в транзак­ции депозита. При выполнении всех этих условий банк зачисляет сумму, нахо­дящуюся в копилке, на счет покупателя.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: