Сучасні спам фільтри і End-to-End шифрування

ПривітТревор (пер: — наскільки я зрозумів, мова йде про Trevor Perrin) попросив написати свої думки з приводу… спам фільтрів і наскрізного (end-to-end) шифрування, щоб вся інформація була зібрана в одному повідомленні, а не розкидана по всьому форуму. Зокрема, він попросив сдампить мої знання з наступних тем:
  • Як зараз працюють спам-фільтри у великих поштових сервісах?
  • Як вплине широке поширення наскрізного E2E шифрування?
  • Що можна перенести на клієнта (а також випливають плюси і мінуси)?
  • Реально це зробити з електронною поштою?
  • Що зміниться при переході від електронної пошти до інших асинхронним систем (наприклад, чати) або новим протоколів; тобто, проблеми спаму — це проблеми email протоколу або глобальний вада системи?
Коротко опишу свій досвід в даній сфері, щоб уточнити компетенції: я (пер.:сторінка на Google+) працював в Google 7 з половиною років. З них 4,5 роки я працював в команді безпеки GMail, яка дуже щільно пов'язана з анти-спам командою (вони використовують ті ж програми, ті ж системи оповіщення).
Де-то з 2010 року ми дали хороший відсіч спамерам, в результаті вони не змогли заробляти гроші, використовуючи старі методи. Деякі з них перейшли до злому акаунтів в промислових масштабах з використанням ськомпроментірованних паролів. Потім з цих зламаних облікових записів розсилався спам. Я був технічним керівником (tech lead) нової команди боротьби з викраденнями акаунтів. Ми витратили 2,5 роки на боротьбу з угоном облікових записів. На початку 2013 року ми оголосили про свою перемогу, а через кілька місяців Едвард Сноуден опублікував інформацію про те, що NSA/ЦПС прослуховувало систему безпеки, яку ми розробили.
З тих пір схоже все затихло. Можна сказати, що з точки зору GMail була здобута перемога над спамом… принаймні на поточний момент.
Якщо ви віддаєте перевагу відео, то кілька років тому я робив доповідь на конференції RIPE64 в Любляні: ripe64.ripe.net/archives/video/25/
У січні я покинув Google щоб присвятити весь вільний час Bitcoin'у. Зараз я працюю над проектом програми для P2P краудфандингу, яка дозволить знаходити фінансування використовуючи децентралізовану структуру.
Отже, поїхали.

