Высшая математика – просто и доступно!
Если сайт упал, используйте ЗЕРКАЛО: mathprofi.net
Наш форум, библиотека и блог: mathprofi
Надёжность пин-кода / проверочного кодаОднако! (с) Снова по вашим письмам. Эта невероятно полезная тема наверняка интересна многим, и посему статья предназначена для широкого круга читателей, а не только тех, кто знаком с теорией вероятности и математической статистикой. Практически у каждого из нас есть сотовые телефоны, смартфоны, другие гаджеты и все мы получаем проверочные коды при попытке входа в интернет-банк и другие сервисы. Вопрос: насколько вероятно, что злоумышленник или просто любопытный человек подберёт ваш пин-код или проверочный код? Надёжен ли четырёхзначный пин? Пятизначный? … Как минимизировать вероятность подбора? Рекомендую, кстати, материал для ваших учебных и научных работ, а также прикладных исследований. Тянет не только на курсовик, но и добротный диплом по теории вероятностей или информационной безопасности. Увлекательно, несложно и простора для творчества хоть отбавляй. Однако начинаем. Начнём с ситуации, когда количество попыток подбора кода не ограничено. Как, например, в замке Кенсингтон который оберегает компьютерную технику от случайной кражи. Устройство представляет собой кодовый замок с 4 дисками, на каждом из которых расположены цифры от 0 до 9. Его удаётся отсоединить, только если правильно набрана секретная комбинация цифр, то есть это механический аналог пин-кода:
Предположим, вы сидите в летнем кафе и приковали тросиком ноутбук к железной ограде, чтобы можно было расслабиться, а через некоторое время… напрочь забыли секретный код! Очевидно, что количество попыток подбора кода не ограничено (крути колёсики, да крути), и здесь гарантированно поможет прямой перебор всех возможных вариантов. Проще всего начать с самого начала: 0000, 0001, 0002, 0003, … и за 10000 испытаний будет вам счастье. Следует отметить, что практически достоверно данный процесс завершится раньше, количество попыток подбора (до 1-го успешного включительно) распределено равномерно, и тут всё просто: вероятность того, что потребуется 1000 попыток составляет 0,1 (10%), 5000 попыток – 0,5 (50%) и так далее. Заметим попутно ещё один любопытный факт: в этом замкЕ выгодно использовать простые комбинации наподобие 1100 или вашего года рождения, дабы их не забыть, что абсолютно не рекомендовано в паролях. Дело в том, что у злоумышленника, который захочет прихватить ваш девайс, совершенно нет времени на подбор кода. Но вот, он заметил трещину в ограде, пока вы отошли за рюмкой чая, и унёс ваш гаджет вместе с тросиком. Далее, в спокойной обстановке, мне предстоит отсоединить замок от устройства, но перебирать коды подряд я, конечно, не буду :) Существуют эффективные методы открытия такого замка, с которыми вы можете ознакомиться в Сети самостоятельно. За их незнанием, кстати, можно попытаться ускорить процесс, начав-таки как раз с тривиальных комбинаций типа 1234, 7777 и т. п. Но к этому вопросу мы ещё вернёмся, возвращаю вам ноутбук, продолжаем. Теперь проанализируем надёжность данного замка с точки зрения его стойкости к подбору кода. А именно, какое количество дисков достаточно для того, чтобы почти наверняка он не был открыт за разумное время методом перебора вариантов. Ясен день, один диск неприемлем абсолютно: буквально за 2-3 секунды его можно прокрутить пальцем, перебрав тем самым все 10 цифр. Два диска тоже плохо, здесь 100 вариантов, и перебор займёт считанные минуты. Даже хаотично покрутив диски несколько секунд, злоумышленник успеет испытать десяток так, другой случайных комбинаций. И три диска не айс: перебрать 1000 вариантов хватит терпения большинству людей, а при «хаотичной прокрутке» у злоумышленника, пожалуй, будет процентов пять шансов «попасть» в нужную комбинацию. Классические четыре диска – ближе к делу, хотя средней руки шизофреник будет готов перебирать и 10000 вариантов. Ну а с пятью дисками и 100000 вариантами загрустят уже многие из них. Хотя… Таким образом, для обеспечения надёжности замку Кенсингтона достаточно обладать 4 дисками, и именно с таким количеством он и производится, лично я других не видел. Что называется, теория на службе практики. Теперь перейдём к более распространённому случаю, когда количество попыток подбора ограничено. Неувядающая классика: Задача 1 Матвей не помнит пин-код к своей сим-карте. Какова вероятность того, что он сможет авторизоваться в кнопочном телефоне? Решение: как вы прекрасно знаете, у Матвея всего три попытки. А вариантов десять тысяч. И сразу понятно, шансы призрачны. Но решаем задачу. По классическому определению вероятностей: По теореме умножения зависимых событий: Удивимся дважды: во-первых это произведение можно подсчитать устно ;), а во-вторых значение получилось точным. По теореме сложения вероятностей противоположных событий: В переводе на язык статистики, это означает, что на каждые 10000 сеансов подбора удача будет улыбаться в среднем три раза. Ответ: 0,0003 или 0,03%, в теорвере проценты – моветон, но «обычных» читателей ради. Следует добавить, что реальная вероятность на практике будет выше, если человек помнит, что пин-код нетривиален, то есть это не 5555 или 9876, это не год рождения и т. п. И гораздо выше – в случае простого варианта, чему и посвящена следующая задача. Она не слишком этичная, но весьма важная, и я предлагаю её вам для самостоятельного решения: Задача 2 Любопытная Маша хочет зайти в смартфон Пети, предполагая, что у него простой пин-код: цифры одинаковы, либо идут подряд (по возрастанию или убыванию), либо пАрами (2200, 7755 и т. п.). Какова вероятность авторизации за 9 попыток, если у Пети и в самом деле один из этих кодов? …Почему попыток девять? После 10-й неудачной попытки смартфон блокируется, а «палиться» Маша не хочет :) Кстати, грамотный злоумышленник или просто Мария :) в первую очередь будет пробовать как раз подобные комбинации, существенно повышая свои шансы, ведь многие не заморачиваются с пин-кодом. А даже если и немногие, всё равно – это наиболее выгодный принцип подбора. Поэтому банки и другие сервисы, как я заметил, не используют такие варианты; по-крайне мере, лично мне перечисленные в условии проверочные коды никогда не встречались. Решаем, сверяемся (конец статьи) и плавно переходим к теме финансовой. О банковских картах рассуждать особо нечего: свой пин-код подбирать бессмысленно, рАвно, как и чужой (грустная Задача 1). К тому же в последнем случае можно просто пройтись по магазинам. Но лучше не нужно, юридически это кража. Поэтому рассмотрим надёжность проверочного кода для авторизации в онлайн-банке или другом сервисе, которые мы получали сотни и сотни раз; кроме того, многие банки пускают клиента по локальному пину на его устройстве. Сразу исключим тему мошенничества, когда код кто-то выманил / подсмотрел и т. п., сейчас речь пойдёт о технической стороне вопроса. Интуитивно представляется, что 5-6-значный код достаточно надёжен, и это действительно так. Но довольно часто мы встречаем «классический» 4-значный. И вот тут уже сомнения. Достаточно ли его, чтобы спать спокойно? Предположим, некий человек обнаружил, что кто-то оставил без присмотра компьютер с возможностью зайти в онлайн-банк с помощью 4-значного пина. Или у этого некто есть в распоряжении чужой логин / пароль и он пытается угадать проверочный код, отправленный банком. Да, у него всего три попытки (в типичном случае), и вероятность на успех составляет 0,0003, если он действует в предположении, что код не тривиален. После трёх неудач банк заморозит дальнейшую активность. Но дело не в малой вероятности. Дело в том, что таких случаев в мире происходит много, и, как мы выяснили в Задаче 1, на каждые 10000 из них в среднем придётся 3 успешных подбора. А если злоумышленник пробует тривиальные комбинации, то его шансы на порядки возрастают (Задача 2). То есть более чем реалистично (и мы это математически оценим), что кто-то случайно в онлайн-банк зайдёт. Да, крупную сумму ему вряд ли удастся «увести» (потребуют дополнительный проверочный код), но по мелочи или оплатить покупки – вполне себе. Так что обязательно ставьте пароли и не оставляйте гаджеты без присмотра. Собирательно назовём их именем Остап и решим следующую задачу: Задача 3 Остап пытается угадать 4-значный проверочный код, который отправил банк. После трёх неудачных попыток доступ к Личному кабинету (чужому) блокируется. Какова вероятность того, что из 3000 сеансов подбора успешным окажется хотя бы один, если банк отправляет все 10000 вариантов кода. …Сразу оговорюсь, что пример упрощенный, сервисы стопудово не отправляют некоторые варианты и не только те, которые были в Задаче 2, так, не припоминаю кодов наподобие 0100 или 5959, например. Сначала я хотел это учесть, но затем оставил 10000, по причине более компактных вычислений. При желании вы можете исключить часть вариантов и прорешать ту же самую задачу. Решаем: как мы выяснили в Задаче 1, вероятность неудачи в одном сеансе подбора составляет 0,9997. Поскольку «остапы» действуют независимо друг от друга, то по теореме умножения независимых событий: С вычислениями никаких проблем, забиваем в Эксель =СТЕПЕНЬ(0,9997;3000), жмём Enter. В прошлом веке считали приближённо, с помощью формулы Пуассона: В чем статистический смысл полученного результата? Он означает, что если провести много-много-много серий по 3000 сеансов, то примерно в 40,65% из них успешных подборов не будет вообще. Но продолжаем, по теореме сложения вероятностей противоположных событий: То есть это или один успешный подбор, или два, или три четыре, или пять, …, или теоретически и фантастически – все 3000. Ответ: Количество успешных подборов имеет биномиальное распределение. Ради интереса найдём несколько вероятностей с помощью формулы Бернулли, саму формулу приводить не буду, ввиду «накладок» с обозначениями:
В Экселе удобно использовать функцию =БИНОМ.РАСП(1;3000;0,0003;0)
В случае «отказа» программы (по причине слишком больших чисел) вместо биномиального распределения можно использовать распределение Пуассона, как мы недавно увидели, оно обеспечивает достойное приближение. И я предлагаю вам продолжить исследование: Задача 4 Сколькизначным должен быть проверочный код, что с вероятностью, бОльшей 0,99, все 3000 сеансов подбора оказались неудачными? Проще всего использовать перебор: исследовать 5-значный код, 6-значный, и т. д. – до тех пор, пока не будет достигнута искомая надёжность (вероятность). Решаем, сверяемся и на сегодня достаточно. Как я отмечал в начале, тема обширная, тема увлекательная – исследовать её можно в разных аспектах и разных прикладных областях. Если у вас есть наработки, можете ими поделиться, опубликую. Если хотите что-то взять из урока, берите, только, пожалуйста, поставьте ссылку. Ну а желающие могут перевести донат на безопасный счёт :) Желаю успехов! Решение и ответы: Задача 2. Решение: подсчитаем все возможные пин-коды. Пины с одинаковыми цифрами: 0000, 1111, 2222, …, 9999. Пины с идущими подряд цифрами: 0123, 1234, 2345, 3456, 4567, 5678, 6789. А вот с парами сложнее. Неподготовленный читатель может «прикинуть» все варианты на бумаге или даже в уме, но лучше привлечь на помощь комбинаторику. По формуле количества сочетаний: По правилу умножения комбинаций: Таким образом, суммарно получаем 10 + 14 + 90 = 114 возможных пин-кодов (общее число исходов). По классическому определению вероятности и теореме умножения зависимых событий: По теореме сложения вероятностей противоположных событий: Ответ: Таким образом, получилось около 8%, что абсолютно неприемлемо с точки зрения информационной безопасности. Не используйте простые пин-коды! Задача 4. Решение: исследуем пятизначный проверочный код: *****. Очевидно, здесь будет 100000 возможных вариантов (от 00000 до 99999). По аналогии с Задачей 1: И по мотивам Задачи 3, вероятность того, что все 3000 сеансов подбора окажутся неудачными: Исследуем шестизначный код ****** с миллионом возможных вариантов. Решение аналогичное: По теореме умножения независимых событий: С точки зрения статистики, это означает, что из многих-многих серий по 3000 сеансов безуспешными окажутся примерно 99,1% серий. И только в одной из ста серий (в среднем) состоится хотя бы один успешный подбор. Таким образом, шестизначный код превращает подбор в бесперспективное занятие сродни лотереи. Ответ: для достижения требуемой надёжности достаточно 6-значного кода. Ну и ради любопытства по формуле Бернулли рассчитаем: Автор: Емелин Александр Высшая математика для заочников и не только >>> (Переход на главную страницу сайта) |
© Copyright mathprofi.ru, Александр Емелин, 2010-2026