Xpoint
   [напомнить пароль]

Защита от роботов при регистрации с помощью картинки

[горячая]
2004-07-22 11:06:25 [обр] coverless [досье]

Кто-нибудь делал подобную штуку ? Где чего прочитать? Может кто-то подходами поделится или методами. Разработка ведется на Java.

Интересует не архитектурное решение, а правильное зашумление картинки.

спустя 1 час 43 минуты [обр] Андрей Новиков [досье]
На всякий случай, а ты про обход данной защиты с помощью порно-сайта знаешь?
спустя 12 минут [обр] coverless [досье]
Андрей Новиков[досье] Да, знаю, конечно.
спустя 42 секунды [обр] coverless [досье]
Андрей Новиков[досье] У меня конкретная задача - сгенерить картинку.
спустя 38 минут [обр] Даниил Иванов [досье]
Андрей Новиков[досье]
А что это за метод обхода защиты с помощью порно-сайта?
спустя 4 минуты [обр] Андрей Новиков [досье]

coverless[досье], тогда переношу тему.

Даниил Иванов[досье], делаем порносайтеночек, где на первой странице пишем: "Хочешь посмотреть на Бритни/Курникрву/девушку-вашей-мечты голой? Набири номер на картинке". А картинка-то с взламываемого сайта. Вуаля.

спустя 25 секунд [обр] Андрей Новиков [досье]
М Перенесено из форума "Интернет::Безопасность"
спустя 8 минут [обр] Михаил Кюршин aka ya-ya [досье]
собственно, мне однажды надо было это делать и я не стал искать готовое решение, а сделал всё сам, довольно быстро (на PHP, там с картинками возни немного). Алгоритм я использовал такой:
генерим случайную строку определённой длинны, чтобы влезало на картинку, разбиваем эту строку на символы, каждый сивол добавляем на картинку, при этом для каждого символа берём случайный размер шрифта из заданного диапазона и смешение в случайном направлении из 4 (вверх, вниз, влево, вправо) на случайное число пикселей, но с учётом конечно того, чтобы буквы и цифры оставались читабельными при любом размере шрифта, вот, собственно, и всё. Никаких трудностей и подводных каменей в идеологической части этого вопроса, на мой взгляд, нет.
спустя 9 минут [обр] Сергей Круглов [досье]
И любой "файнридер" читает эту картинку на счет раз...
Тут хорошо шум добавлять, символы искривлять
спустя 5 минут [обр] Евгений Бондарев aka Eugene Bond [досье]
Хм..
генерировать картинку ImageMagick-ом (писать на разных подложках разными шрифтами в разных направлениях + один из нескольких эфектов типа http://imagemagick.org/images/examples.jpg)?
спустя 21 минуту [обр] coverless [досье]
2Евгений Бондарев aka Eugene Bond[досье] А там апи надо еще запускать ?
спустя 11 минут [обр] Евгений Бондарев aka Eugene Bond [досье]
coverless[досье]
http://imagemagick.org/www/apis.html + всегда работающая командная строка (предпочитаю из нее работать)
спустя 2 минуты [обр] Михаил Кюршин aka ya-ya [досье]
Сергей Круглов[досье] например? было бы интересно посмотреть
спустя 14 минут [обр] coverless [досье]
Евгений Бондарев aka Eugene Bond[досье] А насколько этот API тяжелый, ресурсоемкий, глючный, далее по вкусу ? Если Вы, конечно, им все время пользуетесь.
спустя 9 минут [обр] Евгений Бондарев aka Eugene Bond [досье]

Я им пользуюсь для создания превьюшек/подписей на фотографиях. Еще когда-то рамочки накладывали. Работает однозначно качественнее и быстрее, чем GD в PHP. Сам по себе ImageMagick достаточно распространен и, что показательно, у многих хостеров он уже стоит.

Глюков я не встречал, возможно по причине достаточно простых задач.

спустя 38 минут [обр] Алексей В. Иванов [досье]

Евгений Бондарев aka Eugene Bond[досье], ну откуда такая информация?

Сам по себе ImageMagick достаточно распространен и, что показательно, у многих хостеров он уже стоит.

Я знаю, что как-раз наоборот

спустя 7 часов [обр] Сергей Чернышев [досье]
была кажись специальная либо как раз для этого - проскакивала как-то в ЖЖ (то ли ru_root то ли ru_programming то ли еще где рядом) - поищите на SF.NET
спустя 11 часов [обр] Евгений Бондарев aka Eugene Bond [досье]

Алексей В. Иванов[досье]

ну откуда такая информация?

из locate

спустя 4 месяца 21 день [обр] 30-ый [досье]

Я вот наверное глупость спрошу, но все таки. На сколько велика вероятность использования системы распознования символов для взлома проекта? На сколько вообще популярна применение столь тяжелой техники для взлома сайтов? И если популярно, то в каких отраслях?

Если же нет, то мне кажется можно вообще ограничится одной аккуратной буквой на белом фоне.

спустя 4 часа 15 минут [обр] Дмитрий Котеров [досье]
Мне кажется, все зависит от проекта. Например, какой-нибудь yandex.mail было много попыток сломать, а персональную страничку Васи Пупкина - ни одной. Соответственно, надо смотреть по популярности: где-то достаточно одной буквы, а где-то - вообще можно без букв, просто на JavaScript сделать автозаполнение hidden-поля на основе DOM и CSS.
спустя 1 день [обр] Сергей Чернышев [досье]
30-ый[досье]
OCR достаточно распространенная технология чтобы быть такой уж тяжелой техникой.
спустя 6 часов [обр] Дмитрий Котеров [досье]
Ага. Вон и в первой Матрице Нео искал Морфеуса по интернету именно OCR-ом.
спустя 13 часов [обр] Эмиль Бекиров aka superbizon [досье]

2All
Кто-нибудь использовал OCR под WEB?
Если ли какие-нибудь модули под WEB для уже готовых OCR?
(Например для http://claraocr.org , http://jocr.sourceforge.net)

P.S. Можно высказаться в данной теме - http://xpoint.ru/forums/thread/28815.xhtml

спустя 1 месяц 14 дней [обр] Robinzon [досье]
Меня всегда удивляло - а почему везде надо цифры вводить почему не что-то еще? Например интегральчик написать, придел по Лапиталю прикинуть? =)
(в этом козинаке, мне кажеться, есть и здравое зерно...)
спустя 25 минут [обр] Алексей Севрюков [досье]
Robinzon[досье] Потому что интегральчик я не посчитаю, а что такое предел по Лапиталю - я просто не знаю. Да и смысла не вижу так заморачиваться.
спустя 1 час 52 минуты [обр] Евгений Бондарев aka Eugene Bond [досье]
Скорее элементарная логическая задача. Или лингвистическая..
спустя 15 минут [обр] Алексей Севрюков [досье]
Евгений Бондарев aka Eugene Bond[досье] Вот это логичнее уже.
спустя 1 час 13 минут [обр] Евгений Бондарев aka Eugene Bond [досье]
Алексей Севрюков[досье]
Или лингвистичнее ;-)
спустя 3 часа 5 минут [обр] Сергей Круглов [досье]
Распознавание образов - это типичнейшая задача, которую человек делает не осознавая как, а компьютер до сих пор нормально научить не могут. Поэтому "введите видимую строку" - самое оно. Что еще? Показать портреть Гоголя и спросить "кто это"?
спустя 6 часов [обр] Сергей Чернышев [досье]
все это одинково ломается через man-in-the-middle когда хакер просто эту картинку показывает другому человеку и просит вписать ответ - такое практиковалось на бесплатных порносайтах - народу много - за каждую картинку народ вводит ответ, а ответ идит через скрипт машине где такая регистрация просится.
спустя 1 час 52 минуты [обр] Владимир Палант [досье]
спустя 5 часов [обр] Сергей Чернышев [досье]
Владимир Палант[досье]
Ну дык я давно здесь уже об этом в другой теме писал.
спустя 5 часов [обр] Сергей Круглов [досье]

Ну, порносайт, я думаю, можно отсечь анализом реферера и ремот-хоста.

Если картинка вставляется напрямую - будет левый реферер
Если качается сервером, подделывающим реферер - будет подозрительный remote_host

спустя 3 часа 50 минут [обр] Владимир Палант [досье]
Сервер может качать через разные прокси, картинка много не весит. Я когда-то экспериментировал со списками прокси-серверов из интернета — работают около 50%, а списки весьма и весьма большие.
спустя 5 часов [обр] Сергей Чернышев [досье]
Сергей Круглов[досье]
Ну, скрипт может картинку не на прямую давать другому человеку, я записывая на диск предварительно и тогда никакие ниточки не ведут от оригинального сайта к порно сайту.
спустя 35 минут [обр] Владимир Палант [досье]
Сергей Чернышев[досье]
Если качается сервером, подделывающим реферер - будет подозрительный remote_host
спустя 7 часов [обр] Сергей Чернышев [досье]
Владимир Палант[досье]
Чем он будет подозрительный? IP-адрес у него неинтернетовский что-ли?
спустя 6 часов [обр] Сергей Круглов [досье]
Мы этот адрес забаним после десятка попыток и все.
спустя 17 часов [обр] Сергей Чернышев [досье]
Сергей Круглов[досье]
Тоесть много регистраций с одного адреса не пройдут? А как же тогда прокси всякие?
спустя 15 часов [обр] Сергей Круглов [досье]
Сергей Чернышев[досье]
Если прокся анонимная (сами ее и проверяем на "проксевость", коннектясь к 80, 8080, 3128 etc) - баним.
спустя 9 часов [обр] Сергей Чернышев [досье]
Сергей Круглов[досье]
А если этот комп ведет себя как легитимная прокся посылая запросы с Via и пр.? Думаю, что на любой ... найдется ...
спустя 8 дней [обр] Robinzon [досье]

to All

Что еще? Показать портреть Гоголя и спросить "кто это"?

Не, мужики, представляете себе дядю, который лазает по порносайту и вдруг... - портерт Гоголя и вопрос "Кто это?"! Это ведь к импотенции приведет, ну и как побочный эффект - резкий подъем в научно-культурной сфере.

спустя 2 минуты [обр] Андрей Новиков [досье]
Почему вдруг? Перед заходом, "проверка на взрослость" типа.
спустя 22 минуты [обр] Евгений Бондарев aka Eugene Bond [досье]

Robinzon[досье]

Не, мужики, представляете себе дядю, который лазает по порносайту и вдруг... - портерт Гоголя и вопрос "Кто это?"!

и вопрос "кто здесь?!?!" :-)))

спустя 3 часа 25 минут [обр] Дмитрий Котеров [досье]
Гоголи плохи тем, что гоголей сравнительно мало, а цифр можно нагенерить сколько угодно.
спустя 12 дней [обр] Алексей Фёдоров [досье]

А мы вручную нарисовали 100 картинок в Photoshop... :) И очень красиво получилось... :) Разный фон, стиль шрифта, искривления и шумы. У каждой картинки номер. Соответствие «номер – картинка» в любом случае может дать только человек. Картинки выводятся при запросе скрипта «неизвестно откуда» т.к. скрипт возвращает браузеру содержимое картинки в бинарном виде, при этом проверяя правильность реферера. Перебирать 100 картинок непосредственно на странице, где они выводятся (при том, что при случайном выводе они повторяются) утомительно для любого человека, к тому же сразу вызывает подозрение, судя по логам.

По-моему генерация картинок налету ничего не дает, лишь только позволяет найти закономерности в их внешнем виде (потому что они есть). Иногда проще делать все руками. :) Надо будет, еще 100 картинок со словами нарисуем...

спустя 9 минут [обр] Алексей Фёдоров [досье]
Забыл сказать, что на картинках у нас были слова, а не числа. Слова причем сознательно позитивные, типа "soul", "smile", "joy" и пр. Дизайнеры сказали, что людям это приятно.
спустя 27 минут [обр] Сергей Круглов [досье]
Генерация картинок лучше тем, что они не повторяются и нельзя составить базу для тривиального распознавания. Если кому-то надо будет, он и перед базой из 10000 вручную нарисованных картинок не остановится, если поймет, что картинок конечное и небольшое количество.
спустя 7 часов [обр] Алексей В. Иванов [досье]
Согласен с Сергеем[досье]. Если кому-то не лень 1000 нарисовать, то распознать их, если цель соответствующую поставить для себя, не будет проблемой.
Вы же говорите, если "найдется такой умник", то ради одного мы перерисуем весь свой креатив. Вот удовольствие-то рисовать тысяцу-другую картинок. Вам платят за такой креатив?
спустя 9 часов [обр] Алексей Фёдоров [досье]

Назовите мне хотя бы одну систему, где было бы целесообразно перебирать вручную более 100 картинок (при этом, обнаруживая себя и до конца не быть уверенным, что нашел полную группу) и вводить соответствия «номер картинки – слово на картинке»? Автоматическая генерация картинок по определению имеет законы, которые можно выявить. Конечно можно, случайным образом выбирать алгоритмы, но ведь алгоритмы нужно тоже вручную писать... Ручное рисование невозможно описать алгоритмически, тем более, если рисовали разные люди и подходили к вопросу творчески – каждая картинка уникальна и ассоциативна (для человека).

Короче говоря, все это вопрос целесообразности. Мой друг своей программой без проблем распознает автоматически генерируемые цифры при регистрации на http://www.mail.ru/ (это его дипломная работа), именно потому, что там легко выявить законы. Кроме того, если цифры не нарисованы, а именно «наляпаны» по готовым шаблонам с добавлением шумов, нейрокомпьютерные пакеты для ПК легко сделают такую картинку.

спустя 12 минут [обр] Алексей В. Иванов [досье]
Назовите мне хотя бы одну систему, где было бы целесообразно перебирать вручную более 100 картинок
Любая система, которую защищают (Отправка СМС, регистрация в почтовиках, ICQ и пр.)
То, что Вы руками рисовали 1000 картинок говорит о том, что вы это делали за зря? Не думаю.
спустя 2 часа 25 минут [обр] Дмитрий Котеров [досье]
Интересно, это в каком же институте такую бесполезную дипломную работу дают... ведь стоит авторам mail.ru поменять алгоритм генерации, как диплом летит к черту.
спустя 55 минут [обр] Сергей Чернышев [досье]
Алексей Фёдоров[досье]
А вы не проверяли, у всех этих картинок разный размер? Подозреваю, что просто по размеру контента можно будет определить какой из файлов какой. Ну, а базу всех картинок перебрать - не проблема, я думаю.
спустя 37 минут [обр] Сергей Круглов [досье]
Что значит "обнаруживая себя"? Ну засветит "хаксор" десяток диалапных айпишников или даже лучше анонимных проксей - и фиг с ними - ведь база-то в кармане... И пока вы новые картинки нарисуете, уже всё украли...
спустя 48 минут [обр] Алексей Фёдоров [досье]

Дмитрий Котеров[досье]
В нашем университете студенты сами себе придумывают темы дипломных работ, благо фантазии хватат. Тем более, дипломная работа не заключалась в том, чтобы "распознавать картинки при регистрации на майл.ру". Программа была "Распознование образов" и майл.ру она сделала побочно, мимоходом. Просто ради интереса. Давайте не переходить на личности и университеты. :)

Сергей Чернышев[досье]
Картинки передаются бинарно только в запрошенную страницу у которой реферер правильный. Что-то типа:

if (&RefererGood()) {
    print header("image/$ImageType");
    open(F, $ImageFileName);
        binmode F;
        print while <F>;
    close(F)
} else {
    #Выводим BMP файл на 2 Мб с изображением большой фиги.
}

Брать картинки и измерять их злоумышленник сможет только путём подмены реферера + учтя при этом, что SessionKey должен быть в таблице авторизации и вне таймаута. Что не так-то просто, хотя решаемо... но тогда и измерять ничего не надо - закачал и все.

Сергей Круглов[досье]
Десятком не обойдешься - простая теория вероятностей. Может еще про групповые атаки заговорим с использованием мэйнфреймов? :)

спустя 1 час 1 минуту [обр] Алексей Севрюков [досье]
Алексей Фёдоров[досье] SessionKey получается абослютно элементарно, что через куки, что через ссылки. А подделку реферера вообще обсуждать не стоит, ибо она ломает самым простым добавлением строчки в заголовок. И тем более я полагаю что человек который может пытаться "сломать" это дело, явно знает что такое сессия и уж тем более что такое реферер. И потом, реферер штука не совсем точная, так что ж теперь, отказываться от части посетителей сайта?
спустя 14 минут [обр] Сергей Круглов [досье]
Десятком не обойдешься - простая теория вероятностей.

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

Может еще про групповые атаки заговорим с использованием мэйнфреймов?

Причем тут мэйнфреймы? Если только "мэйнфрейм" кучу ip-адресов имеет...

спустя 5 минут [обр] Сергей Круглов [досье]

Вообще - раз мы делаем человекочитаемую картинку, то мы уже поняли, что через ограничение попыток регистрации с 1 IP-шника мы задачу решить не можем. Мы согласны, что хакера это не останавливает и придумываем дополнительный барьер в виде картинки, верно?

Далее, если множество картинок позволяет составить его базу скромных размеров, то представим такую самообучающуюся систему:

1 Робот сравнивает картинку с имеющейся базой, если такая есть - все хорошо, "шлем спам", если картинки нету - зовем девочку-секретаршу "что за слово" - и добавляем в базу.
2 Goto 1

спустя 12 часов [обр] Алексей Фёдоров [досье]

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

Вспомните методологию xprogramming - "не думайте о частных проблемах пока их нет". Тут такой же подход. Мы нарисовали 100 картинок (НЕ тысячу!) и нас пока ни кто даже не пытался ломать (не смотря на все доводы, о попытках взлома мы бы узнали).

спустя 15 часов [обр] Сергей Чернышев [досье]
Алексей Фёдоров[досье]
Думаю, что ваш сайт ломать будет не ваша аудитория, а хакерская аудитория - им не важно до чего там ваша аудитория додумается а до чего нет.
спустя 9 дней [обр] Сергей Сирик [досье]
спустя 17 дней [обр] Прохожий [досье]

Распознавать картинки типа регистрации на mail.ru - плевое дело. Если говорить о цифровых кодах, то это даже на диплом не тянет. Максимум - пара недель программирования. И при смене алгоритма рисования, алгоритм распознавания не претерпит изменений. Абсолютно. И даже дополнительной настройки может не потребоваться, если сразу продумать хорошо.
Задача усложняется если:

  1. Использовать алфавит
  2. Использовать существенную смену цвета внутри символа. Можно, например, накладывать полигоны XOR'ом
  3. Использовать вместе с поворотом (то, что уже есть на мэйл.ру) горизонтальное растягивание / вертикальное сжатие.

И если третий пункт требует всего лишь дополнительной недели программирования, то первые 2 (если они еще и вместе) могут убить энтузиазм любого самоучки. Или терпение руководства :)

Хочу еще сказать, что НЕ влияет (или очень слабо влияет) на сложность распознавания, хотя очень часто используется:

  1. Использование разных шрифтов внутри одной картинки (если только шрифты не отличаются кардинально). Например, не имеет смысл комбинировать таймс и ариал.
  2. Использование разных цветов символов
  3. Использование всяких цветных линий - прямоугольников, кругов и т.п.
  4. Использование шума (типа мэйл.ру)
спустя 16 часов [обр] Андрей Анатольич [досье]

Все это фигня - разные шумы, искривления и прочее. Есть более прикольный способ (надеюсь далее я понятно изложу :) ).
Можно делать так: выдавать картинку + вопрос.
Допустим есть картинка, на которой 3 авотомобиля нарисовано. Вопрос - каким цветом автомобиль посередине. Или другой вопрос на ту же самую картинку - сколько автомобилей изображено на картинке. таким образом, к одной картинке можно придумать кучу вопросов. Скриптом это дело не распознать.

Осталось только продумать реализацию.

спустя 8 минут [обр] Сергей Сирик [досье]
Боюсь, что алгоритм генерации таких картинок с вопросами отобъет у начальства охоту еще больше. Альтернатива живого сторожа, который будет отстреливать левые регистрации дешевле будет :) На неоднозначные вопросы люди могут давать неоднозначные ответы ...
спустя 1 час 44 минуты [обр] Андрей Анатольич [досье]
Сергей Сирик[досье] Ну просто нужно задавать однозначные ответы. Наверно можно сделать и выбор вариантов.
Это конечно сложнее, чем зашумленные картинки, зато роботам не по зубам.
Тему можно развить.
спустя 6 минут [обр] Андрей Анатольич [досье]

Андрей Анатольич[досье] Да и на картинке можно делать варианты ответов, кстати. Робот же не может понять, что сказано в вопросе. А человеку будет понятно.

На картинке изображено 3 автомобиля и под каждым надпись, какого он цвета (красный, белый, черный соответственно).

Вопрос: Какой цвет у автомобиля, расположенного посередине?

Человек смотрит на картинку, а там уже подпись есть (белый). Вводит это слово в поле и - вуаля.

По-идее так то можно сделать.

спустя 1 день 4 часа [обр] Дмитрий Попов [досье]
Андрей Анатольич[досье]
Хм... и чем это кардинально отличается от простого слова?
Тогда уж можно просто выдавать там картинку, на которой написано три слова, и спрашивать какое из них по середине. Машину то зачем рисовать? =)
спустя 12 часов [обр] Андрей Анатольич [досье]

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

Ну, примерно так я вижу все это.

спустя 6 дней [обр] Иван Неретин [досье]
Здесь вот
http://bolk.exler.ru/2004.10.28.html
человек обозревает методы защиты от роботов. Из того, что здесь ещё не упоминали, мне наиболее нравится идея писать случайные слова в ASCII-графике.
спустя 29 дней [обр] Даниэль Алиевский [досье]

А можно вопрос по поводу? Я не очень долго сие обдумывал, так что прошу прощения, если ответ банален.

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

Начиная с простейшего: большинство роботов не содержат полноценной поддержки JavaScript. Пусть JavaScript сообщает серверу о своей активности. Общение с сервером можно закодировать двумя парами закрытых и открытых RSA-ключей, чтобы быть уверенными, что они общаются именно друг с другом. Взлом такого JavaScript можно сделать практически бессмысленным, если генерировать всякий раз новые пары ключей, действующие, скажем, лишь одну минуту. Его придется именно исполнять: перехватить поток информации к серверу будет недостаточно.

Если же робот включает в себя более или менее полноценный броузер, поддерживающий все, к чему JavaScript мог бы апеллировать (Java, Flash, всякие стандартные ActiveX), то надо сделать JavaScript интерактивным: скажем, поручить JavaScript-у ввод логина и пароля. Тогда задача сводится к тому, чтобы выяснить: работает ли в данный момент живой пользователь или робот, управляющий исполнением скрипта "извне". Но это - тоже хорошо изученная задача из области противодействия отладчикам. Вроде бы изобретать велосипед не надо. Хотя я не знаю, решается ли эта задача стопроцентно и в общем виде, но есть способы изрядно затруднить хакеру жизнь. Насколько легко, скажем, единообразно перехватить вызовы метода prompt, чтобы имитировать ввод пользователем данных? А если и можно, то остается Java и Flash, с помощью которых тоже можно пообщаться с пользователем. Если взять Java: насколько оправдана переделка Java-машины с целью проконтролировать диалог с пользователем?

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

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

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

