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

Исследователи из университета Кембриджа Sören Preibusch и Ross Anderson исправили ситуацию, опубликовав первый в мире количественный анализ сложности угадывания 4-циферного банковского PIN-кода.

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

Отправной точкой исследования был набор 4-циферных последовательностей в паролях из базы RockYou (1.7 млн), и базы из 200 тысяч PIN-кодов от программы блокировки экрана iPhone (базу предоставил разработчик приложения Daniel Amitay). В графиках, построенных по этим данным, проступают интересные закономерности — даты, года, повторяющиеся цифры, и даже PIN-коды, заканчивающиеся на 69. На основе этих наблюдений учёные построили линейную регрессионную модель, которая оценивает популярность каждого PIN-кода в зависимости от 25 факторов, — например, является ли код датой в формате ДДММ, является ли он возрастающей последовательностью, и так далее. Этим общим условиям соответствуют 79% и 93% PIN-кодов в каждом из наборов.

Итак, пользователи выбирают 4-циферные коды на основе всего нескольких простых факторов. Если бы так выбирались и банковские PIN-коды, 8-9% из них можно было бы угадать всего за три попытки! Но, конечно, к банковским кодам люди относятся гораздо внимательнее. Ввиду отсутствия сколько-нибудь большого набора настоящих банковских данных, исследователи опросили более 1300 человек, чтобы оценить, насколько реальные PIN-коды отличаются от уже рассмотренных. Учитывая специфику исследования, у респондентов спрашивали не о самих кодах, а только о их соответствии какому-либо из вышеназванных факторов (возрастание, формат ДДММ, и т.д.).

Оказалось, что люди действительно гораздо тщательнее выбирают банковские PIN-коды. Примерно четверть опрошенных используют случайный PIN, сгенерированный банком. Более трети выбирают свой PIN-код, используя старый номер телефона, номер студенческого билета, или другой набор цифр, который выглядит случайным. Согласно полученным результатам, 64% владельцев карт используют псевдослучайный PIN-код, — это гораздо больше, чем 23-27% в предыдущих экспериментах с не-банковскими кодами. Ещё 5% используют цифровой паттерн (например, 4545), а 9% предпочитают паттерн на клавиатуре (например, 2684). В целом, злоумышленник с шестью попытками (три с банкоматом и три с платёжным терминалом) имеет меньше 2% шансов угадать PIN-код чужой карты.

ФакторПримерRockYouiPhoneОпрос
Даты
ДДММ23115.261.383.07
ДМГГ38769.266.465.54
ММДД112310.009.353.66
ММГГ06830.670.200.94
ГГГГ198433.397.124.95
Итого58.5724.5122.76
Клавиатурный паттерн
смежные63511.524.99
квадрат14250.010.58
углы97130.191.06
крест82460.170.88
диагональная линия15900.101.36
горизонтальная линия59870.341.42
слово56830.708.39
вертикальная линия85200.064.28
Итого3.0922.978.96
Цифровой паттерн
заканчивается на 6968690.350.57
только цифры 0-320003.492.72
только цифры 0-651554.665.96
повторяющиеся пары25252.314.11
одинаковые цифры66660.406.67
убывающая последовательность32100.130.29
возрастающая последовательность45673.834.52
Итого15.1624.854.60
Случайный набор цифр 23.1727.6763.68

Всё бы хорошо, но, к сожалению, существенная часть опрошенных (23%) выбирает PIN-код в виде даты, — и почти треть из них использует дату своего рождения. Это существенно меняет дело, ведь почти все (99%) респонденты ответили, что хранят в бумажнике с банковскими картами различные удостоверения личности, на которых эта дата напечатана. Если злоумышленник знает день рождения владельца карты, то при грамотном подходе вероятность угадывания PIN-кода взлетает до 9%.

100 самых популярных PIN-кодов

0000, 0101-0103, 0110, 0111, 0123, 0202, 0303, 0404, 0505, 0606, 0707, 0808, 0909, 1010, 1101-1103, 1110-1112, 1123, 1201-1203, 1210-1212, 1234, 1956-2015, 2222, 2229, 2580, 3333, 4444, 5252, 5683, 6666, 7465, 7667.

P.S. На практике, разумеется, злоумышленнику гораздо проще подсмотреть ваш PIN-код, чем угадывать его. Но и от подглядывания можно защититься — даже, казалось бы, в безвыходном положении:

Калькулятор ниже предназначен для генерации всех сочетаний из n по m элементов.
Число таких сочетаний, как можно рассчитать с помощью калькулятора Элементы комбинаторики. Перестановки, размещения, сочетания .

Описание алгоритма генерации под калькулятором.

Алгоритм

Комбинации генерируются в лексикографическом порядке. Алгоритм работает с порядковыми индексами элементов множества.
Рассмотрим алгоритм на примере.
Для простоты изложения рассмотрим множество из пяти элементов, индексы в котором начинаются с 1, а именно, 1 2 3 4 5.
Требуется сгенерировать все комбинации размера m = 3.
Сначала инициализуется первая комбинация заданного размера m — индексы в порядке возрастания
1 2 3
Далее проверяется последний элемент, т. е. i = 3. Если его значение меньше n — m + i, то он инкрементируется на 1.
1 2 4
Снова проверяется последний элемент, и опять он инкрементируется.
1 2 5
Теперь значение элемента равно максимально возможному: n — m + i = 5 — 3 + 3 = 5, проверяется предыдущий элемент с i = 2.
Если его значение меньше n — m + i, то он инкрементируется на 1, а для всех следующих за ним элементов значение приравнивается к значению предыдущего элемента плюс 1.
1 (2+1)3 (3+1)4 = 1 3 4
Далее снова идет проверка для i = 3.
1 3 5
Затем — проверка для i = 2.
1 4 5
Потом наступает очередь i = 1.
(1+1)2 (2+1)3 (3+1)4 = 2 3 4
И далее,
2 3 5
2 4 5
3 4 5 — последнее сочетание, так как все его элементы равны n — m + i.

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

Мне выдали новую банковскую карточку и я, как водится, играючи угадала ее пин-код. Но не подряд. В смысле, допустим, пин-код был 8794, а я назвала 9748. То есть, я триумфально угадала все цифры , которое содержались в данном четырехзначном числе. Ну да, не само число , а просто его составляющие у гадала. Но цифры-то все верные! ПРИМЕЧАНИЕ — я действовала наугад, то есть, мне не надо было расставить уже известные числа в нужном порядке, я просто действовала в духе: вот тут есть неизвестные мне четыре цифры, и я считаю, что среди них могут быть 9, 7, 4 и 8, а порядок их не важен. Мы тут же задались вопросом, сколько у меня вообще было вариантов (наверное, чтобы понять, насколько это круто, что я вот взяла и угадала). То есть, из скольких комбинаций четырех цифр мне нужно было выбирать? И тут, натурально, начался ад. У нас весь вечер взрывалась голова, и у всех, в итоге, вышли абсолютно разные варианты ответа! Я даже начала выписывать все эти комбинации в блокнот подряд по мере возрастания, но на четырех сотнях поняла, что их больше четырех сотен (во всяком случае, это опровергло ответ физика Трэша, который уверял меня, что комбинаций четыре сотни, но все равно это не совсем однозначно) — и сдалась.

Собственно, суть вопроса. Какова вероятность угадывания (в любом порядке) четырех чисел, содержащихся в четырехзначном числе?

Или нет, переформулируем (я гуманитарий, простите, хотя к математике всегда питала огромную слабость), чтобы было яснее и четче. Сколько не повторяющихся комбинаций цифр содержится в ряду порядковых числительных от 0 до 9999? (пожалуйста, не путайте это с вопросом "сколько комбинаций не повторяющихся цифр"!! ! цифры могут повторяться! в смысле, 2233 и 3322 — это в данном случае одна и та же комбинация!!).

Или еще конкретнее. Мне нужно четыре раза угадать одну цифру из десяти. Но не подряд.

Ну или еще как-нибудь. В общем, нужно узнать, сколько у меня было вариантов числовой комбинации, из которой складывался пин-код карточки. Помогите, люди добрые! Только, пожалуйста, помогая, не начинайте сразу писать, что вариантов этих 9999 (вчера такое всем приходило в голову поначалу), потому что это же глупости — ведь в том ракурсе, который нас волнует, число 1234, число 3421, число 4312 и так далее являются одним и тем же! Ну и да, цифры же могут повторяться, ведь бывает пин-код 1111 или там, например, 0007. Можно представить вместо пин-кода номер машины. Допустим, какова вероятность угадать все однозначные цифры, из которых складывается номер машины? Или, чтобы вообще убрать теорию вероятности — из скольких числовых комбинаций мне нужно было выбрать одну?

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

