NetCash logo

NetCash: Нет, это не Cash
Вадим Маслов

Деньгам не живется спокойно на бумаге, их тянет в неведомые дали КиберПространства (CyberSpace), туда, где Покупательская Корзина -- это не изделие из пластика и металла, а всего лишь жалкий отблеск на экране, туда, где по магазину можно ходить не сходя со стула, туда, где деньги не только не имеют определенного цвета, но их даже и пощупать нельзя.

И тянут их (деньги) в этом направлении несколько компаний. Наиболее известными из них являются CyberCash, Mondex, VeriFone, Visa. Но есть и компании поменьше, которые пытаются боротся с гигантами, которые стараются урвать себе кусок еще несуществующего рынка.

NetBank -- одна из таких компаний.
Они предлагают NetCash -- электронные денежные сертификаты, которые передаются по е-почте.

Как работает НетКэш

Самая близкая аналогия для НетКэша -- это American Express Travellers Cheques.

Начинается все так. Вы посылаете в НетКэш настоящие живые деньги (скажем, 20 долларов) в форме чека, а взамен вы получаете по е-почте некий сертификат, который будет представлять эти самые 20 долларов в сетевом мире.

Этот сертификат имеет Серийный Номер. Собственно Серийный Номер -- это и есть все, что вы получаете. Говоря иными словами: кто знает номер, тот и владеет сертификатом. Номер -- ну прямо как на банкнотах -- буквы, цифры, красные чернила.

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

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

Сертификат кэшится путем посылки его в НетБанк со специальной командой /Accept. НетБанк проверяет, что это подлинный чек и заносит его на счет продавца. Для проверки подлинности сертификатов НетБанк, очевидно, держит базу данных по всем сертификатам, которые он когда-либо кому-либо выдал.

Каждый сертификат (а точнее говоря, его номер) -- одноразовый. Он порождается банком, отсылается покупателю или продавцу, и потом, после попадания в другие руки, возвращается назад в НетБанк, где аннулируется, а взамен его человек, приславший сертификат, получает другие сертификаты или просто деньги.

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

Ну и какой же от всего этого навар НетКэшу, спросите вы. Ответ простой: они нерут 2% за трансформацию денег в НетКэш и за обратную трансформацию НетКэш -> деньги.

Проблемы

Итак, казалось бы, все хорошо, система работает, все в Автодор, в смысле, в НетКэш?

Я думаю, не стоит торопиться: в системе НетКэша есть много темных мест.

Так Кто же Владеет Сертификатом?

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

С НетKэшем все не так очевидно, все не так просто. Когда вы посылаете по е-почте ваш сертификат на 20 долларов купцу в сетевом магазине (или передаете сертификат иным способом по TCP/IP), купец тут же должен закэшить этот сертификат в НетБанке.

Если по какой-то причине, продавец послал вам товар, не закэшивая сертификат, то ваш сертификат между тем может стать недействительным -- например, потому что вы послали тот же самый сертификат другому продавцу в уплату за другой товар. Тот продавец, который закэшил свой сертификат первым, получает деньги, а тот продавец, который опоздал, вспоминает тот день, когда он купил акции МММ.

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

Итак, способ обойти проблему существует. Но к чему он ведет? К медленной системе, которая заведомо медленнее обычных кредитных карточек, к системе, которая сравнима по скорости с чеками.

А ведь электронные деньги дольны быть быстрыми -- иначе зачем они нужны?

Когда Сертификат теряется

Да, что делать если сертификат потерялся? Можно конечно сказать так: сам потерял -- сам и дурак, а денежки пойдут на развитие НетБанка. У потребителя, правда, всегда готов ответ: ну и катитесь тогда со своими НетБанками.

Что интересно, потребитель может быть вовсе и не виноват в потере сертификата. Например, сертификат может потерятся при пересылке по е-почте. Как известно, е-почта теряется не намного реже обычной почты.