Я где-то глубоко неправ?

спустя 13 часов [обр] Alexander O [досье]
Даниэль Алиевский[досье] вся защита летит к черту если робот управляет IE. Там и js и flash и java — все отработают как для человека.
спустя 13 часов [обр] Даниэль Алиевский [досье]

Насколько он сможет им "управить"? Собственно, я уже сам вижу: управлять надо не на уровне IE, а уровне OS: сделать "снимок экрана", распознать, что там написано, и инициировать нижнеуровневые клавиатурные или "мышиные" события OS, которые приводят к выбору нужного окна в броузере и набору текста. Не знаю, как насчет JavaScript/Flash, но для Java-апплета это, похоже, практически единственный способ заставить самописную Java-компоненту, обеспечивающую ввод и шифровку пароля, получить нужные данные без участия человека.

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

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

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

спустя 7 часов [обр] Alexander O [досье]

Даниэль Алиевский[досье] для конкретного сайта, т.е. не универсальная, разработка очень даже реальна. И OS и IE предоставляют для этого всю свою мощь через API.

Но против роботов есть простая и надежная защита — при регистрации просить номер кредитки :)

спустя 21 час [обр] 30-ый [досье]
Сам писал подобного робота. Управлять IE проще простого. Не сложнее чем лазить по дереву DOM из Java-скрипта. Проблема только в переодических зависаниях IE в самые неудачные моменты (таки без человека не обойтись :-), но посещения этого робота оператором раз в 2 часа вполне решала эту проблему...
спустя 43 минуты [обр] Владимир Палант [досье]
Думаю, что написать такого робота в виде расширения Mozilla как минимум не сложнее. Есть полный доступ к DOM, поэтому генерировать события так, чтобы всё выглядело как при управлении человеком, несложно.
спустя 1 день [обр] Даниэль Алиевский [досье]

30-ый[досье]
Владимир Палант[досье]
Вот и интересно. Неужели действительно нет ничего сложного, повторюсь, заставить самописную Java-компоненту, обеспечивающую ввод и шифровку пароля, получить нужные данные без участия человека?

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

спустя 35 минут [обр] Alexander O [досье]
Даниэль Алиевский[досье] ввести текст автоматически в апплет - очень просто. Отредактировать имеющийся уже в строке ввода — проблематично, если задача редактирования зависит от текста. Например, если, апплет скажет: удали второе слово в этой строке и нажми enter.
спустя 16 часов [обр] 30-ый [досье]
Все эти разговоры про апплет или флеш не имеют никакого смысла. Требовать при регистрации, например на форуме, наличия Java-машины это все равно, что просить прислать факсом копию паспорта, "учитывая, хотя бы, постоянно обновляющиеся Java-машины от Sun"...
спустя 39 минут [обр] Даниэль Алиевский [досье]

30-ый[досье] А что, некоторые несознательные компании и просят иногда прислать факсом копию паспорта :-) Такие, как Network Solutions :-)

Все ведь от форума и ситуации зависит. Все эти проблемы с JVM и наличием Flash - от бедности и войн производителей, это не навсегда. Уже сейчас известных мне американцев совершенно не волнует объем перекачек в пределах 10-20 MB. Ибо ничего не стоит, а время скачки - в пределах минуты. (Меня в Екатеринбурге тоже не волнует, но если речь о бизнесе - ибо при тех же скоростях все-таки это не бесплатно.) Соответственно, если для регистрации придется автоматически загрузить 20 MB JVM или гораздо меньший MacroMedia - абсолютно ничего страшного, это несравненно менее проблематично для занятого "чайника"-бизнесмена на хорошей линии, чем, к примеру, разглядывать гнусную картинку с буквами и вообще играть в игры "отличи меня от робота".

Картинки в качестве критерия мне активно не нравятся, о чем я уже писал. Вот и интересны альтернативные, менее неприятные для человека и более надежные схемы.

спустя 1 час 25 минут [обр] Владимир Палант [досье]
Даниэль Алиевский[досье]
Главное то, что от Java надёжность на самом деле не повысится. Апплетом тоже можно управлять из JavaScript'а. Конечно, если такой апплет будет использоваться только на одном сайте, то высока вероятность, что никому не захочется с ним разбираться. Но на универсальность это решение претендовать не может.
спустя 2 часа 30 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]
Что касается того, что, дескать, в будущих версиях ОС запретят делать "эмуляцию аппаратных (да и любых других) событий для некоторых приложений".

Этого определенно не случится. Ибо сделать, например, USB клавиатуру, которая будет легко управляться из приложения достаточно просто.

спустя 5 часов [обр] Даниэль Алиевский [досье]

Пока возражения, на мой вкус, чересчур общего характера.

Владимир Палант[досье] Все-таки, как конкретно следует управлять апплетом из JavaScript (или более сложного робота, основанного на MSIE/Mozilla), чтобы заставить апплет "подумать", что произошла последовательность событий типа KeyEvent, семантически означающая ввод слова "ВасяПупкин"? (Каковая последовательность событий обрабатывается моим KeyListener и запоминается в качестве введенного пароля.) Просветите, пожалуйста. Разумеется, подразумевается, что программист не столь наивен, чтобы сделать компоненту, отвечающую за анализ событий KeyEvent, доступной через public-методы.

Александр Самойлов[досье]

Ибо сделать, например, USB клавиатуру, которая будет легко управляться из приложения достаточно просто.

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

спустя 4 минуты [обр] Сергей Круглов [досье]
Эмулятор компьютера (см/ VMware, VirtualPC) с виртуальными мышкой и клавой.
И хоть обзащищайся.
спустя 8 минут [обр] Даниэль Алиевский [досье]
Сергей Круглов[досье] Ну и? Прекрасная вещь, конечно, а делать-то с ним что? Я уже писал про такую атаку: "управлять надо не на уровне IE, а уровне OS..." Типа добавить к эмулятору суперинтеллектуальный анализатор изображенной на экране картинки, чтобы сделать то же, что сделал бы на его месте человек? Это посложнее, чем анализировать картинку с корявой надписью, не находите?
спустя 1 час 36 минут [обр] Алексей В. Иванов [досье]
Да причем тут эмуляторы? Не забывайте, что все в конечном итоге выливается в элементарные GET/POST запросы. Именно их подделать проще всего. Именно ими будет обмениваться приложение с сервером, будь оно хоть 1000 раз написано на Java.
спустя 11 часов [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]

Ответом может быть, скажем, анализ происхождения всякого события на уровне ОС (аппаратрое или эмулированное) и запрет любых прямо либо косвенно эмулированных событий для приложения

События от USB клавиатуры будут стопроцентно аппаратными.
Просто другая программа по USB попросит клавиатуру выдать то же событие, что и при нажатии определенной клавиши.

Алексей В. Иванов[досье]
Подделать-то их проще. А вот подделать правильно...
Представьте например такую картину.
Сервер выдает некую зашифрованную информацию.
Клиент по своему алгоритму ее дешифрует и отправляет на сервер.
Сервер проверяет на совпадение.
Без анализа способа расшифровки на клиенте, подача GET и POST запросов не помогут.

спустя 1 час 34 минуты [обр] Даниэль Алиевский [досье]

Алексей В. Иванов[досье]
Я уже вкратце написал про шифрование. Это хорошо изученная тема, и вроде бы нет смысла в нее углубляться. Классическая задача аутентификации, то бишь защиты от подделки.

Александр Самойлов[досье]
Ну зачем так узко, именно USB. Я же согласен, что "специальной аппаратурой можно сэмулировать все что угодно" - всегда можно себе представить хакера, который сидит на конце линии и имеет ресурсы собрать полностью свой компьютер со своей операционной системой. Я лишь говорю, что стандартные операционные системы могут прийти к политике, когда устройства, допускающие эмуляцию действий пользователя, не поощряются. Сейчас это никого не волнует, поэтому и возникают способы вроде управления через USB. На заре Windows это (чисто случайно) было весьма сложно - Windows не позволяла заставить стандартную AT-клавиатуру выдать аппаратное событие. Но это и не требовалось, ибо в Windows всегда можно было послать клавиатурное событие.

Я просто рискнул предположить, что если обсуждаемая здесь проблема (необходимость отличать эмуляцию событий от реальных физических событий) окажется актуальной, то через некоторое количество лет все устройства, работающие со стандартной OS, обязаны будут предоставлять протокол, позволяющий уведомить OS о реальной природе события. И все стандартные, распространенные устройства будут в этом плане "честными". А чтобы таки обмануть OS, придется разрабатывать совершенно особую, нестандартную аппаратуру - и, возможно, это будет крайне сложной операцией (например, требующей получения каких-либо ключей от официального сертификационного центра, который будет предварительно тестировать ваше устройство - а без оных ключей OS просто откажется работать с устройством). Фантазирую в эту сторону. А в сегодняшней жизни эмуляция прекрасно достигается посылкой низкоуровневых событий OS типа сообщений от мышки и клавиатуры. И, как я уже говорил, таким путем задача подделки пароля хотя и решается, но - в общем случае - по сложности это может быть гораздо более трудоемко, чем простой анализ картинки средствами OCR или аналогичными.

спустя 57 минут [обр] Алексей В. Иванов [досье]
"Ну Вы даете трам-тарарам..."
Все, что шифруется/дешифруется на клиенте очень легко сломать. Любые данные, которые исходят от клиента (пусть хоть 1000 раз зашифрованы) можно подделать. И узнать способ кодировки может быть гораздо проще, чем писать виртуальные клавиатуры и устройства чтения и распознавания с экрана :) (вот уж глупость, IMHO). Зачастую не нужно даже вникать в алгоритм шифрации — достаточно сделать copy-paste нужного кода :)
спустя 1 час 48 минут [обр] Даниэль Алиевский [досье]

Алексей В. Иванов[досье] Ну ладно, раз уж эта тема вас зацепила, повторю поподробнее. В данной ситуации, очевидно, речь должна идти о следующем. Клиентский код (неважно, на каком языке написанный) содержит встроенный в себя закрытый RSA-ключ. Введенный клиентом логин-пароль шифруется этим ключом, расшифровывается закрытым ключом на сервере. Покуда RSA окончательно не взломан, сервер может быть уверен, что данные, которые удалось расшифровать, зашифрованы известным ему "лицом" - клиентским кодом.

Да, клиентскую программу можно дезассемблировать (несмотря на меры противодействия этому, которые, как опять же известно, могут затруднить дизассемблирование до многих дней напряженной работы профессионала). Тогда и закрытый ключ, зашитый в нее, становится известным. Но толку в этом мало, так как закрытый ключ (вместе с кодом клиентской программы) может генерироваться всякий раз заново и быть действительным лишь короткий период времени. Придется писать робота, который автоматически расшифровывает полученный от сервера код клиентской программы (скажем, систему из сотни "обфускированных" Java-классов), выискивает там ключ и поскорее (пока ключ не устарел) имитирует действия этого кода без участия человека. Задача на грани неразрешимости. Ведь взломщик никогда не может быть уверен, что он уже знает все способы, к которым (в случайном порядке) прибегает сервер для запутывания кода и прятания там ключа. Робот, успешно распутавший один 10 наборов Java-классов, может сломаться на следующем - а обнаружив это, сервер зафиксирует подозрительный IP и начнет беззастенчиво обманывать робота, притворяясь, что все успешно взломано.

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

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

спустя 2 часа 58 минут [обр] Алексей В. Иванов [досье]
Вы меня извините, но это уже полный бред пошел.
спустя 7 минут [обр] Александр Самойлов [досье]
Алексей В. Иванов[досье]
А что именно бред? На мой взгляд, в области шифровки расшифровки Даниэль Алиевский[досье] все внятно излагает, что непонятного?
спустя 3 минуты [обр] Алексей В. Иванов [досье]
Я, надеюсь, всем понятно, что шифровкой невозможно защитить данные? Ложные данные могут точно также подписываться и отправляться. Нахождение ключа — задача даже более простая, чем определение алгоритма.
спустя 5 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]
Я тут USB не узком смысле, а для простоты.
Ведь так или иначе аппаратура для эмуляции должна знать, какой сигнал ей надо посылать.
А как она об этом узнает, через USB, локальную сеть, Интернет или еще как не суть важно.

Что кстати, мешает программировать уже человека, на тот случай если все клавиатуры станут уведомлять ОС по специальному зашифрованному протоколу об истинной природе события.

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

Но это шутка, конечно, насчет программирования человека. Хотя в каждой шутке...
Поэтому проще наверно, разработать агрегат эмулирующий человеческую руку с пальцами.

спустя 3 минуты [обр] Александр Самойлов [досье]

Алексей В. Иванов[досье]

Ложные данные могут точно также подписываться и отправляться.

Да, тем, кто знает ключ.

Нахождение ключа — задача даже более простая, чем определение алгоритма.

Я все никак не пойму, неужели не слышали про NP полные задачи и так далее?

спустя 1 минуту [обр] Александр Самойлов [досье]
Или может тут уже прорыв какой-то в этой области состоялся, а я не в курсе.
спустя 1 минуту [обр] Алексей В. Иванов [досье]
Александр Самойлов[досье] Я еще раз повторюсь, что ключ всегда присутствует на клиенте. Его не надо подбирать. Читайте внимательнее
спустя 7 минут [обр] Даниэль Алиевский [досье]

Алексей В. Иванов[досье]

Я, надеюсь, всем понятно, что шифровкой невозможно защитить данные?

Какое-то новое слово в криптографии :-) Зачем существует шифрование, если не для защиты данных, гм?

Ложные данные могут точно также подписываться и отправляться

А как же общеизвестные схемы цифровой подписи, которые я тут вкратце обрисовал? Они для того сделаны, чтобы никто посторонний не мог подписать.

Нахождение ключа — задача даже более простая, чем определение алгоритма.

Еще более своеобразный тезис. Секретный ключ по открытому обычно найти крайне трудно, на этом и основана теория RSA. А алгоритмы во всех уважающих себя системах используются стандартные и общеизвестные, их "определять" не надо.

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

Александр Самойлов[досье]
Фантазии пошли уже веселые :-) хотя и слегка в офф. Понятно, что если есть клавиатура, то сделать к ней "автонажималку", скорее всего, не так уж сложно. Покуда компьютер не начнет требовать отпечатков пальцев или фотографии сетчатки :-) Хотя постойте - есть же еще скорость. Робот хорош только тогда, когда в состоянии рассылать свои данные очень быстро, тысячи регистраций в секунду, миллионы в день. Робот с эдакой механической рукой, которая нажимает на клавиши и (соответственно) подвержена износу, наверняка обойдется дороже, чем наем для этой же цели молодого человека где-нибудь в России.

спустя 9 минут [обр] Алексей В. Иванов [досье]

Пипец... Даниил[досье], Вы котлеты от мяса отделите, и не пудрите мозги окружающим.

А как же общеизвестные схемы цифровой подписи, которые я тут вкратце обрисовал? Они для того сделаны, чтобы никто посторонний не мог подписать.

Посторонний? ГДЕ в обсуждаемой схеме посторонний?

спустя 3 часа 20 минут [обр] Даниэль Алиевский [досье]

Алексей В. Иванов[досье]
Я не виноват, если вы выражаетесь чересчур кратко. Вы сказали: "Ложные данные могут точно также подписываться и отправляться". Я ответил: не могут ("...Они для того сделаны, чтобы никто посторонний не мог подписать.").

"Посторонний" - это робот, написанный хакером и выполняющий регистрацию на сотнях разных форумов (или других систем), дабы оставить свою рекламу (или что-то еще нужное автору робота). "Свой" - это система "пользователь + клиентский код на Java/Flash/JavaScript", которая, в результате действий живого человека, позволяет последнему зарегистрироваться (например, ввести логин и пароль). Задача - отделить "своего" от "постороннего", т.е. удостовериться, что к серверу обращается не робот, а первоначальный клиентский код, получающий данные от живого человека.

Если уж спорить, давайте попытаемся спорить по существу. Мне кажется, я вынужден повторяться по многу раз. Внимательно ли Вы читали?

спустя 12 часов [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]
А что проще сделать, спецклавиатуры с шифровкой сообщений или просто проверки внутри ОС, чтобы некие сообщения не возникали слишком часто?

Вот и я о том, что со спецклавиатурами это уход в тупик.
Проверка на частоту это тоже тупик, только менее очевидный и тем самым менее тупиковый.

Для обхода проверки на частоту достаточно использовать несколько компьютеров.

Алексей В. Иванов[досье]
Нет, человеку не надо его действительно подбирать.
Вернее надо, но человек на подбор тратит сравнительно мало времени.

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

спустя 1 час 38 минут [обр] Алексей В. Иванов [досье]

М-да... Я не вчера родился — знаю о чем говорю.

А теперь сделайте пожалуйста робота, который вместо вас будет открывать чемоданы и отсылать содержимое мне. Есть у вас заводик по производству роботов под рукой?

Мне писать ничего не надо — Вы его сами напишите в клиентском приложении.
Возможно наши разногласия из-за того, что Вы говорите о написания унивирсального робота, искусственного интелекта, а я говорю о том, что ломание конкретного приложения на стороне клиента — тривиальная задача. Было бы это не так — стало бы невозможным создания кряков к программам. Принцип тот же.

спустя 10 минут [обр] Александр Самойлов [досье]
ломание конкретного приложения на стороне клиента — тривиальная задача.

Определенно я не согласен, что задача так уж тривиальна.

стало бы невозможным создания кряков к программам.

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

спустя 2 минуты [обр] Александр Самойлов [досье]
Мне писать ничего не надо — Вы его сами напишите в клиентском приложении.
Гм. То есть вы хотите сказать, что в поставляемом мной вам ключе уже будет содержаться робот, который может открывать чемоданы? По размерам не влезет.
спустя 1 минуту [обр] Алексей Севрюков [досье]

А вот мне кажется что пошел уже просто конкретный оффтопик. И начался он уже давно.

Александр Самойлов[досье]

Я не утверждаю, что их нельзя сломать, просто взлом обойдется значительно дороже покупки.

Дык ломать их будет не покупатель, а какой-нибудь хакер, который делает это для удовольствия (и не только).

спустя 14 минут [обр] Александр Самойлов [досье]
Алексей Севрюков[досье]
В таком случае взлом обойдется значительно дороже, чем получить удовольствие, каким-либо иным способом. Дороже - это не значит, обязательно, про деньги.
Даже если хакеру нравится сам процесс, без достижения результата.
спустя 5 минут [обр] Даниэль Алиевский [досье]

Александр Самойлов[досье]
Да нет, тут пожалуй нужны именно спецклавиатуры с шифровкой (аутентификацией). И политика сборки компьютеров и OS, при которых только такие аппаратные устройства, снабженные нужными секретными ключами, полученными из официальной организации типа VeriSign, в принципе можно будет подключать к разъемам компьютера.

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

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

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

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

Проблема здесь - на сегодня это чересчур неудобно. Платежи недостаточно интегрированы в броузеры - приходится заполнять жуткие формы, это похуже, чем разглядывать дурацкую картинку. Чтобы заплатить 1 раз в день или в неделю, это годится, но если платить придется каждые 10 минут при какой-нибудь регистрации или отправке письма (аналогичная мера могла бы остановить потоки спама!), это уже станет невыносимо. Может быть, в ближайшем будущем все популярные OS станут включать в броузеры возможность однократно настроить систему платежа (ввести куда-то параметры кредитки, причем не беспокоиться, что ненадежная OS позволит вирусу "свистнуть" их с диска). При этом диалог на эту тему с сервером стандартизуется, и все сведется к тому, что переходы на некоторые страницы будут сопровождаться (отключаемым) предупреждением: "Сейчас с вашего счета будет снято столько-то центов в пользу хозяев такого-то сервера. Продолжить?" Примерно так же, как сейчас броузер предупреждает об отправке POST-данных или переходах на HTTPS-страницы. Поживем - увидим.

Кстати, ваши объяснения про чемоданы я сам толком не понял :( Вроде бы к RSA это имеет какое-то отношение, но яснее, по-моему, не стало.

Алексей В. Иванов[досье]
Все-таки ваш общий тезис, что сломать "конкретное" приложение всегда тривиально, очень спорен. Типа опыт богатый? ;-) (Прошу прощения, шутка.)

Одно время (очень давно) я читал книжку про систему Cerberus (противодействие взлому, отладке, дизассемблированию). Все звучало весьма убедительно. Я слышал, что ее тем не менее сломали (уж не знаю, что конкретно сломали), но вряд ли эта задача была тривиальной. И в нашем случае все несколько иначе: хакер не имеет доступа к серверу, это сильно меняет ситуацию.

Попробуйте возразить по существу. Я выше написал в общих чертах, как может выглядеть система противодействия взлому. Сам секретный ключ RSA, ввод пароля пользователем, зашифровка пароля секретным ключом и отправка на сервер - все эти действия "размазаны" по десяткам килобайт "пустого" ("безумного") кода. Безумный код занят, главным образом, последовательными саморасшифровками и борьбой с отладчиком или иной моделирующей средой (например, анализом времени исполнения и неправильными переходами на "дикие" ветки в случае обнаружения атаки). Как "тривиально" такое ломать?

Если программа статична и нужно сломать ее однократно - вероятно, опытный "кракер" рано или поздно справится (хотя рыночная цена такой работы, кажется, чрезвычайно высока). Но ведь наша программа генерируется на сервере. Сервер может каждый раз менять систему "запутывания", "придумывая" безумный код случайно и динамически, каждый раз размазывая секретный ключ и прочие полезные операции новым способом. (И сам секретный ключ все время новый.) Что толку это вскрывать? По-моему, здесь "ломание" в принципе возможно лишь при наличии доступа к серверу и алгоритму, который выполняет "запутывание". Тогда - может быть - удастся написать робота, который автоматически "распутывает" то, что запутал сервер. И то не факт - ведь случайные датчики, использованные сервером, неизвестны роботу. Но вообще-то при наличии доступа на сервер, вроде бы, задача защиты от регистрации уже не стоит.

Где я не прав?

спустя 15 минут [обр] Даниэль Алиевский [досье]
Кстати, мой интерес не чисто теоретический. Минимум один мой коммерческий апплет занимается шифровкой пароля, введенного пользователем и передаваемого на сервер - конечно, на куда более "детском" уровне, чем я тут расписываю. Интересны принципиальные слабые места подобных защит.
спустя 36 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]
Зависит от сложности вашего апплета.
Слабое место очевидно. Если я, конечно, правильно понял из вашего небольшого по объему сообщения процесс работы апплета. Ключ для шифровки, видимо, передается каждый раз в теле апплета. Конечно он тоже как-то зашифрован, но это не мешает подвергнуть апплет анализу для прямого получения ключа.

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

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

спустя 3 часа 56 минут [обр] Даниэль Алиевский [досье]

Да нет, давайте не будем отвлекаться на мои апплеты. Зря я про это упомянул :-) Оффтопик получается.

Давайте про ту схему защиты от регистрации, которую я столь подробно выше расписал.

