25-Oct-2004

А я и не надеюсь, что у вас при слове "спамирин" потекут слюнки. Вы уже знаете, что против спама на сегодня не существует сколько-нибудь эффективного средства: назойливая реклама просачивается сквозь любые фильтры видоизменяя ключевые слова, заманивает нас хитроумно продуманными сабжами, делает все, чтобы мы прочли хотя бы одно предложение.
Мы также понимаем, что для решения проблемы требуются радикальные меры. Однако все, что предлагалось до сих пор предполагает переход на какие-то новые протоколы (напр. Sender-ID, предложенный Microsoft-ом и DomainKeys от Yahoo) и следовательно - перестройку всего Интернета. Все подобные проекты требуют одновременного перехода на новые технологии на счет "раз", что представляется нереальным, по крайней мере мне.
Ясно одно: средство против спама, насколько бы оно ни было радикальным, должно быть совместимым с существующими протоколами и должно предполагать переход постепенный, а не на счет "раз". Возможно ли такое?
Впрочем, для начала - немного философии, кое-что о законодательстве, а также несколько неприятных фактов.

Что такое спам? Если вам нужны аналогии из реальной, т.е. не виртуальной жизни, то вот вам: вы идете по улице и к вам пристают с какими-то визитками или листовками, рекламирующими службы такси или какой-то очень дешевый товар. Вы можете заметить те же листовки у себя в подъезде, даже на своей собственной двери, и в конце концов - в почтовом ящике. Это правда, что крупные компании брезгают такими методами, и если вам подсунули на улице визитку, то вы уверены, что это не солидная компания, а что-то очень мелкое и проворное, однако также и дешевое.
Знакомьтесь: это т.н. малый бизнес, который ищет любой возможности довести информацию о себе непосредственно до потребителя самыми дешевыми способами. У малого бизнеса нет средств на эфирное время на ТВ или роскошный уличный щит, но экономисты давно усвоили, что малый бизнес является составной частью экономики и давить его нельзя, насколько бы ни были "несолидными" его методы ведения бизнеса. Ведь речь идет всего-лишь о солидности, т.е. вещи весьма условной.
И вот это самое назойливое приставание на улице по сути и есть спам, который всего лишь перекинулся на более эффективную и дешевую среду: Интернет. Поскольку в виртуальном мире все делается быстрее и в бо'льших количествах, то ожидайте в своем почтовом ящике в сотни раз большее количество "приставаний", правда уже элеткронных.
Надо ли с этим бороться? Правительство США ответило на этот вопрос так: бороться не стоит, ведь это малый бизнес, которого нельзя обижать. Надо правда урегулировать некоторые детали с обратной связью, с отпиской, и еще с непристойной рекламой, которую нельзя видеть детям. Речь идет о законодательном акте под условным названием CAN-SPAM, который разрешает рассылки рекламных объявлений большому количеству получателей, но требует (а) указания адреса и телефона отправителя, (б) не использовать ложные сабжи, (в) дать возможность отписаться от сервиса и больше не получать объявлений от данного... отправителя (странное требование) и наконец (г) если объявление содержит порнографию, то следует дать об этом предупреждение и увести собственно содержание, так сказать, "one click away".
Требования, надо сказать, вполне логичные. Но теперь скажите мне, когда вы в последний раз видели спам, который удовлетворяет всем этим требованиям. Я никогда не видел в своем почтовом ящике таких приличных писем. И наверное если увижу, то не раздумывая куплю то, что мне предложат в этом письме, хотя бы в знак благодарности за соблюдение элементарных норм этики и закона CAN-SPAM. Но такого спама в природе просто не существует.
Но верятно самый парадоксальный факт, касающийся спама состоит в том, что большая его часть заказывается именно в США, хотя и физически рассылается через Китай, Россию и другие страны. Объяснить это можно тем, что в США больше всего людей, которые умеют что-то продавать. И такая схема рассылки рекламы позволяет, кроме дешевизны и прочих преимуществ, обходить несчастный закон CAN-SPAM, который вообще-то действует только на территории США.
Хотя все это вобщем-то не имеет отношения к идее, которую я собираюсь тут изложить.

