
532 Глава 8. Защита
В нашем примере Алиса получает в своем банке десятидолларовую банкноту
и две однодолларовых, которые позднее передает Бобу. По подписи банка Боб
может проверить, что банкноты хотя и виртуальные, но не поддельные. Однако
для проверки на попытку повторного использования банкнот ему необходимо
связаться с банком, который по серийным номерам проверит, не применялись ли
эти банкноты для оплаты раньше. Если это не попытка повторного использова-
ния виртуальных банкнот. Боб отправляет сообщение ОК как знак того, что го-
тов принять эти деньги. Отметим, что Бобу все равно нужно связаться с банком,
поскольку банк должен также проверить целостность банкнот.
Основной минус этой схемы состоит в том, что банк вынужден отслеживать
серийные номера всех цифровых банкнот, то есть точно контролировать все де-
нежные потоки. Если Алиса запросит десятидолларовую банкноту, банк должен
записать серийный номер банкноты, выданной Алисе, и позже отследить, как Боб
использует ее для оплаты. Не существует другого способа понять, что Алиса пла-
тит Бобу, если не будет некоей третьей стороны, которая примет платеж от Али-
сы,
поверив ей на слово, что эти деньги еще ни разу не использовались.
Эту систему необходимо дополнить, чтобы не нужно было отслеживать, ка-
кие цифровые банкноты кому были переданы, сохраняя при этом защищенность
банкнот от попыток подделки или повторного использования. Как показано
в [93], такая защита может быть осуществлена при помощи так называемой сле-
пой подписи
{blind
signature).
Принцип, лежащий в основе слепой подписи, про-
ще всего объяснить на примере конверта, покрытого изнутри копировальной бу-
магой. [94]. Если положить внутрь конверта обычную бумагу, все, написанное на
конверте, отпечатается и на бумаге внутри него.
Для Алисы, получающей свою десятидолларовую банкноту, подписанную ее
банком, это выглядит так, будто она помещает банкноту в конверт с копироваль-
ной бумагой и просит свой банк поставить подпись на конверте. Банк снимает 10
долларов со счета Алисы и ставит свою подпись на конверте. После этого банк
никогда не увидит саму банкноту, но в любой момент может прочитать свою де-
сятидолларовую подпись, стоящую на конверте. После этого Алиса может исполь-
зовать банкноту как обычные деньги. Эта схема отлично работает, если учесть,
что банк ежедневно подписывает множество десятидолларовых виртуальных
банкнот. В этом случае, когда Боб передаст в банк десятидолларовую банкноту
и потребует перечислить 10 долларов на свой счет, отследить Алису по этой банк-
ноте будет невозможно.
Чтобы понять, как работают эти подписи в алгоритмах RSA, используем ту же
нотацию, что и ранее при описании принципов RS
А:
п= р х
д^
где
pnq
—
два боль-
ших простых (и секретных) числа. Число d вычисляется на основе этих простых
чисел как d ^ {р - \) х {q - I),
г.
е получается следующим образом: в х
6? = 1
modz.
Предположим, Алиса хочет получить со своего банковского счета десятидол-
ларовую банкноту. Фактически она сама создает себе эту банкноту, но нуждает-
ся в банковской подписи для ее подтверждения, причем так, чтобы банк впо-
следствии был не в состоянии проследить ее движение. Она создает случайное
число k между i и пи делает т нечитаемым, скрывая его в сообщении
t =
mk^
mod п.