спустя 4 минуты [обр] Alexander O [досье]
Даниэль Алиевский[досье] дайте ссылку на ту реплику, где она расписана, а то искать долго
спустя 6 минут [обр] Даниэль Алиевский [досье]
В предыдущем постинге однако, страницей выше.
спустя 16 часов [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]

Кстати, ваши объяснения про чемоданы я сам толком не понял :( Вроде бы к RSA это имеет какое-то отношение, но яснее, по-моему, не стало.

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

спустя 27 минут [обр] Алексей Севрюков [досье]

Александр Самойлов[досье]

то как быть с постоянно меняющимися размерами чемоданов, ключей и положения отверстий

<off>
В это случае робот будет проводить 3D-x-ray сканирование и выяснять где же находится замочная скважина. Этим же методом определит размер и расположение ключа.
</off>

P.S. "На всякую хитрую......" (c)

спустя 10 минут [обр] Алексей Полушин [досье]
Даниэль Алиевский[досье]: Сколько будет стоить разработка такой системы регистрации ? А если это будет коммерческий продукт - хакер тоже может его купить - и тогда он уже имеет доступ к коду сервера.
спустя 46 минут [обр] Александр Самойлов [досье]
Алексей Севрюков[досье]
А я где-то утверждал, что такого робота нельзя сделать?
Отнюдь нет. А вот, то сдалеать такого дорого и долго — факт.
спустя 5 дней [обр] Даниэль Алиевский [досье]

Алексей Полушин[досье]

Сколько будет стоить разработка такой системы регистрации?

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

В то же время, в различных частичных вариантах подобная защита делается за неделю-две. Что куда меньше программирования нетривиального сайта, достаточно сложного, чтобы вообще нуждаться в подобной защите. По крайней мере, для Java я могу оценить сроки - ибо сам лепил нечто отдаленно подобное для своих апплетов. Судите сами.

  1. RSA-шифрование (и куча других шифрований) - это все стандартные пакеты Java, тут ничего писать не надо.
  1. Некий обфускатор получаемого Java-кода есть хотя бы в JavaBuilder. Это, конечно, не "безумный код", сознательно запутывающий хакера, но уже очень немало. И наверняка подобных обфускаторов можно найти множество и не очень задорого.
  1. Минимальное запутывание тоже делается легко. Сознательно нарушаем все правила хорошего стиля программирования:

- валим все в одну гигантскую процедуру, которая:
- вводит пароль (своя компонента, обрабатывающая нажатия клавиш: мы, собственно, пишем метод реакции на клавишу),
- шифрует его при помощи секретного RSA-ключа, "разбросанного" по всяким строчным константам,
- использует десяток "диких" самописных алгоритмов перепутывания (случайное перемешивание или xor-ивание зашифрованного пароля и/или ключа с помощью датчика случайных чисел, стартующего, к примеру, от текущей даты, которая предварительно и отдельно согласовывается между клиентом и сервером); можно применить и стандартные шифрования из пакетов Java вроде DES;
- отправляет данные на сервер (пожалуй, лучше не "разом", а шифруя и передавая каждый символ пароля по отдельности - пусть сервер потом сам их склеивает);
- содержит разбросанные по коду пару десятков проверок, что "окружение" апплета правильное (скажем, контрольная сумма символов getCodeBase() соответствует вашему сайту, а время выполнения не слишком большое - самая банальная защита от отладчика), и в случае проблем переходит на заведомо неправильную ветку процедуры - в идеале копию "правильного" кода, но посылающую на сервер сигнальный пароль, означающий, что пора отрубать данный IP;
- "разбрасываем" полученный код совершенно несистемным образом по паре десятков Java-классов;
- пишем робота (скажем, на Perl, на основе регулярных выражений), который берет некоторый шаблонный набор Java-исходников, реализующих вышеописанные действия, и незначительно (случайно) меняет детали - скажем, заменяет один алгоритм перепутывания другим, меняет набор случайных параметров для перемешивания или xor-ивания данных, ну и, разумеется, вписывает (в разбросанные по коду константы) новый секретный ключ. При этом, конечно, запрос к серверу чуть модифицируется, чтобы уведомить его, из каких именно серверных файлов следует взять параметры для обратного распутывания и расшифровки. Затем робот банально вызывает компилятор, обсфукатор и строит результирующий jar, сохраняемый где-то на сервере. Этот робот будет автоматически исполняться на сервере настолько часто, насколько позволит компьютер: скажем, раз в минуту;
- ну и последний шаг (более легкий): пишется серверная процедура (на любом языке), воспринимающая запрос клиента и расшифровывающая-распутывающая его согласно параметрам, запомненным роботом в момент генерации соответствующего jar-файла.

  1. Последняя работа - правильно интегрировать Java на страницу. Если Internet у клиентов достаточно хороший, то не мудрствуя лукаво используем плагин от Sun: при первой регистрации посетителю придется, быть может, подождать несколько минут, покуда скачется десяток мегабайтов.

Кстати, лично меня не остановила бы даже необходимость качать плагин час по модему, кабы это было нужно для регистрации на том же xpoint или для покупки книги в Internet-магазине. Качал же я броузеры и прочий софт, когда сидел на скверном Internet. Если уж я хочу зарегистрироваться, а не просто случайно брожу по Internet, вряд ли сложно спланировать закачку плагина. (Конечно, для этого на сайте должна быть явная ссылка на java.com, позволяющая скачать плагин в свободное время.)

Но если сие кажется обременительным - можно подстроить вышеописанную схему под Java 1.1.4, которая есть "почти везде" (ибо входила в состав Windows). Если не ошибаюсь, там не было RSA, но реализовать его на Java в общем-то совсем несложно. (Когда-то давно это было, кажется, испытательной вступительной задачей для одного из наших сотрудников.)

Что до пунктов 1-3, то лично мне понадобилось около 2 дней, чтобы реализовать нечто похожее, но без RSA (в моей задаче было ненужно), без самописной компоненты для ввода пароля (пароль вводился JavaScript-ом - в моей задаче это не мешало), с меньшим числом "перепутывающих" алгоритмов и с очень тривиальным роботом, который вызывался вручную и менял всего один параметр (включал/выключал доступность некоторого специального пароля - "черного входа" для авторов продукта: вариант, не подлежащий публикации на сервере). Думаю, за 2 недели вполне можно сделать все вышеописанное в полном объеме. Ну а за человеко-год - сделать из этого профессиональный универсальный коммерческий продукт.

Задача взлома, напоминаю, заключается в том, чтобы проанализировать получаемую систему Java-классов, преодолеть обфускатор, выяснить, как именно она запутана, где там живет секретный RSA-ключ, как именно он применяется для зашифровки пароля, как в точности "перепутываются" все данные, после чего написать робота, который, проанализировав JAR, автоматически и точно повторит все его действия, но уже с "прошитым" паролем (без участия человека). После чего долго тестировать, чтобы убедиться, что все варианты случайно выбираемого запутывания на стороне сервера учтены и правильно опознаются - при том, что ошибка чревата плохими последствиями вроде отрубания IP. Учтите, что взломщик не имеет "шаблонных" исходных текстов, с которыми работает серверный робот, и не имеет самого робота. Я бы за подобную задачу не взялся, разве что у меня выдался бы свободный год - да и то, без всяких гарантий результата. А ведь результат взлома будет мигом обесценен, если авторы совсем немного, "косметически" поменяют запутывающие алгоритмы на сервере.

А если это будет коммерческий продукт - хакер тоже может его купить - и тогда он уже имеет доступ к коду сервера.

Ну это же очевидно. Продаваться должен не закрытый "черный ящик" - мол, инсталлировали и все. А набор утилит, который позволяет решить задачу создания "безумного" кода, на порядок более сложного, чем то, что я описал выше, за разумное время и деньги - скажем, за человеко-неделю. Ведь набор реализованных на сегодня математических алгоритмов, которые преобразуют одни числа в другие и которые можно использовать для "запутывания", практически неисчерпаем. (Взять какое-нибудь Фурье-преобразование для превращения парольной строки в отправляемую на сервер, и автоматически вставить реализацию FFT в запутывающую процедуру.) Эта работа должна быть изначально учтена в стоимости продукта. Скажем, сама система стоит $1000, и надо быть готовыми потратить еще $1000 на работу штатного программиста, выстраивающего защиту с ее помощью. (Это если говорить об американских масштабах цен: для России, наверно, надо было бы брать на порядок меньше.)

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

спустя 1 час 31 минуту [обр] Александр Самойлов [досье]
Даниэль Алиевский[досье]
Картинки-то генерить с шумами всяко дешевле, если вообще не бесплатно.
В чем выгода-то по сравнению с картинками?
В том, что через некоторое время картинки программы научатся хорошо распознавать?
спустя 2 часа 38 минут [обр] Даниэль Алиевский [досье]

Александр Самойлов[досье]
Если на сегодня, то лично я вижу две выгоды.

  1. Картинки сильно раздражают. Особенно когда ошибаешься при вводе. Можно возразить, что закачка Java-плагина тоже раздражает. Но последнее все же произойдет один раз, а картинку приходится разглядывать регулярно. Причем у серьезных клиентов (раздражение которых обычно наиболее нехорошо) Internet уже сегодня достаточно быстр, чтобы плагин успел загрузиться за ту минуту, в течение которых клиент смотрит на страницу и, скажем, читает правила. Да и вообще, возражение насчет медленной или дорогой закачки даже для массовой аудитории с каждым годом становится все более надуманным.
  1. Мой метод годится и для защиты от "леммингов". Отдельно взятую картинку можно подсунуть кому угодно, окружив ее как угодно. А что делать с Java-апплетом? Он ни на что более непригоден, кроме как на то, чтобы залогинить конкретного человека.

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

Боюсь соврать, но, кажется, я и сам напишу подобную утилиту за пару месяцев. Задача-то очень специальная. Во-первых, не требуется распознавать в секунду десятки тысяч знаков, как в реальных OCR - вполне можно "подумать" над единственным знаком порядка секунды. Во-вторых, сама картинка очень мала: при сканировании печатного текста буква превращается в сотни и тысячи пикселов, а тут 20-30 пикселов. В-третьих, искусственное зашумление все же гораздо меньше портит данные, чем "естественный" шум, возникающий в реальных оптических системах. К примеру, если берется один из сотни известных шрифтов и выполняется аффинное преобразование, то задачу можно за разумное время решить почти тупым перебором. 4 параметра преобразования, меняющиеся в очень небольшом диапазоне (чтобы картинка оставалась узнаваемой) дадут, пожалуй, порядка 1000 вариантов максимум. Сдвиг можно найти по "центрам тяжести" двух картинок. Сравнение двух картинок для одного символа, предположим, 20x50, с получением "качества наложения", это порядка 1 микросекунды (2-3 такта на один пиксел - это еще сильно завышенная оценка для современных SSE). Итого на один символ получаем 100 шрифтов * 100 символов * 1000 вариантов преобразования * 1 мкс = 10 секунд. А ведь это самый "тупой" подход без всяких оптимизаций.

спустя 1 час 25 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]

  1. Спорно. Неужели картинки так уж раздражают? Меня по крайне мере - нет.

И неужели нельзя будет ошибиться человеку при использовании Java апплета?

  1. Да, апплет поместить в чужое окружение может быть сложно.

Но в случае распространения таких апплетов, человеку на порносервере будет предлагаться не распознать картинку, а ввести сразу логин и пароль от только что созданного этим самым человеком учетной записи на mail.yahoo.com.

спустя 14 часов [обр] Андрей Новиков [досье]
Александр Самойлов[досье], меня вот Яндекс задрал уже. Мне не нужна такая серьезная защита моей почты, которая мне мешает ее читать.
спустя 26 минут [обр] Александр Самойлов [досье]
Андрей Новиков[досье]Гм, почтой на yandex не пользуюсь, но неужели там и для чтения почты необходимо распознавать цифры? Если это так, то можно заметить, что любой метод можно сделать бессмысленным, достаточно его многократно усилить.
спустя 2 часа 24 минуты [обр] Даниэль Алиевский [досье]

Александр Самойлов[досье]

  1. Спорно. Неужели картинки так уж раздражают? Меня по крайне мере - нет.
И неужели нельзя будет ошибиться человеку при использовании Java апплета?

Ну как же. Сравните: одно дело, если я должен ввести свой собственный пароль, которые, вероятно, я же и придумал и уже привык набирать. Я каждый день логинюсь на своем компьютере и набираю свой 14-символьный пароль меньше чем за 2 секунды (практика, однако). А совсем другое - прочесть какую-то заведомо гадостную картинку и аккуратно набрать буквы, да еще и с большим риском принять 1 за I или что-нибудь в таком роде. Терпеть не могу. Полагаю, деловых людей - у которых есть дурацкая страсть беречь свое время, и которые, по несчастному стечению обстоятельств, частенько являются важнейшими клиентами для сайта - это раздражает еще больше.

А что насчет кукисов? Пока что тут я вижу вот что. Если запоминать где бы то ни было на клиенте незашифрованный пароль, который как-то автоматически загружать в апплет и далее шифровать по общей схеме, то может возникнуть "дыра": робот сможет перехватить канал, по которому информация попадает в апплет (скажем, подделать JavaScript-окружение), и тем самым подменить человека. Но вроде бы эту дыру можно закрыть или по крайней мере резко уменьшить. Написать апплет так, чтобы некоторое минимальное участие человека было необходимым, и только в ответ на действия человека пароль извлекался из внешней среды (скажем, через java-пакет взаимодействия со средой JavaScript).

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

Да и откуда вообще вопрос "ошибиться при использовании Java-апплета"? Речь ведь о том, что человек должен ввести некоторую информацию - пароль, или адрес сайта для регистрации в altavista, или заполнить гостевую форму, что угодно. И речь о том, как в этой ситуации отличить человека от робота. Картинка означает, что человеку, кроме действительно нужной информации - которая, к тому же, может запоминаться в cookies для будущих заходов - придется разглядывать новую уникальную картинку и вводить с нее информацию. Что может быть обременительно. А апплет позволяет не вводить ничего дополнительного.

  1. Да, апплет поместить в чужое окружение может быть сложно.
Но в случае распространения таких апплетов, человеку на порносервере будет предлагаться не распознать картинку, а ввести сразу логин и пароль от только что созданного этим самым человеком учетной записи на mail.yahoo.com.

Что-то я не понял. Можно подробнее?

Логин через апплет, вероятно, приводит к установлению сессии: сервер при следующем обращении устанавливает временный кукис, который броузер будет ему отсылать и сообщать, что можно показывать страницы сайта. Но если я что-то в чем-то понимаю, политика безопасности броузера не позволит как бы то ни было "украсть" этот кукис и использовать иначе, чем в рамках исходного сайта. Что толку в этом роботу? Даже если зловредный сервер с роботом вставил на свои порностраницы апплет (который к тому же надо хоть немного взломать, чтобы он вообще согласился работать на чужом доменном имени), и пользователь в этом апплете набрал пароль, и апплет сообщил его серверу, в ответ на что сервер выставил кукис - страницам зловредного сайта никогда его не получить и не передать роботу.

С картинками все по-другому. Там информация, достаточная для связи, явно вводится человеком, а не передается от серверу к броузеру в рамках защищенного адресного пространства.

спустя 50 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]

  1. Для начала, не понимаю, о чем уже писал, почему проверка на человечность должна происходить во время каждой сессии. На мой взгляд, достаточно одного раза при регистрации.

А регистрация достаточно редкий процесс для пользователя.
Можно и проделать достаточно неприятное распознавание картинки.

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

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

Насчет возможного перепутывания 1 и I, 0 и O - такие случаи легко проверяются на серверной стороне и вполне можно сделать, чтобы они не рассматривались как ошибки.

  1. Не надо апплет перемещать на чужое доменное имя.

Пользователь самостоятельно регистрируется на, к примеру, mail.yahoo.com и передает затем регистрационные данные - логин и пароль - третьей стороне за какие-либо услуги.

спустя 37 минут [обр] Даниэль Алиевский [досье]

Александр Самойлов[досье]

  1. Для начала, не понимаю, о чем уже писал, почему проверка на человечность должна происходить во время каждой сессии. На мой взгляд, достаточно одного раза при регистрации.

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

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

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

Почему же раз в месяц? Сайтов таких может быть много. Запоминать регистрацию не очень хорошая идея - см. выше. Более того, задача различения человека и робота возникает не только при регистрациях, но и при любых действиях человека, которые не следует позволять роботам. Скажем, при регистрации сайта в altavista. Или отправке сообщения в чью-нибудь гостевую книгу. Да мало ли где. Там запоминание пользователя может вообще не помогать. Когда я занимался Internet-маркетингом, мне каждый день приходилось бывать на десятках и сотнях новых для меня сайтов, и конечно же, масса рабочего времени уходило на заполнение всевозможных форм. Если имя, фамилию, пароля, почту и т.п. я хотя бы мог вставлять через copy/paste, то необходимость разглядывать картинки, разумеется, раздражала.

Ну и, пожалуй, самое сильное возражение против картинок все же остается в силе. Уж больно просто пишутся специализированные инструменты для автоматического распознавания. Ergo, вероятно, скоро картинки вообще перестанут от чего-либо защищать.

  1. Не надо апплет перемещать на чужое доменное имя.
Пользователь самостоятельно регистрируется на, к примеру, mail.yahoo.com и передает затем регистрационные данные - логин и пароль - третьей стороне за какие-либо услуги

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

спустя 36 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]

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

Гм, далеко не все. Например, mail.yahoo.com просит распознать картинку при регистрации, но не делает это при дальнейших аутентификациях и работе с почтой.
Или имеется ввиду ошибка при распознавании?
В таком случае при следующей попытке картинка, действительно, другая.

Скажем, при регистрации сайта в altavista.

Я приводил предыдущие доводы для, так сказать, богатого делового человека.
Сомневаюсь, что таковые будут лично регистрировать сайты в altavista.
А так согласен, конечно, что если при отправке сообщения в гостевую книгу потребуется распознавать картинку это будет сильно утомлять.

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

Это в том случае, если каждый сеанс аутентификации, а не только регистрации будет сопровождаться загрузкой апплета.
Начинаю понимать, для чего может быть нужно использование апплета при аутентификации.
Но и в таком случае у спамеров есть выход и в некотором смысле более простой чем распознавание цифр. Хотя удобство пользователя, несомнено, повышается.
Как апплет должен быть организован визуально?
Два поля для ввода логина и пароля. Можно даже оставить одно, для ввода пароля.
Ясно, что в разных сеансах оно должно выглядеть визуально одинаково, хотя рисоваться может по разному, но картинка на выходе должна быть одна.
Иначе это будет запутывать пользователя, как и разные изображения цифр.

Но как мне кажется анализ картинки апплета на место нахождения поля для ввода гораздо проще распознавания цифр. А подать клавиатурные команды апплету совсем не сложно.

спустя 1 час 58 минут [обр] Даниэль Алиевский [досье]
Я приводил предыдущие доводы для, так сказать, богатого делового человека.
Сомневаюсь, что таковые будут лично регистрировать сайты в altavista.

Гм, у нас, наверно, разное понимание слов "деловой человек" :-) Для меня деловой человек - человек, который занят в Internet делом, работой, business по-английски. "Богатство" тут ни при чем: если это его работа и его устраивает доход от этой работы, то ему хочется экономить время и успевать больше. Когда я занят Internet-маркетингом и продвигаю свои сайты, я - деловой человек. И в таком качестве мне приходится лазать в Internet много и всерьез, разумеется, я от этого устаю, и всевозможные препятствия вроде дурацких картинок здорово раздражают. Хуже того, как и во всяком бизнесе, может статься, что большие суммы денег завязаны на то, успею я что-либо сделать в течение, скажем, двух дней или не успею. Отсюда и пресловутая потребность деловых людей экономить время.

Впрочем, это все offtopic. Объективный факт: лишняя возня вроде распознавания картинок, не имеющая отношения к делу, в определенных ситуациях раздражает. Второй объективный факт: эта задача, скорее всего, легко автоматизируется, а роботы раздражения не испытывают. Распространение систем распознавания - вопрос времени.

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

Ну да, будет - ну и что? Апплет скэшируется и особо времени не съест. От пользователя же при каждой аутентификации можно потребовать совсем немного - просто дать знать, что он тут.

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

Но как мне кажется анализ картинки апплета на место нахождения поля для ввода гораздо проще распознавания цифр. А подать клавиатурные команды апплету совсем не сложно.

А про это мы с Вами уже говорили. Да, теоретически на современной аппаратуре и в современных OS действия человека всегда можно промоделировать. Тут, что называется, "против лома нет приема" - покуда защита от подделки событий не дойдет до такой степени, что придется собирать механическую руку.

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

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

Во-вторых, нет общего способа узнать, что именно следует найти и что нажать на апплете, размещенном на произвольном сайте. Придется подстраивать робота под каждый сайт независимо. Ведь, очевидно, каждый сайтостроитель волен сделать для своего сайта любые кнопки, любую геометрию полей для ввода, любой фон под ними и вокруг них. И это может меняться от запуска в запуску: скажем, человеку почти все равно, где находится кнопка "OK" (которую непременно надо нажать мышкой) и какую форму и раскраску имеет эта кнопка. А робот имеет смысл только при условии, что он умеет автоматически работать с сотнями и тысячами сайтов, и настройка на конкретный сайт требует от хакера минимум усилий.

спустя 33 минуты [обр] Александр Самойлов [досье]
В то же время, в случае апплета мы имеем, во-первых, необходимость достаточно глубокого системного программирования, чтобы аккуратно смоделировать системные события от клавиатуры и мышки и передать их в управляемый роботом броузер.

В глубоком системном программировании нет необходимости.
Сейчас существует достаточно много уже готовых средств подобной автоматизации.
Например в WSH уже встроена возможность посылать клавиатурные сообщения практически любому приложению, которое таковые поддерживает. С мышью сложнее, но и для нее существуют уже отдельные компоненты автоматизации.

Придется подстраивать робота под каждый сайт независимо.

Думаю, с картинками тоже самое. По большому счету, даже без картинок робота требуется вручную настраивать на разные сайты.

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

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

скажем, человеку почти все равно, где находится кнопка "OK"

А захотят ли деловые люди заниматься распознаванием где же на фоне приложения находится кнопка OK? Да еще при каждой сеансе? На мой взгляд это сведется к распознаванию картинки, только нарисованной в Java Applet.

спустя 17 минут [обр] Даниэль Алиевский [досье]

Александр Самойлов[досье]
Похоже, Вы правы. Найти пачку цифр на картинке, или же "сфотографировать" экран с апплетом и найти, куда надо "виртуально" тыкать мышкой - задачи одного порядка. Просто вторая содержит еще одну дополнительную трудность - эмуляцию аппаратуры, но разница непринципиальная, исчезает с появлением соответствующих популярных инструментов.

Отсюда следует:

  1. пока авторы броузеров и OS не начнут бороться с эмуляцией аппаратуры, защититься от роботов, вроде как, невозможно (или, может быть, есть свежие идеи?)
  2. у моего способа на первое место выходит только то преимущество, что он не требует лишней возни от пользователя.