Коротка історія спамерської війниНа початку було… регулярний вираз. Gmail дійсно підтримує фільтрацію за регулярними виразами, але тільки як крайній захід. З ними легко наробити помилок. Одного разу ми заблокували лист від нещасної італійки по імені «Olivia Gradina» (пер.: — побачили натяк на силденафіл?). Плюс такий підхід погано підтримує інтернаціоналізацію і легко обходиться рандомізацією.
Потім Email співтовариство почало складати списки поганих IP адрес і обмінюватися ними. Так з'явився Spamhouse. Такий підхід давав свої плоди, тому що знецінювалися ресурси, за які спамери платили гроші. Але навколо списків велися запеклі бої, тому що хранителі чорних списків ставали суддями, журі присяжних і катами в питаннях потоків листів. Виявилося, питання «Що є спам, а що ні» — дуже спірне. Багато списків розсилок не вважали себе спамерами, але відсутність чіткого визначення, вони іноді потрапляли в чорні списки.
Щоб обійти RBL (Realtime Blocking List) спамери почали використовувати ботнети. У відповідь борці зі спамом побудували карту інтернету і сформували «Список політик блокувань» (PBL, Policy Block List) — діапазони IP-адрес, які були прив'язані до житлових подсетям, і тому в принципі не повинні займатися відправкою пошти. Ботнети генерують неймовірні обсяги спаму, але цей спам простіше фільтрувати. За часів моєї роботи в GMail в команді спаму та загроз безпеки на боротьбу з ботнетами витрачалося дуже мало часу.
Отже, з'явилися веб-поштовики за типом GMail. Найперша версія GMail просто використала spamassassin. Але такий підхід був швидко визнаний недостатньо хорошим, і ми побудували свій фільтр. Архітектура фільтра GMail була описана в науковій статті 2006 року: Sender Reputation in a Large Webmail Service.
Я коротко перекажу суть цієї статті. Головна методика нового фільтра полягала в евристичної спробі вгадати домен відправника листа (домени складніше отримати і вони стабільніше ніж IP адреси), а потім обчислити репутацію для нього. Репутація — це бали від 0 до 100, де 100 — це ідеально хороша репутація, а 0 — однозначно спам. Тобто, якщо у відправника репутація 70, значить близько 30% випадків ми вважаємо, що лист спамерское, а в інших випадках — пропускаємо. Репутації — це ковзне середнє значення, обчислене на основі ретельного підрахунку ручних відгуків засобом кнопок «Поскаржитися на спам/Не спам», і автоматичного відгуку від самого фільтра. Очевидно, що ручні скарги мають набагато більшу вагу для системи і дозволяють фільтрів саме-коригуватися.
У цього підходу є ще одна перевага — він виключає всі спірні питання навколо точного визначення поняття «спам». Нове визначення звучить наступним чином: спам — це все, що наші користувачі називають спамом. Проти такого визначення не попреш. При цьому його дуже легко реалізувати на практиці, і воно досить гнучко підлаштовується під нові вигадки спамерів.
Варто відзначити декілька пунктів:
  • Система репутацій повинна мати можливість читати листи. Недостатньо бачити тільки спам, бо репутації не зможе сама-коригуватися. Кнопка «Не спам» так само важлива як і кнопка «Поскаржитися на спам». Велика частина позначок «не спам» відбувається неявно, коли позначка «спам» просто не ставиться.
  • Репутацію потрібно обчислювати швидко. Якщо ви отримали лист з невідомої репутацією, у вас немає іншого вибору, окрім як вирішити цього листа пройти. Це стимулює спамерів спробувати випередити систему навчання. Перша версія системи репутації використовувала MapReduce і обчислювала репутації партіями. Запізнювання обчислювалася годинами. У результаті її замінила інтерактивна система, яка обчислювала бали на льоту. Ця система — неймовірний, вражаючий примірник інженерної майстерності. Це, по суті, глобальна peer-to-peer навчається система реального часу. Немає центральних вузлів. Фільтр розподілений по всьому світу і може пережити втрату кількох дата центрів.
    Мені страшно подумати, як можна побудувати таку систему поза добре контрольованого оточення. Навіть у рамках пропрієтарного/централізованого оточення довелося неабияк поламати голову...
  • Репутація поширюється між доменами. Якщо нам відомо, що конкретна посилання погана, і вона з'являється в листі від IP адреси з невідомої репутацією, то цей IP адресу теж отримує погану репутацію. І навпаки. Виявилося, що це важливий пункт. По мірі того, як кількість критеріїв для визначення репутації зростає, спамерам стає все складніше змінювати їх всі одночасно. Особливо це вірно для ботнетів, де точний контроль за здійснюють машинами скрутний. Якщо спамеру не вдасться випадково навіть один мікро аспект у всіх їхніх листах одночасно, то всі посилання і IP-адреси автоматично будуть скомпрометовані і вони втратять гроші.
  • Репутацій притаманні природні проблеми. Вам необхідно велика кількість користувачів. Отже облікові записи повинні бути безкоштовними. Якщо вони безкоштовні, то спамери можуть нарегистрировать багато таких облікових записів, позначати власні листи як «не спам» та справити Sybil attack. І це не гіпотетична проблема.
