Щас я буду вредные советы давать.
Разговоры про кардеров напомнили про следующую задачу:
Вот я Альберто Гонзалез украл большую партию кредиток и хочу их продать (если кому не нравится про кредитки, пусть будет "разложил N составных чисел на множители" или "нашел остроумные решения у серии NP-сложных задач"). Ко мне приходят покупатели и говорят: "А хороший товар?" Я, конечно, отвечаю "Наилучший!" А те мне: "А чем докажешь?"
Вот тут возникает проблема: показать товар - значит его отдать. Биты и байты нельзя дать повертеть в руках, а потом забрать назад. Можно дать на проверку, как это иногда водится, несколько тестовых номеров, но где гарантия, для что все остальное не фуфло? Нет гарантии.
Обычно дело решается социальными методами: через репутацию владельца, всевозможные блэк-листы и долгие разборки на форумах соответствующего профиля. Но это долго, нервно и зачастую скатывается в ситуацию "мое слово против твоего". Можно ли задачу решить как-то более элегантно?
Думаю так: я публикую для всеобщего обозрения список хэшей номеров. Покупатель выбирает из опубликованных хэшей M случайных и просит их открыть. Я пересылаю ему номера, покупатель сверяет, что хэши совпадают. Потом проверяет сами номера на валидность. Если все M номеров прошли, то
по правилу Лапласа можно рассчитывать, что в среднем (M+1)/(M+2) ото
всех номеров в партии будет работать. Обращаю внимание, что доля не зависит от размера всей партии.
* Зачем проверять хэши? Чтоб не дать возможности продавцу сначала подсунуть единственные работающие номера (как в случае с открытыми тестовыми номерами), а потом отдать мусор.
* Что если пространство возможных номеров недостаточно велико? Тогда хэши можно брутфорсить. Например, число возможных карточек "Виза" около 10
15 ~ 2
50 Вполне доступно для перебора. Решение: солить хэши, то есть перед хэшированием дописывать к номеру случайную строку. Естественно, покупателю открывается все вместе: и номер, и соль - иначе хэш нельзя проверить.
* Что мешает покупателю взять тестовые номера, убедиться, что они работают и скрыться? С мира по нитке, голому рубашка (в англоязычных форумах этот метод так и зовется нищенством). Тогда проблема сводится к задаче продажи малой партии, где статистических методов валидации недостаточно. Что в этом случае делать? об этом в следующей части.