У меня есть опыт проектирования систем и программирования, но не интернет-безопасности. Может ли кто-нибудь помочь определить, является ли следующий дизайн достаточно безопасным?
Система состоит из двух частей:
Во-первых, веб-сайт / сервер (защищенный с помощью SSL), который отображает карту и прокладывает маршрут для отслеживания местоположения пользователя. Друзья и родственники, получив пароль от пользователя, могут войти в систему и увидеть, где находятся пользователи и где они были (например, за последние 24 часа).
Во-вторых, приложение для телефона, которое отправляет данные GPS на сервер. Основное соображение конструкции последнего состоит в том, чтобы сообщения о местоположении были как можно короче, чтобы минимизировать как срок службы батареи, так и допустимые данные пользователя. Поэтому я не хочу использовать SSL для отправки сообщений с телефона (это приведет к большим накладным расходам на в противном случае небольшое сообщение - вероятно, отправляется каждую минуту). Это также увеличивает сложность и размер приложения.
Мое предлагаемое решение заключается в следующем:
При регистрации (через веб-сайт) система создает хеш для пользователя на основе имени пользователя и пароля, который хранится в базе данных как «идентификатор пользователя» (это будет хеш, отличающийся от того, который используется для простого хранения пароля) , Возможно, SHA512, хотя это может быть излишне долго.
При установке приложения на свой телефон пользователи вводят имя пользователя и пароль. Затем приложение использует тот же алгоритм хеширования и отправляет значение хеш-функции на сервер через конечную точку без SSL. Если он распознан, сервер отвечает «ОК», и приложение сохраняет хэш как идентификатор пользователя.
Во время работы приложения каждый раз, когда отмечается новое местоположение, оно отправляется вместе с отметкой времени и идентификатором пользователя на сервер (опять же без SSL). Сервер сохраняет данные соответственно с правильным идентификатором пользователя.
На сервере будут работать две отдельные веб-службы: одна SLL, а другая - нет, и обе будут взаимодействовать с одной и той же базой данных.
Здесь, возможно, есть недостаток, пожалуйста, дайте мне знать, если так! Конечно, соображение безопасности заключается в том, что тот, кто не получил пароль, не должен видеть местонахождение пользователя. Заранее спасибо.