Предположим, что спам является актом кражи нашего собственного времени. Время - это деньги, и следовательно каждый из нас, независимо от того, как к этому относится уголовный кодекс, может расценить чтение спама в нашем личном ящике как кражу, и предпринять против этого какие-то меры. Как мы защищаемся от обычных краж в реальном мире? Правильно, запираем двери, и это несмотря на то, что закон запрещает красть что-либо у другого человека. Т.е. я могу выставить некий барьер, трудность для похитителя моего времени и не стану надеяться на законы, которые так или иначе будут нарушаться.
Сначала мы взялись за фильтры. Пол Грэм, создавший метод Bayesian filtering, написал целую серию статей о спаме и фильтрах, и заключил, что хитрая фильтрация может вычищать почти весь спам. Но мы сегодня уже знаем, что эти фильтры ловко обходятся спаммерами и практически не работают. SpamAssassin вычищает всего где-то 25-30% мусора, приходящего на мой адрес, и это, как вы понимаете, не очень облегчает мою участь.
Фактическая неудача фильтров состоит в фундаментальной проблеме уже философского характера: нет четкой границы между тем что мне может понадобится, а что есть мусор в моей корреспонденции. В конце концов я часто думаю, что если кто-то напишет мне письмо о спаме, и приведет в качестве примера какие-то типичные фразы вроде "Rolex replica watches", то я могу потерять это письмо.
Кроме того, программы типа SpamAssassin делают ставку на техническую безграмотность спаммера: в спаме встречаются нарушения протоколов SMTP и RFC822. Часто спаммеры пытаются делать вид, будто письмо послано каким-то распространенным клиентом, например Outlook Express, но делают это неумело и легко попадаются. Но все таки надеяться на такие "киксы" спаммеров тоже нельзя, поскольку они наверняка улучшат со временем свою техническую базу и станут подделывать Outlook так, что мама родная (т.е. Microsoft) не узнает. Это только вопрос времени.
Ну хорошо, радикальные меры... На ум приходит прежде всего идентификация отправителя, что и предлагают сейчас сделать Microsoft и Yahoo, но и здесь нас ждет подвох. Во-первых, если проводить аналогию с реальным миром, то это похоже на то, как если бы для предотвращения краж всех заставили бы имплантировать RFID или еще какую-нибудь гадость. Но такая схема реально заработает только после того, когда все люди на Земле согласятся имплантировать этот маячок (который кстати... положит конец тому, что называется privacy и к сожалению не имеет перевода на русский язык).
Во-вторых - взломы, и об этом уже немало говорилось. Спаммеры обратятся за помощью к хакерам, и те предоставят первым (за определенную плату, естественно) огромное количество "дырявых" серверов, на которых хранятся private ключи реальных отправителей. Самое обидное тут то, что спаммеру нужен любой идентификатор, т.е. если кто-то хорошо поставит систему безопасности у себя в организации или дома, то в мире будут всегда оставаться определенное количество "дырявых" машин с идентификаторами, откуда и будет рассылаться спам. Вот и все. "Caller ID" для электронной почты тоже не работает.
Итак, если не работают ни фильтрация, ни caller ID, остается только нам, бедным получателям спама, выставить какие-то барьеры. Но для этого нам прежде всего следует понять по каким критериям мы вообще хотим отсеивать отправителей. Содержание не является хорошим критерием потому, что все мы когда-нибудь "клюем" и на рекламу тоже. Это самый сложный вопрос, но мы должны что-то решить для себя.

Я бы ввел следующие два критерия, по которым согласен принимать письма в свой ящик: во-первых, массовость, т.е. чем большему числу получателей отправлено письмо, тем меньше я хочу его прочесть, и наоборот, если оно отправлено только мне, или если это какая-то ограниченная и скорее всего специализированная рассылка, то у меня к этому есть больше интереса. Должен отметить, что я в принципе не против навязывания мне рекламы помня, что это шанс для малого бизнеса, который обижать нельзя, и который в каких-то случаях может оказаться полезным.
И во-вторых, хочу получать письма от тех, с кем я первый пошел на контакт ранее. Такие письма могут даже носить рекламный характер, но я согласен читать рекламы от amazon.com или GoDaddy.com, потому что пользуюсь их услугами и фактически сам завязал с ними контакт.
Не будем забывать и еще об одном важном требовании к новой системе: переход к ней должен быть плавным. Как это можно осуществить? Ну, во всяком случае задача поставлена, как мне кажется, достаточно хорошо, не правда ли?
А что если, к примеру, в качестве искусственного барьера ввести дополнительные вычислительные расходы (computational costs) для отправителя? Предположим, я объявляю всем такое: для того чтобы "достучаться" до меня по электронной почте, вы должны вычислить какой-то тяжелый с точки зрения процессора ключ, причем на основе текста сообщения, а также вашего и моего адресов. Словом, некий уникальный для данного сообщения ключ, что исключит переиспользование уже вычисленных ранее ключей для разных получателей. В качестве такого ключа можно выбрать MD5 или нечто подобное.
И еще один трюк: это вычисление может производиться помногу раз для одного письма. "Вес" ключа - это количество итераций и соответственно время вашего процессора, потраченное на отправку письма. Ясно, что если вы рассылаете рекламу большому числу получателей, то вы не станете делать много итераций, либо не будете делать их вовсе. Либо... вы потратитесь на "железки", т.е. много мощных компьютеров. Меня это устраивает, потому что если вы пошли на затраты, то скорее всего ваша реклама может стоить того.
Т.е. в принципе в моем ящике по-прежнему могут оказаться письма без ключей, либо с малым количеством итераций. Вот эти-то письма и ожидают уже существующие спам-фильтры вроде SpamAssassin-а, но даже после фильтрации они попадут в какую-то неприоритетную папку, которую я могу временами просматривать, но могу и не просматривать со спокойной совестью.
Письма же с более высоким приоритетом, на которые было потрачено больше циклов вашего процессора, будут попадать в самую приоритетную папку. Итого в моем почтовом клиенте будут несколько папок Inbox, каждая из которых будет предназначена для писем с различными "весами" ключей, так же как и для писем без ключа - предположительно спама. Пусть на вычисление самого тяжелого ключа, т.е. самого приоритетного персонального сообщения, потребуется полсекунды на процессоре с частотой 1GHz. Что такое полсекунды для пользователя? Сущий пустяк. Зато для спама это настоящий реквием.
Выходит так, что почта фильтруется по количеству затраченного на оправку ресурсов, в частности процессорного времени. И что важно, этот метод не требует никаких изменений в серверном ПО, обслуживающем почту. Сами ключи и некоторая дополнительная информация (напр. количество итераций) могут вычисляться клиентом и записываться в заголовки сообщения. Проверка правильности ключа тоже осуществляется клиентским ПО, но уже на стороне получателя.

