Наше приложение состоит из веб-службы REST, работающей на App Engine, и Flash-клиента.Мы должны убедиться, что только наш клиент может отправлять запросы к веб-сервису, и предотвращать такие ситуации, как атаки с повторением.
Я не эксперт по безопасности (на данный момент), поэтому я хотел бы получить совет по поводу схемы безопасности, которую я придумал.
Система будет использовать общий секрет.Один и тот же ключ будет использоваться сервером и клиентом.Я знаю, что если ключ открывается (например, путем обратного инжиниринга флеш-клиента), вся система выходит из строя.Первоначально клиент делает запрос входа в систему на сервер.Сервер отвечает на запрос (случайное число).Клиент отправляет обратно дайджест HMAC-SHA1 запроса.Если дайджест совпадает с тем, который отправляет сервер, он отправляет обратно метку времени.Клиент будет использовать эту метку времени в сообщении (и дайджест сообщения - HMAC-SHA1), чтобы смягчить атаки повторного воспроизведения.
По большому счету это оно.Имеет ли это смысл?Какой будет допустимая дельта времени для отметки времени, когда сервер просматривает сообщение (я думал где-то около 30 секунд)?Любые другие комментарии?
РЕДАКТИРОВАТЬ: О, и что бы сделать хороший метод создания секретных ключей?
Спасибо.
Приветствия, Алекс