спустя 2 часа 49 минут [обр] Сергей Круглов [досье]

Судя по общей тенденции, разработчики не собираются с эмуляцией бороться, а хотят идентифицировать пользователя (вспомним нашумевший номер процессора P-!!!, инициативу Microsoft c Passport и прочие такие вещи).

Раздаем людям цифровые подписи и централизовано следим, чтоб кто-нить "2 раза не проголосовал". Это гораздо более реалистичный сценарий, я думаю.

спустя 11 часов [обр] Алексей Полушин [досье]
Это в том случае, если каждый сеанс аутентификации, а не только регистрации будет сопровождаться загрузкой апплета.
Ну да, будет - ну и что? Апплет скэшируется и особо времени не съест.
Апплет скэшируется - как это согласуется с тем, что ключ, который в этом аплете, генерируется каждый раз и должет быть действителен короткий период времени ?
спустя 2 часа 12 минут [обр] Александр Самойлов [досье]

Сергей Круглов[досье]
В MS Passport долго не вникал, но там по моему тоже картинки надо распознавать при регистрации. Passport это скорее для удобства пользователя, а не программиста.
И, как мне кажется, наделать учетных записей в MS Passport роботу относительно просто.

Номер процессора, если это просто номер, тяжело сделать неподделываемым при передаче через интернет.

Даниэль Алиевский[досье]
Пока полного решения не вижу. Даже передача денег при регистрации не решает. По той причине, что спамеры для начала будут захватывать компьютеры пользователей и спамить с них за их деньги. Это уже сейчас в некотором роде происходит.
Тем не менее вопрос достаточно серьезный, конечно.

спустя 1 час 7 минут [обр] Даниэль Алиевский [досье]

Алексей Полушин[досье]
Каюсь, каюсь, увлекся. Конечно, апплет нельзя кэшировать. Но вообще-то это не проблема. Весь хитрый код, который следует доставить клиенту, несмотря на свою запутанность весьма обозрим - считанные десятки килобайт, к тому же запакованные в JAR.

Сергей Круглов[досье]

Раздаем людям цифровые подписи и централизовано следим, чтоб кто-нить "2 раза не проголосовал". Это гораздо более реалистичный сценарий, я думаю.

А чем, с точки зрения наличия подписи, робот отличается от человека?

Давайте плясать от печки: сидит за терминалом этакий проворный человек, который вручную лазает по Internet, везде регистрируется и делает всякие пакости вроде спама. С этим, очевидно, бороться невозможно в принципе и следует считать нормальной ситуацией. Но и не сильно страшно: один человек за рабочий день много наспамить не успеет, да и время его небесплатно, словом, это коммерчески бессмысленно. (Почти та же ситуация с "механической рукой"). Таковы котлеты.

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

Задача - отделить этих вот мух от котлет.

Чем тут поможет цифровая подпись? Хакер даст роботу собственную личную подпись. Разве есть закон, по которому человек не имеет права прыгать по сайтам со скоростью 10 сайтов в секунду, причем круглосуточно? С точки зрения любых систем анализа подобной подписи, действия робота выглядят именно так. Номер процессора помогает столь же мало.

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

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

Я же веду к тому, что для отличия робота от человека надо использовать чисто физические критерии, которым все равно, кто сидит за компьютером - человек, обезьяна или суперинтеллектуальная "механическая рука". Должно быть физическое наличие некоторого оператора за дисплеем, а не программа, "молча" выполняющаяся в недрах компьютера. Как обобщение, может требоваться наличие какого-то иного агента из реального, "невиртуализуемого" мира - скажем, денег из банка.

В общем, способность нынешних операционок все виртуализовывать играет в данном случае дурную шутку. А если допустить к рассмотрению не только апплеты, но и плагины/ActiveX/расширения броузера, имеющие доступ к сколь угодно низкому уровню программирования? Тоже нет решения? В конце концов, если задача будет востребована и популярна, то такое расширение броузера может стать стандартным (как стал Flash). Разве нельзя, скажем, инсталлировать в Windows какой-нибудь низкоуровневый драйвер, который будет работать только с физической клавиатурой через 60-й порт? Или, в конце концов, разработать специальное устройство вроде нынешних "данглов", подключаемое с USB, общение которого с драйвером защищено цифровой подписью? И требовать от пользователя при каждом "сомнительном" действии в Internet, вместо распознавания картинки, нажимать на этом устройстве одну кнопку?

Александр Самойлов[досье]

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

Э нет, это уже совсем другая проблема - защиты денег от кражи. Если говорить о вирусах, которые способны "взламывать" компьютеры и красть деньги с кредитной карточки, то таким вирусам принципиально ничуть не сложнее взламывать сервера и спамить как угодно. Давайте исходить из ситуации, когда "дыры" в операционках и софте не рассматриваются, и проникнуть на компьютеры клиентов невозможно (кроме как в рамках предусмотренных броузерами "песочниц"). Все, что есть у хакера - собственный компьютер и традиционный выход в Internet.

спустя 5 часов [обр] Сергей Круглов [досье]

Хакер не даст своему роботу цифровую подпись (разве что свою), потому как их выдавать будут, условно говоря, "паспортные столы". А дальше "больше килограмма в одни руки не даем" и все счастливы.

Согласитесь, многие проблемы именно от того, что нельзя попросить пользователя "предъявить паспорт". Стало быть - реализация этого цифрового паспорта - самый реалистичный путь...

спустя 18 минут [обр] Даниэль Алиевский [досье]

Сергей Круглов[досье]
Так я и говорю - хакер даст роботу свою подпись. "Предъявит свой паспорт". Почему нет? Пока не доказано, что он злостно пишет роботов с нехорошими целями, сама по себе круглосуточная активность хакера со скоростью 10 сайтов в секунду (именно так выглядит со стороны работа робота) - абсолютно законна.

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

Аналоги вроде Microsoft Passport имеют право на существование, но их я всегда могу получить сколько захочу, для каждого своего "виртуального представления" в Internet. В том числе и для робота.

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

И когда, наконец, появятся платные почтовые системы с оплатой за каждую отправку письма? Спам таким манером был бы фактически уничтожен.

спустя 35 минут [обр] Сергей Круглов [досье]
Есть, в конце концов, право каждого на анонимность.

Есть? Ну, может, и есть, но иногда думается, что лучше бы не было.

Кредитка ничем не хуже самого настоящего паспорта.

Да, даже сайту наконец прямой доход от посетителей пойдет... Паспорт вполне может быть объединен с кредиткой. Чтоб и идентификация, и "запишите на мой счет".

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

спустя 27 минут [обр] Сергей Круглов [досье]
  1. s. По поводу эмуляции - вон, изначально разрабатываемую одним разработчиком и изначально с ограничениями приставку XBOX "зачиповали" и линуксы запустили. А тут - 3 производителя процов, 5 производителей чипсетов, 20 - материнских плат и дофига хитрых хакеров.
спустя 4 часа 15 минут [обр] Даниэль Алиевский [досье]
Сергей Круглов[досье] По поводу эмуляции - все-таки что насчет специализированных устройств, подключаемых к USB (или чему-то похожему) и специально предназначенных для защиты? Со схемой цифровой подписи, гарантируещей драйверу, что он имеет дело с реальным физическим устройством? Это несложно, недорого и не слишком обременительно для пользователя (нажать одну кнопку на устройстве при вводе формы на сайте, подтверждающую, что тут и правда есть живой человек, а не робот).
спустя 56 минут [обр] Алексей В. Иванов [досье]
Со схемой цифровой подписи, гарантируещей драйверу, что он имеет дело с реальным физическим устройством?
Вот читаю я, Даниил[досье], Ваши посты и думаю, где бы мне такой забористой травы достать, которую курите Вы. Только не обижайтесь :) Такое ощущение, что мы в разных мирах просто.
В Вашем мире программисты и разработчики имеют бесконечное здоровье и ресурсы, а пользователи значительно опытнее хакеров.
--
По-моему, эта тема давно изжила себя и зашла в теоретический бред, который на практике напоминает анекдот про "неуловимого Джо"
спустя 38 минут [обр] Сергей Круглов [досье]
Даниэль Алиевский[досье]
Нам не нужно отличать робота от человека.
Нам нужно не дать одному человеку регистрировать 10000 почтовых ящиков и 10000 раз подавать голос в голосованиях. Неважно, как он этого добивается - роботами, многолетними тренировками или сотней китайцев.
спустя 8 часов [обр] Андрей Новиков [досье]
Анонимности бой. Вот как раз в банке нужна анонимность, а на форуме нет.
спустя 5 часов [обр] Даниэль Алиевский [досье]

Алексей В. Иванов[досье]
Да трава просто называется - математика :-) Математику обычно плевать на практически трудности, главное понять, есть ли решение в принципе. Иногда сей подход в программировании оправдывает себя. Если при чисто теоретическом фантазировании концепция заходит в безнадежный тупик, то обычно это спасает от бессмысленной борьбы с практическими проблемами.

Старый анекдот: физик и математик решили вскипятить чайник. В первом случае чайник был пуст, оба набрали воду, поставили его на огонь и вскипятили. Во втором случае чайник был полон воды. Физик поставил его на огонь. А математик вылил воду и пришел к предыдущей задаче.

Хотя в общем-то я совсем недавно предлагал вполне несложный апплет, реализуемый за пару недель. Другое дело, что, по словам Александра Самойлова, он легко вскрывается эмуляторами событий...

Сергей Круглов[досье]
Может быть и так. Хотя мне кажется, будет непросто провести грань, "сколько можно, а сколько нельзя". Ну работа у меня такая - регистрироваться, вот я и делаю пару сотен регистраций в день в самых разных местах для самых разных нужд. Каков должен быть порог? 10000 на год? А хакер легально добывает 1000 "паспортов" (ибо вряд ли это будет запрещено) и за год набирает 10 миллионов.

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

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

Анонимность много где нужна. Лично я хочу иметь возможность быть анонимным везде, где только возможно, хотя одновременно всегда, когда возможно, предпочитаю сей возможностью не пользоваться :-)

спустя 2 часа 8 минут [обр] Сергей Круглов [досье]

Ну вы по работе 100 раз регистритесь в разных местах или в одном и том же?
Если в одном - то это как-то недалеко от спама ушло. А если в разных - то никаких проблем.

Получение человеком нескольких "цифровых паспортов" должна по трудности соответствовать если не получению нескольких обычных паспортов, то получению нескольких кредиток точно.

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

Лично я хочу иметь возможность быть анонимным

Зачастую отсутствие анонимности - действенный способ не дать человеку наделать каких-нить глупостей, о которых он сам потом будет жалеть. К порновфорумам, IMHO, тоже относится.

спустя 34 минуты [обр] Даниэль Алиевский [досье]

Сергей Круглов[досье]

Ну вы по работе 100 раз регистритесь в разных местах или в одном и том же?
Если в одном - то это как-то недалеко от спама ушло. А если в разных - то никаких проблем.

Немного я не понял. Как раз роботу надо регистрироваться в тысячах и сотнях тысяч мест (вспомните дурные завлекаловки: "за $99 зарегистрируем ваш сайт в 100,000 поисковых систем"). В этом и состоит спам - ходить по базе адресов и везде слать свою рекламу. Настоящая работа в Internet с активными регистрациями на это очень похожа, с той трудноопределимой разницей, что человек действует корректно и формулирует осмысленные вопросы или объявления. В чем отличие спам-письма от вполне нормального коммерческого предложения? Да в общем-то ни в чем, кроме того, что первое генерируется и рассылается автоматически, а во втором "живая" компания пытается сформулировать персональное предложение, "подстроенное" к конкретному адресату, исходя из изучения нужд последнего и соответствия этих самых нужд имеющимся у компании продуктам.

Получение человеком нескольких "цифровых паспортов" должна по трудности соответствовать если не получению нескольких обычных паспортов, то получению нескольких кредиток точно.

Ну и в чем сложность получения нескольких кредиток? Вроде бы масса банков выдает кредитные карточки. С "цифровыми паспортами" будет то же самое. Возьму и заведу себе тысячу "паспортов" для раздачи своим роботам, скорее всего, это будет дело техники.

Зачастую отсутствие анонимности - действенный способ не дать человеку наделать каких-нить глупостей, о которых он сам потом будет жалеть. К порновфорумам, IMHO, тоже относится.

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

спустя 1 час 8 минут [обр] Александр Самойлов [досье]

Даниэль Алиевский[досье]

Ну и в чем сложность получения нескольких кредиток? Вроде бы масса банков выдает кредитные карточки. С "цифровыми паспортами" будет то же самое. Возьму и заведу себе тысячу "паспортов" для раздачи своим роботам, скорее всего, это будет дело техники.

А люди с тысячью кредиток встречаются?
Там же вроде надо платить за обслуживание или за регистрацию.
Тысячу паспортов РФ тоже не накупишь особо.
Допускаю, что можно "терять" паспорт, затем заводить новый.
Но надо штраф заплатить за утерю и за новый.
Плюс по идее номер "утерянного" выводится из оборота.

спустя 3 часа 7 минут [обр] Даниэль Алиевский [досье]

Настоящий паспорт на то и паспорт, что предъявляется лишь в жизненно важных ситуациях - а не при входе в трамвай или магазин. А виртуальные "паспорта", нужные для повседневной работы в Internet, думаю, можно будет заводить без серьезных ограничений, иначе никто ими пользоваться не будет.

Аналогия c кредитками не моя: "Получение человеком нескольких "цифровых паспортов" должна по трудности соответствовать ... получению нескольких кредиток". Конечно, смысла заводить много кредиток нет - деньги-то на них лежат все равно мои. Я лишь к тому, что аналогия хромает: кредитки, в отличие от паспортов, можно заводить в любом количестве (хоть в данном случае и бессмысленно). Равно как и сертификаты от VeriSign, почтовые ящики на Yahoo, "виртуальные кошельки", счета PayPal, адреса ICQ/Messenger и прочие аналогичные вещи. Если появятся какие-то еще "цифровые паспорта", ситуация будет аналогичной - иначе никто ими пользоваться не будет.

спустя 26 дней [обр] Arty [досье]

Наконец-то дочитал...
Человек спросил "как сделать это?", а ему в ответ "это!?? это не делай!"

Имели чайник с водой: поля для регистрации + картинка с кодом. По ходу дискуссии вылили воду: картинку. К концу остались только поля для регистрации.

Кто-нибудь задавался вопросом - "почему появились картинки?"
Первое основное отличие человека от робота (да и вообще от всего на свете) - интеллект, а не физическое присутствие перед компьютером. Если присутствие можно эмулировать, то интеллект - нет. Так вот картинки с кодом - первое лёгкое решение, позволяющее отличить логический ввод от примитивного. Можно научить робота играть в шахматы, но невозможно научить его думать как человек. И тут уже не встанут преградой ни браузеры, ни возможности ПО, ОС и железа. Ни один робот никогда не сможет ответить на простой вопрос: "Какого цвета зелёные листья?"

И не надо для этого выдумывать сложнейшие, простейшие, да и вообще какие бы то ни было алгоритмы шифрования и передачи данных. Понятно, что такие проблемы, как "я устал регистрироваться" и "я устал думать" в расчёт не берутся по причине их непопулярности.

Картинки, конечно, не позволяют в полной мере провести идентификацию интеллекта, т.к. требуют прямого повторения изображенной информации. В случае с вопросом - да. Робот не сможет ПОДУМАТЬ. И вся идея не сводится к задаванию вопросов и получению правильных ответов. Вся идея сводится к тому, чтобы получить от пользователя данные, которые невозможно получить путём программного анализа данных полученных пользователем для обдумывания. Ни один робот просто не сможет ничего ОБДУМАТЬ.

спустя 23 часа [обр] 30-ый [досье]
кажется об этом уже говорили. Робот не может подумать, но он может методично скачать все вопросы и дать их на расшифровку человеку. Учитывая, что отвечать на вопросы значительно проще, чем их составлять, составитель быстро проиграет отвечающему...
спустя 1 день 20 часов [обр] Arty [досье]
Не думаю, что это большая проблема. Вопросы, если уж заострять внимание именно на них, можно выводить бегущей строкой в единственном файле SWF или Java-апплете, скачивать которые не будет иметь смысла, а распознать на них текст если не невозможно, то оч-чень проблематично. Кроме того, вопросы можно делать генерируемые, т.е. не будет их конечного числа, что опять таки лишает смысла создание базы. В общем, я думаю, надо будет просто один раз показать...
спустя 8 часов [обр] Даниэль Алиевский [досье]

Arty[досье]
Если исходить из Вашей посылки, что компьютер не может "подумать", то особых проблем, конечно, нет. Только посылка эта мне кажется категорически неверной. Вы можете сформулировать, что такое "думать"? А если материалисты правы, и человеческий разум - это всего навсего мозг, то есть система взаимодействующих нейронов, иными словами, биокомпьютер? В чем принципиальное отличие от "железного" компьютера?

Если коротко, то я не могу придумать такого теста, который на уровне вопросов-ответов позволил бы надежно отличить человека, даже весьма умного, от компьютера. А Вы можете? Было бы интересно.

спустя 20 часов [обр] Arty [досье]

Даниэль Алиевский[досье]
Искуственного интеллекта нет - это факт. А если материалисты правы, то будет им и Терминатор, и Матрица, и Судный День.

Думать, мыслить - делать выводы, сопоставлять данные полученного опыта и обобщать познанное.
Мышление - высшая ступень познания, процесс отражения объективной действительности в представлениях, суждениях, понятиях.

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

Запрограммировать такое невозможно, искусственно воссоздать руками человека - тоже.

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

По существу: любая программа в силах отвечать только на те вопросы, которые сможет распознать на соответствие имеющимся алгоритмам и выдать готовый ответ. Если заострять внимание на вопросах-ответах, то весь процесс сведётся к поиску по базе готового ответа на полученный вопрос. Можно навыдумывать сотню-полторы алгоритмов, которые будут генерировать бесконечное число вопросов, требующих неоднозначных ответов. Хакеру-роботописателю понадобится в лепёшку расшибиться, чтобы составить базу таких задачек или раскодить все алгоритмы. Плюс если ещё затруднить получение вопросов. Человекочасов на уразумение и обход всех препонов понадобится немерено. Выкрою времени, набросаю образец.

Сколько времени вы готовы потратить на взлом, если бесплатно?
Сколько денег вы готовы заплатить за взлом и сколько времени вы готовы прождать?

спустя 1 час [обр] Иванов Михаил aka Ivanych [досье]

Даниэль Алиевский[досье]

Если коротко, то я не могу придумать такого теста, который на уровне вопросов-ответов позволил бы надежно отличить человека, даже весьма умного, от компьютера. А Вы можете? Было бы интересно.

Запросто.

Вопрос: "Вася любит Машу. Маша не против. Что будет дальше?"

Ни одна программа не догадается.

спустя 8 минут [обр] Алексей Севрюков [досье]

Иванов Михаил aka Ivanych[досье] Тут вариантов море, однозначного ответа нет. Дальше может быть:

  1. Секс
  2. Любовь
  3. Свадьба
  4. Дети

В любых вариациях или все сразу.

спустя 1 час 21 минуту [обр] Arty [досье]

А если "Вася любит Пашу. Паша не против. Что будет дальше?"... Вариант "Дети" уже отпадает :-)

Вопрос, кончечно, такой для регистрации не пойдёт, но для демонстрации того, что программа на него не сможет ответить - вполне. Хотя, к таким вопросам можно давать подсказку...

Море вариантов ответов тоже не годится. Предположим, у вас на обдумывание вопроса минута, на ввод данных 5 секунд и нужно ответить с первого раза, иначе смена вопроса. Три неудачных ответа: запись в лог для анализа, а полученные данные о вас лично или о вашем роботе - в игнор на N часов.

спустя 2 минуты [обр] Дмитрий Кучкин [досье]
Arty[досье]
Все было бы просто, если бы задавал вопросы и принимал ответы человек. К сожалению, отличать человека от робота придется учить программу.
Если предоставить человеку отвечать произвольно, мы натыкаемся на те же проблемы, что и роботописатель при ответе на произвольные вопросы.
Если воспринимать заранее определенный набор ответов, то и отвечающего робота создать не большая проблема.
спустя 1 час 10 минут [обр] Андрей Новиков [досье]
Arty[досье], только не забывайте, что изначаль речь шла о некоем сервисе. Кто захочет пользоваться сервисом при наличии такой регистрации. Это ведь Вы для посетителей, а не они для Вас.
спустя 6 минут [обр] Даниэль Алиевский [досье]

Arty[досье] То, о чем Вы говорите - философия. Как всякая философия, спорная (я вот скорее считаю Терминатора вполне возможным, пусть и нескоро). А вопрос предельно конкретный.

Неважно, может ли компьютер на самом деле фантазировать, любить, смеяться, сочинять стихи, испытывать страх и т.д. (Этот вопрос даже поставить нельзя аккуратно, ибо, строго говоря, мы не знаем самой базовой вещи: что такое личность.) Важно, может ли сторонний наблюдатель, наблюдающий внешние проявления процесса, опознать тот факт, что наблюдаемый им объект действительно фантазирует, любит, смеется, сочиняет стихи и т.д., или же это просто искусно написанная программа, имитирующая внешние проявления этих действий. А для данной задачи, как справедливо заметил Дмитрий Кучкин, вопрос еще "жестче": можно ли написать программу, которая будет выполнять такое различение. Очевидно, создать такую программу в принципе не проще, чем программу, которая ее "обманет".

А что до вопросов-ответов... Уже сегодня образованный человек знает гораздо куда меньше ответов на вопросы, чем тот же Yandex. Большинство ответов, которые может дать человек в ответ на тестовый вопрос, весьма предсказуемы. Я, пожалуй, рискну предположить, что сегодня можно за обозримое время написать программу, которая сможет обмануть не только робота, но и человека: т.е. успешно притвориться человеком в режиме диалога, так что даже эксперт, сидящий на другом конце, задав, скажем, 100 придуманных из головы вопросов, в 99% случаев не сумеет отличить ее от живого человека. Для этого нужно "научить" компьютер грамотно изъясняться на естественном языке (то, чем занимаются программы-переводчики) и оформлять на этом языке ответы, полученные при запросе к базе знаний (возможно, внешней - типа Google).

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

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

спустя 9 минут [обр] Даниэль Алиевский [досье]

Не удержался и решил вопросить Яндекс: "Вася любит Машу. Маша не против. Что будет дальше?"
Кое-какие ответы, конечно, не в тему. Но немало ответов, свидетельствующих не просто о наличии интеллекта, но о свежести и оригинальности мышления персоны по имени Yandex :-)

"Всевышний любит Машу через Васю, а Васю через Машу. Маша любит Всевышнего через Васю, Вася любит Всевышнего через Машу."

"Треугольник - фигура замкнутая Т.е. если Вася любит Машу, а Маша любит Петю, то Петя должен любить Васю."

"Вы не подумайте, что Вася любит Машу, Вася любит Наташу!
И, если вдруг покажется, что Вася любит Машу, то это совсем не так."

"Но не пошла за него Маша замуж, потому что любила Васю, да и вообще Петров был злобный нищий урод и алкоголик."