Репутаційна система була розроблена, щоб обчислювати репутацію на основі ряду особливостей у листах крім домену відправника. Одна з особливостей — це домени клікабельних посилань у тексті. Посилання стали критичним полем бою, за яке активно велися битви вже кілька років. Причина зрозуміла: спамерам потрібно щось продати. Значить їм потрібно привести користувача в свій магазин. Не важливо як вони назвуть свій товар, посилання на кінцевий сайті повинна працювати. Бої проходили наступним чином:
  1. Все почалося з простих посилань в HTML коді листів. Фільтри почали блокувати листи з такими посиланнями.
  2. Спамери почали заплутувати (обфусцировать) посилання і просили користувачів вручну зібрати і ввести посилання в адресний рядок. Але цей спосіб працював погано. Більшість користувачів не хотіли або не могли це зробити. Доходи падали.
  3. Спамери почали купувати та створювати випадкові домени пачками. Домени верхнього рівня, такі як
    com
    , коштують дорого, але є інші — дешевше. І репутація окремого домену верхнього рівня падала нижче плінтуса (наприклад
    .cc
    )
  4. Коли реєстратори почали закручувати гайки, у спамерів закінчилися домени верхнього рівня. Вони почали промишляти крадіжкою репутацій. Наприклад, вони створювали блоги на сайтах, які давали можливість зареєструвати домен:
    *.blogspot.com
    ,
    *.livejournal.com
    та інші. Сервіси скорочених посилань стали кращими друзями спамерів. Буквально кожен сервіс скорочення URL ставав полем битви операторів проти спамерів за репутацію домену.
  5. Спамери почали зламувати веб сайти. Але такий підхід не завжди добре працював, тому що рідкісний веб сайт міг запропонувало легальну пошту з хорошою репутацією. І ще це хороший джерело паролів.
  6. Великі майданчики хостингу контенту, такі як Google, об'єднують спам фільтр з движком хостингу. І як тільки репутація користувача URL падає, хостинг для нього автоматично закривається. Перші версії таких систем були занадто повільними. Одним з моїх проектів у Google був пов'язаний з побудовою системи реального часу для автоматичного видалення такого контенту.
Між 2006 (відкриття реєстрації) та 2010 роками був побудований спам фільтр при реєстрації облікових записів. Ми проробили дуже хорошу роботу, незважаючи на те, що я сам себе хвалю. Подивіться на розцінки «безкоштовних» облікових записів веб поштовиків на сайті buyaccs.com (російський магазин учеток). Зауважте, що облікові записи на hotmail/outlook.com коштують по 10$ за тисячу, а GMail — вже на порядок дорожче. Коли ми тільки почали, учеткі на GMail коштували по 25$ за 1000 штук. І нам вдалося збільшити ціну в 4 рази. Далі покращувати показники вже важко, так як всі великі веб сайти використовують перевірку номера телефону, щоб виключати хибно позитивні реєстрації, і при поточному рівні цін стає вигідним купувати SIM карти великими партіями.
Щоб боротися з масовими реєстраціями використовується велика кількість магії. Наприклад, я створив систему, яка генерує випадковим чином зашифрований JavaScript, який протистоїть спробам зворотного інженеринг. Цей скрипт вміє визначати програми автоматичної реєстрації і викошує їх [1].

Як все це вплине наскрізне шифрування?
З моїх оповідань вище можна зробити наступні висновки:
  • Великі обсяги даних дійсно важливі як для блокування спаму, так і для визначення гарних листів.
  • Швидкість реакції системи важлива. Багато битви зі спамерами зводилися до випробувань «хто швидше». Якщо твоя репутація визначається за 3 хвилини, то тебе обігнали.
  • Важливо патрулювати своїх користувачів. Не можна обчислювати репутації якщо немає довіри користувальницьким дій. При цьому створюється теоретично парадоксальна ситуація: безкоштовні акаунти все одно коштують грошей (якщо вам потрібно їх велика кількість).
