Используемая в эксперименте нейронная сеть была обучена на видеозаписях ввода PIN-кода 58 разными людьми с использованием выбранных участниками методов прикрытия ввода (каждый участник вводил 100 разных кодов, т.е. для обучения использовалось 5800 примеров ввода). Для тренировки модели машинного обучения был задействован сервер на базе процессора Xeon E5-2670 с 128 GB ОЗУ и тремя картами Tesla K20m с 5GB памяти в каждой. Программная часть написана на языке Python с использованием библиотеки
Keras и платформы Tensorflow. Так как панели ввода в банкоматах отличаются, а результат прогнозирования зависит от таких характеристик, как размер и клавиш и отступов между ними, для каждого типа панелей требуется отдельная тренировка.

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

В качестве мер для защиты от предложенного метода атаки рекомендовано по возможности использовать PIN-коды из 5 цифр вместо 4, а также стараться прикрывать рукой как можно большее пространство ввода (метод остаётся эффективен если рукой прикрывается около 75% области ввода). Производителям банкоматов рекомендовано использовать не механические, а сенсорные панели ввода, положение цифр на которых меняется случайным образом.

Источник: http://www.opennet.ru/opennews/art.shtml?num=55993