"...стоит задуматься: что же именно раздражает, скажем так, дядю Васю и тётю Машу в рекламе?
Такие уж отчаянные дядя Вася с тётей Машей отчаянные националисты и ксенофобы?"

"Если Вася любит Машу то это такая же объективная реальность как 2*2=4. Если я говорю "петя плохой" это тоже свернутое в краткую форму описание ...
2*2 это везде и для всех 4, а то, что Вася любит Машу-это может быть только Машин домысел."

По-моему, неплохо :-)

спустя 17 часов [обр] Arty [досье]
только не забывайте, что изначаль речь шла о некоем сервисе. Кто захочет пользоваться сервисом при наличии такой регистрации. Это ведь Вы для посетителей, а не они для Вас.

Если посетителям охота натыкаться на спам... то к чему тогда вся эта тема? Я думаю - именно для посетителей. И потом речь идёт вего лишь об одноразовом явлении. Выше упоминалась даже принудительная скачка JVM ради регистрации.

я вот скорее считаю Терминатора вполне возможным, пусть и нескоро

Спорить не буду, но хочу сказать, что не считаю разум и мозг одним и тем же. К материалистам не отношусь. Есть душа, которая одета в костюм под названием "тело", а мозг - своего рода костюмный адаптер для мыслей извне. Создателям Терминатора понадобится помимо воссоздания мозга или его аналога ещё и одушевлять железо.

Уже сегодня образованный человек знает гораздо куда меньше ответов на вопросы, чем тот же Yandex

Яndex ничего не знает. Он просто имеет энное количество разрозненной информации, иначе на все вопросы был бы однозначный ответ, а не сотни страниц. На вопрос "какого цвета зелёные листья?" Яndex послал меня в эту тему разбираться. Ни Яndex, ни Google, ни программы-переводчики не умеют отвечать на вопросы - это факт. Они лишь могут провести синтаксический анализ запроса и всё, но понять смысл запроса им не под силу.

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

Я не настаиваю на различении человека и робота. Этот вопрос уже обсуждался выше и там пришли к выводу, что если человека и робота будет пытаться различить программа, то шансов никаких.
Робот сможет правильно ответить на вопрос только:

  1. когда такой вопрос есть в его базе и есть на него готовый ответ,
  2. когда вопрос поддаётся анализу по одному из заранее предусмотренных алгоритмов (правильный ответ не гарантирован),
  3. когда в робота заложен универсальный алгоритм, позволяющий анализировать любую информацию, понимать смысл этой информации, проводить логические цепочки и находить правильный ответ, основываясь либо на собственных выводах, либо на основе имеющейся базы знаний (unreal).

Пункты 2 и 3 я отношу к разряду "Лауреат Нобелевской Премии" года эдак три тысяки какого-нибудь.
Всё, что остается взломщику - отвечать самому на вопросы и составлять базу.
Таким образом, систему достаточно наделить следующими свойствами:

  1. затруднить врагу составление базы данных,
  2. запрограммировать несколько серий похожих алгоритмов задавания вопросов,
  3. разнообразить визуальную подачу вопросов.

Даже при наличии какой-бы то ни было базы вопросов и готовых ответов, робот никогда не будет иметь 100% результата, т.к. конечного числа вариантов не будет известно. И потом, на все вопросы придётся отвечать человеку. На составление такой базы могут уйти годы, а на разработку такой системы защиты - несколько месяцев или даже недель.
Часть вопросов можно позаимствовать из тестов на IQ.

спустя 2 часа 17 минут [обр] Алексей Полушин [досье]
Если есть алгоритм задавания вопросов, то алгоритм анализа этих вопросов будет не сложнее.
спустя 3 часа [обр] Иванов Михаил aka Ivanych [досье]
Алексей Полушин[досье]
Если вопросы такие, что программа не сможет на них ответить, то у нее будет только один алгоритм анализа - брутфорс.
спустя 17 минут [обр] Дмитрий Кучкин [досье]
Arty[досье], Иванов Михаил aka Ivanych[досье]
Базу ответов для робота несложно наполнить с помощью порно-сайта Защита от роботов при регистрации с помощью картинки (258279)
спустя 3 часа 2 минуты [обр] Arty [досье]

Алексей Полушин[досье]
Это как посмотреть. Возможности богатого русского языка дают довольно много возможностей.

Иванов Михаил aka Ivanych[досье]
Брутфорс отпадает, т.к. система должна отслеживать и пресекать такие попытки.

Дмитрий Кучкин[досье]
Просто не нужно разрешать задавать вопросы от имени вашего сайта где не попадя.

спустя 12 минут [обр] Дмитрий Кучкин [досье]
Запретить не получится. Вопросы скачиваются скриптом с защищаемого сайта и задаются посетителям порно-сайта.
спустя 22 минуты [обр] Arty [досье]
Ох не люблю я выражение "не получится"...
спустя 21 минуту [обр] Даниэль Алиевский [досье]

Arty[досье]

Спорить не буду, но хочу сказать, что не считаю разум и мозг одним и тем же. К материалистам не отношусь. Есть душа, которая одета в костюм под названием "тело", а мозг - своего рода костюмный адаптер для мыслей извне. Создателям Терминатора понадобится помимо воссоздания мозга или его аналога ещё и одушевлять железо.

Я тоже "не отношусь", ну и что? Откуда Вы знаете, почему и в какой момент душа поселяется в набор делящихся клеток, которые в будущем станут ребенком? И, соответственно, на основании чего Вы считаете, что совершенно так же душа не может поселиться в куске железа, если его внутренняя организация и возможности не уступают человеческому зародышу на соответствующей стадии клеточного деления? Дальше имеем очевидные сопутствующие вопросы, вроде того, обладает ли душой вирус, и если нет, то где в сложном мире животных и растений проходит граница между существами, наделенными душой (вроде человека), и вирусом.

Яndex ничего не знает. Он просто имеет энное количество разрозненной информации, иначе на все вопросы был бы однозначный ответ, а не сотни страниц. На вопрос "какого цвета зелёные листья?" Яndex послал меня в эту тему разбираться. Ни Яndex, ни Google, ни программы-переводчики не умеют отвечать на вопросы - это факт. Они лишь могут провести синтаксический анализ запроса и всё, но понять смысл запроса им не под силу.

Здесь мы упираемся все в те же вопросы, не имеющие строго научного ответа: что такое "знает" и что такое "понять смысл". Я думаю, не так уж трудно создать (на основе Yandex) систему, которая будет "знать", что зеленые - это цвет, и что вопрос "какого цвета зелёные листья?" смысла не имеет. Да, создатели Яндекса пока не пытались решать эту задачу - современные поисковые системы развиваются всего лишь 10 лет с небольшим, и пока что сосредотачивали усилия в работе с ключевыми словами. Но вполне очевидно, что интеллект поисковиков будет расти, и они будут опознавать все более сложные синтаксические конструкции - ибо это востребовано. (Вспомним, что еще недавно поисковые системы ничего не смыслили в склонениях и спряжениях русского языка.)

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

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

Робот сможет правильно ответить на вопрос только:

  1. когда такой вопрос есть в его базе и есть на него готовый ответ,
  2. когда вопрос поддаётся анализу по одному из заранее предусмотренных алгоритмов (правильный ответ не гарантирован),
  3. когда в робота заложен универсальный алгоритм, позволяющий анализировать любую информацию, понимать смысл этой информации, проводить логические цепочки и находить правильный ответ, основываясь либо на собственных выводах, либо на основе имеющейся базы знаний (unreal).

Пункты 2 и 3 я отношу к разряду "Лауреат Нобелевской Премии" года эдак три тысяки какого-нибудь.

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

Что же до пункта 3, то где Вы видели человека, способного проанализировать любую информацию и найти правильный ответ, выстроив нужную логическую цепочку? Задача ведь не в том, чтобы стопроцентно ответить на любой каверзный вопрос, а в том, чтобы не отстать в этом отношении от человека. Люди тоже далеко не всегда способны ответить адекватно.

Неужели Вы считаете, что количество семантически различных вопросов, которые можно придумать и ответы на которые знает большинство людей, астрономически велико? Хорошо, если их миллиарды, а то ведь могут быть и сотни тысяч. Я склонен думать, что если лет эдак 10 ежедневно опрашивать миллионы людей, задавая им тестовые вопросы и фиксируя ответы, что полученной базы с лихвой хватит на 99.999% случаев возможных вопросов. И когда подобная база станет публичной (скажем, в виде будущего Google, который научится отвечать на вопросы, задаваемые на естественном языке), любая защита на основе тестовых вопросов потеряет всякий смысл.

спустя 1 час 4 минуты [обр] Arty [досье]
на основании чего Вы считаете, что совершенно так же душа не может поселиться в куске железа

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

Я не верю, что можно заставить машину думать также продуктивно и гибко, как человек. Не верю, что машина когда-либо сможет отвечать на все вопросы, или хотя бы на 99.999% - как бы сладка и правдоподобна не была теория. Не верю в то, что количество вопросов конечно. Для этого понадобится собрать опыт человечества за тысячи лет и продолжать его собирать по ходу событий. Такая база не поместится ни на одном носителе и не найдётся такого суперкомпьютера, который сможет этой базой управлять, даже через десятки лет. Уверен, что на пути создания системы, которую будет сложно сломать, обмануть и предсказать, встанет немало преград, но ещё больше их будет у того, кто на такую штуку вздумает покуситься.

В общем, я чувствую, что через пару дней эта сведётся к обсуждению смысла жизни или ещё какого-либо глобального вопроса :-)

Наступил момент, когда спор о том как далеко выстрелит пушка пора решать путём выстрела из пушки и замера дальности полёта снаряда в полевых условиях. То есть, провести эксперимент.

спустя 9 часов [обр] Алексей Полушин [досье]

Arty[досье]

Это как посмотреть. Возможности богатого русского языка дают довольно много возможностей.

Конечно возможности дают много возможностей :) Человек может задать вопрос на который не сможет ответить программа. Но вопросы-то должен задавать не человек. Попробуйте написать программу которая задает вопросы. Вы предлагаете "запрограммировать несколько серий похожих алгоритмов задавания вопросов". А я утверждаю что программа анализирующая такие вопросы будет не сложнее чем программа их задающая.

спустя 1 час 16 минут [обр] Даниэль Алиевский [досье]

Да вроде бы уже все согласились, что "вопрос уже обсуждался выше и там пришли к выводу, что если человека и робота будет пытаться различить программа, то шансов никаких". Или я Вас не понял, Arty?

Но это частичный ответ. Ибо вполне остается возможность привлечения человека-эксперта для такого различения. Грубо говоря, 99% "тупых" хакерских роботов отсекаются автоматом, а если автомат пропускает регистрацию, то обязательно привлекается эксперт - чтобы принять окончательное решение. Для всех ситуаций это не годится, но очень многие интернетовские службы, предполагающие регистрацию, предусматривают рассмотрение заявки персоналом и "ответом в течение 24 часов". Если "умных" роботов будет достаточно много, то их рано или поздно окажется больше, чем настоящих клиентов (спама всегда больше, чем писем). И тогда возникнет проблема - надо уметь за 1-2 минуты рабочего времени отфильтровывать заявку, поступившую от робота.

Проблема, согласен, звучит искусственно. Но все равно интересно - сложно ли написать робота, который сможет вступить в диалог по ICQ и некоторое время успешно выдавать себя за человека. И какое именно время: сколько вопросов-ответов он выдержит.

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

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

А если попытаться оценить? Будем считать "опытом человечества" всю литературу, существующую на сегодня в бумажном виде во всех библиотеках, учреждениях, частных домах (разве плохая оценка?) Я бы так оценил порядки (заведомо завышая): на миллиард жителей Земли приходится по 1000 мегабайтных книг на каждого, итого миллион терабайтов - цифра не очень-то астрономическая. А если учесть, что средний тираж книги вряд ли меньше 1000 экз, останется 1000 терабайтов на "весь человеческий опыт". Кажется, у Гугла база побольше. Да и вообще, о чем тут говорить: очевидно, что довольно скоро 90% всего сколько-нибудь нетривиального, написанного когда-либо человечеством, попадет в Internet и, следовательно, в базы крупнейших поисковиков.

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

Я просто прошу обратить внимание: создание симфоний, исследование космоса, развитие математики, все прочее, чем замечателен человеческий разум - это отнюдь не то же самое, что и ведение обычного человеческого диалога или ответы на обычные, общеизвестные вопросы. Чтобы не выглядеть идиотом (то бишь роботом) в глазах среднего человека, вовсе не нужны гениальные прозрения и вообще творческое мышление - вполне достаточно обладать абсолютной памятью и очень много знать. (Извиняюсь, не "знать" - это же философский термин. Скажу иначе: обладать информацией.) И плюс к этом уметь грамотно разговаривать, т.е. транслировать вопросы на естественном языке в запросы к базе знаний и, наоборот, подавать свою информацию на естественном языке. Разве это не близко к той задаче, которой профессионально занимаются разработчики translate.ru?

спустя 3 часа 29 минут [обр] Arty [досье]
Попробуйте написать программу которая задает вопросы

Обязательно попробую. Уже из-за принципа :-)

А я утверждаю что программа анализирующая такие вопросы будет не сложнее чем программа их задающая.

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

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

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

спустя 5 часов [обр] Антон Клесс [досье]

Мда, и при чем тут картинка (сабж)?

Замечу, что и вполне средненоральному человеку порой бывает непросто ответить на вопрос другого такого же человека... Равно как и

определить смысл или бессмысленность вопроса
спустя 2 часа 5 минут [обр] Даниэль Алиевский [досье]

Arty[досье]

Согласен, можно разобрать вопрос на составные части, определить части речи, разобрать даже каждое слово на составляющие, в общем проделать действия грамматического характера. И какой запрос будет дальше к базе? Какие механизмы будут задействованы? Как будет определён смысл или бессмысленность вопроса и что именно должно быть ответом на него? Вот этого я понять не могу.

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

Я почему-то уверен, что количество различных вопросов, на которые действительно способен ответить произвольный человек, не особо задумываясь и не роясь в справочниках, сравнительно невелико. Да, есть громадные группы очень похожих вопросов. Скажем "сколько будет девять плюс пятнадцать" - представитель группы вопросов, отличающихся способом записи чисел, арифметическим действием и т.п. Или "слон - это птица или млекопитающее"? Тоже группа вопросов на классификацию общеизвестных животных и растений. Но:

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

Чтобы научить ребенка, что слон - не рыба, тратится не один день. В общей сложности багаж наших ответов копится десятки лет. А сколько времени нужно, чтобы научить программу разбираться с животными? Наверно, того же порядка. Но в отличие от ребенка, такую программу достаточно сделать один раз (или 100 раз, по числу конкурентов, которые не захотят делиться друг с другом). И через некоторое время появятся популярные поисковые системы, способные отвечать на вопросы такого рода. Причем, разумеется, по мере пополнения баз знаний они быстро превысят возможности среднего человека, что превратит их в чрезвычайно удобные и полезные интеллектуальные справочники.

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

спустя 25 минут [обр] Алексей Серебряков [досье]

Господа, мне кажется, вы слишком увлеклись вопросами будущего человечества. Обсуждение искусственного интеллекта, конечно, захватывает, но имеет действительно мало общего с прикладной задачей защиты от автоматической регистрации. Да и автор темы уже давно не появлялся 8-)

Если отбросить всю философию, то придем к следующему:

  1. Если нет базы с конечным количеством вопросов, то написать программу, обманывающую другую программу - суть вещь достаточно легкая.
  2. Если есть конечная база, выясняем ответы на все вопросы. Пусть и с помощью порнухи - как угодно.

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

И все это я написал ради одной офф-ремарки. Когда обсуждали программы-переводчики, у меня вскипело. Если кто-то действительно наивно полагает, что программа-переводчик не должна думать, то попробуйте перевести, скажем, форточка - на английский и, скажем, french window - на русский.

спустя 11 минут [обр] Даниэль Алиевский [досье]

Алексей Серебряков[досье]
Вы, надо полагать, занимались программами-переводчиками? Я уже давно ждал, пока кто-нибудь квалифицированный выскажется, каков нынче интеллект подобных программ.

А вопросов, надо полагать, и впрямь немало. Если автор сайта хочет защититься, он может за пару часов наполнить свою базу тысячей вопросов типа "является ли слон черепахой". И пока его компьютер не вскрыт, универсальному хакерскому роботу будет очень сложно узнать правильные ответы. А как только вскроют, слепить новую такую базу тоже легко. Мне сдается, Arty прав: до появления универсальных публичных "отвечающих машин" уровня Google такая защита будет вполне работоспособной.

спустя 30 минут [обр] Алексей В. Иванов [досье]
Действительно пора заканчивать обсуждение. Человечество еще не решило банальнейшей задачи (с т.з. высоты обсуждения в данной теме) о распознования текста с картинки, а вы говорите AI, базы, и т.п.
Сначала попробуйте поломать старую, неэффективную защиту, потом уже придумывайте AI :)
спустя 14 минут [обр] Даниэль Алиевский [досье]
IMHO обсуждение пора заканчивать, когда всем стало неинтересно :) Или когда тема настолько отклонилась от первоначальной, что заслуживает отдельного трэда - что вроде бы пока не видно.
спустя 15 часов [обр] Arty [досье]

Алексей Серебряков[досье]

  1. Если нет базы с конечным количеством вопросов, то написать программу, обманывающую другую программу - суть вещь достаточно легкая.
    1. Если есть конечная база, выясняем ответы на все вопросы. Пусть и с помощью порнухи - как угодно.
  1. Без эксперимента соглашусь только на то, что можно будет как-то распознать вопросы в которых содержится ответ.
  2. Это вопрос защиты. Думается мне, что его решение будет далеко не в пользу собирателя ответов.

Трудоспособным результатом взлома должна будет явиться точная копия программы, задающей вопросы + логическая копия исходных данных. Для меня такая задача относится к пониманию поведения группы людей с психическими расстройствами: можно найти закономерности, но сюрпризы неизбежны.

А что по поводу программы-переводчика, то я действительно "наивно полагаю", что программа (любая) "думать" не может. Программирование - это в какой-то мере учёт вероятностей: если это, то то, а если вот это, то вот так. К этому же относится и перевод "форточки" и "french window".

спустя 42 минуты [обр] Дмитрий Кучкин [досье]
Arty[досье]
Все-таки, задача создания надежной защиты от скрипта, который, притворяясь браузером, будет брать вопросы с защищаемого сайта, показывать их посетителям другого сайта и возвращать ответы на защищаемый сайт, на сегодняшний день представляется довольно безнадежной.
По крайней мере мне не удалось придумать схему, для которой в течение пары минут не нашлось бы метода обхода или взлома. А без этого даже самый точный алгоритм распознавания человека теряет свою ценность как способ защиты от роботов в веб.
спустя 1 час 18 минут [обр] Arty [досье]
Защиту делать нужно при любом раскладе. Если уж не удастся полностью оградить вопросы от массированного скачивания, то уж преград навыдумывать можно порядком. Как в том анекдоте... убить не убил, но здоровье у него уже не то.
спустя 2 дня 17 часов [обр] Алексей Полушин [досье]
Arty[досье] Парадокс в том, что если вы знаете как оградить вопросы от массированого скачивания, то вопросы вам задавать уже и не нужно - вы и так можете предотвратить массировнаные регистрации. Или чтобы получить вопрос надо сначала распознать цифры на картинке ?
спустя 4 часа 25 минут [обр] Arty [досье]

Алексей Полушин[досье] Есть ещё один парадокс: даже база скачаных вопросов не принесёт их новому владельцу никакой радости, т.к., при условии генерации вопросов, вероятность того, что однажды сгенерированный вопрос когда-либо повторится ничтожно мала. Предположим, вопрос состоит из 5-7 слов, а слов в базе порядка ста тысяч. Сколько комбинаций получается? Сколько времени понадобится, чтобы ответить на все вопросы вручную? Единственное, что спасёт, это разработка атоответчика. Кому это удастся в ближайшие 10 лет, пусть обращается - поставлю памятник при жизни :-)

Я уже набросал небольшое ТЗ. Если ничего срочного не свалится, то выложу демоверсию через недельку.

спустя 42 минуты [обр] Сергей Круглов [досье]
Arty[досье]
Так мы базу не накапливаем, мы их любителям порнушки даем, а ответы, от них полученные, системе скармливаем.
спустя 5 минут [обр] Алексей Полушин [досье]
Сколько комбинаций ? Вы же не думаете, что случайно выбрав 5-7 слов из базы, вы получите осмысленый вопрос ? Ваша программа должна выдать понятный человеку вопрос, на который человек может легко ответить. Если у вас получится что-то сложнее чем построение вопроса по одному из нескольких предопределенных шаблонов, то вам можно ставить памятник при жизни.
спустя 3 часа 11 минут [обр] Arty [досье]

Сергей Круглов[досье]
На "любителей порнушки" можно найти управу. Допишу скрипт - поупражняетесь. Там будет несколько заплаток, препятствующих "скармливанию" вопросов кому-либо, кроме посетителей моей странички.

Алексей Полушин[досье]
Ну вы что меня совсем за безграмотного приняли? На программу для генерации вопросов мне бы недели не хватило. Я лишь хочу на простом (без заумных генераций) примере показать, что посредством русского языка можно сделать систему более прочной, чем ввод кода с картинки, раз уж этот способ здесь забраковали.

спустя 43 минуты [обр] Алексей Севрюков [досье]

Arty[досье]

Там будет несколько заплаток, препятствующих "скармливанию" вопросов кому-либо, кроме посетителей моей странички.

Очень сомневаюсь что это возможно.

спустя 4 часа 23 минуты [обр] Андрей Новиков [досье]
Arty[досье], Вы думаете, у нас у каждого есть карманный раскрученный порнушный сайт?
спустя 2 часа 36 минут [обр] 30-ый [досье]

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

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

спустя 8 часов [обр] Антон Клесс [досье]
Хех. Эта индустрия развивается...
спустя 1 час 54 минуты [обр] Андрей Новиков [досье]
30-ый[досье], ну они же эти циферки показывают не ради спортивного интереса, а для взлома/спама конкретного сайта. Значит такие акции кратковременны.
спустя 15 минут [обр] Arty [досье]
Очень сомневаюсь что это возможно.

Я когда-то тоже иногда сомневался, но понял, что сомнения либо убивают инициативу (что иногда бывает полезно, но не всегда), либо просто оттягивают момент истины.

Вы думаете, у нас у каждого есть карманный раскрученный порнушный сайт?

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

спустя 48 минут [обр] Андрей Новиков [досье]
Arty[досье], хорошо, испытаю на Xpoint. Причем не нарегистрации, а на добавлении сообщения :)
спустя 59 минут [обр] Андрей Анатольич [досье]

2 All:
Способы защиты, которые вы тут обсуждаете, пригодятся только лет через 10, если не больше. Мыслите более реальными категориями!

Всего все равно не предусмотреть. Лучше опираться на реальные вещи, а не предусматривать все возможные варианты.

Дальше сами думайте :)

спустя 9 часов [обр] Даниэль Алиевский [досье]

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

