Найти тему
Алексей Лот

Почему длина пароля важнее его сложности?

Оглавление

Шифровальная машина Энигма
Шифровальная машина Энигма

Что такое данные

Толковый словарь русского языка Сергея Ожегова в 27-м издании приводит следующие трактовки слова "данные": 1. Сведения, необходимые для какого-нибудь вывода, решения. 2. Основания для чего-нибудь, качества. В цифровую эпоху это слово обретает ещё один, редуцированный смысл: данные - это число. Это - максимально конкретное определение, удобное для математизации любой сферы деятельности. Любые данные: изображения, видео, звук, текст, измерения. Любые данные сегодня способны быть представленными однозначно в цифровой форме, например, в распространённой системе счисления, - составляющей числа из нолей и единиц - двоичной. Из этой системы научными методами позволительно на сегодняшний день переводить в любую другую систему (или множество чисел) посредством алгоритмов. Отдельными алгоритмами двоичные данные могут переводиться из числа в текст, из текста в число, из текста в картинку и так далее. Такие алгоритмы обычно реализованы в ЭВМ.

О том, почему так важна длина пароля

Итак, любые данные (сведения, информация) - это число. Пароль - это набор символов, являющийся набором какого-то множества заранее известных текстовых символов, обычно называемого набором символов или кодировкой. Пример простой кодировки - ASCII. Каждый символ кодировки в пароле вводится в поле, на котором установлен фокус курсора в текущий момент, с электронной (аппаратной) или экранной клавиатуры до тех пор, пока не будет достигнут предел длины текста в поле ввода либо пользователь не захочет отправить введённый текст пароля на сервер нажатием специально отведённой кнопки. Сложность пароля определяется мощностью множества его элементов, длина того же пароля - мощностью мультимножества входящих в него элементов (символов текстового набора). К сожалению, существующие компьютерные технологии не рассчитаны на правильную обработку пароля как единого объекта данных, представляющего собой одно число, а вместо этого алгоритмы обрабатывают пароли посимвольно, рассматривая его как последовательность чисел, где каждому символу назначен его числовой код, изначально известный и заданный кодировкой. Такие числа могут сравниваться попарно с соответствующими кодами образца пароля в проверяющей подпрограмме либо различными комбинациями арифметических операций над кодами символов сводиться к одному числу, которое тоже будет сравниваться с эталоном в проверяющем алгоритме, чтобы, к примеру, не хранить в нём сам пароль в текстовом отображении или ускорить сравнение за счёт более эффективного использования пропускной способности сетевого канала связи и сокращения вычислительных затрат на перебор и попарное сравнение элементов. Для сверки введённого пароля с эталоном необходимо конечное значение времени центрального процессора, затрачиваемое на вычисления, производимые над числовыми данными, и конечная величина памяти, используемая для хранения введённого пароля, эталона и промежуточных результатов, и ещё канал связи с конечной пропускной способностью, потому что эталон пароля чаще всего хранят в защищённом хранилище удалённого сервера в целях соблюдения стандартов безопасности. Для взлома аккаунта злоумышленник может подбирать пароли перебором входных последовательностей символов и, основываясь на времени отклика серверной машины на тот или иной вариант, выбирать более подходящие наборы символов, причём он может менять как длину пароля, так и его сложность (разнообразие символов), поэтому, выбрав один из вариантов защиты - длину или сложность, нужно воспользоваться и другим, дополнительно усилив свой пароль. Чем длиннее пароль, отправленный злоумышленником, тем дольше он будет отправляться на сервер по линии связи, и тем дольше взломщику нужно будет дожидаться ответа, чтобы отследить результат, но разнообразие символов на эту задержку не повлияет. Задача злоумышленника - найти пароль, который подойдёт быстрее всего, то есть время отклика на который будет стремиться к максимуму, так как пароль дальше проходит по стадии проверок, - это единственный верный пароль аккаунта, и для взломщика естественно пытаться увеличить время отклика, задача пользователя - защитить свои данные, для чего он должен сохранить пароль (и желательно - логин) в тайне, что может быть достигнуто равномерным распределением задержек для всех возможных для системы паролей, но при этом это не совсем реальная картина для существующих систем, потому что пароли в ней могут храниться и допускаться ко вводу совершенно различные. Пароль пользователя должен иметь равномерное распределение символов при его максимальной длине. Равномерное распределение максимально близко к белому шуму, что соответствует практически естественной случайности попадания при переборе, что сгладит шероховатости графика задержек у злоумышленника в пространстве наиболее длинных паролей, так как они допускают наименьшую вариативность при стремлении к наиболее случайному паролю у пользователя, что благоприятно для него. Удалённый подбор пароля требует задействия вычислительных мощностей и памяти на обеих концах канала связи. Каждый символ одной и той же кодировки занимает в памяти один и тот же размер области памяти и обрабатывается центральным процессором по одному и тому же алгоритму для всех чисел такой разрядности или, точнее, размера выделенной области памяти под это число (кодировки различаются алгоритмами работы с ними на более высоком уровне - уровне операционных систем), поэтому длинный пароль будет требовать тем больше памяти для обработки и тем дольше обрабатываться процессором, чем он длиннее, то есть содержит больше любых символов, но для сложности пароля это неверно: разнообразие паролей одинаковой длины не повлияет на длительность обработки и расход памяти, если говорить об обработке при пересылке в канале связи и сравнении пароля с эталоном на другом его конце. Последовательность из одного символа можно угадать, перебирая последовательно N кодов его кодировки, а последовательность из двух символов уже подчиняется законам комбинаторики, и количество размещений на две разные позиции двух из N+N элементов уже может превосходить в разы сумму мощностей одинаковых кодировок двух символов N+N (ситуация с ещё большим числом символов ещё сильнее увеличит количество вариантов), поэтому пароли следует выбирать подлиннее, даже пароль из дних единиц будет надёжен при достаточно большой длине, но она ему потребуется достаточно большая, чтобы не было дурацкого мата. Что касается психологии людей, то они бывают ленивы и глупы, но законы психологии на взломщиков тоже распространяются. Здесь речь не только о математике, а именно о том, что важнее длина пароля, чем его наполнение. Чтобы это было правдой в случае с использованием осмысленного набора слов в качестве пароля, нужно соблюсти максимальную длину пароля, выбирая фразы подлиннее, - в некоторых системах уже делают возможность ввода очень длинного пароля, поэтому чтение этой статьи окажется полезным для пользователей, а, когда осуществляют перебор пароля по словарю, то в первую очередь будут подставлять наиболее вероятные пароли, причём очень длинные пароли сделают объём словаря таким, что хранить и передавать его, а также использовать с подключением по сети, будет сложно или экономически нецелесообразно, ведь защиту в информационных системах организовать проще, чем взлом. Если максимальную длину пароля системы нащупать не удаётся, надо использовать максимально длинный и сложный пароль (в библиотеках языков программирования для его генерации можно использовать генератор случайных чисел с псевдоравномерным распределением), но приоритет отдавать длине, почему - объясняется выше. Если взломщик при подборе пароля его генерирует без словаря, то ему потребуется значительно больше времени процессора и электроэнергии на генерацию. Можно представить, что одно осмысленное слово на естественном языке в тексте пароля является одним символом, тогда возможных вариантов пароля будет тем больше, чем больше слов в пароле, - это объясняет востребованность длины пароля в случае использования естественного языка в нём. С другой стороны, на стороне сервера может в первой линии защиты использоваться сравнение по хэшу пароля, а при коллизии — сравнение с хранимым на сервере полноценным паролем, тогда в случае коллизии применимы предыдущие рассуждения, а при применении злоумышленником радужных таблиц, содержащих словарь соответствий «хэш — строка пароля», с высокой долей вероятности будут подобраны только короткие пароли, поскольку хэш для хранения паролей обычно используют в виде буквенно-цифрового кода, а перебор такого хэша почти равносилен перебору длинного пароля, так как пространство поиска хоть и сужается, но не настолько, насколько при хэше в виде целого числа, причём коллизии в современных алгоритмах хэширования маловероятны, а это говорит о том, что набор хэшей и набор пароле в базе данных сервера — это почти взаимно-однозначное соответствие, при котором перебор с обратной генерацией пароля по его хэшу породил бы необходимость иметь огромного объёма словарь, что не рентабельно.

Другие интересные статьи смотрите на моём сайте.