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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. View Slide

  10. View Slide

  11. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. View Slide

  28. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. 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 Slide

  33. View Slide

  34. 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 Slide

  35. 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 Slide

  36. 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 Slide

  37. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  47. View Slide

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

    View Slide

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

    View Slide

  50. Реверс-инжиниринг человеков “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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  56. View Slide

  57. Q&A
    mailto: Artyom Gavrichenkov

    View Slide