22.11.2012

Анализ PIN-кодов(часть 1)

image

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

Автор: DataGenetics

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

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

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

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

Кадр 1:

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

− 1I1-III1?

− Он идеален!

Кадр 2:

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

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

Кадр 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%.

PIN

Freq

#1

1234

10.713%

#2

1111

6.016%

#3

0000

1.881%

#4

1212

1.197%

#5

7777

0.745%

#6

1004

0.616%

#7

2000

0.613%

#8

4444

0.526%

#9

2222

0.516%

#10

6969

0.512%

#11

9999

0.451%

#12

3333

0.419%

#13

5555

0.395%

#14

6666

0.391%

#15

1122

0.366%

#16

1313

0.304%

#17

8888

0.303%

#18

4321

0.293%

#19

2001

0.290%

#20

1010

0.285%

Справа показана таблица с 20ью самыми часто используемыми паролями. Перебрав всего 20 комбинаций можно с вероятностью 26,83% угадать правильный PIN-код!

С точки зрения теории вероятности, если бы PIN-коды были распределены равномерно, то перебрав 20 паролей из 10 000, мы бы угадали верный пароль с вероятностью 0,2%, но никак не с вероятностью 26,83%!

Внимательно взглянув на таблицу, мы найдем в ней всех “главных подозреваемых”: 1111, 2222, 3333, …, 9999, а также 1212 и 6969 J.

Неудивительно и то, что в начале списка находятся пароли, подобные паролям 1122, 1313, 4321 и 1010.

Пароль 2001 занимает позицию #19. Недалеко от него отстал пароль 1984, занимающий 26ую позицию. Фанатам Джеймса Бонда может показаться интересным, что пароль 0007 находится между паролями 2001 и 1984 на позиции #23. Еще один “шпионский” пароль – 0070 – занимает позицию #28.

Первый “загадочный” пароль, который мне встретился, был паролем 2580 на позиции #22. Почему именно такая комбинация цифр? Почему так много людей использует PIN- код 2580?

А потом я понял, что 2580 – это средний вертикальный ряд на телефонной клавиатуре.


Высокая вероятность пароля 2580 служит еще одним доказательством того, что между четырехзначными паролями и PIN-кодами наблюдается близкое соответствие. Если вы взгляните на цифровую клавиатуру компьютера, то заметите, что набрать пароль 2580 на ней немного сложнее, чем на телефонной клавиатуре, потому что цифры на компьютерной клавиатуре расположены в обратном порядке. Банкоматы и другие терминалы, принимающие кредитные карты, имеют клавиатуру телефонного типа. Похоже, что многим людям легче запомнить PIN-код от своей кредитной карты по мнемоническому правилу “средний ряд по вертикали”, и использовать такой же пароль для своих учетных записей.

Еще одна интересная деталь: люди предпочитают четные цифры нечетным: пароли типа 2468 встречаются чаще паролей со всеми нечетными цифрами типа 1357.

Накопленная частота паролей

Как уже говорилось, первые строчки таблицы занимают самые часто используемые пароли. Частота использования самого популярного пароля 1234 превышает частоту использования 4200 самых редко встречающихся паролей вместе взятых!

Вы можете с первой попытки угадать около 10% всех паролей! А перебрав всего 5 номеров, вероятность угадывания достигнет уже 20%!

Ниже показан граф накопленной частоты:

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

Границу в 50% можно преодолеть, проверив 426 паролей (для сравнения, при равномерном распределении паролей граница в 50% достигалась бы после проверки 5000 паролей). Такая статистика совсем не радует.

На дне

Окей, теперь мы узнали, какие PIN-коды можно встретить чаще всего и то, что их можно легко угадать и запомнить. Зайдем теперь с другой стороны, какие PIN-коды используются реже всего?

PIN

Freq

#9980

8557

0.001191%

#9981

9047

0.001161%

#9982

8438

0.001161%

#9983

439

0.001161%

#9984

9539

0.001161%

#9985

8196

0.001131%

#9986

7063

0.001131%

#9987

6093

0.001131%

#9988

6827

0.001101%

#9989

7394

0.001101%

#9990

859

0.001072%

#9991

8957

0.001042%

#9992

9480

0.001042%

#9993

6793

0.001012%

#9994

8398

0.000982%

#9995

738

0.000982%

#9996

7637

0.000953%

#9997

6835

0.000953%

#9998

9629

0.000953%

#9999

8093

0.000893%

#10000

8068

0.000744%

Судя по моей выборке можно сказать, что самый редкий пароль – 8086. Он встретился всего 25 раз. Соответственно, вероятность пароля 8086 составляет 0,000744%, что гораздо меньше вероятности при равномерном распределении и почти на пять порядков меньше вероятности самого популярного пароля.

Справа показаны 20 самых редко встречающихся четырехзначных паролей.

Предупреждение: теперь, когда вы узнали, что самым редким четырехзначным паролем является (являлся?) 8086, не нужно вскакивать и срочно менять свой PIN-код! Хакеры тоже умеют читать! Они обязательно включат 8086 в варианты поиска специально, чтобы отловить людей, прочитавших мою или подобную моей статью.

Прочитайте еще про Nash equilibrium (равновесие Нэша). 

Продолжение следует...

или введите имя

CAPTCHA
Страницы: 1  2  
malotavr
22-11-2012 12:37:29
Хм. А ничего, что пользователи, задающие пароли самостоятельно, и система персонализации карт, генерирующая PIN-коды автоматически, используются разные функйции распределения случайных чисел?
0 |
a
22-11-2012 14:46:02
от 0000 до 9999 можно в exel сгенерировать за 2 минуты.
0 |
root
22-11-2012 14:59:00
похоже самый редкий мой. в статье его нет.
0 |
qq
22-11-2012 16:53:19
нет, не редкий, просто он где-то в середине
0 |
hunt
23-11-2012 07:15:44
Только я заметил, что последние pin-ы в рейтинге и статье разные?
0 |
Сергей
23-11-2012 17:00:40
Последний не 8086 (было бы странно, больно знакомое число ), а 8068.
0 |
Андрей
23-11-2012 17:36:06
Опечатка где-то, скорее всего в статье. Зато теперь, после вашего комментария, все запомнят этот пароль намертво И он станет встречаться ЕЩЁ РЕЖЕ
0 |
Страницы: 1  2