Пароли.

Наши лучшие друзья и злейшие враги.

То, что защищает нас от плохих актеров, также может быть источником бесконечного разочарования.

Мы все были там, лихорадочно барабаня по клавиатуре, зная, что пароль, который мы только что ввели, ДОЛЖЕН быть правильным!

На самом деле, мы изменили его 30 секунд назад! Должно быть что-то не так с системой! Верно?!

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

Снисходительное сообщение напоминает нам, что это наш последний шанс сделать все правильно.

Штраф?

Заблокированный аккаунт. Мы заморожены из-за информации, в которой мы так отчаянно нуждаемся. Наша единственная надежда – совершить немыслимое…

позвоните в службу поддержки :/

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

Мы все знаем, что компьютеры по своей природе глупы. Кто-то может сказать: «Они настолько же умны, как и их пользователи». Эта реальность сильно ударяет, когда мы понимаем, что пароль, который мы вводили все это время, был на самом деле правильным. Настоящая проблема…

Мы случайно нажали клавишу Caps Lock.

Упс.

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

Они используют древнее искусство аутентификации.

Методы аутентификации

Словарь Вебстера определяет аутентификацию как:

«действие, процесс или метод демонстрации чего-либо (например, личности, произведения искусства или финансовой операции) как реального, истинного или подлинного: действие или процесс установления подлинности чего-либо»

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

  • Где вы находитесь (физическое местоположение)
  • Что-то, что у вас есть (карта считывания)
  • Что-то, чем вы являетесь (биометрия)
  • Кто-то, кого вы знаете (цепочка доверия)
  • Что-то, что вы можете сделать (введите пароль)

Что-то, что вы можете сделать, например ввести PIN-код или ввести пароль, стало одной из самых доступных форм аутентификации.

Пароли существуют веками. Древнеримские охранники запрашивали ключевые слова, чтобыпройти в безопасные зоны. Во время битвы за Нормандию десантники использовали систему паролей и контрпаролей для идентификации дружественных войск. Роберт Моррис в начале 1970-х создал систему для хранения паролей в виде хэша. Это эмулировало криптографическое оборудование, разработанное швейцарским изобретателем Борисом Хагелиным, родившимся в России, в 1950-х годах. Система Морриса, основанная на хешировании, использовалась в ранних версиях UNIX, позже эволюционировав в алгоритм, известный как крипт.

Вместе с UNIX появилась концепция регулярных выражений или сокращенно RegEx. Впервые концептуализирован американским математиком Стивен Коул Клини. Многие формы написания регулярных выражений существуют с 1980-х годов.

Что такое регулярное выражение?

Регулярные выражения — это последовательности символов, которые используются для создания шаблонов. Эти шаблоны можно использовать для поиска, сопоставления и управления текстом на самых разных языках программирования. Их можно использовать с интерфейсами командной строки, текстовыми процессорами и поисковыми системами. Регулярные выражения могут отличаться в разных языках, однако все они имеют общие черты.

JavaScript рассматривает регулярные выражения (и почти все остальное) как объекты. Это дает им доступ к встроенным методам, таким как match(), matchAll(), replace(), replaceAll(), search() и split().

Создать функцию JavaScript, использующую RegEx для проверки пароля, можно с помощью простой логики и всего нескольких строк кода.

Во-первых, нам нужно определиться с набором правил, которым должен следовать пароль.

Наш пароль будет соответствовать следующему:

  • Только цифры, буквы и символы подчеркивания
  • Прописные и строчные буквы в порядке
  • Никакие другие специальные символы не допускаются
  • Пароль должен начинаться с буквы
  • Длина должна быть от 8 до 20 символов.

Регулярное выражение, проверяющее эти условия, выглядит так:

Сначала это может показаться запутанным для чтения, но становится легко понять, когда вы разбиваете его на более мелкие разделы:

/ Начало регулярного выражения

^ Соответствует началу строки (или началу новой строки, если включен многострочный флаг (m))

[ ] Соответствует любым символам в квадратных скобках

A-Z Соответствует символу верхнего регистра в диапазоне от "A до Z"

a-z Соответствует символу нижнего регистра в диапазоне от "a до z"

\w Соответствует любому символу слова (буквенно-цифровому и символу подчеркивания)

{7, 20} Соответствует от 7 до 20 предыдущих символов

$ Соответствует концу строки (или концу строки, если включен многострочный флаг)

/ Конец регулярного выражения

Теперь мы можем сохранить наш RegEx как переменную в нашей функции CheckPassword:

Использование оператора if позволяет применить метод .match() к входному значению нашей функции:

Наконец, мы можем добавить предупреждения и оператор else, чтобы дать нашим пользователям отзыв о выбранном ими пароле:

Давай, попробуй сам:

Супер классный валидатор паролей

Раскрытие секретов

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

Классы персонажей:

Различает разные типы символов, например буквы и цифры

Якоря:

Соответствует позиции в строке, а не символу

Экранированные символы:

Используется для вставки зарезервированных, специальных символов и символов Юникода. Все экранированные символы начинаются с \

Группы и обзор:

Объединяет последовательность токенов, что позволяет работать с ними вместе

Квантификаторы и чередование:

Указывает количество совпадающих символов или выражений

Экраны свойств Unicode:

Совпадения на основе свойств символов Юникода, таких как язык, математические символы и эмодзи

Эти примеры — только вершина айсберга! Полное руководство можно найти в документации Mozilla JavaScript Regular Expression.

Заключение

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

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

Источники:



https://www.wordfence.com/learn/how-passwords-work-and-cracking-passwords/#:~:text=The%20security%20application%20takes%20the,match%20вам%20%20предоставили%20доступ .

https://regexr.com

https://www.w3resource.com/javascript/form/password-validation.php





https://en.m.wikipedia.org/wiki/Роберт_Моррис_(криптограф)