Электронные монеты одинакового номинала

Рассмотрим простейший вариант платежной системы, в кото­рой ис­пользуется затемненная подпись, соответствующая схеме подпи­си RSA.

Подписывающий, в нашем случае — банк, выбирает два секрет­ных простых числа р и q достаточно большой длины и публи­кует их произведение n= pq.

Пусть е и d — соответствен­но открытый и секретный ключи криптосистемы RSA, где

ed = 1 mod j(n).

Генерация под­писи в схеме электронной подписи RSA состоит в при­менении к банкноте т функции RSA-дешифрования:

s = md mod n.

Для проверки подписи нужно применить к ней функ­цию шифро­вания. Если

se = т mod n,

то s — корректная подпись для сооб­щения т.

Итак, банк выбирает и публикует числа n и е, а также некоторую одностороннюю функцию f: Z n —> Z n, назначение которой станет яс­но из дальнейшего.

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

 В транзакции снятия со счета покупатель выбирает случайное число k Î Z n и вычисляет f (k). Ему нужно получить подпись банка на этой банкноте, т.е. значение

f (k) d.

Но просто послать значение f (k) б анку покупатель не может, поскольку для снятия денег со счета он должен идентифицировать себя. Поэтому, если банк получает  f (k), он вдальнейшем всегда узнает данную банкноту и неотслеживаемость будет потеряна.

Решение проблемы состоит в использовании затемнен­ной подпи­си: покупатель выбирает случайное число r Î Z n, r¹0, вычисляет 

f (k) re mod n

и посылает это значение банку. Множитель re  часто назы­вают затем­няющим множителем.

Банк возводит полученное число в секретную спепень d, получа­ет значе­ние

f (k) dr mod n

и возвращает его покупателю. Покупатель легко «снимает» затемня­ю­щий множитель и получает подписанную банкноту

(k, f (k) d mod n).

 В транзакции платежа покупатель передает продавцу электрон­ную банкноту

(k, f (k) d mod n).

В принципе продавец может проверить подлинность любой банкноты (k, s)самостоятельно. Для этого достаточно вычислить f (k) и проверить, что

f (k)= se mod n.

Но дело в том, что электронные банкноты, как и любую другую информацию, пред­ставленную в электронной форме, легко копировать. Поэтому нечест­ный покупатель может заплатить одной и той же электронной банкно­той многократно. Для предотвращения подобного злоупотребления продавец передает банкноту на проверку банку. Банк проверяет по специальному регистру, не была ли эта банкнота потрачена ранее, и если нет, то зачисляет 1 монету на счет продавца и уведомляет его об этом.

Безопасность банка в этой системе электронных платежей основы­вается на вере в стойкость схемы электронной подписи RSA. Примене­ние функции f в этой конструкции необходимо ввиду известного свой­ства мультипликативности схемы RSA:

если s 1 и s 2 — подписи для m 1 и m 2 соответственно,

то s 1 s 2 = m1dm2d mod n — подпись для m 1 m 2.

Поэтому если бы в системе электронных платежей использовались банкноты вида

((k, kd mod n),

то из двух подлинных банкнот всегда можно было бы изготовить третью.

Неотслеживаемость клиентов в данной системе абсолютна. Все, что остается у банка от транзакции снятия со счета, — это значение

f (k) d r mod n,

которое благодаря затемня­ющему множителю r предс­та­вляет собой просто случайное число из Z n. Поэтому у банка нет ника­кой ин­формации о том, какую именно банкноту он выдал данному клиенту.


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



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