Теперь будем разгребать связанные с этим методом проблемы, по очереди.
1. Рассылки и всевозможные бюллетени, на которые мы подписываемся сами: здесь можно ввести понятие "белого списка", который ведется на нашем компьютере. Ведь если я сам подписываюсь на бюллетень, то могу и пощадить отправителя и избавить его от емких вычислений. Надо признать, что тем не менее рассыльщики бюллетеней слегка пострадают, поскольку если для подписки раньше требовалось одно действие - ввод адреса в соответствующее окошко, то теперь потребуются уже два: адрес и также ввод отправителя в "белый список" на стороне клиента. Но думаю, это не очень страшная проблема, и здесь можно что-то придумать.
2. Серверы бесплатной почты вроде Yahoo и Hotmail. Им придется туго, но думаю, вместо того, чтобы бесплатно раздавать по 1GB пространства каждому пользователю, а то и вовсе неограниченное пространство, пусть лучше вместо жестких дисков потратятся на процессоры. В конце концов все выжившие на сегодня freemail провайдеры - это коммерческие компании (а некоммерческие не дожили до наших дней), так пусть каждый думает за себя сам. Сказать честно? Мне безразлично как Yahoo и Hotmail будут искать выход из ситуации. Если письма приходящие с Yahoo будут иметь сравнительно "легкий" ключ (т.е. иметь малое число итераций), то наверное это всех устроит, поскольку письма таких отправителей уже не смешаются со спамом, который будет без ключа, и в конце концов отправителей с Yahoo и Hotmail каждый может потихоньку добавлять в свой "белый список".
3. Взломы серверов. Это тоже проблема, но метод с "тяжелой" подписью имеет преимущество перед Sender-ID и DomainKeys: с этими ребятами достаточно "взломать" чужую машину и выкрасть private ключи, и/или внести изменения в DNS-зону, после чего спам можно отправлять уже с другого сервера. Как вы понимаете, такое вторжение может пройти незамеченным. В нашем же случае машины "взламываются" для получения процессорного времени, и таким образом снижение производительности и большая загрузка канала связи может быть замечена несчастным владельцем взломанного сервера, или хотя бы его ISP.
4. Закон Мура о росте вычислительных мощностей со временем: ввиду этого с годами реальный вес ключей может снижаться. Но не вижу здесь проблемы, поскольку если даже этот закон будет действовать еще 10 лет (а есть подозрения, что сейчас микроэлектроника уже достигла какого-то практического потолка, и для дальнейшего роста числа элементов потребуются принципиально новые технологии), то за эти 10 лет процессоры усложнятся всего лишь на порядок, и кстати, усложнение не обязательно означает ускорение. А теперь представьте себе во сколько раз может вырасти за этот же период количество пользователей Интернета, и соответственно потенциальных получателей рекламы/спама. Думаю, спаммеры по прошествии этих десяти лет не выиграют ничего. Самое большее, что может произойти, это появление в моем почтовом клиенте новой папки с приоритетом на порядок большим предыдущего.
И наконец, самое главное: что потребуется для внедрения метода "тяжелой" подписи?
План перехода сравнительно прост, и не требует глобальной перестройки всего Интернета. По сути требуется только создать примочки для нескольких наиболее распространенных почтовых клиентов, которые покрывают не менее 90% рынка. К сожалению у меня нет точных данных, но может оказаться, что модификации, а точнее создания примочек для Outlook и The Bat! будет вполне достаточно. Здесь следует использовать тот факт, что клиентское ПО распространяется и обновляется значительно быстрее, чем серверное, по той простой причине, что за клиентскими машинами постоянно сидят люди, когда как серверы, когда-то и кем-то инсталлированные, зачастую годами остаются совершенно бесхозными.
Теперь представьте себе, что объявляется начало кампании, о которой поначалу могут узнать не все пользователи Интернета. Каждый рассылает своим друзьям и коллегам сообщение о преходе на классификацию почты по "тяжести" ключа, с некоторыми инструкциями. На наших персональных страничках и прочих сайтах мы уже сможем без опасения оставлять наши адреса открытым текстом, но с предупреждением, что адрес принимает только письма не меньше такой-то категории "тяжести".
Думается, для начала только "гиков" и "нердов" висящих на Slashdot и в подобных местах будет вполне достаточно, чтобы за год или два больше половины пользователей лавинообразно перешли на новую систему классификации почты. В течение этих двух лет мы по-прежнему будем на всякий случай заглядывать в ящики низкого приоритета чтобы не пропустить чего важного, но со временем необходимость в этом отпадет сама по себе.
Ну, вот и все, пожалуй.
CAN-SPAM, you say?
Now SPAM-IF-YOU-CAN!
| В начало блокнота | © 2004-2007 Hovik Melikyan |