BC/NW 2003г., №1(3)/ 13.5

 

ОБЕСПЕЧЕНИЕ НЕОТСЛЕЖИВАЕМОСТИ КЛИЕНТА В СИСТЕМАХ ЭЛЕКТРОННЫХ ПЛАТЕЖЕЙ

 

 

Иванащенко Б. М., Харченко А. С.

 

 

(г. Москва, Московский Энергетический Институт (ТУ), Россия)

 

 

 

Начну я с обсуждения угрозы, которую несет компьютеризация правам и свободам личности. Рассмотрим эту угрозу на следующем простом примере. Столь популярная во всем мире кредитная карточка представляет собой носитель информации, который при каждом платеже полностью идентифицирует своего владельца. И если владелец карточки использует её для покупки билетов на транспорт, то можно отслеживать все поездки, что в цивилизованном обществе без санкции прокурора недопустимо. Аналогичным образом, для каждого владельца кредитных карточек возможно собирать информацию о том, какие товары и где он покупает, какими услугами пользуется, какие культурно-зрелищные мероприятия посещает и т. д. То есть компьютеризация создает беспрецедентные возможности для организации тотальной слежки, что является нарушением права на тайну личной жизни.

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

1.     возможность оплаты через Интернет;

2.     полная неотслеживаемость клиента;

3.     высокая безопасность банка.

 

Сейчас такие системы уже созданы. Их называю системами электронных платежей. Я не буду приводить всю терминологию, связанную с этими системами. Скажу лишь пару слов об их классификации, а также о протоколах, на основе которых они функционируют.

Системы электронных платежей бывают централизованными и автономными. В централизованной системе электронных платежей подлинность электронных денег не может быть установлена без банка, и, следовательно, каждый платеж может быть осуществлен через банк. В автономной системе электронных платежей получатель может самостоятельно, без помощи банка, проверить подлинность электронных денег. Следовательно, плюсом централизованной системы электронных платежей будет ее относительная простота, а минусом – меньшая эффективность по сравнению с автономной системой. Для автономной системы, соответственно,  все будет наоборот. Функционируют системы электронных платежей на основе протоколов электронных платежей, которые обычно состоят из трех транзакций: снятие со счета, платеж и депозит (это когда клиент кладет «сдачу» на свой счет в банке). В этих протоколах задействованы три участника: банк, клиент (покупатель) и магазин (продавец). Клиент и магазин, каждый, имеют счет в банке, и клиент желает заплатить магазину за товар или услугу.

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

Для обеспечения возможности оплаты через Интернет банкнота должна быть представлена последовательностью бит (электронная банкнота). Безопасность банка во всех системах электронных платежей основывается на невозможности подделать его подпись для создания фальшивой банкноты, или, более общим образом, на невозможности, получив набор подлинных электронных банкнот, подделать подпись еще хотя бы для одной банкноты. Для этого обычно используют алгоритм RSA, который лежит в основе большинства алгоритмов слепой цифровой подписи (понятие дано ниже), и хэш-функцию, назначение которой станет ясно далее. Для неотслеживаемости клиента (покупателя) применяют алгоритм так называемой слепой цифровой подписи: в транзакции снятия со счета банк подписывает не банкноту, а некоторую «абракадабру», из которой клиент восстанавливает подписанную банкноту. Таким образом, неотслеживаемость гарантируется тем, что банк просто не знает, что именно он подписал. В централизованных и автономных системах электронных платежей применяются различные алгоритмы слепой цифровой подписи, но, как я уже сказал, практически все они основаны на алгоритме RSA. Алгоритм слепой цифровой подписи является основой протокола электронных платежей, и поэтому при разработке протокола первым делом необходимо разработать этот алгоритм. Пример протокола электронных платежей я здесь рассматривать не буду, а вот пример алгоритма слепой цифровой подписи имеет смысл рассмотреть подробно, т. к. именно он обеспечивает неотслеживаемость клиента, а также – безопасность банка.

Итак, приступим к подробному рассмотрению разработанного мною алгоритма слепой цифровой подписи для централизованной системы электронных платежей, в основу которого положены ранние работы Дэвида Шаума (ведущий специалист в области систем электронных платежей, разработчик первого алгоритма слепой цифровой подписи).

Формат электронной банкноты я предлагаю следующий:

