Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[RU] “I, Not Robot". A design of the contemporary CAPTCHA challenges and the future of the Turing test

[RU] “I, Not Robot". A design of the contemporary CAPTCHA challenges and the future of the Turing test

Over the years, the problem of telling humans from robots seemed to be being resolved well by the famous CAPTCHA challenges: Users are expected to recognize a specially distorted text or audio stream which an image — or voice — recognition tool could not handle.

The idea of the talk is to discuss what this area looks like as of 2018, and how it's going to evolve.

More Decks by Artyom "Töma" Gavrichenkov

Other Decks in Programming

Transcript

  1. Я, не робот
    Дизайн современных CAPTCHA-проверок
    и будущее теста Тьюринга
    Артём Гавриченков

    View full-size slide

  2. Постановка задачи

    View full-size slide

  3. Постановка задачи
    • Мы хотим предоставлять сервис
    только для человеков

    View full-size slide

  4. Постановка задачи
    • Мы хотим предоставлять сервис
    только для человеков
    • Но ходят туда не только человеки!

    View full-size slide

  5. Постановка задачи
    • Мы хотим предоставлять сервис
    только для человеков
    • Но ходят туда не только человеки!
    • Мы пробовали запрещать всем остальным
    – они не слушаются!

    View full-size slide

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

    View full-size slide

  7. Простое решение
    • К счастью, роботы не могут так же хорошо
    распознавать содержимое изображений,
    как люди
    • Неудачники!

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. Решение, v1
    • К счастью, роботы не могут так же хорошо
    распознавать содержимое изображений,
    как люди
    • Локализация текста, несколько попыток, подсказки

    View full-size slide

  11. Проблема #1
    • К счастью, роботы не могут так же хорошо
    распознавать содержимое изображений,
    как люди

    View full-size slide

  12. Проблема #1
    • К счастью, роботы не могут так же хорошо
    распознавать содержимое изображений,
    как люди
    • Человеческое зрение – хрупкая и сложная штука

    View full-size slide

  13. Пример: дальтонизм

    View full-size slide

  14. Пример: дальтонизм
    • Расстройство цветового восприятия
    • Типы: монохромное, дихромное,
    аномальное трихромное
    • Небинарное состояние!
    • Нормальное зрение
    -> аномалия
    -> анопия

    View full-size slide

  15. Дихромное зрение
    • Недостаток пигментов в цветочувствительных
    рецепторах (трихроматах)
    • Пигменты: красный, зелёный, голубой (RGB)
    • Протанопия: отсутствие красного рецептора
    • Дейтеранопия: отсутствие зелёного рецептора
    • Тританопия: отсутствие голубого рецептора

    View full-size slide

  16. Дихромное зрение
    • Недостаток пигментов в цветочувствительных
    рецепторах (трихроматах)
    • Пигменты: красный, зелёный, голубой (RGB)
    • Протанопия: отсутствие красного рецептора
    • Дейтеранопия: отсутствие зелёного рецептора
    • Тританопия: отсутствие голубого рецептора
    • Протаномалия, дейтераномалия, тританомалия

    View full-size slide

  17. Пример: дальтонизм
    Нормальное зрение:
    Протанопия:
    Дейтеранопия:
    Тританопия:

    View full-size slide

  18. Пример: дальтонизм
    • Редкость? Нет!
    • Дейтераномалия: 6% мужчин
    • Те или иные расстройства цветового восприятия: до 10% мужчин
    • Ухудшается с возрастом

    View full-size slide

  19. Пример: дальтонизм
    • Редкость? Нет!
    • Дейтераномалия: 6% мужчин
    • Те или иные расстройства цветового восприятия: до 10% мужчин
    • Ухудшается с возрастом
    • Только один тип расстройства – уже до 5% аудитории

    View full-size slide

  20. Accessibility focused design
    • Цветовое кодирование информации – плохая практика!
    • Крупный, разборчивый текст
    • Важная текстовая информация дублируется аудио

    View full-size slide

  21. Решение, v2
    • К счастью, роботы не могут так же хорошо
    распознавать содержимое изображений
    и аудиофайлов,
    как идеальные люди
    • Проверка: искажённый текст
    • Accessibility: дублирование аудио

    View full-size slide

  22. Проблема #2
    • К счастью, роботы не могут так же хорошо
    распознавать содержимое изображений
    и аудиофайлов,
    как идеальные люди

    View full-size slide

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

    View full-size slide

  24. Инструменты для распознавания
    • OpenCV: open source-библиотека
    • TensorFlow, Keras и пр.
    • Сложность – в базе и в разметке

    View full-size slide

  25. Распознавание CAPTCHA
    • Генерируем/размечаем большое число изображений
    • OpenCV -> TensorFlow
    • Тренировать до победного

    View full-size slide

  26. Распознавание CAPTCHA
    https://medium.com/@ageitgey/how-to-break-a-captcha-
    system-in-15-minutes-with-machine-learning-
    dbebb035a710

    View full-size slide

  27. image = cv2.imread(captcha_image_file)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    thresh = cv2.threshold(
    gray, 0, 255,
    cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
    contours = cv2.findContours(
    thresh, cv2.RETR_EXTERNAL,
    cv2.CHAIN_APPROX_SIMPLE)[1]

    View full-size slide

  28. model = Sequential()
    model.add(Conv2D(
    20, (5, 5), padding="same", activation="relu",
    input_shape=(20, 20, 1)))
    model.add(MaxPooling2D(
    pool_size=(2, 2), strides=(2, 2)))
    model.add(Conv2D(
    50, (5, 5), padding="same", activation="relu"))
    model.add(MaxPooling2D(
    pool_size=(2, 2), strides=(2, 2)))

    View full-size slide

  29. model.add(Flatten())
    model.add(Dense(500, activation="relu"))
    model.add(Dense(32, activation="softmax"))
    model.compile(
    loss="categorical_crossentropy",
    optimizer="adam", metrics=["accuracy"])
    model.fit(
    X_train, Y_train,
    validation_data=(X_test, Y_test),
    batch_size=32, epochs=10)

    View full-size slide

  30. for letter_image in letter_image_regions:
    prediction = model.predict(letter_image)
    letter = lb.inverse_transform(prediction)[0]
    predictions.append(letter)
    captcha_text = "".join(predictions)
    print("CAPTCHA text is: ”, captcha_text)

    View full-size slide

  31. Read more:
    • http://ru.datasides.com/code/cnn-convolutional-neural-
    networks/
    • https://medium.com/@ageitgey/machine-learning-is-fun-part-3-
    deep-learning-and-convolutional-neural-networks-f40359318721

    View full-size slide

  32. False P/N
    • Всё, что основано на обучении, не даёт 100% гарантии
    • False positive (ошибка I рода): ложное срабатывание
    • False negative (ошибка II рода): пропуск события
    • Любой алгоритм можно настроить на 0% FP или 0% FN
    • Истина – посредине
    • Баланс определяется задачами

    View full-size slide

  33. Распознавание CAPTCHA
    • Генерируем/размечаем большое число изображений
    • OpenCV -> TensorFlow
    • Тренировать до победного
    • 30%-50% успеха вполне достаточно
    для большинства применений
    (люди порой не настолько успешны)

    View full-size slide

  34. Распознавание CAPTCHA
    • 30%-50% успеха вполне достаточно
    для большинства применений
    (люди порой не настолько успешны)
    • Голос распознаётся намного лучше изображений

    View full-size slide

  35. Распознавание CAPTCHA
    • CAPTCHA сегодня – это security by obscurity
    • База изображений должна быть большой
    и храниться в тайне
    • Алгоритмы генерации не должны быть опубликованы

    View full-size slide

  36. Решение, v3
    • К счастью, простые роботы не могут так же хорошо
    распознавать содержимое изображений
    и аудиофайлов,
    как идеальные люди
    • Закрытый исходный код
    • Закрытая база данных

    View full-size slide

  37. Проблема #3
    • К счастью, простые роботы не могут так же хорошо
    распознавать содержимое изображений
    и аудиофайлов,
    как идеальные люди

    View full-size slide

  38. Проблема #3
    • К счастью, простые роботы не могут так же хорошо
    распознавать содержимое изображений
    и аудиофайлов,
    как идеальные люди
    • Насколько простые?

    View full-size slide

  39. ReCaptcha v2: поиск предметов
    • «Отметьте все изображения, на которых»:
    • Дорожные знаки
    • Автомобили
    • Мосты
    • Частные дома (houses)
    • Здания
    • Витрины
    • Рекламные щиты
    • Люди
    • Табличка

    View full-size slide

  40. ReCaptcha v2: поиск предметов
    • Что общего у этих предметов?
    • Дорожные знаки
    • Автомобили
    • Мосты
    • Частные дома (houses)
    • Здания
    • Витрины
    • Рекламные щиты
    • Люди
    • Табличка

    View full-size slide

  41. Автоматизация человеков
    • Antigate
    • Malware, вставляющее изображения в страницу

    View full-size slide

  42. Реверс-инжиниринг человеков!
    https://www.theregister.co.uk/2017/10/26/captcha_ai_solver/

    View full-size slide

  43. Реверс-инжиниринг человеков “aaS”
    https://www.vicarious.com/ “Vicarious is developing artificial
    general intelligence for robots.
    By combining insights from
    generative probabilistic models
    and systems neuroscience, our
    architecture trains faster,
    adapts more readily, and
    generalizes more broadly than
    AI approaches commonly used
    today.”

    View full-size slide

  44. Решение, v3
    • К счастью, простые роботы не могут так же хорошо
    распознавать содержимое изображений
    и аудиофайлов,
    как идеальные люди
    • …

    View full-size slide

  45. Постановка задачи
    • Мы хотим предоставлять сервис
    только для человеков

    View full-size slide

  46. Постановка задачи
    • Мы хотим предоставлять сервис
    только для человеков
    • Почему?

    View full-size slide

  47. Постановка задачи
    • Есть хорошие люди и плохие роботы

    View full-size slide

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

    View full-size slide

  49. Q&A
    mailto: Artyom Gavrichenkov

    View full-size slide