3

アプリケーションの 1 つで使用する期限付きキーを作成しようとしています。キーは、アプリケーションの特定の機能のロックを解除するために使用されます。

これまでの私の考えは、

生成する: 必要なさまざまな情報の暗号化ハッシュ + キー生成日

検証する: 必要なさまざまな情報 + 現在の日付を暗号化ハッシュする

すべての情報が同じで日付が同じ場合、同じ値が得られます

しかし、

これは、キーが特定の日付でのみ機能することを意味します。私が欲しいのは、次の 24 時間 (またはこれを数日/週/月に延長) 有効なキーです。

期間を延長することはできますが、月のキーの月末日など、期間が終了する直前にキーを生成する可能性は常にあります。

第一に、これは受け入れられる進行方法ですか?もしそうなら、どうすればいいですか?

時計を「巻き戻す」とシステムが無効になることは承知していますが、意見を聞くことにまだ興味があります

同様の問題であるデータを保存せずに、時間制限のあるキーまたはパスワードを生成する方法を読みました。

4

1 に答える 1

6

トークンの有効期限の一部を作成し、HMAC のようなMACでデータ全体を認証できます。

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

トークンを検証するには、指定された有効期限データを比較し、提供されたデータの MAC を秘密で再生成するだけです。

提供されたパラメータのいずれかが改ざんされた場合、認証された MAC を生成するために秘密鍵が必要になるため、MAC は異なります。

于 2012-04-24T16:51:07.080 に答える