Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ниссенбаум_Поляков_КПЛП.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
622.59 Кб
Скачать

Раздел 6. Электронная монета.

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

В платежной системе используются три основные транзакции:

1. снятие со счета;

2. платеж;

3. депозит.

В транзакции снятия со счета покупатель получает подписанную банком электронную банкноту на затребованную сумму. При этом счет покупателя уменьшается на эту сумму.

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

С помощью транзакции депозита, покупатель может положить "сдачу" на свой счет в банке.

6.1. Схема Шаума с банкнотами одинакового достоинства.

Параметры протокола, выбираемые банком:

p, q, p*, q* – большие простые числа, секретный ключ банка;

n=pq, n*=p*q* – открытые ключи банка, формируются как модули RSA, публикуются;

f: Zn→Zn - односторонняя функция.

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

Банкнота с номером N<n номиналом S рублей представляется как пара чисел (N, (f(N))1/m mod n), где m= , S=(ek, ek-1,…,e1) – двоичное представление числа S, pii-е нечетное простое число.

Транзакция снятия со счета.

  1. A: выбирает случайное значение NZn ,случайное число r:0<r <n;

  2. A→T: b=f(N)rm mod n;

  3. T→A: y= mod n;

  4. A: x=yr-1 mod n.

После всех этих действий покупатель получает подписанную банкноту (N,x) достоинством S рублей.

Транзакция платежа

  1. A: вычисляет сдачу S*s=(ek,…,e1)2, d= , выбирает случайные числа N*Zn*, 0<r<n;

  2. A→B: l= mod n, z=f(N*)rd mod n*, s, n*;

  3. B→T: l, z, s, n*;

  4. T: Вычисляет d, проверяет, что пара (N, l) – подлинная банкнота достоинством s рублей. По специальному регистру проверяет, не была ли банкнота с номером N потрачена ранее. Если проверки прошли успешно, то заносит ее в регистр и посылает B уведомление о завершении транзакции; если проверки не пройдены, то прерывает протокол;

  5. T→B: c= mod n* - сдача;

  6. B→A: с.

В результате выполнения данного протокола продавец получает банкноту (N,l) достоинством s рублей (действительно, lxd≡ (mod n), а степень dm-1 соответствует купюре достоинством в s рублей).

Покупатель получает в «копилку» сдачу – купюру (N*, cr-1 mod n*) (действительно, сr-1r-1 ≡(f(N*)rd) r-1≡(f(N*)) rr-1≡(f(N*)) (mod n*)).

Транзакция депозита.

AT: (N*, f(N*)1/d mod n*) , d;

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