Идентификатор банкноты (по аналогии с бумажными деньгами) – её серия и номер. Брюс Шнайер (один из самых авторитетных криптографов) рекомендует брать идентификатор порядка 500 бит. Возьмем 508 бит.

Номинал банкноты – один из номиналов бумажных денег (1 к., 5 к., 10 к., 50 к., 1 р., 2 р., 5 р., 10 р., 50 р., 100 р., 500 р., 1000 р.). Следовательно, номинал будет занимать 4 бита (508 + 4 = 512 бит).

Подпись банка на банкноте (по аналогии с бумажными деньгами) – её защитные знаки.

Итак, изначально банк выбирает и публикует числа N и e (банк для подписи использует алгоритм RSA с модулем N, экспонентой закрытого ключа d, экспонентой открытого ключа е), а также некоторую хеш-функцию f, назначение которой станет ясно из дальнейшего.

Транзакция «снятие со счета» (а именно в этой транзакции протокола используется алгоритм слепой цифровой подписи!) в общих чертах выглядит следующим образом. Клиент генерирует некоторую случайную цифровую последовательность, представляющую собой идентификатор банкноты, и добавляет к ней номинал банкноты. Обозначим эту последовательность через A. Далее на своем компьютере клиент вычисляет f(A) и, затем, значение R = f(А) * (b^e)  (mod N), где ^ – возведение в степень, е — экспонента открытого ключа банка, b –  случайное число (b^e – «слепой множитель»). Полученное в результате значение R клиент направляет в банк.

Банк зашифровывает R своим закрытым ключом, то есть вычисляет значение R^d (mod N), и полученное значение возвращает клиенту.

Здесь имеет место равенство R^d (mod N) = f(A)^d * b (mod N). Поэтому, получив от банка значение R^d (mod N), клиент легко освобождается от известного ему случайного числа b (это делается с помощью решения линейного диофантного уравнения) и получает значение подписи последовательности A, равное f(A)^d (mod N). Последовательность (A, f(A)^d (mod N)) и является цифровым выражением электронной банкноты.

Таким образом, клиент получает электронную банкноту (A, f(A)^d (mod N)), которая может быть предъявлена банку. При этом банк не сможет идентифицировать, кому была выдана эта монета (требование неотслеживаемости). Благодаря «слепому множителю» b^e, банк непосредственно сам никогда не подписывал f(A). Все, что известно банку, – это значение f(A)^d * b (mod N), которое благодаря «слепому множителю» b^e представляет собой просто случайное число. В то же время банк, проверив цифровую подпись в электронной банкноте, сможет легко установить, что данная банкнота была подписана именно им.

Безопасность банка в этой системе электронных платежей основывается на вере в стойкость схемы электронной подписи RSA. Применение хеш-функции f необходимо ввиду известного свойства мультипликативности RSA: если s1 и s2 — подписи для m1 и m2 соответственно, то s1 * s2 = (m1^d) * (m2^d) (mod N) — подпись для m1 * m2. Поэтому, если в качестве электронной банкноты использовать последовательность (A, A^d (mod N)), то, имея две электронные банкноты, легко изготовить третью, что и является выражением мультипликативности алгоритма RSA. В качестве хеш-функции в данном алгоритме я предлагаю использовать алгоритм MD5, т. к. он является одним из самых устойчивых и быстрых алгоритмов хеширования на сегодняшний день.

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

 

В заключение, я хочу сделать обоснованное предположение о том, что за электронными деньгами будущее…Чеки не выполняют требование неотслеживаемости и с помощью них нельзя производить платежи в Интернете. Кредитные карточки так же не выполняют требование неотслеживаемости, правда, с помощью них можно производить платежи в Интернете (но мелкие платежи не выгодны). Бумажные деньги требование неотслеживаемости выполняют, но с помощью них нельзя производить платежи в Интернете. Кроме этого, бумажные деньги раздражает носить с собой, они способствую распространению инфекций, наконец, их можно потерять или их могут просто украсть. Электронные же деньги выполняют требование неотслеживаемости, с их помощь можно производить платежи в Интернете (даже очень маленькие), их можно носить с собой на смарт-карте.

 

ЛИТЕРАТУРА

1.     В. В. Ященко. Введение в криптографию. – СПб.: Питер, 2001.

2.     Брюс Шнайер. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на Си. – М.: Издательство ТРИУМФ, 2002.

3.     Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы: построение и анализ. – М.: МЦНМО, 2002.