Перша проблема з E2E криптографією полягає в тому, що база репутацій вимагає даних всі листів. Ми можемо уявити собі поштовий клієнт, який розшифровує і аналізує лист, а потім відправляє звіт «хороше/погане» в якесь гіпотетичне центральне сховище. Але в підсумку це центральне сховище буде вивчати не тільки інформацію про те, з ким ви спілкуєтеся, але і посилання в листах. Це дуже цінна інформація. Чим більше факторів доводиться аналізувати, тим більш гостро ця проблема.
Друга проблема — якщо центральне сховище не може прочитати ваші листи, то воно не може бути впевнена в правдивості ваших звітів. У разі незашифрованих листів такої проблеми не варто, тому що спам фільтр сам дістає потрібну інформацію з листів. Якщо спамери захочуть обіграти систему, їм все одно доведеться відправляти реальні листи самим собі, що призводить до зростання вартості. У світі, де спам фільтри не можу читати листи, спамери можу вільно відправляти цілком вигадані звіти про «хороших листах». Все ще гірше, адже спамери можу почати змагатися і відправляти помилкові негативні звіти. Щось подібне ми спостерігали з нашою системою AdWords.
Третя проблема полягає в тому, що спам фільтри сильно покладаються на безпеку через неясність (пер.: — та сама «security through obscurity»), тому що вона добре працює. Частина використовуваних при аналізі факторів широко відома (наприклад IP-адреса відправника, посилання), але існує безліч інших, покриті таємницею. Якщо логіка фільтрації буде перенесена на клієнтів, то спамери зможуть побачити, що саме їм потрібно випадково, щоб заплутати систему наскрізний репутації.
Можливо згадані дві проблеми вдасться вирішити з допомогою довірених обчислень (Trusted Computing). З їх допомогою можна запускати зашифровані програми на особистих даних і залізо зможе «довести» центрального серверу, що програма дійсно виконувалася. Але складно буде поєднати безпеку через неясність і наскрізне шифрування — якщо ваш лист проходить через чорний ящик, цей ящик теоретично може вкрасти вміст листа. Вам доведеться покладатися на щось, що буде обчислювати секретні критерії на основі ваших повідомлень. Тоді чому б просто не довіритися GMail вже сьогодні?
Четверта проблема: анонімність і спам фільтри погано поєднуються. По суті необхідно відрізати спам на корені в точці відправлення листа. Знищення облікових записів — це фундаментальний інструмент боротьби зі спамом. Всі основні веб поштовики і соціальні сервіси змушують користувачів пройти перевірку номера телефону якщо фільтр безпеки заб'є тривогу. Зазвичай надсилається випадковий код в SMS-повідомленні, або відбувається виклик по телефону, щоб перевірити реальність користувача. Такий підхід працює, тому що номери телефонів коштують грошей, і майже у всіх нас є як мінімум один номер. Але в багатьох країнах заборонено мати анонімний номер телефону, і оператори змушені перевіряти документи, що посвідчують особу перед продажем SIM карти. Той факт, що вас можуть «пробити по базі» абсолютно безкарно (пер.: — є такий юридичний термін «plausible deniability»), означає, що, навіть якщо при реєстрації ви не передаєте свої особисті дані, уряд може змусити вас відкрити своє місцеположення та/або особистість в будь-який час. Для цього не потрібно робити нічого особливого. Якщо вони можуть перехопити ваш пароль можуть викликати підозру у системи безпеки сайту, дочекатися коли користувач введе номер телефону, і витягти всі потрібні метадані (я ніколи не стикався з такими ситуаціями, але теоретично це можливо).
І остання проблема: спам фільтри вимогливі до ресурсів CPU і дискового сховища. Багато користувачів сьогодні працюють з поштою винятково через мобільні телефони. Ресурси смартфонів обмежені, і чим сильніше їх навантажити, тим швидше сяде батарея. На те, щоб просто включити радіомодуль і викачати повідомлення, йде деякий заряд батареї. Навіть якщо спробувати запустити на телефоні застарілі способи боротьби зі спамом з 90-х, телефон швидше за все буде приречений. Його може врятувати тільки якийсь революційний прорив у технологіях акумуляторів.
У підсумку, я не бачу реалістичного способу повернутися до фільтрації спаму цілком на стороні клієнта.

Що буде якщо всі перейдуть від email до інших систем обміну повідомленнями?
Загалом, SMS спам — це хороший приклад. Його не багато, тому що телефонні компанії виступають в ролі спам фільтрів. А ще уряд намагається брати участь, вводячи покарання за SMS спам, щоб віднадити майбутніх порушників. Так сказати, відправити потенційним злочинцям меседж. Спам в електронних листах пережив бум задовго до того, як уряд почав на нього реагувати. Тому цікаво спостерігати різницю в підходах цих двох систем.
Не схоже, щоб додатка зразок WhatsApp страждали від спаму. Але я думаю, що це скоріше демонстрація хорошої роботи їх відділу боротьби зі спамом/порушеннями. Вони в найбільш вигідній позиції. В мільйон разів легше боротися, коли є єдиний центр, з якого можна контролювати і змінювати що завгодно в будь-який момент. Ви можете вбивати облікові записи та контролювати потік реєстрацій. Без єдиного центру управління доводиться покладатися тільки на фільтрацію вхідних і мовчки страждати, якщо спамери знайду як обійти ваш захист. До того ж ви зазвичай просто не контролюєте клієнтів.

Загальні думки і висновки
Якщо поглянути на те, чим була виграна війна зі спамерами, то ми побачимо неймовірні зусилля, докладені протягом декількох років. На думку спадає аналогія з війною: було дві протиборчі сторони і безліч цікавих боїв, сутичок тактик і озброєння. Я б міг продовжувати труїти байки цілий день, але тоді це лист сильно розтягнеться.
Спробувати переграти цю війну в контексті тотального шифрування буде схоже на спробу воювати з зав'язаними очима і в наручниках. Вас розчавлять за хвилину.
Тому я думаю, що нам потрібен принципово новий підхід. Перша ідея, яка приходить на розум, це ввести плату за відправку листів. Але це хренове ідея з кількох причин: найочевидніше, безкоштовні глобальні комунікації — це найбільше досягнення людства, порівнянне з доставкою людини на місяць. Людина з сільських районів Китаю може надіслати мені лист протягом декількох секунд, безкоштовно, а я можу відповісти, безкоштовно! Задумайтеся на секунду.
Інша причина провалу — плата за листи стирає різницю між спамерами і чесними масовими розсилками. Багато компанії розсилають великі обсяги листів, яких чекають користувачі. Візьмемо, наприклад, Facebook. Якщо б кожен лист коштувало грошей, деякі чесні і корисні компанії не змогли б працювати.
Ще один підхід — вносити певний грошовий депозит. Існує протокол, який дозволяє пожертвувати частину биткоинов в якості комісії майнер. Тобто можна довести, що ти витратив гроші, підписавши виклик скриньки, який зробив те ж саме. Це дозволить дуже точно легалізувати анонімні ящики, з яких потім можна відправляти скільки завгодно листів. Є спосіб обчислювати репутації. У звітах «спам/не спам» можна зберігати тільки докази відправлення. І на основі цих звітів потім визначати значення репутацій. Листи, відправник яких ще не має репутації, можна притримати, поки їх не перевірять волонтери. Інший варіант — дозволити перехресне підпис. Учасник з хорошою репутацією може тимчасово засвідчити лист, щоб підняти його репутацію і викликати у відповідь зростання репутації. Такий довірений учасник може перевіряти достовірність відправника будь-яким способом.
З цієї причини я цікавлюся проектом на стики Bitcoin і E2E повідомлень. По-моєму це фундаментально пов'язані речі.
Підсумуємо. Я відомий у співтоваристві Bitcoin за свої радикальні ідеї. Наприклад, я припустив, що існує зв'язок між приватністю і лиходійною поведінкою. Багато людей в криптографічних спільнотах пристрасно відкидають цю ідею і (на жаль) людини, ризикнув її висловити. Сподіваюся, що мої історії, описані вище, показують, як я прийшов до таких висновків. Я думаю, що прагнення до ідеальної приватності без урахування зловживань такий приватністю — це поганий шлях для будь-якої системи, яка бажає досягти широкого поширення.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.