Просьбы ввести "циферки" на порносайтах я видел. Но совсем с другой целью - заставить посетителя кликнуть по ссылке (на которой и можно отыскать нужные циферки). И было это давно: бум вокруг CPC давно поугас. А сейчас постоянно натыкаешься на вполне цивилизованные платные сайты с развратом, обустроенным чрезвычайно солидно и по последнему слову дизайна :) Пока, действительно, ни разу в жизни мне не попадалось практическое применение "технологии леммингов". Обычно имеются более простые способы взлома, вроде кражи паролей у легальных пользователей.

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

Видимо, ситуация должна созреть и "утрястись". Ибо, в принципе, чего проще: определенные операции на некоторых сайтах (вроде отправки сообщения в форум), равно как и отправка писем, подлежат оплате. С пользователя провайдер попросту списывает некоторую сумму за такую операцию. Провайдерам это было бы выгодно.

Очевидно же, мне несложно заплатить рубль за добавление вот этого сообщения. (Потраченное мной время все равно ценнее.) Или за регистрацию сайта в Google. Чего я не хочу, это специально об этом думать, вводить код своей кредитки и т.п. Пусть бы провайдер с меня списал лишний рубль за факт отправки HTTP-запроса в варианте POST.

А для автора робота подобная оплата сразу выльется в миллионные затраты. Если только не останется провайдеров и хостеров, которые злостно раздают подобный трафик почти бесплатно.

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

спустя 26 минут [обр] Иван Шумков [досье]

Даниэль Алиевский[досье]

Ибо, в принципе, чего проще: определенные операции на некоторых сайтах (вроде отправки сообщения в форум), равно как и отправка писем, подлежат оплате.

Ну тогда бесплатно, простите, не вздохнуть не пернуть будет.

спустя 28 минут [обр] 30-ый [досье]
Проблема только в том, что:
  1. маловероятно, что какой-то банк согласится обрабатывать эти рублевые транзакции. Это ему мороки больше чем прибыли.
  2. довольно сложно будет проконтролировать, что с твоего счета Новиков снял за сообщение лишь рубль, а не 10000.
  3. чтобы избавится от "а" и "б" нужно будет разработать стандарты, софт и инфраструктуру. Учитывая, что даже элементарную обратную проверку EMail-адреса до сих пор никто толком не реализовал (это при том, что производителелей как серверов так и клиентов по пальцем пересчитать можно), расчитывать на микротранзакции в Сети не приходится.
спустя 9 часов [обр] Даниэль Алиевский [досье]

Иван Шумков[досье]
А что, у Вас бесплатный Internet? У меня вот мегабайт по 2.5 р. По одному xpoint-у прогуляться, пару рублей потрачу. А всего за день нормальной работы может и 100 р. набежать. При том, что мне редко нужно за день послать более 3-5 сообщений в форумы. Письма же вообще редкость. (Если не считать писем коллегам для обмена информацией, но внутрисетевые почтовые обмены легко можно сделать бесплатными.)

30-ый[досье]

  1. А этим не банк должен заниматься. Самое естественное, если провайдер будет списывать эти деньги со счета абонента - в свою пользу, конечно. Скажем, за всякий факт POST-запроса, или за всякую отправку письма. Но, поскольку миллион провайдеров быстро не перестроятся, можно бы начать со специальной организации типа "бесспамовый интернет". Заводишь там счет, инсталлируешь специальную утилиту, которая перехватывает весь исходящий трафик на твоем компьютере. И с этого момента за каждый "необычный" запрос с твоего счета списывается копейка. При этом, сайты и почтовые сервера, которые объявили о своей бесспамовости, договариваются с этой организацией и отказываются принимать какие бы то ни было запросы, не снабженные соответствующей подписью от этой утилиты. А для прочих сайтов утилита может и не списывать никаких денег (хотя лучше бы она это делала).

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

Что касается почты и официального почтового ящика, засвеченного на моем сайте, то опять же - этот сайт будет объявлен "бесспамовым" и требовать инсталляции указанной утилиты. Конечно, только в случае, если кому-то непременно надо что-то отправить (скажем, послать мне письмо). Соответственно, мой входящий почтовый сервер будет принимать только письма, отправленные по специальному протоколу с использованием утилиты. Если кому-то неохота, а связаться очень нужно - пожалуйста, есть телефоны, обычная почта и т.п. А также координаты хостера, на случай официальных жалоб.

  1. А Новиков не должен ничего снимать за сообщения на xpoint. Он должен лишь радоваться, что его сайт имеет статус бесспамового и что роботы никогда не будут его ломать. Деньги пойдут организации "бесспамовый интернет" (или провайдеру).
  1. В моем варианте с утилитой, все, что нужно - достаточно высокий статус организации (организаций), поддерживающей эту штуку. Чтобы любой серьезный менеджер крупной корпорации не считал странным установку утилиты. В идеале, утилита должна быть частью OS или пары броузер/почтовый клиент.

А еще нужна действительно удобная система платежей. У меня вот нет кредитки (такой я странный), и со всякими WebMoney я никак не связан :) И что, из-за этого на сайты не ходить? Не буду я заводить кредитку, чтобы на xpoint сходить. До сберкассы, может, и дойду, по дороге за карточками оплаты Internet. Хотя тоже ругаться буду, это неуклюжая система. Вот если бы в киоске можно было соответствующую карточку купить и активироать - большего мне не надо.

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

спустя 54 минуты [обр] Андрей Пахомов [досье]

Даниэль Алиевский[досье]

Все же, из всех рассмотренных здесь защит мне кажется наиболее перспективной финансовая схема.

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

спустя 1 час 30 минут [обр] Сергей Круглов [досье]
Если мы имеем доступ только через банковский счет, то сайт знает каждого посетителя и отличает его от других - т. е. имеем то самое отличие робота от кучи людей.
спустя 27 минут [обр] Андрей Пахомов [досье]
Если мы имеем доступ только через банковский счет, то сайт знает каждого посетителя и отличает его от других - т. е. имеем то самое отличие робота от кучи людей.
Не понял, а что мешает спамеру заразить компьютер этого пользователя какой нибудь спайваре, которая бы от имени этого пользователя гадила на форумах и делала регистрации ? Все будет честно, будут сниматься деньги, но пользователь то об этом знать не будет.
спустя 54 минуты [обр] Андрей Новиков [досье]
Андрей Пахомов[досье], как это не будет? У деньги же пропадать будут пачками. У Сбербанка есть, например, такая услуга: при каждом платеже по карточке приходит SMS — можно вовремя перекрыть кислород мошенникам. Тут можно тоже что-то подобное придумать, возможно даже с пред-модерацией :).
спустя 8 минут [обр] Дмитрий Кучкин [досье]

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

Но все равно остается проблема троянов-спайвари.

спустя 6 минут [обр] 30-ый [досье]

> Заводишь там счет, инсталлируешь специальную утилиту, которая перехватывает весь
> исходящий трафик на твоем компьютере...

Просто сказка. Даниэль Алиевский[досье], таких идей про какую-то программу и какую-то фирму, которя что-то магически делает для отмены СПАМа я могу вам по 10 рублей за штутку два тома понаписать. Вы ж небось тоже институт кончали и должны знать как пишется техническая документация, техническое задание или подобные документы. В вашем же "шедевре" такое количество дыр и неточностей, то даже обсуждать не хочется...

спустя 4 часа 22 минуты [обр] Иван Шумков [досье]
Даниэль Алиевский[досье]
Почти, ADSL, трафик не лимитирован.
спустя 3 часа 31 минуту [обр] Даниэль Алиевский [досье]
30-ый[досье] А вот не кончал я никакого института, школьник я по образованию, так что не упрекайте :)
Я собственно на шедевры не претендовал. Можно поконкретней, какие дыры, какие неточности? Может быть, будет любопытно.
Я бы и сам организовал подобную фирму (и написал утилиту), да вот с системами платежей (удобных для русских) мало знаком. Ну и времени, как водится, мало. А так, вроде бы ничего особо сложного.
спустя 34 минуты [обр] 30-ый [досье]

Уффф как все запущено :-) Проблема платежей во всей схеме самая крошечная и незаметная проблема.

Если я не поставлю себе эту утилиту, что прикажите делать сайту XPoint? Просто не пустить? Тогда посещаемость быстро упадет до нуля и там и останется. Все равно пустить? Тогда какой прок от этой утилиты? И кто будет переписывать софт серверов, чтобы они требовали от пользователя запущенность этой утилиты?

Грубо говоря что-то подобное уже давно реализовано на уровне сертификатов пользователей. И "уважаемые фирмы" есть, которые эти сертификаты поддерживают. Все(!) сервера и все броузеры поддерживают эту технологию. Что мешает использовать? А то, что как только я включу на сайте проверку сертификатов, больше ко мне никто не зайдет, дабы у 99% пользователей этих сертификатов нет. Они им не нужны.

спустя 28 минут [обр] Даниэль Алиевский [досье]

30-ый[досье]
Ага, не пустить. А что - очень многие программы нельзя использовать, пока их не купишь. Если деньги небольшие - почему нет?

Нормальные форумы вроде xpoint живы не за счет абстрактной "посещаемости", а за счет нетривиальных постингов людей, которые хотят высказаться. Постинги "левых" посетителей скорее им вредят. Как уже говорил, ради такой возможности мне совершенно не жалко рубля на сообщение, если это не вызовет проблем с оплатой. А Вам жалко?

Главное злесь - централизованность соответствующей службы. Чтобы не было проблем адаптировать сервер, чтобы он требовал наличие утилиты от пользователя (при заполнении POST-форм или получении IMAP-письма).

Насчет "сертификатов пользователей" я, оказывается, не в курсе. Можно подробнее? (Или это тупиковая ветка?)

спустя 13 дней [обр] Василий Свиридов [досье]
Думаю стоит упомянуть вот эту систему
http://www.captcha.net/
спустя 1 месяц 20 дней [обр] Андрей Новиков [досье]
А вот, что придумал Гугл:

It's pretty exciting to see those words on the Gmail homepage. For the last 16 months, a lot of people have been asking us how they can sign up for Gmail, and today we're happy to be able to say, "Just go to gmail.com." From there, you can get an invitation code sent to your mobile phone, and with this code, you can create a Gmail account. Once you have Gmail, you can try out our brand new IM and voice service, Google Talk.

Why use mobile phones? It's a way to help us verify that an account is being created by a real person, and that one person isn't creating thousands of accounts. We want to keep our system as spam-free as possible, and making sure accounts are used by real people is one way to do that.

спустя 7 минут [обр] Lynn «Кофеман» [досье]
Хорошо, конечно, но что делать если нет мобильника?
спустя 9 минут [обр] 30-ый [досье]
у знакомого одолжить. Или даже просто указать его телефон, а потом перезвонить и попросить прочитать SMS'ку. Типа как в анекдоте "- алло, это Вася. Мне случайно никто не звонил" :-)
спустя 17 минут [обр] Андрей Новиков [досье]
Lynn «Кофеман»[досье], еще года три назад в подобных случаях слвшал вопрос: "а что делать, если нет e-mail?" Что-то теперь его уже не задают. :)
спустя 3 минуты [обр] Lynn «Кофеман» [досье]

30-ый[досье]
Нуууу...


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


Андрей Новиков[досье]
Согласитесь, что завести e-mail на бесплатном ящике проще и дешевле, чем купить телефон.

спустя 1 час 49 минут [обр] 30-ый [досье]
Я думаю до тех пор пока у вас на один телефон зарегистрировано меньше сотни аккаутнов никто вам и слова не скажет.
спустя 18 часов [обр] Михаил Кюршин aka ya-ya [досье]
Я тут вчера подумал и мне пришла такая мысль, что можно вместо флеша с летающими по кругу (или какими-нибудь вообще любыми случайными зигзагами) буквами использовать анимированный гиф. Распознать такое дело, я думаю, сложнее, чем картинку с шумами и деформацией букв, но тут встаёт вопрос генерации: пока я не представляю как можно сгенерировать динамически анимированный гиф. Опять же, некоторые блокируют анимированные гифы. Но в принципе, об этом можно писать внизу картинки, что, мол, "если хотите зарегистрироваться, введите текст с картинки, а чтобы увидеть картинку, отключите фильтр на анимированные гифы"
спустя 3 часа 51 минуту [обр] 30-ый [досье]
Пару сотен реплик назад это уже обсуждалось. Если наложить все слои друг на друга и применить к ним крайне нехитрые фильтры (в частнсти, убирающие фон), прочитать такой гиф будет даже проще, чем картинку с шумами.
спустя 4 дня [обр] Антон Клесс [досье]
А если слово показывают побуквенно, буквы накладываются одна на другую? Типа бегущей строки?..
спустя 1 день 23 часа [обр] Даниэль Алиевский [досье]

Антон Клесс[досье]
...То авторы распознавалки это предусмотрят и будут распознавать тоже побуквенно, кадр за кадром.
Да нет, тут на каждый алгоритм защиты такого рода заведомо найдется алгоритм взлома. Вопрос времени - эта защита должна достаточно много лет быть популярна, чтобы все нужные библиотеки и модули для взломщиков появились и получили распространение.

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

спустя 23 минуты [обр] GRAy [досье]
Даниэль Алиевский[досье] Кабы было так, интернет не получил бы и доли той популярности которую имеет :)
спустя 2 часа [обр] Иванов Михаил aka Ivanych [досье]
GRAy[досье]
Вот уж не скажите. Мобильная связь имеет гораздо бульшую популярность.
спустя 19 часов [обр] Дмитрий Кучкин [досье]
Иванов Михаил aka Ivanych[досье]
Это легко объясняется. Интернет, в частности веб, не очень понятная штука для совсем постороннего человека. В первую очередь он не понимает, а зачем это вообще нужно. В отличие от телефонной связи, мобильной в том числе.
А еще нужны элементарные навыки работы на компьютере.
спустя 2 часа 3 минуты [обр] GRAy [досье]
Иванов Михаил aka Ivanych[досье] Так я не говорю, что мобильная связь непопулярна - я говорю что интернет популярен настолько насколько это есть во многом потому что он "бесплатен" и нет этой системы "требовать оплаты чего угодно" ибо первоначальная цель интернета была не в "предоставлении услуг", а предоставление среды для обмена информацией, когда каждая из сторон заинтересована в этом обмене.
Проблема спама и сопутсвующие ей технологии никак не привязаны к среде распространения - разве вы не получаете рекламу в виде SMS на ваш мобильный телефон от оператора? Я получаю ;( Барьер входа на этот рынок пока высок (в отличие от интернет) и позволить себе подобного рода "фокусы" может пока только владелец сети, но дайте время и ваш телефон станет таким-же объектом спамерских атак как и почтовый ящик. Между прочим, в США (даже у нас это по-моему было, но не так массово) одно время практиковались автодозвонщики, которые тупо (или не тупо) перебирали телефонные номера, и при соединении включали запись с неким рекламным текстом. Теперь это запрещено законодательно.
Даниэль Алиевский[досье] как мне кажется, немного исказил идею, им же предложенную ;) Действительно, если спамер будет платить за каждое сообщение, отправленное (это важно) пользователю - он будет осмотрительней. Но тут не понятно кто "оказывает услуги"? Мне думается что пользователь - читая или просто тратя своё время на эти сообщения. А если получать за это деньги будет "интернет оператор" (по аналогии с сотовой связью) - ничего не изменится ровным счётом, т.к. "интернет оператор" практически не несёт никаких издержек на эти сообщения, а пользователь, как нёс так и будет продолжать их нести. Да это потенциально уменьшит кол-во спама, возможно сделает его "качественней" более "целенаправленным" и т.п. но всё равно - пользователь никогда не сможет закрыть свой ящик полностью от любых нежелательных (ох и скользкое слово ;) сегодня они нежелательные, завтра желательные - люди так непостоянны) сообщений.
Обобщая, push технология рекламы - в принципе неизживаема: посмотрите в телевизор, на улицу, послушайте радио - разве всё что вы там слышите/видите/читаете вы хотели бы слышать/видеть/читать? Пока каналы поступления информации (а интернет и электронная почта именно канал) не контролируются потребителем этой самой информации - спам будет существовать. Один надёжный способ всё-таки есть - не хотите получать спам - не заводите почтовый ящик ;), не смотрите телевизор, не выходите на улицу и отключите все телефоны. Слишком радикально? Возможно. Но это единственный 100% надёжный способ сделать вас недоступным для спамеров ;)
Говоря о технологиях защиты от автоматической регистрации (собственно о чём весь этот топик, а то я что-то в сторону удалился :) можно констатировать - даже плата за регистрацию не гарантирует от того, что не будет желающих проделать это автоматически и воспользоваться ресурсом в рекламных (?) целях. Целесообразность затрат на это определяется к сожалению не ВиУ Новиковым - а заитересованной в спаме стороне. Доступ к особо "лакомым" кускам аудитории ценный товар, покупатель на который найдётся почти всегда. Вот если бы спамер запостивший рекламу на форуме ОБЯЗАН был бы оплатить её не только "площадке для рекламы" в лице ВиУ Новикова, но и КАЖДОМУ пользователю форума прочитавшему такое сообщение - это образовало бы огромный потенциальный барьер для желающих это сделать ;)
спустя 1 час 39 минут [обр] Даниэль Алиевский [досье]

GRAy[досье]
У меня возникло впечатление, что вы смешиваете два разных понятия.

Существует такая вещь, как реклама. Разумеется, 99% рекламы, которую мы видим и слышим, нам не нужна и скорее неприятна (хотя не всегда). В то же время, смешно отрицать ее необходимость в глобальных масштабах.

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

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

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

С другой стороны, спам обычно безадресный, хуже того, в последнее время очень часто он содержит вирус или троян. Получая спам, я реально теряю деньги (на трафике) и время: скажем, каждый день по 15 минут без всякой пользы. Напротив, настоящая реклама, приходящая на мой ящик (скажем, от моего провайдера), хотя тоже отнимает очень маленькое время, но зато иногда помогает мне быстрее обнаружить действительно нужный мне товар (скажем, новый тарифный план).

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

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

Пример с сотовыми, кстати, очень характерен. SMS на мобильник от оператора - это настоящая реклама. Да, обычно неприятно, но гарантированно бесплатно для меня. И почти наверняка некоторым пользователям эта реклама оказывается "в тему" - иначе она не имела бы смысла. А вот хитрый Вася Пупкин из Тьмутаракани совершенно точно не станет посылать мне сотню SMS в день - ибо, как правило, исходящий трафик на сотовых компаниях платный.

спустя 3 дня [обр] Андрей Пахомов [досье]

Даниэль Алиевский[досье]

А вот хитрый Вася Пупкин из Тьмутаракани совершенно точно не станет посылать мне сотню SMS в день - ибо, как правило, исходящий трафик на сотовых компаниях платный.

станет, станет... С развитием и увеличением числа мобильников с поддержкой Java и пр. программных технологий вырастет количество вирусов под них, и в конечном итоге приведет к созданию троянов, занимающихся рассылкой спама через зараженные телефоны. В результате, оплачивать спам-атаки будет не сам спамер, а обычные пользователи. Вы же сами пишите:

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

так почему же вы считаете, что взимание платы остановит спамера, если сами же делаете акцент на том, что он стремится различными техническими ухищерениями сделать это бесплатно. Тем более что уже сейчас рассылка спама через трояны весьма распространена для обхода других защит, типа блокировки почтовых серверов и внесения их в black list-ы, то есть народу даже не придется не придумывать ничего нового.ИМХО, для сотовых операторов это пока не так очевидно в силу достаточно небольшого распространения сотовых телефонов, которые можно было бы заражать, а отнюдь не от того, что за SMS надо платить.

спустя 1 час 18 минут [обр] Даниэль Алиевский [досье]

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

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

Короче, я считаю, что проблема сверх-умных вирусов, пробивающих дыры в безопасности OS - это проблема совсем из другой области, к этому обсуждению не относящаяся. Да, возможно, временами это будет происходить, но бывают и другие наприятности в жизни, как то пожар офиса. Кстати, хакер, способный пробить защиту Java-машины или тем более хитро заразить JPG или пассивный HTML, с таким же успехом может пробить защиту банка, заиметь парочку миллионов долларов и на эти миллионы долларов оплатить сколько угодно SMS (или платных писем).

А вот спам, в том числе на форумах - это действительно массовая проблема. Порожденная тем, что любой, извините, дурак имеет возможность практически бесплатно разослать миллионы сообщений. Введение обязательной оплаты перекрыло бы этот поток.

спустя 2 часа 21 минуту [обр] Андрей Пахомов [досье]
ну вирусы под сотовые все таки уже появились, и это показывает, что не так все хорошо с безопасностью в сотовых телефонах. И наверняка, чем больше функций будет поддерживать и выполнять телефон, тем больше дыр и людей, желающих их использовать, будет становится. Если уж находятся люди, ломающие сервера, безопасность которых обеспечивают специально обученные профессионалы, отнюдь не за миллионы долларов, а из чистого любопытства и желания продемонстрировать свою крутизну, то далеко не факт, что даже самая предусмотрительная политика учета граблей спасет от спамеров. Ваш способ борьбы со спамом посредством оплаты будет работать если всем будет гарантирована 100% защита от вирусов. Пока этого нет - говорить об этом бесполезно, потому как когда куча людей из своего кармана оплатит спам-атаку какого нибудь Американского английского- они сами же похоронят такой вариант. Со спамом надо бороться законодательно, все остальное - от лукавого. Ибо как только разговор заходит о деньгах - открывается еще больший простор для махинаций и в дураках опять останутся конечные пользователи.
спустя 4 часа 11 минут [обр] Даниэль Алиевский [досье]

Андрей Пахомов[досье]
Повторяю. Я не утверждаю, что в сотовых не будет дыр безопасности. Я говорю, что это совсем другая проблема. К спаму непосредственно не относящаяся. От злокозненных гениальных хацкеров надежной защиты нет и быть не может. А вот от спам-рассылок - может. Потому что реклама нужна всем, а не только единицам-гениям.

Недавно попадалось в xpoint обсуждение эффективности спама. Если не ошибаюсь, пришли к выводу, что он почти всегда экономически целесообразен: ибо как бы ни был мал эффект он него, при нулевых затратах даже это оправдано. Ведь даже я - очень редко - заинтересовываюсь получаемым спамом. Из полученных сотни тысяч писем раз 10, пожалуй, было любопытно. 10 случаев - слишком мало, чтобы что-то купить, но, возможно, 10 миллионов писем привели бы к продаже чего-нибудь. А стоит отправка 10 миллионов писем копейки (в Штатах гигабайт стоит меньше доллара).