Недавно мой хороший друг lan скинул мне шуточную новость. В заголовке новости было написано что-то типа:
“PIN-коды всех кредитных карт в мире похищены!”

Недавно мой хороший друг lan скинул мне шуточную новость. В заголовке новости было написано что-то типа:

PIN-коды всех кредитных карт в мире похищены!”

В самой же новости было просто перечислены украденные PIN-коды: 0000 0001 0002 0003 0004…

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

− Зацени мой номерной знак!

− Никто не сможет правильно запомнить номер моей машины! Я могу совершить любое преступление, какое только захочу!

− Флаг тебе в руки.

Кадр 3 (чуть позже):

− Номер машины вора вроде бы полностью состоял из ‘1’.

− А! Так это тот самый парень!

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

Какой PIN-код встречается реже всего?

Всего из 10 цифр можно составить 10 000 различных четырехзначных PIN-кодов. Из этих десяти тысяч, какие PIN-коды встречаются реже всего?

Какой из 10 000 PIN-кодов люди используют реже всего?

Какой из 10 000 PIN-кодов люди используют чаще всего?

Если бы перед вами стояла задача найти PIN-код кредитной карточки за кратчайшее время, то в каком порядке вы бы перебирали все возможные PIN-коды?

Если бы вас спросили, какой четырехзначный PIN-код встречается реже всего, то что бы вы ответили?

Все эти вопросы тесно связаны с вышеупомянутым комиксом с XKCD. В комиксе план преступника провалился, потому что его номерной знак был слишком уникальным и, как следствие, слишком запоминающимся. Какой номерной знак запоминается тяжелее всего? Спросите любого знакомого шпиона J, как лучше всего затеряться в толпе? Ответ будет вполне ожидаемым: быть “нормальным” и ничем не выделяться.

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

Вам все еще интересно, какой PIN-код встречается реже всего?

А какой самый популярный?

Если да, то читайте дальше…

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

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

Утечки баз данных с паролями

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

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

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

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

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

Вернемся к выборке

Из всех баз данных с паролями учетных записей я выбрал только те записи, в которых пароль пользователя состоял из 4 цифр [0-9]. Результаты выборки были объединены в отдельную базу данных четырехзначных паролей.

Отсюда и далее мы будем считать, что четырехзначные пароли и PIN-коды это суть одно и то же.

Мне удалось найти около 3,4 миллиона четырехзначных паролей. Каждый из паролей представляет собой комбинацию из 4 цифр от 0000 до 9999.

Самый популярный пароль: 1234

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

1234 составляет около 11% от 3,4 миллиона всех паролей.

Следующий по популярности четырехзначный пароль – 1111, около 6% от всей выборки.

Третье место занимает пароль 0000 с 2%.

Xakep #246. Учиться, учиться, учиться!

Не секрет, что пользователи выбирают числовые пароли, используя характерные паттерны. В случае четырёхзначного PIN-кода очень часто указывается день рождения или год рождения.

До настоящего момента все исследования в этой области были фрагментарными, на основе относительно небольших выборок данных. Американская компания Data Genetics несколько дней назад опубликовала наиболее полный и масштабный статистический анализ PIN-кодов, использовав все доступные базы данных с паролями и отфильтровав их по цифровым комбинациям от 0000 до 9999. Общая база после применения фильтра составила 3,4 миллиона PIN-кодов.

Анализ позволил выявить несколько интересных фактов. Самым популярным PIN-кодом является 1234, его устанавливают почти 11% пользователей. На втором месте идёт 1111 (6%).

Частота№ 1123410,713%№ 211116,016%№ 300001,881%№ 412121,197%№ 577770,745%№ 610040,616%№ 720000,613%№ 844440,526%№ 922220,516%№ 1069690,512%№ 1199990,451%№ 1233330,419%№ 1355550,395%№ 1466660,391%№ 1511220,366%№ 1613130,304%№ 1788880,303%№ 1843210,293%№ 1920010,290%№ 2010100,285%

Двадцатка самых популярных комбинаций покрывает 26,83% всех паролей, хотя при нормальном статистическом распределении она составляла бы всего 0,2%. На следующей диаграмме показана кумулятивная частотность использования паролей.

Интересно также посмотреть на список самых редких PIN-кодов по всей базе.