2012-04-24 5 views
3

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

Мое мышления до сих пор

для генерации: криптографического хэша различных битам информации, что нужно + ключ даты генерации

для проверки: криптографического хэша различных битам информации, мне нужно + дата в настоящее время

, если вся информация одинакова и дата такая же, я получаю то же значение

Но,

это означает, что ключ будет работать только на определенную дату. То, что я хочу, - это ключ, действительный в течение следующих 24 часов (или продление этого, несколько дней/неделя/месяц).

Я могу продлить период, но всегда есть возможность генерировать ключ незадолго до истечения периода, например, последний день месяца в течение месяца.

Во-первых, это приемлемый способ продолжения? Если да, то как мне это сделать?

Я знаю, что «наматывание» часы назад победят систему - но я все еще заинтересован в получении некоторых мнений

Я прочитал How do I generate a time limited key or password without storing data, который подобная проблема.

ответ

4

Вы можете сделать дату истечения части маркеров и аутентификации всех данных с MAC как HMAC:

token = data ":" expiration ":" HMAC(key, data ":" expiration) 

Для проверки маркеров, все, что вам нужно сравнить данный истечения геодезическим и восстановить MAC для предоставленных данных с секретным ключом .

Если какой-либо из предоставленных параметров был взломан, MAC будет отличаться, поскольку для генерации аутентичного MAC требуется секретный ключ .

+0

Спасибо за это - мне удалось проработать это через несколько часов после публикации вопроса. Две вещи, которые мне не хватало, заключались в использовании даты истечения срока действия, как в MAC, так и в том, что она была доступна в виде обычного текста как часть токена, поэтому она доступна для использования приложением. – pauli

+1

Я бы предложил вставить * дату выпуска *, а не дату истечения срока, так как это дает вам возможность изменить срок действия, элегантным способом, даже после выдачи маркера. –

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