Найти тему

Защита данных со стороны разработчика

Оглавление

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

Зачем беспокоиться о защите?

Пользователи при вводе пароля доверяют вам свою безопасность. Если ваша база данных будет взломана, а пароли пользователей незащищены, то «хацкеры» смогут использовать эти пароли для компрометации аккаунтов ваших пользователей на других ресурсах (большинство людей везде используют один и тот же пароль).

Итак, предположим у нас есть приложение, пусть снова будет чат. Попробуем смоделировать структуру аккаунта пользователя на начальных этапах, у меня вышло так:

  • Имя Фамилия(возможно никнейм)
  • Пароль
  • Email адрес

Имя Фамилия

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

Client 1: привет.
Client 2: привет.

Также стоит запретить использовать существующие никнеймы.

Email

Ограничиваем возможность показывать Email адрес публично.

Пароль

«Оставлю как есть — никто не взломает.»

Имеются различные способы защиты данных, в нашем случае — пароля, мы же рассмотрим хеширование солью или «солёное» хеширование.

Суть данного метода заключается в том, что после регистрации, в базу данных сохраняется не пароль пользователя, а его хэш, и при последующих авторизациях хеш из базы будет сравниваться с хешем введённого пароля.

ВАЖНО:

В WEB-приложениях хеш необходимо вычислять на сервере.

Сохранение пароля:

  • Генерируем длинную случайную соль
  • Присоединяем соль к паролю и вычисляем хеш-код с помощью стандартной криптографической хеш-функции, например, SHA256;
  • Сохраняем и соль, и хеш-код в записи базы данных пользователей.

Проверка пароля:

  • Извлекаем соль и хеш-код пользователя из базы;
  • Добавляем соль к введенному паролю и вычисляем хеш-код с помощью той же самой функции;
  • Сравниваем хеш-код введенного пароля с хеш-кодом из базы данных. Если они совпадают, пароль верен. В противном случае, пароль введен неправильно.

Вывод:

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

Способы хеширования:

  • MD5
MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования) — Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности.
  • SHA-1
Secure Hash Algorithm 1 —реализует хеш-функцию, построенную на идее функции сжатия.
  • SHA256, SHA512
SHA-2 (англ. Secure Hash Algorithm Version 2 — безопасный алгоритм хеширования, версия 2) — семейство криптографических алгоритмов — однонаправленных хеш-функций, включающее в себя алгоритмы SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 и SHA-512/224. Хеш-функции предназначены для создания «отпечатков» или «дайджестов» для сообщений произвольной длины.
  • NTLM
NTLM - это протокол проверки подлинности запроса и ответа, который использует три сообщения для аутентификации клиента в среде, ориентированной на соединение и четвертое дополнительное сообщение, если требуется проверка целостности.
  • bcrypt
bcrypt — адаптивная криптографическая хеш-функция формирования ключа, используемая для защищенного хранения паролей.

Пример реализации защиты данных пользователя (PHP):

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

«Серверная» часть.
«Серверная» часть.

Что-ж, на этом статья криптографии закончена, спасибо за внимание :)

Берегите себя, своих близких и свои данные.