2013-10-08 5 views
0

Я до сих пор довольно новичок в криптографии, поэтому, пожалуйста, извините за ошибки новобранец. Я shure, это было задано пару раз, но я понятия не имею, что искать.Аутентификация через AES

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

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

Два решения я себе являются:

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

Я Shure есть лучшие способы (может быть другой алгоритм ?), любая помощь приветствуется.

Опять же, у меня нет большого опыта работы с криптографией и программированием это просто хобби: D

+1

Как насчет того, чтобы бросить HTTPS на проблему? – CodesInChaos

+0

Как проверить подлинность https-клиента? Я только слышал об этом для серверов. – mafrasi2

+1

Аутентификация сервера с помощью сертификата, а затем отправьте пароль простым HTTPS. – CodesInChaos

ответ

4

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

+0

Вы правы, я об этом не думал. Можно ли использовать SSL с паролями или мне нужно использовать файлы сертификатов? – mafrasi2

+0

Да, SSL имеет режим аутентификации по паролю. Я лично не использовал его, но знаю нескольких людей, которые его использовали. – atk

+2

Кроме того, как и в комментариях к исходному вопросу, вы можете выполнить аутентификацию сервера с помощью проверки подлинности SSL и клиента в протоколе, использующем протокол SSL. Так обычно делают веб-браузеры. – atk

1

Кажется, вам нужны шифрование и аутентификация.

Как указано другими, используйте только SSL (HTTPS) для шифрования для HTTP-запросов. SSL является исключительным для шифрования. SSL может выполнять аутентификацию, но есть лучшие решения для аутентификации пользователей со смартфонов.

Для аутентификации пользователя существует множество вариантов. Для подключения к смартфонам я предлагаю вам также не изобретать собственный протокол аутентификации и использовать проверенные и проверенные решения, такие как OpenID и OATH. Это поддерживает множество библиотек. Использование таких протоколов открывает возможность аутентификации пользователей с использованием существующих учетных записей Google, Facebook, Twitter и т. Д.

Смежные вопросы