спустя 15 часов [обр] Алексей Севрюков [досье]
Офф:
226 сообщений в теме. Не пора ли открыть продолжение?
Да есть подозрения что уже несколько десятком постов тема пошла в сторону спама, а изначально как мне показалось была про картинки для защиты от авторегистраторов :-)
спустя 4 месяца 14 дней [обр] Марат [досье]
Извините, что не совсем по теме, но мне очень нужно узнать про прогу, которая может распознавать цифры с картинок. В этой теме говорилось, что у кого-то дипломная была на эту тему. Кроме того, интересует прога, кот. может сравнивать картинку из браузера с базой картинок на жестком, находить такую же и вводить соответствующие данные в строку ввода. Возможно ли такое?
Иллюстрация прилагается (если получится)
спустя 45 минут [обр] Алексей В. Иванов [досье]
Зачем мелочиться? Может, Вам сразу ключ от квартиры, где деньги лежат?
спустя 2 часа 53 минуты [обр] Владимир Палант [досье]
Гениальная защита — я сам не могу понять, что там написано. А роботы могут, да? :)
спустя 13 часов [обр] Закиров Руслан [досье]
Владимир Палант[досье] Это нормально. Недавно видел защиту с такими картинками, что только третья была понятная.
спустя 4 часа 1 минуту [обр] Сергей Круглов [досье]

А тут решил у Гугля вот такую идею позаимствовать:

http://www.kruglov.ru/no-ocr/

Что думает уважаемая публика?

спустя 6 дней [обр] Андрей Новиков [досье]
Владимир Палант[досье], 2012 там написано.
спустя 11 дней [обр] Denis Usenko [досье]
Подниму тему :)
Что скажут специалисты по поводу такого варианта: "щелкни медвежонка по носу"
Суть: показывается картинка со зверушкой, пользователю предлагается щелкнуть ее по определенной части тела.
Реализация: 3Д модельки зверушек (штук, эдак, 20) анимации к ним, простой рендер 3Д, селекшены (наборы полигонов) моделек поименованы - соответственно можно программно определить куда щелкнул пользователь.
Какие недостатки у такого варианта кроме ресурсоемкости? Имхо явный плюс в дружелюбности интерфейса - кликнуть мышью не так утомительно как читать и затем вводить числовой код.
спустя 37 минут [обр] Алексей В. Иванов [досье]
IMHO, хорошая идея. Проблематично в реализации, но интересно.
спустя 22 минуты [обр] Denis Usenko [досье]
Еще одна особенность, не оговорил ее явно, но она подразумевается - при наличии некоторого количества моделек и анимаций к ним (причем если модельки однотипны (например зверюги семейства собачих) анимации можно использовать одни и те же для всех), а также учитывая "умную" — камеру (главное чтобы запрашиваемый селекшен попадал в кадр) можно получить практически бесконечное (тк. между фрэймами анимации как правило используется интерполяция) количество конечных изображений.
спустя 8 минут [обр] Алексей В. Иванов [досье]
В принципе, даже 3D не надо мутить. Достаточно обычные 2D-спрайты, на которые фильтры накладывать можно. Вроде, "львят" от "собачек" комьютеры еще не научились отличать ;)
спустя 4 месяца 14 дней [обр] Праведно-Счастливый Аладдин Ярославович [досье]

А можно еще проще.
Раз уж дело во всех топах по защите от роботов дошло до человеческого мозга, то вот очень простое решение.

Картинки все к ежику в баньку отбрасываем. Простой текст. Никакого ДжаваСкрипта.

Заносим в базу 10 (например, можно и больше) предложений:

  1. Сколько будет два минус два?
  2. Что больше - один или два?
  3. Кто мужчина: брат или сестра?
  4. Украина - это страна или дед мороз?
  5. В Африке холодно или жарко?
  6. Кто старше - дед или внук?
  7. Что легче: пух или железо?
  8. Белая бумага какого цвета?
  9. Сколько пальцев на правой руке?
  10. Рыба живет в воде или в песке?

...

Эти сообщения выдавать рендомом. Спрва - поле для ввода.

А потом сверять правильный ответ с данными из базы.
И интересно, и никаких доп. технологий.

спустя 3 минуты [обр] Праведно-Счастливый Аладдин Ярославович [досье]
А можно еще проще, чтоб вообще ничего юзер не вводил: вопрос и 5 вариантов ответа селектом.
спустя 20 минут [обр] Я. Попов aka Jaded [досье]
Праведно-Счастливый Аладдин Ярославович[досье]: остроумно! надо будет взять на вооружение... только это сильно сработает против иностранцев. ответьте на вопрос:
"two inside and hign and dry outside..." ну, и где больше?
спустя 5 часов [обр] 30-ый [досье]
Ой просто зашибенно остроумно, и если бы Праведно-Счастливый Аладдин Ярославович[досье] читал этот топик целиком он бы наверное такие методы нашел... равно как и нашел бы 1001 недостаток этих методов.
спустя 33 минуты [обр] Alexander O [досье]
Праведно-Счастливый Аладдин Ярославович[досье] Роботу несложно ответить на вопрос из ограниченного списка вопросов — это вообще не защита
спустя 1 час 10 минут [обр] Сергей Круглов [досье]
Не знаю, за 2 года coverlessу тема, наверное, уже не актуальна...
Вот я такую штуку на pure PHP+GD наваял: http://www.captcha.ru/kcaptcha/
спустя 11 часов [обр] Я. Попов aka Jaded [досье]
Alexander O[досье]: скомбинируйте с собачками и львятами на картинках - получите что-то более серьезное: "какого цвета левая лапка львенка: синего, зеленого или белого" - при том, что на картинке кроме него есть еще и "овечка" и "кошечка".
Сергей Круглов[досье]: респект и всяческие thanx! Вы просто спаситель скрипт-киддисов! (знаю, что говорю, сам такой ;-) )
спустя 1 день 3 часа [обр] Даниэль Алиевский [досье]

Все эти методы чем-то здорово напоминают мне первобытные ("сделанные на коленках") алгоритмы шифрования. Поменяли биты местами, про-xor-или с магическим числом, что-нибудь на что-нибудь умножили - и готов зашифрованный файл. Да, с налету, не располагая исходниками шифрующего алгоритма, от непрофиссонала защитить может. Уровень же "надежности" подобных методов с точки зрения нормальной криптологии, полагаю, общеизвестен.

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

спустя 1 час 8 минут [обр] Сергей Круглов [досье]

"Взламываемость" CAPTCHA измеряют в процентах. Типа наш алгоритм распознает A с вероятностью 100%, B - 90%, C - 20% и D - 0.01%

Если подумать, то ясно, что первые 3 CAPTCHA со своей задачей не очень-то и справляются. Даже C, которая вроде как обеспечивает 80% защиту. Количество спамерских запросов упадет впятеро - не так уж и много.

Когда просят выбрать из списка ответ, то вероятность правильного ответа при тупом переборе = 1 / количество вариантов. Что намного больше, чем вероятность угадать наобум строку текста.

спустя 10 дней [обр] nameR [досье]

Возможно, мои предложения не совсем гениальны как те, что обсуждались выше, но я попробую свой пример

Когда надо ввести цифры, то у текстового поля, а так же у кнопки submit есть событие onfocus и onblur, добавим к этому проверку на перемещение мыши и на побуквенный ввод с клавиатуры. Более того, кнопку submit можно слегка позиционировать на экране и на экране и проверить была ли там мышка в момент нажатия.

В дополнение была концепция абсолютной безопасности, при которой компьютер должен быть отключен от любой сети, в том числе и эклектической. Это я к тому что скорее всего если вы будете иметь возможно менять способ проверки на человечность без особых затрат раз в 3 месяца то к вам не один терминатор не прорвется. То есть скорее стоит думать не о рандоме на картинки а о рандоме на концепцию проверки

спустя 1 час 9 минут [обр] Сергей Круглов [досье]
nameR[досье]
  1. Пользователь зашел с КПК или таблетки, у него нету мыши (и клавиатуры, пожалуй). Ваши действия? Послать его?
  2. Корпоративный фаервол порезал жаваскрипт. Форму пользователь заполнить может, но процесс заполнения вы отследить не можете. Послать его?
  3. Хакер просниффил, как браузер отправляет серверу мышкины действия и научился притворяться.
  4. Пользователь случайно сделал что-то такое (нажал на Enter, а не на мышку, к примеру), что алгоритм его не опознал. Как вы оцениваете процент отсеянных из-за несовершенства алгоритма посетителей. Как вы оцениваете совершенность алгоритма
спустя 1 час 29 минут [обр] Алексей Севрюков [досье]
Господа, тема разрослась до невероятных разделов. Не пора ли создать вторую часть?
спустя 19 часов [обр] Я. Попов aka Jaded [досье]

ага, особенно, если учесть, что coverless[досье]:

Интересует не архитектурное решение, а правильное зашумление картинки.

:-))

хотя, IMHO, в новую тему придётся перенести и бОльшую часть этой... мож, не надо? IMHO, и так очень познавательно...

спустя 5 часов [обр] Алексей Севрюков [досье]
Я. Попов aka Jaded[досье] познавально, согласен. Но трафику много ест (настройка "показывать только новые" у меня не включена, пользоваться не удобно) и соотвественно долго открывается.
спустя 50 минут [обр] Я. Попов aka Jaded [досье]
юзабилити vs оптимизация в действии ;-)
спустя 4 дня [обр] nameR [досье]

Сергей Круглов[досье]
Что же тогода остается, картинки не выход, js не выход, остается один и самый простой вариант, не защищать. Потому что на каждую хитрую ж... всегда найдется рашение. Может сертификаты?

Кстати вспомнил, мы, на прошлом месте работы баловались вот какими вещами. Пользователю предлогалось скачать js файл, а затем загрузить его на сервер. Таким образом в базу данных записывался адрес js файла у клиента на сервере и его id.
В js файле стояло по тупому отображение кнопки добавить.

Кстати мелкософт предлагает воспроизводить звуковой файл где перечисляются цифры.

Систем безопасности может быть много, и не одна из них не имеет эфективность 100%.

поэтому и основной тезис моего превыдущего поста был в том что надо придумать несколько вариантов защиты и что бы они менялись.

А вообще нельзя поручать машине человеческую работу

спустя 15 дней [обр] Сергей Круглов [досье]
Кстати мелкософт предлагает воспроизводить звуковой файл где перечисляются цифры.

Ммм... А какая проблема распознать, какой из 10 эталонных звуков (записей цифр) прозвучал? Даже если их без пауз говорить.

Хотя, конечно, потребуются библиотеки для работы с аудио...

спустя 4 минуты [обр] Алексей В. Иванов [досье]
Ну почему же. Можно и не десять, и с шумами и фоновой музыкой импровизировать. По взломоустойчивости должно быть лучше, чем картинка на порядок-два.
спустя 44 минуты [обр] Дмитрий Попов [досье]

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

Осмысленный звук, в отличие от 2D-изображжения не линеен, но, зачастую сложнее воспринимаем, и еще сложнее "генерируем"...

спустя 12 минут [обр] Сергей Круглов [досье]
Он еще и плохо прослушиваем. Вот у меня на рабочем компе из аудио только pc-скрипер.
спустя 8 дней [обр] Дворнов Роман [досье]

Здесь все больше обсуждались (обсуждаются) вопросы того, как сделать так чтобы только человек мог сделать все правильно и тем самым добавить сообщение, зарегистрироваться etc. В какой-то момент большинство сошлось к тому, что повторение человеческого поведения дело времени, и в ближайшем будущем компьютеры без проблем будут распознавать образы и звуки, причем, предполагаю, у них это будет получаться лучше, чем у людей. В целом, мне кажется, вы, спасая себя от беды (спама), создаете сложности пользователю. Последнее время все больше размышляю об этой проблеме (защиты от спама) и прихожу к выводу, что защитится от спама можно и без участия пользователя, при этом, не заставляя его совершать действий не "по теме".
В любом случае робот, это всего лишь программа, которая пытается эвристически (предполагая по определенным критериям) заполнить как можно более правильно форму. Писать сверхгениальную программу, которая определит, что куда вставить (причем правильно) никому, я думаю, в голову не придет: ибо очень геморно и к тому же 95% (грубо так) форм имеет стандартный набор полей name, password, email etc без специальных защит. Да остальные 5% имею свои "доморощенные" системы защиты, которые программа преодолеть не может. Ну и фиг с ними, есть большой процент форм, которые доступны - этого тоже достаточно. Создав универсальное решение защиты, которое будет использоваться на сотнях сайтов, обречено на провал, ибо заинтересует спамеров, и те рано/поздно найдут лазейку.
Но ближе к теме. Хотелось бы написать о тех идеях, что приходят в голову.

  1. Создавать на сервере CSS файл, JS файл, картинку, еще что-то и делать стандартную ссылку на это дело на странице, как обычно (<img src=”..”>, <link ..>, <script ..>). Но сам файл на сервере является либо скриптом, либо обращение на данный адрес, переадресуется на скрипт. Скрипт на сервере ставит флаг в сессию, что форма с большим процентом вероятности открыта браузером. Я не думаю, что роботы скачивают все, что есть на странице, да и вообще анализируют структуру документа, их то чаще интересуют только формы. Робот, конечно же, может все-таки выдрать все линки из HTML и послать HEAD на все адреса, но это займет у него на порядок больше времени, за счет транспортных расходов + разбор документа (задача ресурсоемкая). Как усложнение такие ссылки можно пробивать в CSS файле, то есть тогда роботу нужно будет скачать все CSS + разобрать их + выдрать все линки и послать HEAD'ы. Заметим что CSS-файлы могут содержать ссылки на другие CSS :) Так что для робота будет довольно много проблем все это скачать разобрать. При чем в последнем случае простой посылкой HEAD запроса на урл CSS файла не обойдешься, его надо качать.

К этому можно добавить подножки. Например, в CSS добавить правила которые никогда не срабатывают и в них ссылки на изображения-скрипты, которые делают обратное - ставят флаг в сессию, что глупый робот пытался скачать все :) Ну или другие ссылки, по которым браузер гарантированно не пойдет и качать не станет, а при "тупом"(без разбора структуры документа) извлечении урлов будет выбран, на него пройдут - тем самым сами себя заблокируют (например, можно вставить <a href=”...”></a> - пользователь этого не увидит, а вот робот да; если не жалко трафик можно отдавать по такому запросу несколько метров, пущай качает в надежде на чудо :). Еще возможно делать подножки используя относительные пути (<BASE> и все такое), или каким другим способом делать ссылки непроходимыми без анализа контекс

спустя 7 минут [обр] Дворнов Роман [досье]

та их использования или дополнительных манипуляций совершаемых браузером (кодировать в Unicode, UTF-8?). На сегодняшний день очень мало браузеров, в которых отключен (да и вообще отключается, в IE, вроде, это сделать нельзя) CSS, в которых отключена графика/JS. Для уверенности можно все это комбинировать, то есть делать ссылки на JS, CSS, картинку и т.д.

  1. После "отправки" данных формы, сохранять данные на сервере (куда не важно) выдавать ему страницу, которая спрашивает у пользователя все ли он заполнил правильно и давать ему нажать ссылку "Да, все верно" или "Одобряю" с ничего не имеющим к контексту урлом (например /hi_dude?sid=sdjfh7234587), после чего происходит добавление данных в БД (или куда еще).

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

  1. Играем с формой.
    1. Pure HTML :) Делаем "поля ловушки", которые не надо ни в коем случае заполнять, иначе данные не будут приняты. Делаем их readonly, disabled, type=hidden etc в общем такими чтобы пользователь не смог их заполнить. Даем звучные имена name, email, content, text, message etc. Робот по любому не пройдет мимо таких полей, ничего не добавив :). На худой конец можно добавить надпить "оставьте это поле пустым". Или "Если хотите, введите домашний адрес" - в 99% случаях российский пользователь либо оставит поле без внимания, либо напишет ересь :)
    2. CSS. Делаем "поля ловушки". Такие поля прячем с помощью CSS - вариантов куча, от display:none до position:absolute; top:-100000px. Таким образом, пользователь не сможет их заполнить. Если CSS отключены - см. предыдущий пункт.
    3. JS. С javascript сделать немереное количество извращений. Например, делаем дополнительные поля создаваемые через JS и добавляемые в форму, которые должны присутствовать в ней, но отсутствуют в самом HTML. Без этих полей данные приняты не будут. Вешаем на onsubmit функцию, которая что-то делает с данными перед отправкой.
    4. Делаем два Submit даем им name. Один правильный, другой нет. Неправильный либо как либо прячем, либо выводим из строя, либо пишем "Очистить форму". При нажатии на кнопку будет отослан name нажатого submit'а. Дальше, я думаю, понятно.

Конечно, все выкрутасы с формой, по сути, лишены смысла, потому как робот превратит это дело в запрос, либо научится сам, либо научит кул хацкер, который добавит в свою "базу" прототип запроса на конкретный сайт. Но что-то с трудом верится, что хацкер/спамер будет делать это для каждого сайта, его задача объем, а не чтобы работало везде. К тому же можно прибегнуть к следующим техникам:
  Генерация форм. Собственно структура формы не меняется, как не меняется и набор полей, в данном случае мы "играем" с именами полей и их значениями. Это сведет на нет использование спамерами/роботами прототипов запросов к скриптам. В данном случае чтобы сформировать запрос к скрипту роботу хочешь не хочешь, а придется анализировать форму.

  1. Перемешивание полей. У нас есть набор полей. Мы меняем имена этих полей местами, и в сессии на сервере сохраняем порядок. Когда приходит запрос на сервер мы восстанавливаем "порядок" полей. Естественно робот будет заполнять форму не правильно, и добавит в, например, content адрес электронной почты и т.д. Естественно скрипт проверяя данные полей ругнется на то что данные не верно заполнены, к примеру, в поле email значение длинее чем N символов, и там совсем не email - тем самым ничего не добавит. Чем больше полей - тем больше эффект: для 5 полей 120 перестановок, для 10 свыше трех миллионов (если быть точным 3 628 800).
  2. Генерация полей с именами включающими какую-то хитрую последовательность, можно даже одну и ту же, но это менее стойко. Опять же в сессии храним то, что мы добавляли к именам. Можно так же просто перемешивать буквы имени поля, хешировать, генерировать случайное имя. Главное сохранить в сессии, что чему соответствует :)

Фантазируйте далее.
Главное во всех этих подходах то, что пользователю не надо совершать дополнительных действий, как то рассматривать непонятные картинки, которые искажены так, что не всякий человек сможет воспроизвести (если это вообще возможно), не надо жать на носы собакам :) не надо что либо слушать, не надо совершать пируэты мышкой доказывая компьютеру, что ты не робот (я, как думаю многие, часто заполняю формы не пользуясь мышкой: клава - друг программиста ;) ). Не надо иметь какие либо спец устройства, сертификаты, ключи. Не обязательно чтобы все было включено по полной как-то JS (кроме пункта 3в), Flash, Java, только ради того, чтобы собрать данные о действиях пользователя при заполнении и потом (о ужас) передать их вместе с запросом. Пользователю не нужно дополнительных инструкций, чтобы заполненная форма была принята.
Да все это обходится. И в ряде случаев очень даже просто. Но эти "обходилки" надо писать под каждый конкретный случай, страницу, сайт. Возможно, вы и станете раскодировать зашифрованную обычным XOR'ом переписку президента с любовницей, но вряд ли станете заморачиваться на дешифровку моей переписки :)
В конечном счете, чтобы обойти большинство описанных "техник", роботу придется стать браузеро-человеком :) Все проанализировать, сгенерировать картинку страницы с формой, чтобы понять что же видит человек, соотнести одно с другим, заполнить форму так как видит ее пользователь, отправить. Эта задачка покруче вашего распознавания искаженной страницы (к тому же для человека, что главное, ничего особенного, для него форма как форма). Мне кажется, что из такого робота уже киборг получится - почти что человек, пусть спамит тогда :) Спамеры иногда тоже флудят на форумах, правда оплачивается это дороже, совершают дествия машинально - чем не роботы?

ЗЫ Может, стоит открыть новую ветку с обсуждением описанных выше подходов? То есть подходов основанных не на том, что "только человек может распознать образ, и как лучше исказить его", а на том, что человеку не нужны особенности построения формы, для того чтобы заполнить ее, и как сыграть на этом.

спустя 9 часов [обр] Андрей Пахомов [досье]
Дворнов Роман[досье]
то что вы тут пишете чем то перекликается с обсуждением анонимности пользователя в одной из тем Даниила. С возможностью программирования на уровне ОС никому не составит труда реализовать разбор вашей страницы и, соответственно обхода вашей защиты, самим броузером, а роботу оставить только эмуляцию заполнения формы человеком. Тем более что при существовании большого количества keylog-еров наверняка существуют и те, которые позволяют запоминать и повторять нажатие клавиш и движение мыши как макросы, так что писать даже ничего не придется. Не говоря уж о том, что имеются свободные броузерные движки типа мозиллы, которые можно встроить в спам-робота. Тут вам будет все: и поддержка кук и корректный разбор CSS,HTML,JS и пр.
спустя 6 минут [обр] Праведно-Счастливый Аладдин Ярославович [досье]

А все роботы, которые имеют наглость проходить через все защиты, ставится заслонка в виде черного листа.
В блеклист записывается все, что не в тему: мыла, адреса сайтов, телефоны, ключевые слова типа "онлайн казино". При добавлении сообщения на форуме, доске проверяется ВСЁ на наличие чего угодно из блеклиста.

Ой как возрастает при этом стоимость СПАМа.

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

Тут вообще нужно выделить цель. Цель заключается в том, чтобы сделать СПАМ более дорогим удовольствием нежели официальная покупка рекламы. Только так можно избавиться от СПАМа.

спустя 4 часа 5 минут [обр] Даниэль Алиевский [досье]

Дворнов Роман[досье] Дополняя мысль Андрея Пахомова - есть такая программа Robosoft, очень полезная для автоматического или полуавтоматического заполнения форм бесчисленных каталогов софта.
http://rudenko.com/
Задача похожая, только цели вполне легальные. Программа содержит в себе ActiveX MSIE, которым и открываются все формы. Есть целая команда людей (постоянно пополняемая среди пользователей, в обмен на скидки), которые отсылают автору автоматизированные сценарии заполнения форм различных сайтов.

Совершенно аналогичным образом можно легко взломать и все предлагаемые вами варианты защиты.

А как насчет идеи использовать для регистрации ActiveX? Т.е. весь диалог регистрации, в том числе и картинки с цифрами или буквами, визуально реализуются специально написанным ActiveX? Конечно, теоретически OS позволяет сэмулировать все действия пользователя на низком уровне, вплоть до каждого движения мышкой. Но это уже требует серьезного программирования, ориентированного на взлом каждого конкретного сайта (в отличие от эмуляции действий с веб-страницей, где сценарий заполнения формы пишется за несколько минут непрофессионалом). Представьте, скажем, что ActiveX реализует собственные редакторы для построчного ввода строки текста (вообще не пользуясь компонентами Windows, до которых можно было бы добраться по дереву окон), и при этом показывает картинки с искаженными буквами-цифрами, которые загружаются с сервера в зашифрованном виде. Лично я бы не взялся "ломать" такую защиту, а написание универсального средства взлома подобных ActiveX вообще кажется очень сложной задачей.

Понятно, что, кроме ActiveX, придется делать плагины или апплеты для не-Windows-платформ. Но не так уж это и трудно. Можно легко покрыть 99.9% всех пользователей сайта.

