Смс-код подтверждения и комбинаторика

Насколько надежны смс-коды для банков

смс-коды и комбинаторика

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

смс-коды

К слову комбинаторика очень помогает и в теории надежности.
Каждому из нас приходит смс-коды для доступа в личный кабинет, например, в банк при покупке в онлайн-магазине. Коды могут состоять из 4 цифр, из 6, иногда их бывает даже больше.
Вполне очевидно, и умом мы это понимаем, что код из 6 цифр надёжнее, его сложнее подобрать, чем код из 4. Но насколько?

На помощь нам придёт комбинаторика. Какие у нас исходные данные?
Для создания смс-кода генератор случайных чисел использует 10 элементов, 10 цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9).

Наша задача состоит в том, чтобы определить число возможных вариантов смс-кода. Напомню, что комбинаторика оперируют сочетаниями, размещениями и перестановками элементов.
Что будет в нашем случае? Сочетание? Размещение? А может перестановка?

Зададим себе первый вопрос.

1. Имеет ли значение порядок расположения элементов в смс-коде? Да, безусловно имеет. Код 1, 2, 3, 4 и 4, 3, 2, 1 – будут совершенно разными кодами, хотя элементы используются одинаковые. Значит в нашей задаче точно не сочетание (где не важен порядок элементов). Значит мы имеем дело либо с перестановками, либо размещениями.

Зададим себе второй вопрос.

2. Все ли элементы будут использоваться? Нет, поскольку код состоит из 4 символов, то соответственно мы используем только 4 элемента. Значит, мы имеем дело с размещениями. Это довольно тонкий момент, в котором люди часто ошибаются. Можно подумать, что поскольку в коде из 4 символов могут появиться все цифры от 0 до 9, то значит все элементы используются, а значит нужно использовать перестановки.

Третий вопрос.

3. Повторяются ли элементы? Давайте рассмотрим вариант, что да, повторяются. То есть, например, смс-код 2, 3, 3, 7 возможен.
Значит, исходя из наших ответов, нам следует использоваться размещения с повторениями (или ещё говорят с возвращениями).

Для размещений с повторениями будем использовать следующую формулу:

Подставив вместо n - 10, а вместо k - 4 в формулу увидим, что возможно 10000 разных вариантов. Какая вероятность угадать код?

Давайте посчитаем, по классической теории вероятностей.
На введение кода из смс даётся примерно 60 секунд.

Предположим, что одну цифру я набираю за 1 секунду, значит 4 цифры я набираю за 4 секунды, ещё 1 секунду идёт отправка моего кода и ещё 1 секунду получение ответа от сервера интернет магазина. Итого у меня есть 6 секунд на 1 попытку. Предположим, что я не ограничен числом попыток, а только временем.

Значит за 60 секунд я успею попробовать 60/6 = 10 – целых 10 разных вариантов смс кода. Какая вероятность, что я угадаю? P = 10/10000 = 0,001. Не так уж и много.
А что если код состоит из 6 цифр?

Тогда по нашей формуле:

число вариантов превращается в 1000000. Теперь 6 цифр я буду вводить 6 секунд + 2 секунды на отправку и получение ответа. И того, у меня за минуту – 60 секунд будет 60/8 = 7,5 попыток, но половинная попытка — это не попытка, значит 7.
С какой вероятностью я угадаю смс-код?

P = 7/1000000 = 0,000007. Шансы прямо скажем, невелики. Давайте теперь получим ответ на нашу задачу, насколько смс-код из 6 цифр надежнее, чем код из 4 цифр. 0,001 / 0,000007 = 142,8. Надежнее почти в 150 раз!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *