Читайте также:
|
|
Рассмотрим простейший вариант платёжной системы, в которой используется затемнённая подпись, соответствующая схеме подписи RSA. Последняя основана на тех же принципах, что и криптосистема RSA. Подписывающий, в нашем случае — банк, выбирает два секретных простых числа p и q достаточно большой длины и публикует их произведение N=pq. Пусть e и d, где ed=1 (mod φ(N)), - соответственно открытый и секретный ключи криптосистемы RSA. Генерация подписи в схеме электронной подписи RSA состоит в применению к сообщению m функции дешифрования криптосистемы RSA:
d
s=m (mod N).
Для проверки подписи нужно применить к ней функцию шифрования. Если
e
s =m (mod N),
то s — корректная подпись для сообщения m.
Итак, банк выбирает и публикует числа N и e, а также некоторую одностороннюю функцию f: ZN→ZN , назначение которой станет ясно из дальнейшего. Пара ключей (e, d) используется банком исключительно для создания электронных банкнот, т.е. устанавливается соглашение о том, что электронной подписи, сгенерированной на ключе d, соответствует электронная банкнота достоинством, скажем, скажем, в один фантик.
В транзакции снятия со счёта покупатель выбирает случайное число n Î ZN и вычисляет f(n). Ему нужно получить подпись банка на этой банкноте, т.е. значение
d
f(n)
Но просто послать значение f(n) покупатель банку покупатель не может, поскольку для снятия денег со счёта он должен идентифицировать себя. Поэтому, если банк получает f(n), он в дальнейшем всегда узнает данную банкноту и неотслеживаемость будет потеряна. Решение проблемы состоит в использовании
затемнённой подписи: покупатель выбирает случайное число
r Î ZN, r ¹0, вычисляет
e
f(n)×r (mod N)
и посылает это значение банку. Множитель
e
r
часто называют затемняющим множителем. Банк вычисляет значение
d
f(n) ×r (mod N) и возвращает его покупателю. Покупатель легко снимает затемняющий множитель r и получает подписанную банкноту
d
(n, f(n) mod N).
В транзакции платежа покупатель передаёт продавцу электронную банкноту
d
(n, f(n) mod N).
В принципе, продавец может проверить подлинность любой банкноты (n, s) самостоятельно. Для этого достаточно вычислить f(n) и проверить, что
e
f(n)=s (mod N).
Но дело в том, что электронные банкноты, как и любую другую информацию, представленную в электронной форме, легко копировать. Поэтому нечестный покупатель может заплатить одной и той же электронной банкнотой многократно. Для предотвращения подобного злоупотребления продавец передаёт банкноту на проверку банку. Банк проверяет по специальному регистру, не была ли эта банкнота потрачена ранее, и если нет, то зачисляет один фантик на счёт продавца и уведомляет его об этом.
Безопасность банка в этой системе электронных платежей основывается на вере в стойкость схемы электронной подписи RSA. Применение функции f в этой конструкции необходимо ввиду известного свойства мультипликативности схемы RSA: если s1 и s2
- подписи для m1 и m2 соответственно, то
d d
s1 × s2=m1 × m2 (mod N) - подпись для m1 × m2. Поэтому, если бы в системе электронных платежей использовались банкноты вида
d
(n, n mod N),
то из двух подлинных банкнот всегда можно было бы изготовить третью. Неотслеживаемость клиентов в данной системе абсолютна. Всё, что остаётся у банка от транзакции снятия со счёта, - это значение
d
f(n) × r (mod N),
которое благодаря затемняющему множителю r представляет собой просто случайное число из ZN. Поэтому у банка нет никакой информации о том, какую именно банкноту он выдал данному клиенту.
В этом примере банк выдаёт купюры только достоинством в один фантик и все платежи должны быть кратны этой величине. Здесь мы отметим только, что существуют более гибкие схемы электронных платежей с банкнотами разного достоинства, выдачей сдачи и т. п., но эти схемы мы не рассматриваем.
Дата добавления: 2015-09-10; просмотров: 86 | Поможем написать вашу работу | Нарушение авторских прав |