Что тогда делать? Посылать сертификат еще раз? Вполне возможно. Если прошлый раз сертификат не дошел, а на этот раз дошел, НетБанк его получит и пришлет нормальный ответ. НетБанк так никогда и не узнает что первое сообщение не было получено.

А что будет если НетБанк ваш сертификат получил, отправил ответ, а вот ответ-то и потерялся? Тогда, похоже, всей системе крышка, если не сказать сильнее.

Рассмотрим конкретный пример: В НетБанке есть операция размена денег. Вы посылаете им сертификат на 20 долларов с командой, в которой говорится: поменяйте мой 20-долларовый сертификат на два сертификата по 10 долларов. Они посылают вам назад два сертификата по 10 долларов.

И вот тут-то нас и поджидает сюрприз: а что если этот ответ потерялся? Тогда НетБанк думает, что он нам отправил два сертификата по 10 долларов и делает исходный сертификат на 20 долларов недействительным. Но вы-то эти два сертификата по 10 долларов не получили, и вы впадаете в расстройство, депрессию, и навязчивую манию.

Теперь остается только один путь: идти в НетБанк и требовать назад свои 20 долларов -- если у вас, конечно, сохранился номер сертификата.

НетБанк, скорее всего, вам скажет: может, наш ответ с двумя сертификатами потерялся, а может, ты их на самом деле получил и сам же потом и пропил -- сие нам неведомо.

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

Ситуация, как мне кажется, вполне реальная, и настолько же серъезная.

Секретность Номеров

И наконец, еще более серъезная проблема: номера сертификатов посылаются по сети в открытом виде. Это все равно как оставлять 20-долларовую бумажку на скамейке в метро в надежде на то, что люди честные -- поносят, и отдадут.

Только подумайте: любой Противный Хакер, сидящий на вашей локальной сети или на интернетовском бэк-боне, может подсмотреть номера ваших сертификатов и использовать их в своих неблаговидных хакерских-корыстных целях.

Вернемся к нашему жизненному сценарию, в котором вы посылаете в НетБанк 20 долларов на размен, и в ответ вам посылают два сертификата по 10 долларов.

Злой Хакер видит эти два сертификата проходящии мимо его tcpdump'a, записывает их номера, и тут же тратит их на электронные развлечения.

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

НетБанку ведь все равно, кто их закэшил -- кто знает номер, тот и владеет сертификатом. А номер, как мы видим, могут знать многие.

НетБанк, конечно же, заверяет нас в том, что они понимают эту проблему, и поэтому они могут принимать сообщения с сертификатами в зашифрованном виде (а могут и не принимать -- открытые сообщения тоже проходят).

Однако, НетБанк не упоминает о том, что ответ они все равно посылают в открытом виде. А в вышеупомянутом сценарии с украдыванием 2*10 долларов номера сертификатов извлекаются как раз из ответа НетБанка.

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

А для того, чтобы у каждого участника электронной коммерции был публичный и приватный ключ, надо "всю систему менять" -- но это уже совсем другая история.

Заключение (DOA)

В этой статье мы на примере НетКэша рассмотрели важные проблемы, которые возникают при стоительстве систем электронных денег.

В процессе рассмотрения было выяснено, что НетКэш -- это пример того, как НЕ надо делать систему электронных денег.

А то, как ее надо делать -- это вопрос, на который окончательный ответ еще не получен.

Но архитектурные принципы уже ясны:

Весьма развитым документом, более подробно объясняющим эти концепции, является Secure Electronic Transaction protocol.

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

Disclaimer. Материал этой статьи базируется исключительно на описании системы НетКэш данном на их Веб-сайте NetBank. Данная статья содержит только персональное мнение автора, которое может совпадать или не совпадать с мнением упомянутых компаний. Данная статья не является советом по инвестированию или не-инвестированию в упомянутые компании.


Copyright 1997 by Vadim Maslov.

Last updated September 01, 1997.