анонимность в системах электронных платежей
Добрый вечер. Занимаюсь изучение анонимных систем электронных платежей (далее АСЭП). Вот нашёл описание протокола, есть вопрос по нему (написан в самом конце).
1.Алиса готовит 100 анонимных денежных чеков по $1000 каждый.
2.Алиса вкладывает каждый из них и листок копировальной бумаги в 100 различных конвертов и относит все конверты в банк.
3.Банк открывает 99 конвертов и убеждается, что каждый чек выписан на сумму $1000.
4.Банк, ставит свою подпись на единственном нераспечатанном конверте. Благодаря копировальной бумаге подпись также переводится на чек. Затем Банк возвращает подписанный конверт Алисе и списывает с её счета $1000.
5.Алиса вскрывает конверт и отдаёт чек продавцу.
6.Продавец проверяет банковскую подпись и убеждается в законности чека.
7.Продавец относит чек в банк.
8.Банк проверяет свою подпись и начисляет $1000 на счёт продавца.
Для простоты криптографическую реализацию этого протокола здесь не описываю. Вопрос. С одной стороны, банк не может узнать при получение чека от продавца, кому этот чек был выписан. Но с другой стороны, если ошибаюсь поправьте, продавец может обратиться в банк сразу после получения чека и тогда банк может вычислить анонимного покупателя с использованием разницы во времени. Т.е я выписал чек, а через пару минут банку пришёл чек на такую же сумму. Сможет ли банк в этом случае вычислить анонима? Если да, то как можно защититься от этого? Буду благодарен за любые комментарии, идеи и т.п.
Иначе мы решим что вы-тролль.Алиса готовит 100 уникальных чеков. Чек содержит: сумму, уникальный идентификатор X и другие вспомогательные компоненты. Если абстрагироваться от реализации протокола, то копирка нужная для того, чтобы подпись, которую банк поставит на не распечатонном документе, также перевелась на чек. Конверт сделан таким образом, что его может вскрывать только Алиса. Банк проверяет 99 наугад выбранных конвертов (общее число конвертов можно увеличить), все конверты вскрываются с помощью Алисы. Это позволяет банку убедиться с большой вероятностью, что в последнем не распечатанном конверте, чек написан на заявленную сумму, а не на $1000000000000000. После того, как Банк поставит подпись на единственном не распечатанном конверте, он отсылает конверт Алисе. Алиса открывает его и выдаёт чек продавцу. На чеке об алисе ничего не сказано, поэтому, когда продавец предъявит чек в банк, то банк не сможет никак связать этот чек с Алисой. Возникает вопрос: можно ли провести атаку на протокол со стороны банка используя разницу во времени?
Продавец видит изображение подписи и печати явно изготовленное с применением копировальных средств. Он подумает что вы пытаетесь его наебать.
И видит что она фальшивая. Так как не оригинал. Глупого продавца забирает пативэн.
Я предлагаю другой, очень реальный и анонимный протокол: Алиса идет в банк, снимает $1000 налички и расплачивается ею с продавцом. Дальше продавец может положить ее в банк или пустить в оборот. Схема 100% рабочая и анонимная.
Банкноты не анонимны, на них номера пишут. И банк эти номера может записывать.
Уже неоднократно заявлялось, что электронные деньги и электронное голосование труднореализуемы. А с элементом анонимности тем более.
Хотя, чем больше точек отказа, тем больше шансов какой-то протокол намалевать.
Чем вот такой алгоритм отличается от алгоритма создателя темы:
1. Алиса приходит в банк и просит выписать чек на 1000$
2. Банк подписывает чек с содержанием – предъявителю сего чека банк должен 1000$. И списывает со счета Алисы 1000$.
3.Алиса передает чек продавцу.
4.Продавец проверяет банковскую подпись и убеждается в законности чека.
5.Продавец относит чек в банк.
6.Банк проверяет свою подпись и начисляет $1000 на счёт продавца.
Рисковать будут дропы. Найти 1000 дураков не осознающих риска под проект "разори банк" очень даже реально.
Гость правильно выше написал, это тайминг-атаки. В биткоине их недавно как раз обсуждали, идеальной защиты нет. Можно дробить на мелкие суммы (не по $1000 каждый, а по рублю) и проводить протокол только с ними. Это усложнит атаку, потому что банк всегда будет работать только с транзакциями по одному рублю. Вторая мера — отвязать транзакции от времени, т.е. чтоб Алиса их получала от банка втечение какого-то промежутка времени, а не все оптом, но из-за этого протокол перестанет быть реалтаймовым, нужно будет время, чтобы прошла транзакция. При работе с биткоином все эти методы применяются, и дробление на суммы, и миксинг, и задержки, но это всё равно не идеально, т.к. общая схема транзакций всем видна. В вашем случае она будет видна как, как минимум, банку. Может, я не прав, точку в таких вопросах здесь может поставить только unknown.
Много лет назад в новостях писали про одну схему отлова покупателей ДП, плативших какими-то кредитками. Они узнали точную сумму, перечислявшуюся на счёт, а потом опросили все банки на предмет списания ровно этой суммы. Сумма была сильно некруглой, что кардинально упрощало дело. Дальше приехали пативены.
Ещё есть третья мера — сделать транзакции массовыми. Если число пользователей такого банка мало, им очень трудно анонимизироваться в статистике, но если банк каждую секунду делает тысячи таких транзакций, а его услугами пользуются миллионы, то ваша атака сильно усложняется. Можно ли даунскейлить ваш протокол (один банк, два продваца и два клиента, которые очень редко друг другу что-то продают) — не знаю. Большинство анонимных протоколов работает только за счёт масштаба, массовости.