Еще идея в копилку - можно использовать анимацию. Несложно изготовить мультик из 50 кадров, такой, что ни на одном из кадров вообще невозможно увидеть никаких кодов, но при быстром последовательном просмотре начинают "просвечивать" цифры или буквы.

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

Допустим, мы имеем прямоугольную область экрана, скажем, 500x200, заполненную неким эстетически приятным шумом. В его пределах - подобласть 200x50, случайно "плавающая" по большой области. Если смотреть на быстро меняющуюся последовательность кадров, то в этой подобласти виден код, неторопливо "плавающий" по большой области. (Но каждый отдельно взятый кадр выглядит как шум.) Программа (ActiveX или даже JavaScript) анализирует быстродействие компьютера и показывает кадры с максимально возможной скоростью, полностью занимая процессор. Если в этот процесс вмешивается хакерский инструмент, пытающийся снимать кадры ("копия экрана" Windows), то это легко обнаруживается путем измерений времени - ведь на это требуется больше процессорного времени, чем на перерисовку изменившейся части нашей области. Таким образом мы сводим задачу к хорошо известной задаче борьбы с дизассемблированием и отладкой, которая все-таки на порядок более сложна.

Важный момент: мы используем единственный естественный процесс - человеческое зрение, быстродействие которого вполне сопоставимо с быстродействием современных компьютеров (точнее, дисплеев). Человек с легкостью выделяет из 100 кадров в секунду регулярный узор. Это дает право требовать, чтобы вычисления происходили быстро, а не под эмулятором и тем более отладчиком.

Не берусь утверждать, но, может быть, тут возможно теоретически полное решение задачи. Ведь в игре участвует сервер, который может "заметить", что на клиенте происходит что-то слишком медленное (вроде отладки).

спустя 14 минут [обр] Алексей Севрюков [досье]
анализирует быстродействие компьютера и показывает кадры с максимально возможной скоростью, полностью занимая процессор
А в это время у меня запустится еще один трудоемкий процесс и апплет начнет тормозить. Так что такой вариант врятли прокатит.
спустя 1 час 28 минут [обр] Даниэль Алиевский [досье]
Алексей Севрюков[досье] Это уже дело техники - отличить работу под отладчиком от параллельных фоновых задач. В конце концов, если процесс действительно очень трудоемкий (скажем, активная работа с IDE-диском), то работать в броузере обычно весьма сложно. Мультик и визуально будет слишком тормозным, чтобы различить цифры. Вполне можно потребовать, чтобы на момент регистрации ничего такого не запускалось.
спустя 2 часа 4 минуты [обр] Сергей Круглов [досье]

У меня в тумбочке лежит видеокарта Trident TVGA9000i.
Это такая особенная видеокарта, что на ней тормозят даже Heroes I.
Как на компьютере, оснащенном похожими устройствами будет работать ваш "ActiveX"?

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

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

А все остальное либо абсолютно ненадежно (скорее даже в плане того, что добросовестные пользователи будут отфильтрованы), либо пока преждевременно (биометрические системы, SMS).

спустя 9 минут [обр] Сергей Круглов [досье]

Вот, кстати, довольно интересное решение:
http://www.hotcaptcha.com/

На "чувство прекрасного"

спустя 1 час 30 минут [обр] Иванов Михаил aka Ivanych [досье]
Сергей Круглов[досье]
Забавно:) Но там встречаются комбинации, в которых я лично не могу выделить три "прекрасных" изображения. Может у меня "чувство прекрасного" слишком требовательное?:)
спустя 3 часа 5 минут [обр] Сергей Круглов [досье]
Там внизу есть кнопка "переключиться на мужиков", я для эксперимента переключился и вообще ни одного раза не угадал ;)
спустя 13 часов [обр] Алексей Севрюков [досье]
Да, уэ слишком субъективная защита, у меня тоже не получилось.
спустя 2 часа 49 минут [обр] Праведно-Счастливый Аладдин Ярославович [досье]

Эта вся защита становится с родни защиты от мыльного СПАМа. Соответственно, и методы те же. Куча заслонок, фильтров - общеизвестных и индивидуализированных. А если и это не срабатывает, то блеклист.

Надо бы еще уголовную ответственность за форм-СПАМ в нагрузку организовать. Тогда будет полный фарш.

спустя 4 часа 39 минут [обр] Даниэль Алиевский [досье]
Сергей Круглов[досье]
Да уж, я тоже оказался роботом. Глупость какая...
спустя 1 минуту [обр] Даниэль Алиевский [досье]
Причем дважды... Гм :)
спустя 1 час 3 минуты [обр] Сергей Круглов [досье]

Возможно, "горячесть" народа определяется реальным голосованием на каком-нибудь сайте знакомств. А там взяли и "нафлешмобили" :)

Хотя на самом деле вряд ли.

спустя 17 часов [обр] 30-ый [досье]

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

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

спустя 1 час 6 минут [обр] Сергей Круглов [досье]

"Фоткать" можно не девушек, а 3D-модели, их без проблем и на любом фоне показывать, и каждый раз ракурс-освещение менять.

А что мы мужиков не угадываем, так может для этого мужиком не надо быть ;)

спустя 52 минуты [обр] 30-ый [досье]
И кем нужно при это тогда быть, чтобы оценить красоту 3D моделей? :-)
спустя 41 минуту [обр] Даниэль Алиевский [досье]

Э, тема и так большая, может хватит? :)

Что насчет моего последнего постинга?

Все минусы ActiveX/Plugin понятны, существование тормозных видеокарт тоже понятно. Но при этом также ясно, что легкое преодоление защиты с помощью gif-картинок с зашумленным текстом - дело времени (или не ясно?) И что всякие "хитроумные" защиты, основанные на "человеко-ориентированных" вопросах, имеют крайне низкую стойкость, подобно доморощенным алгоритмам шифрования (?) Но вот применение ActiveX выводит задачу в другую плоскость - противодействия взлому или анализу работающей программы (пусть даже требуется проанализировать, что именно программа показала и "проговорила" посетителю). А там все далеко не так безнадежно

спустя 17 часов [обр] Сергей Круглов [досье]

Лично мне кажется, что картинки будут преодолены, когда появятся специализированные супер-распараллеленные компьютеры, действующие по принципу нейросетей. У классического компьютера фатально низкое быстродействие для таких задач.

То есть они еще поживут.

30-ый[досье]

И кем нужно при это тогда быть, чтобы оценить красоту 3D моделей?

Ну, они могут быть неотличимы от реальных фотографий.

Посмотрите какой-нибудь современный фильм с массовкой, вы точно сможете сказать, реальные это статисты или компьютерные?

спустя 9 часов [обр] Даниэль Алиевский [досье]

Сергей Круглов[досье]

Лично мне кажется, что картинки будут преодолены, когда появятся специализированные супер-распараллеленные компьютеры, действующие по принципу нейросетей. У классического компьютера фатально низкое быстродействие для таких задач.

Да ну? Я не специалист по OCR, но примерно представляю себе трудоемкость таких задач. (Кстати, слышал, что как раз нейросети здесь неважно работают.) Удаление шума, выделение и анализ скелета букв - линейные либо квадратичные алгоритмы, которые даже на i486 работали доли секунды. В конце концов, уже на i486 (конец 90-х) нормой для OCR считалось распознавание тысяч символов в секунду с надежностью 99%, и уже тогда делались небезуспешные попытки распознавания в run-time рукописного ввода. Проблема скорее в громоздкости самих алгоритмов. Но очень облегчает задачу допустимость высокого процента ошибок - не получилось, попытались еще раз, пока не удастся зайти.

спустя 4 часа 20 минут [обр] Сергей Круглов [досье]
небезуспешные попытки распознавания в run-time рукописного ввода.

Вот в том-то и дело, что "run-time". Когда известно время появления и направление каждого штриха, что очень облегчает задачу. Ведь что-то не слышно о распознавании уже написанного рукописного текста.

Задача распознавания состоит из двух частей - выделения символа и собственно прочтения его.

Нынешние картинки отличаются тем, что роботу крайне сложно понять, какие пиксели относятся к какому символу. Чтобы выделить "скелет букв", надо понять, где эта буква кончается и начинается другая. Тот же FineReader сразу пасует, стоит дорисовать какую-нибудь соединяющую или пересекающую символы линию.

Человек своей "нейросетью" сразу выделяет символы, отделяя от шума, высматривая знакомые контуры. Эти контуры сравниваются одновременно и параллельно с умопомрачительным множеством образов. Компьютер же параллельно сравнивать пока не может.

спустя 16 минут [обр] Сергей Круглов [досье]
Вот, выделите "скелет букв":
спустя 29 минут [обр] Сергей Круглов [досье]
p.s. Насчет пасования FineReadera перед перечеркивающими линиями я погорячился, но если их в "нужных" местах рисовать...
спустя 11 часов [обр] Даниэль Алиевский [досье]

Сергей Круглов[досье] Не вижу больших сложностей в вашей картинке. Разбиваем картинку на линии-элементы ("палки", полукружия у Р и В). Это решаемо - сам писал похожие алгоритмы. В этой картинке будет порядка, скажем, 20 элементов.

Затем запускаем полно-переборный алгоритм, который пытается сгруппировать элементы в буквы всевозможными способами, например, по 4-5 элементов, соблюдая очевидные эмпирические правила. Сколько будет вариантов? Оценим число способов выбрать самую левую букву; допустим, это величина порядка 100 (очень завышаем оценку). Именно, это те варианты комбинаций элементов (из примерно 15000 сочетаний из 20 по 5), которые "близки" к левому краю картинки и состоят из "близких" (почти соприкасающихся) элементов. Сколько из них пройдут самые примитивные тесты на "буквообразность"? 3-5, максимум 10, вряд ли больше.

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

Все, по-моему, решаемо - если можно потратить на 6 букв несколько секунд (несколько миллиардов тактов). Алгоритм, вероятнее всего, получится ужасно громоздкий (если адаптировать его к сотне наиболее популярных схем искажения). Я бы взял около полугода на разработку. Но, считаю, все реально. Вполне возможно получить алгоритм, который бы, скажем, выдавал до 10 вариантов ответа, из которых один с вероятностью хотя бы 0.5 был правильным. Для задач взлома вполне достаточно.

Распознавание истинно рукописного текста - все же задача с более высокими требованиями. Там алгоритм не имеет права "думать", скажем, по секунде на букву. И достоверность нужна высокая, выше 90%, иначе пользы от этого будет мало. И искажения куда менее предсказуемы (я сам порой не могу прочитать, что написал :))

P.S. Насчет "нейросети человека", полагаю, это может быть неправдой. Я читал, что по принципу нейросетей (аксон и куча дендритов, выполняющих скалярное умножение) работают лишь "мозги" самых простых насекомых. У человека в голове все несравненно сложнее.

спустя 41 минуту [обр] Сергей Круглов [досье]
А такое (Hotmail, Microsoft Passport):
спустя 2 часа 41 минуту [обр] Даниэль Алиевский [досье]
Примерно те же алгоритмы :)
спустя 19 дней [обр] index [досье]
Прошу прощения, а почему здесь не рассматривался механизм, когда юзеру на e-mail отправляется ссылка на которую он должен кликнуть, чтобы активировать свой аккаунт? Или этот метод еще слабее чем защита при помощи картинки?
спустя 9 часов [обр] Maxim Penzin [досье]
Администратор любого e-mail домена может принять письма практически для любого пользователя, а
e-mail'ы научились обрабатывать автоматически задолго до изобретения интернета.
спустя 10 месяцев [обр] Анатолий С [досье]
Глянул на http://www.hotcaptcha.com/ и у меня появилась свежая идея... Жалко что мне никто за нее не даст денег :), а сам я вред ли это организую.
Вобщем берем две видеокамеры (или два фотика), ставим их НА ВХОДЕ в туалете, да не просто в туалете, а в таком, чтоб там народу ходило очень МНОГО и РАЗНОГО. Один фотик ставим в туалет с надписью "М", а другой соответственно в туалет с надписью "Ж". Направляем их так, чтобы фон легко с помощью ПРОГРАММЫ отделялся от людей проходящих мимо фотика. Да! чуть не забыл! фотик должен сробатывать по движению.
Если кто еще не представил суть этой системы, то поясню:
Как только срабатывает датчик движения, делаеться фотка. С этой фотки УДАЛЯЕТЬСЯ ФОН и она сохраняеться в БД. В итоге мы имеем БД с фотками лиц из женского и мужского туалета, и НИЧТО КРОМЕ ЧЕЛОВЕКА и ПРОГРАММЫ НА СЕРВЕРЕ не знает кто действительно там сфоткан. На форме можно отображать по несклько лиц, чтобы ЧЕЛОВЕК выбрал, например, только тех кто ходит в мужской туалет. Или наоборот.
Причем пополняеться эта БД регулярно (смотря как востребован выбранный туалет). Как только фотка отправилась клиенту на форму, ее можно смело удалять, а то в БД итак уже КУЧА ФОТОК и нодо от них быстрей избавляться...
Остаеться только "порно проблемма"... Или не остаеться?... пока читал весь форум, этот момент неусвоил.
Итак кто возьметься за реализацию этой идеи?
спустя 1 час 18 минут [обр] Дмитрий Попов [досье]
Смешная шутка, ага
спустя 10 минут [обр] Alexander O [досье]
Анатолий С[досье] Порно-проблема появится, только если фотик в унитаз поставить.
спустя 28 минут [обр] Анатолий С [досье]

Дмитрий Попов[досье]
Вообще то это не шутка, а реальный вариант генерации БД с картинками. Где еще можно бесконечно бесплатно создавать самосортируемые фото лиц людей? Можно конечно фоткать и что-то другое, но ИМХО именно лица людей человек различает лучше всего, в отличии от систем распознавания образов.
На этом форуме обдумывались лишь варианты ПРОГРАММНОЙ генерации картинок, но как я понял все давно пришли к мнению что ПРОГРАММНО-генерируемые картинки легко "читаються" программой или запоминаються в БД. Предложеный же мной вариант не имеет таких недостатков.

Alexander O[досье]
:), тока тут все хотят избавиться от этой проблеммы.

спустя 6 часов [обр] Алексей В. Иванов [досье]

С такими идеями вы далеко пойдёте... монтировать камеры в сортиры.

Полагаю, вы тоже пошутили, поэтому здоровой критики не будет.

спустя 2 дня 9 часов [обр] Даниэль Алиевский [досье]

Да и кто сказал, что распознавание пола человека - такая уж сложная проблема? Вот востребованная - это точно: полагаю, с распространением "умной" техники, оснащенной видеокамерами и синтезатором речи, спрос на автоматический выбор обращения "сэр/мадам" будет лишь возрастать.

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

спустя 3 дня [обр] Анатолий С [досье]

Даниэль Алиевский[досье]

Да и кто сказал, что распознавание пола человека - такая уж сложная проблема?

Честно, даже и не думал, что распознающая техника ТАК быстро развиваеться...

Раз уж тут есть просвещенные в этом люди, может кто-нибудь развеет все мои надежды на реализацию этой идеи. Скажите, плиз, неужели все-таки нельзя сделать такие фотографии, чтоб для техники они были крайне сложны для разбора?
Например, легко ли будет различить толпу людей в супермаркете от кучи машин на дороге (при этом в камеру попадает около 5-10 машин/людей)? Или например хомячков от кроликов (тоже если в камере их будет по несколько)

спустя 5 часов [обр] Даниэль Алиевский [досье]

Я на самом деле не в курсе, КАК именно быстро в данный момент развиваются распознающие алгоритмы, но мне, например, доводилось заниматься распознаванием номеров автомобилей. Конечно, здесь одна из подзадач - не пытаться распознавать номера на человеческих физиономиях :) На самом деле задача типа "отличить толпу людей" от "кучи машин" (да/нет) вообще почти тривиальна - вероятнее всего, хватит нескольких текстурных параметров изображения и какого-нибудь стандартного алгоритма кластеризации. И процессора уровня эдак 80286. Задача распознавания лиц, конечно, посложнее, но я полагаю, что в этой области уже масса наработок.

Человеческий мозг отличается от компьютера не тем, что он лучше умеет распознавать. А тем, что у человека невероятный багаж знаний и ассоциаций, которые он интенсивно накапливает с момента появления на свет (на самом деле даже раньше). И активно использует все эти ассоциации, чему, конечно, научить какую-либо программу нереально. Так что в любой нестандартной ситуации человек окажется умнее. Но как раз определение пола в 95% случаев - задача вполне типовая, и тут ошибка человека может быть более вероятной, чем у качественной программы.

спустя 14 часов [обр] Анатолий С [досье]
Да, действительно, по приведенной Даниилом ссылке гугл выводит очень много наработок распознавания ЛИЦ. Прочитав несколько статей оказалось, что опять же лица в основном распознаються путем поиска и сопоставления С УЖЕ ИМЕЮЩЕЙСЯ базой.
На запрос "алгоритмы распознавания ПОЛА" гугл уже оказался не таким просвещенным и ничего конкретного на первых страницах не выдал. Разве что разпознавание пола по голосу вывел, но это понятно, что тривиально.
Нашел только одну актуальную статью http://www.mipt.ru/nauka/conf_mipt/conf2001/frtk/neuro/galushkin.html: там кто-то выделил (всего лишь "выделил") распознавание пола как одну из задач Распознавания образов, при этом поставив ее на последнее 4-е место.
Будет время, все же помучаю базу знаний интернета более детально, но пока что я не нашел статей по распознаванию лиц БЕЗ сопоставления с существующей базой...
спустя 11 часов [обр] Даниэль Алиевский [досье]
Забавно, а почему Вы решили, что по голосу распознать пол более тривиально, чем по изображению?
спустя 2 часа 12 минут [обр] Анатолий С [досье]
Если чесно, то чисто интуитивно (т.е. на основе накопленной но не осознанной мной информации) :)
Я лично с обработкой звука не сталкивался, но вроде не секрет, что в основном голос мужчин ниже чем голос женщины
спустя 3 дня [обр] Даниэль Алиевский [досье]
Ну да, а рост у мужчин тоже обычно выше. И волосы короче. Так распознавать - будет очень высокий процент ошибок.
спустя 18 часов [обр] Александр Носов [досье]

У нас получается, для решения данной проблемы нужно решить две большие задачи:

  1. Создать такой механизм, который было бы очень трудно воспроизвести какой-либо "механической" программой (Как то, заставить юзера: прочитать сильно зашумленную/искаженную CAPTCHA, или "щелкнуть медвежонка", или выбирать мужчину/женщину, и т.д.). Как уже говорилось, этот механизм не должен позволять хакеру делать взлом, как на уровне парсинга картинки, так и на уровне воспроизведением действий юзера с использованием готового браузера и т.п..
  2. Если мы решаем первую задачу, то сталкиваемся со второй - "лемминги". Какой-бы алгоритм мы не реализовали в 1-й задаче, он может быть воспроизведен на "порно-сайте". Скорее всего, воспроизводиться будет только "типовой" алгоритм, а со всякими нестандартными решениями никто возиться не будет. Как исключение, я бы тут назвал отдельные крупные сайты, которые могут быть особо интересны флудерам и т.п. личностям.

Для решения первой задачи IMHO, решение "щелкнуть медвежонка по носу" кажеться самым интересным, но сложным в реализации.
Лично я бы изменил его до такого вида:
 - рисуем на слегка (или сильно) зашумленной картинке десяток простых фигур разных цветов: квадратов, треугольников, кругов и т.п.;
 - далее поверх всех этих фигур накладываем искривленный а-ля CAPTCHA текст "щелкните по зеленому квадрату, затем по красному треугольнику, затем по желтому кругу"
Этот рисунок у нас будет элементом отдельной формы и вставлен он туда будет как <input type="image" .... / >. "target" у этой формы будет направлен на скрытый iframe. Т.о. при каждом клике на рисунок - на сервер будут передаваться координаты точки, по которой кликнул юзер и сохраняться в сессии. После сабмита основной формы проверяем "кликнутые" области и резюмируем прошел ли наш юзер регистрацию или нет.
Для надежности "кликабельные" области должны быть чуть больше нарисованных геометрических фигур и не должны пересекаться между собой. Но сами "кликабельные" фигуры могут пересекаться с другими "холостыми" фигурами. Причем, места пересечения можно закрашивать "смешанным цветом". Хочу еще раз обратить внимание, что фигуры не будут иметь четких контуров и рисуются на фоне "шума". Я бы даже сказал - с использованием этого шума.
IMHO, реализовать такой механизм будет гораздо проще чем генерировать "3D-медвежонка", а проанализировать такой рисунок для выделения нужных областей, будет гораздо труднее чем обычную CAPTCHA.

Но решив 1-ю задачу, возвращаемся ко второй.
Тут я на на сам рисунок "под низ" в качестве шума добавил бы часто повторяющуюся надпись мелким шрифтом, типа: "этот рисунок имеет отношение только к такому-то сайту, а остальное все - развод".
Не факт правда что все люди поймут эту надпись (особенно если рисунок будет выставляться на порно сайте с другим языком) и правильно на нее отреагируют.
Но тут нам на помощь прийдут методики предлагаемые Дворнов Роман[досье] в отношении "искажения формы". Таких методик можно придумать очень много и периодически их менять. Тогда никакая технология с "леммингами" не сработает или, по крайней мере, будет работать недолго. Главное следить за своим сайтом тщательнее, чем это будет делать хакер и вовремя менять методики.

спустя 10 часов [обр] Александр Носов [досье]
Не могу удержаться от небольшого флуда, в тему: http://kiberpank.ru/news/143/
:)
спустя 4 месяца 15 дней [обр] Антон Клесс [досье]
+1 к Даниилу, в сегодняшних реалиях внешне-половое распознавание значительно затруднено. Так что туалетный вариант отпадает хотя бы поэтому.
спустя 5 дней [обр] Даниэль Алиевский [досье]

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

Если нужно защититься от 99.99% тупых спам-роботов, то достаточно чрезвычайно простых приемов, вроде включения в submit текущего времени. Если нужно противостоять профессионалу, целенаправленно ломающему ваш сайт, то единственное, на что можно опираться - недостаточный уровень развития некоторых реальных математических алгоритмов. Например, на отсутствие (пока) надежных методов распознавания рукописного текста, читабельного для человека, или устной речи, достаточно членораздельной для человека. Надолго ли этого хватит - сказать сложно. Я бы предположил, что если эти задачи будут всерьез востребованы и потенциально приводить к большим доходам, то рано или поздно даже CAPTCHA "не устоит".

Распознавание искусственно нарисованных фигур, пусть даже зашумленных, - извините, детская задача. Мы постоянно сталкиваемся с такими задачами, когда пишем алгоритмы для анализа различных механических деталей на заводских производственных линиях. Защита с помощью "испорченного" текста работает только потому, что мы живем в эпоху всеобщей грамотности, и все наши дети тратят годы на обучение чтение и письму. Именно поэтому интеллект среднего обывателя в этой области легко "обгоняет" - пока! - компьютерные алгоритмы. Китайцам или японцам защищаться проще, ибо там принято тратить намного больше времени на овладевание сложнейшим иероглифическим письмом (которое нам кажется, как известно, китайской грамотой).

Powered by POEM™ Engine Copyright © 2002-2005